|
1 | | -# MathProgBenchmarks.jl |
| 1 | +# MathOptBenchmarkInstances.jl |
2 | 2 |
|
3 | 3 | A Julia package for automatic download and parsing of linear, quadratic and integer programming instances. |
4 | 4 |
|
5 | | -Supported datasets: |
| 5 | +## Datasets |
| 6 | + |
| 7 | +Please read and abide by the license of the dataset you plan to use. |
| 8 | + |
| 9 | +### LP |
6 | 10 |
|
7 | 11 | - [x] [Netlib](https://www.netlib.org/lp/data/index.html) |
8 | | -- [x] [MIPLIB 2017](https://miplib.zib.de/index.html) |
9 | 12 | - [x] [Mittelmann LP benchmark](https://plato.asu.edu/ftp/lptestset/) |
10 | 13 |
|
| 14 | +### MILP |
| 15 | + |
| 16 | +- [x] [MIPLIB 2017](https://miplib.zib.de/index.html) |
| 17 | + |
| 18 | +### QP |
| 19 | + |
| 20 | +- [ ] [QPLIB](https://qplib.zib.de/) |
| 21 | +- [ ] [Maros-Meszaros](https://www.doc.ic.ac.uk/~im/#DATA) |
| 22 | + |
11 | 23 | ## Getting started |
12 | 24 |
|
13 | | -1. To see which instances are available, call `list_instances(dataset)` with `dataset in (Netlib, MIPLIB2017, MittelmannLP)`. |
14 | | -2. To read a specific instance, call `read_instance(dataset, name)` where `name isa String`. |
15 | | -3. The returned problem format is `QPSData` from [QPSReader.jl](https://github.com/JuliaSmoothOptimizers/QPSReader.jl). |
| 25 | +1. To list the datasets available, call `values(Dataset)`. |
| 26 | +2. To list the instances from a `dataset`, call `list_instances(dataset)`. |
| 27 | +3. To read a specific instance given its `name`, call `read_instance(dataset, name)`. The return value is a tuple `(problem, path)` where `problem isa QPSData` from [QPSReader.jl](https://github.com/JuliaSmoothOptimizers/QPSReader.jl) and `path` points to the decompressed source file on your computer. |
16 | 28 |
|
17 | | -More details are available in the docstrings. |
| 29 | +See the docstrings for details. |
18 | 30 |
|
19 | 31 | ## Tips |
20 | 32 |
|
21 | 33 | The problem source files are downloaded automatically thanks to [DataDeps.jl](https://github.com/oxinabox/DataDeps.jl). |
22 | 34 | Note that each download has to be validated manually from the REPL. |
23 | | -This doesn't work well when the triggering line of code is executed with VSCode's Julia extension, better run it in the REPL directly. |
| 35 | +This doesn't work well when the triggering line of code is executed with VSCode's Julia extension, you better run it in the REPL directly. |
24 | 36 | An alternative is to set `ENV["DATADEPS_ALWAYS_ACCEPT"] = true`. |
25 | 37 |
|
26 | 38 | The decompressed instances can be rather large (over 80 GB for the complete MIPLIB 2017 collection). |
27 | | -If you need to clean up some space, you can delete unneeded files inside the folder located at `MathProgBenchmarks.MPS_SCRATCH`. |
| 39 | +If you need to clean up some space, you can delete unneeded files inside the folder located at `MathOptBenchmarkInstances.MPS_SCRATCH`. |
| 40 | + |
| 41 | +## Contributing |
| 42 | + |
| 43 | +To contribute a new dataset: |
| 44 | + |
| 45 | +1. Add its name to the `Dataset` enum. |
| 46 | +2. Register a new `DataDep` inside the `__init__()` function of the package. |
| 47 | +3. Implement a reader based on the files downloaded by the `DataDep`. This part might need decompression or file conversion steps, for which you can use the `MPS_SCRATCH` folder. |
| 48 | +4. Write documentation and tests. |
| 49 | + |
| 50 | +You can (and should) draw inspiration from the implementation of existing datasets. |
0 commit comments