Skip to content

Commit

Permalink
Merge branch 'release-0.3.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
pobermei committed Jul 2, 2019
2 parents 63a1887 + e222b9a commit d368aed
Show file tree
Hide file tree
Showing 65 changed files with 4,203 additions and 1,413 deletions.
3 changes: 0 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +0,0 @@
[submodule "generator/lib/pyyaml"]
path = generator/lib/pyyaml
url = https://github.com/yaml/pyyaml.git
60 changes: 60 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,65 @@
# Changelog

## Ongoing

### Added

### Changed

### Fixed


## 0.3.0

### Added

- Docs:
- Add detailed documentation of experiments of ICLP'18 paper
- Add scientific publications to index page
- Exhaustively update visualizer page
- Generator:
- Add aspif output for debugging
- Add provenance (original cli invocation) to generated instances
- Add the number of order lines to instance file names
- Visualizer:
- Table with detailed robot information
- Highlighting for selected robots
- Add ability for robot path drawing
- Add energy management for robots
- Add energy overview to the robots table
- Add energy display to the model view
- Update visualizer for noarch conda version
- Delivery actions can now be performed simultaneously to other actions
- Multiple delivery actions can now be performed at one time step by one agent

### Changed

- Generator:
- Update to python 3
- Make compatible with/require cingo>=5.4.0
- Simplify generator code
- Use conda as recommended installation method
- Visualizer:
- Update to python 3
- Make compatible with/require clingo>=5.4.0
- Windows can now be dragged and dropped
- Update solver and simulator script
- Performance improvements
- Use conda as recommended installation method
- Misc:
- Added conda recipes for both visualizer and generator to potassco's recipes repo at <https://github.com/potassco/conda/tree/master/asprilo>

### Fixed

- Docs:
- Fix several formatting and linking issues, also wrt jekyll/gh-phages
- Checker:
- Fix issues #25, #26
- Generator:
- Fix various bugs
- Visualizer:
- Fix various bugs


## 0.2.0

Expand Down
4 changes: 2 additions & 2 deletions checker/encodings/a/action-deliver.lp
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ err(deliver, noShelf, (R, T)) :- occurs(object(robot, R), action(deliver, (_, _
err(deliver, noOrder, (R, T)) :- occurs(object(robot, R ), action(deliver, (O, P, _)), T );
holds( object( robot, R ), value( at, (X, Y) ), T-1);
holds( object( pickingStation, PS), value( at, (X, Y) ), T-1);
holds( object(order, O ), value( pickingStation, PS ), T-1);
not holds(object(order, O ), value( line, (P, _) ), T-1).
{ holds( object(order, O ), value( pickingStation, PS ), T-1);
holds( object(order, O ), value( line, (P, _) ), T-1) } < 2.

% Robot delivers higher amount than requested
err(deliver, orderAmount, (R, T)) :- occurs(object(robot, R), action(deliver, (O, P, Q)), T);
Expand Down
4 changes: 2 additions & 2 deletions checker/encodings/a/action-move.lp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ holds(object(robot, R), value(at, (X+DX, Y+DY)), T) :- occurs(object(robot, R),
holds( object(robot, R), value(at, (X, Y)), T-1).

holds(object(shelf, S), value(at, (X, Y )), T) :- holds( object(robot, R), value(at, (X, Y)), T );
holds( object(robot, R), value(carries, (R, S)), T-1).
holds( object(robot, R), value(carries, S), T-1).


% - Book-Keeping: Related Inertia Abnormals ---------------------------------------
Expand All @@ -39,4 +39,4 @@ ab(object(robot, R), value(at, (X, Y)), T) :- holds( object(robot, R), value(at,
occurs(object(robot, R), action(move, _), T ).
ab(object(shelf, S), value(at, (X, Y)), T) :- holds( object(shelf, S), value(at, (X, Y)), T-1);
occurs(object(robot, R), action(move, _), T );
holds( object(robot, R), value(carries, (R, S)), T-1).
holds( object(robot, R), value(carries, S), T-1).
44 changes: 0 additions & 44 deletions checker/encodings/c/static.lp

This file was deleted.

14 changes: 12 additions & 2 deletions docs/benchmarkset.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
---
layout: page
title: Benchmark Set
output:
html_document:
toc: true
toc_depth: 3
toc_float: true
---

# About

This is the description of the pre-generated benchmark instance sets for asprilo.
Expand Down Expand Up @@ -50,13 +60,13 @@ The instances are partitioned into two parts:
- `./abc`:
- A structured instance set suited for domain A,B and C
- Created by the [instance generator](generator.md) with batch file
[`./generator/scripts/batch/abc/structured.yml`](../generator/scripts/batch/abc/structured.yml)
[`./generator/scripts/batch/abc/structured.yml`]({{ site.asprilo_src_url }}/generator/scripts/batch/abc/structured.yml)

- `./moo`:
- A structured instance set primarily designed for domain M but by definition also compatible
with domain A, B, C
- Created by the [instance generator](generator.md) with batch file
[`./generator/scripts/batch/moo/structured.yml`](../generator/scripts/batch/moo/structured.yml)
[`./generator/scripts/batch/moo/structured.yml`]({{ site.asprilo_src_url }}/generator/scripts/batch/moo/structured.yml)


Further, we group instances into directories with naming convention `RxCxL` where
Expand Down
4 changes: 2 additions & 2 deletions docs/checker.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
layout: default
title: checker
layout: page
title: Checker
output:
html_document:
toc: true
Expand Down
123 changes: 109 additions & 14 deletions docs/experiments.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
layout: default
title: experiments
layout: page
title: Experiments
output:
html_document:
toc: true
Expand Down Expand Up @@ -37,7 +37,8 @@ This is a collection of notes and data on our conducted experiments with [aspril

## Instances

- All subsequent benchmarks are run with the instance set to be found [here](https://www.cs.uni-potsdam.de/~phil/asprilo/experiments/2018-02/instances.tar.bz2).
- All subsequent benchmarks are run with the instance set to be found
[here](https://www.cs.uni-potsdam.de/~phil/asprilo/experiments/2018-02/instances.tar.bz2).

```shell
moo
Expand Down Expand Up @@ -71,12 +72,12 @@ This is a collection of notes and data on our conducted experiments with [aspril
- 1x2x4 aka *small*
- 2x3x5 aka *medium*
- 4x5x8 aka *large*
- Further, all instances have 100 percent of the storage zones covered by shelves.
- For each instance holds:
- the number of robots and orders is identical;
- there are exactly as many products and product units as shelves;
- each shelf holds exactly one product unit;
- each order contains exactly one order line.
- 100 % shelf coverage, ie., all storage nodes are covered by a shelf
- Instances are further categorized by incrementally increasing the number of robots:
- For 1x2x4 layout size: increments of 2, 5, 8 and 11 robots and orders total)
- For 2x3x5 layout size: increments of 5, 10, 15 and 19 robots and orders
Expand All @@ -102,17 +103,54 @@ This is a collection of notes and data on our conducted experiments with [aspril

- 30 instances per each increment and hence 120 per layout size and 360 instances in total

## Minimal Horizon and Task Assignment

Additionally, for each instance we provide the minimal *horizon (makespan)* and a *task assignment* depending on the used domain.
Both are stored in extra files within the same directory as the instance file. In particular, those additional files use the same name as the instance file extended by an distinct suffix:

- for the assignment under domain A, B and C, we use suffix `__asg-a`; that is, we provide the same
assignment and hence a single assignment file for all three domains A,B and C
- for the assignment under domain M, we use suffix `__asg-m`
- for the horizon without assignment under domain A, B, C and M, we use suffixes `__hor-a`, `__hor-b`, `__hor-c`, and `__hor-m`, resp.
- for the horizon with assignment under domain A, B, C and M, we use suffixes `__hor-aa`, `__hor-ba`, `__hor-ca`, and `__hor-ma`, resp.

E.g., for instance
`moo/structured/1x2x4/100sc/r5/x11_y6_n66_r5_s16_ps1_pr16_u16_o5_N001.lp`, we additionally store:

```shell
moo/structured/1x2x4/100sc/r05/x11_y6_n66_r5_s16_ps1_pr16_u16_o5_N001.lp__asg-a
moo/structured/1x2x4/100sc/r05/x11_y6_n66_r5_s16_ps1_pr16_u16_o5_N001.lp__asg-m
moo/structured/1x2x4/100sc/r05/x11_y6_n66_r5_s16_ps1_pr16_u16_o5_N001.lp__hor-a
moo/structured/1x2x4/100sc/r05/x11_y6_n66_r5_s16_ps1_pr16_u16_o5_N001.lp__hor-aa
moo/structured/1x2x4/100sc/r05/x11_y6_n66_r5_s16_ps1_pr16_u16_o5_N001.lp__hor-b
moo/structured/1x2x4/100sc/r05/x11_y6_n66_r5_s16_ps1_pr16_u16_o5_N001.lp__hor-ba
moo/structured/1x2x4/100sc/r05/x11_y6_n66_r5_s16_ps1_pr16_u16_o5_N001.lp__hor-c
moo/structured/1x2x4/100sc/r05/x11_y6_n66_r5_s16_ps1_pr16_u16_o5_N001.lp__hor-ca
moo/structured/1x2x4/100sc/r05/x11_y6_n66_r5_s16_ps1_pr16_u16_o5_N001.lp__hor-m
moo/structured/1x2x4/100sc/r05/x11_y6_n66_r5_s16_ps1_pr16_u16_o5_N001.lp__hor-ma
```

Further, we only provide those minimal horizons that were computable within 8 hours on our machine.
Likewise, we only provide those assignments for which the minimal horizon is
available. Specifically, for the large instance sizes `2x3x5` and`4x5x8` under the domains A-C,
the minimal horizons and assignments are not provided.

## Encodings

You can find the repository of all our encodings [here](https://github.com/potassco/asprilo-encodings/tree/develop).
To learn more about the specifically used encodings for each test runs, please see below.

## M-Domain Results

### Setup

#### Tested Encodings

- [clingo: boolean encoding](https://github.com/potassco/asprilo-encodings/blob/restruct/moo/encoding.lp)
- [clingcon: csp encoding](https://github.com/potassco/asprilo-encodings/blob/restruct/moo/encoding.clp)
- [clingo: boolean encoding w/ split x,y-coordinates](https://github.com/potassco/asprilo-encodings/blob/restruct/moo/encoding-XY.lp)
- [clingoDL: difference-logic encoding](https://github.com/potassco/asprilo-encodings/blob/restruct/moo/encoding.dlp)
- [clingo: boolean encoding](https://github.com/potassco/asprilo-encodings/blob/develop/m/encoding.lp)
- [clingcon: csp encoding](https://github.com/potassco/asprilo-encodings/blob/develop/m/encoding.clp)
- [clingo: boolean encoding w/ split x,y-coordinates](https://github.com/potassco/asprilo-encodings/blob/develop/m/encoding-XY.lp)
- [clingoDL: difference-logic encoding](https://github.com/potassco/asprilo-encodings/blob/develop/m/encoding.dlp)

#### Outcome

Expand All @@ -136,8 +174,8 @@ An in-depth analysis of the subsequent results can be found in our ICLP'18 paper
### Tested Encodings
- [clingo: boolean encoding](https://github.com/potassco/asprilo-encodings/blob/restruct/mppd/encoding-q.lp)
- [clingcon: csp encoding](https://github.com/potassco/asprilo-encodings/blob/restruct/mppd/encoding-q.clp)
- [clingo: boolean encoding](https://github.com/potassco/asprilo-encodings/blob/develop/abc/encoding-a.lp)
- [clingcon: csp encoding](https://github.com/potassco/asprilo-encodings/blob/develop/abc/encoding-a.clp)
### Outcome
Expand All @@ -154,8 +192,8 @@ An in-depth analysis of the subsequent results can be found in our ICLP'18 paper
### Tested Encodings
- [clingo: boolean encoding](https://github.com/potassco/asprilo-encodings/blob/restruct/mppd/encoding-r.lp)
- [clingcon: csp encoding](https://github.com/potassco/asprilo-encodings/blob/restruct/mppd/encoding-r.clp)
- [clingo: boolean encoding](https://github.com/potassco/asprilo-encodings/blob/develop/abc/encoding-b.lp)
- [clingcon: csp encoding](https://github.com/potassco/asprilo-encodings/blob/develop/abc/encoding-b.clp)
### Outcome
Expand All @@ -171,8 +209,8 @@ An in-depth analysis of the subsequent results can be found in our ICLP'18 paper
### Tested Encodings
- [clingo: boolean encoding](https://github.com/potassco/asprilo-encodings/blob/restruct/mppd/encoding-0.lp)
- [clingcon: csp encoding](https://github.com/potassco/asprilo-encodings/blob/restruct/mppd/encoding-0.clp)
- [clingo: boolean encoding](https://github.com/potassco/asprilo-encodings/blob/develop/abc/encoding-c.lp)
- [clingcon: csp encoding](https://github.com/potassco/asprilo-encodings/blob/develop/abc/encoding-c.clp)
### Outcome
Expand All @@ -183,3 +221,60 @@ An in-depth analysis of the subsequent results can be found in our ICLP'18 paper
2. Runs with Assignment
- Result spreadsheet can be found [here](https://www.cs.uni-potsdam.de/~phil/asprilo/experiments/2018-02/c/res-asg.ods)
## How to Reproduce Test Runs
In general, to run single tests on your own machine, your call may follow the following pattern:
``` shell
SOLVER ENCODING INSTANCE [ASSIGNMENT] HORIZON
```
where
- `SOLVER` is a solver binary of the [ones stated above](#solver)
- `ENCODING` is an encoding for A, B, C or M as stated above
- `INSTANCE` is an instance
- `ASSIGNMENT` is an optional task assignment matching the instance and domain
- `HORIZON` is the horizon matching the instance, domain and assignment if given
For example, first download and extract the
[instances](https://www.cs.uni-potsdam.de/~phil/asprilo/experiments/2018-02/instances.tar.bz2) and
[encodings](https://github.com/potassco/asprilo-encodings/tree/develop) to your machine, say
`~/instances` and `~/encodings`, resp. Then, you can run the [boolean encoding for domain
M](https://github.com/potassco/asprilo-encodings/blob/develop/m/encoding.lp) on instance
`~/instances/moo/structured/1x2x4/100sc/r05/x11_y6_n66_r5_s16_ps1_pr16_u16_o5_N001.lp`
- without assignment as
```shell
clingo encodings/m/encoding.lp \
~/instances/moo/structured/1x2x4/100sc/r05/x11_y6_n66_r5_s16_ps1_pr16_u16_o5_N001.lp.{lp,lp__hor-m}
```
- with assignment as
```shell
clingo encodings/m/encoding.lp encodings/control/control.lp\
~/instances/moo/structured/1x2x4/100sc/r05/x11_y6_n66_r5_s16_ps1_pr16_u16_o5_N001.lp.{lp,lp__asg-m,lp__hor-ma}
```
Similarly, you can run the same instance with the [clingcon encoding in domain A](https://github.com/potassco/asprilo-encodings/blob/develop/abc/encoding-a.clp)
- without assignment as
```shell
clingcon encodings/a/encoding-a.clp \
~/instances/moo/structured/1x2x4/100sc/r05/x11_y6_n66_r5_s16_ps1_pr16_u16_o5_N001.lp.{lp,lp__hor-a}
```
- with assignment as
```shell
clingcon encodings/a/encoding-a.clp encodings/control/control.lp\
~/instances/moo/structured/1x2x4/100sc/r05/x11_y6_n66_r5_s16_ps1_pr16_u16_o5_N001.lp.{lp,lp__asg-a,lp__hor-aa}
```
etc.
Loading

0 comments on commit d368aed

Please sign in to comment.