|
|
@ -0,0 +1,88 @@ |
|
|
|
Instance Batches |
|
|
|
================ |
|
|
|
|
|
|
|
If you have to run experiments on multiple problem instances, *instance batches* are your friend. Simply put an instance batch is a collection of problem instances. In order to manage batches across large instance pools spread out over the file system you can declare them in *batch files*. |
|
|
|
|
|
|
|
Loading Batches |
|
|
|
--------------- |
|
|
|
|
|
|
|
All you have to do in order to load a batch is to call the `batch.load("path/batch_file")` function with the path to the corresponding batch file. |
|
|
|
|
|
|
|
```python |
|
|
|
import a2.batch |
|
|
|
|
|
|
|
instance_paths = a2.batch.load("path/to/batch_file") |
|
|
|
|
|
|
|
``` |
|
|
|
|
|
|
|
Batch Files |
|
|
|
----------- |
|
|
|
|
|
|
|
Batch files are used do index all instances contained in the batch. The real power of these files comes from two features *nested batches* and the possibility to *include batch files*. A example my look like this: |
|
|
|
|
|
|
|
```JSON |
|
|
|
{ |
|
|
|
"dir": "./some/path", |
|
|
|
|
|
|
|
"include": |
|
|
|
[ |
|
|
|
"path/to_other/batch_file1", |
|
|
|
"path/to_other/batch_file2" |
|
|
|
], |
|
|
|
|
|
|
|
"instances": |
|
|
|
[ |
|
|
|
"instance1.cnf", |
|
|
|
"instance2.cnf" |
|
|
|
], |
|
|
|
|
|
|
|
"batches": |
|
|
|
[ |
|
|
|
{ |
|
|
|
"dir": "./nested/path", |
|
|
|
"instances": |
|
|
|
[ |
|
|
|
"instanec11.cnf", |
|
|
|
"instance22.cnf |
|
|
|
] |
|
|
|
} |
|
|
|
] |
|
|
|
} |
|
|
|
|
|
|
|
``` |
|
|
|
A complete grammar is defined further below. The main components of a batch files are *batch objects*. Possible fields of batch objects are: |
|
|
|
|
|
|
|
dir |
|
|
|
: The base directory for all contained paths. Consider the example above. The path `instance1.cnf` will be expanded to `./some/path/instance1.cnf`. |
|
|
|
: If the base path of a batch is relative (e.g. `./path`) it is always relative to its parent batch (e.g. `./nested/path` will be extended to `./some/path/nested/path`). In case of root batches (highest level in batch file) relative base paths are relative to the file location. |
|
|
|
|
|
|
|
include |
|
|
|
: Here you can list paths to other batch files, which than will be included to the current batch. |
|
|
|
|
|
|
|
instances |
|
|
|
: This is the actual list of instance paths. |
|
|
|
|
|
|
|
batches |
|
|
|
: Instance batches can contain other (nested) instance batches. This allows you to structure your batch files much more nicely (see nested base paths). |
|
|
|
|
|
|
|
--- |
|
|
|
### Grammar |
|
|
|
The complete grammar of a batch file is defined by: |
|
|
|
|
|
|
|
``` |
|
|
|
<file> ::= <batch> |
|
|
|
<batch> ::= '{' <fields> '}' |
|
|
|
<fields> ::= <field> |
|
|
|
| ',' <fields> |
|
|
|
<field> ::= <directory> |
|
|
|
| <instance list> |
|
|
|
| <include list> |
|
|
|
| <batch list> |
|
|
|
<directory> ::= '"dir":' <Path> |
|
|
|
<instance list> ::= '"instances": [' <paths> ']' |
|
|
|
<include list> ::= '"include": [' <paths> ']' |
|
|
|
<batch list> ::= '"batches": [' <batches> ']' |
|
|
|
<paths> ::= <path> | ',' <paths> |
|
|
|
<batches> ::= <batch> | ',' >batch> |
|
|
|
``` |
|
|
|
--- |