Skip to content

Commit 8acc585

Browse files
Update benchmark submission instructions and criteria (#102)
1 parent a28c1fb commit 8acc585

File tree

1 file changed

+24
-17
lines changed

1 file changed

+24
-17
lines changed

docs/Criteria_and_instructions.md

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,40 @@
1+
## Goals for the benchmark set
2+
3+
We encourage submission of benchmarks that help the project meet the following overall targets:
4+
5+
1. A set of benchmarks that are diverse in terms of modelling frameworks that generated them, problem structure, and model features. For instance, we would like models that consider innovative technologies (e.g., electrolyzers, CO2 capture) or policy-driven constraints (e.g., on CO2 emissions). By "features" we mean the different kinds of energy planning problems that can be modeleld by the framework (e.g., capacity expansion, power system operations, resource adequacy).
6+
7+
1. Benchmarks using model features that are implemented using MILP constraints, especially features other than unit commitment.
8+
9+
1. Benchmarks that help open-source solver developers improve their solvers: benchmarks that can be solved rapidly (< 5 minutes) by Gurobi but are slow (~1 hour or higher) or fail when solved by an open-source solver.
10+
111
## Criteria for the selection of benchmarks
212

313
The Solver Benchmark project is open and encourages the community to submit benchmark problems. Please ensure that submissions adhere to the following criteria:
414

5-
1. Benchmarks must be in the `.lp` file format, that it suitable for providing to the solver directly as input (i.e., no further pre-processing must be necessary).
15+
1. Benchmarks must be in the `.lp` or `.mps` file formats, that are suitable for providing to the solver directly as input (i.e., no further pre-processing must be necessary). An advantage of using these formats is that they preserve [confidentiality of the model's input data](https://www.gams.com/48/docs/S_CONVERT.html?search=confidential) as they contain only mathemetical equations and it is near impossible to reconstruct the underlying energy specification and technological data.
616

717
1. Benchmarks must be Linear Programming (LP) or Mixed Integer Linear Programming (MILP) problems. We do not currently accept other kinds of problems such as non-linear, or multi-objective problems.
818

9-
1. Benchmarks must be solvable using Gurobi in 1 hour or less on a machine with [TBD] 4 CPUs and 16 GB memory (e.g. a an `e2-standard-4` VM on Google Cloud).
10-
1119
1. Benchmarks must be problems generated by bottom-up energy system models (see *Target modelling frameworks* below).
1220

13-
1. If possible, benchmarks that have a "size" parameter (e.g. number of nodes, number of clusters) that can be varied in order to obtain the same benchmarks in multiple sizes: small, medium, large.
14-
15-
We also encourage benchmarks to help the project meet the following overall targets:
21+
1. Benchmarks must be solvable in one of the following time limits, depending on the size category:
22+
- Small: under 10 minutes HiGHS solving time
23+
- Medium: under 1 hour HiGHS solving time
24+
- Large / Real: under 10 hours Gurobi solving time
1625

17-
1. A set of benchmarks that are diverse in terms of modelling frameworks that generated them, problem structure, and model features.
26+
where HiGHS runtimes are measured with the latest solver versions on a machine with [TBD] 2 vCPUs and 8 GB memory (e.g. an `e2-standard-2` VM on Google Cloud) and Gurobi solving time is on a [TBD -- reasonable machine?].
1827

19-
1. Benchmarks that help open-source solver developers improve their solvers: benchmarks that can be solved rapidly (< 5 minutes) by Gurobi but are slow (~1 hour or higher) when solved by an open-source solver.
28+
Whenever possible, we prefer benchmarks that can be generated in multiple "sizes" by varying the time scale (single-stage / multi-stage planning horizons), temporal resolution (hourly, daily, etc), or spatial resolution (number of regions / nodes).
2029

2130
## Instructions for submitting benchmarks
2231

2332
The prefered and recommended approach for submission is to open a pull request to this repository that adds to the `benchmarks/<framework>/` folder:
2433
- Metadata (name, description, etc; see below) added to a YAML file `benchmarks/<framework>/metadata.yaml`, create this if it doesn't exist already
2534
- A configuration file that is used as an input to the modelling framework
26-
- A dockerfile that specifies the modelling framework version (preferably a commit hash), pinned versions of all dependencies, and a script to run the modelling framework and obtain the LP file given to the solver.
35+
- A dockerfile that specifies the modelling framework version (preferably a commit hash), pinned versions of all dependencies, and a script to run the modelling framework and obtain the LP/MPS file given to the solver.
2736
- For example, see the benchmarks in the `benchmarks/pypsa/` folder.
28-
- For non fully open-source modelling frameworks, where LP files cannot be reproduced automatically as above, we will accept LP files hosted on a public immutable file storage service such as Zenodo. In such cases, the metadata file and a script to download the benchmark (prefereably via a permalink) is sufficient.
37+
- For non fully open-source modelling frameworks, where LP/MPS files cannot be reproduced automatically as above, we will accept LP/MPS files hosted on a public immutable file storage service such as Zenodo. In such cases, the metadata file containing a URL to download the benchmark (prefereably via a permalink) is sufficient.
2938

3039
### Benchmark metadata
3140

@@ -40,12 +49,10 @@ Please include along with each benchmark submission, the following metadata. Fur
4049
| **Technique** | LP | MILP |
4150
| **Kind of problem** | Infrastructure (capacity expansion) | Operational (dispatch only) | Other (please indicate) |
4251
| **Sectors** | Sector-coupled (power + heating, industry, transport) | Power sector |
43-
| **Time horizon** | Single-period | Multi-period (indicate n. of periods)) |
52+
| **Time horizon** | Single-period | Multi-period (indicate n. of periods) |
4453
| **Temporal resolution** | Hourly | 3 hourly | Daily | Yearly |
4554
| **Spatial resolution** | Single node / 2 nodes (indicate countries/regions) | Multi-nodal (10 $\div$ 20) (indicate countries/regions) |
4655
| **MILP features** | None | Unit commitment | Transmission expansion | Other (please indicate) |
47-
| **N. of constraints** | <100| 100-1'000| 1'000-10'000| 10'000-100'000| 100'000-1'000'000 | 1'000'000-10'000'000 |
48-
| **N. of variables** | <100| 100-1'000| 1'000-10'000| 10'000-100'000| 100'000-1'000'000 | 1'000'000-10'000'000 |
4956

5057
For example, here is an entry in the `benchmarks/pypsa/metadata.yaml` file:
5158

@@ -58,11 +65,11 @@ pypsa-eur-sec-2-lv1-3h:
5865
Kind of problem: Infrastructure
5966
Sectors: Sector-coupled (power + heating, biomass, industry, transport)
6067
Time horizon: Single period (1 year)
61-
Temporal resolution: 3 hourly
62-
Spatial resolution: 2 nodes (Italy)
6368
MILP features: None
64-
N. of constraints: 393568
65-
N. of variables': 390692
69+
Sizes:
70+
- URL: https://todo.todo/todo.lp
71+
Temporal resolution: 3 hourly
72+
Spatial resolution: 2 nodes
6673
```
6774
6875
## Target modelling frameworks

0 commit comments

Comments
 (0)