Welcome to BOLIB3, a benchmarking library of continuous bilevel optimization problems.
Project description
BOLIB-3
Bilevel Optimisation Library
Bilevel optimisation
The bilevel program is defined as an upper-level program with a second lower-level program embedded in its constraints. It is written as follows:
minimise_{x,y} F(x,y);
subject to G(x,y)>=0;
H(x,y)==0;
y ∈ argmin_{y}{ f(x,y):
{ g(x,y)>=0;
{ h(x,y)=0.
The choice between representing inequality constraints as non-negative (>=0) or non-positive (<=0) remains inconsistent throughout the literature. In this library we follow the non-negative (>=0) formulation. The notation defined in the table below is consistent thought the library:
| Symbol | Level | Represent | Dimension |
|---|---|---|---|
| x | Upper-level | Decision variables | n_x |
| y | Lower-level | Decision variables | n_x |
| F(x,y) | Upper-level | Objective function | 1 |
| f(x,y) | Lower-level | Objective function | 1 |
| G(x,y) | Upper-level | Inequality constraint functions | m_G |
| g(x,y) | Lower-level | Inequality constraint functions | m_g |
| H(x,y) | Upper-level | Equality constraint functions | m_H |
| h(x,y) | Lower-level | Equality constraint functions | m_h |
Requirements
Depending on your usage, you may require:
- A LaTeX and BibTeX compiler (miktex.org)
- Python 3 (python.org) (
pip install -r requirements.txt) - GAMS (gams.com)
- MATLAB (matlab.mathworks.com)
Contributing
This is a community project to gather an extensive collection of bilevel programs for robust benchmarking. Please do contribute! There are a few things to note. You will need to request collaborator access from s.ward@soton.ac.uk. Please follow the standard file layouts found in the template folder.
- Clone the repository (
git clone https://github.com/bolib3/bolib3) - Create a personal branch (
git checkout -b BranchName) - Commit your Changes (
git commit -m 'comment') - Push to the Branch (
git push origin BranchName) - Open a Pull Request
ALL file and directory names are to be lowercase!!
Unit tests
The unit tests check that the library is set up correctly. From the top level directory run:
python -m unittest "automation\unit_tests\python_unit_tests.py"
matlab -r "run('automation\unit_tests\matlab_test_suite.m')"
- Test 001: Check that the file structure is consistent. For example the folder 'latex' should only contain '.tex' files.
- Test 002: Checks that each bilevel program has a complete set of non-empty files. For example every instance 'example' must have a corresponding 'example.json' and 'example.pdf' file.
- Test 003: Checks that each python module (respectively matlab class) representing a bilevel program implements all the necessary properties (e.g. 'name', 'category') and methods (e.g. F, G, ...).
- Test 004: Checks that the JSON metadata files are consistent. They should fulfill the schema file and the properties should match the properties in the python/matlab files.
- Test 005: Some bilevel programs have a list of datasets. This tests that there exists a file for each of them within /bolib3/data/.
- Test 006: Checks the functions F,G,H,f,g,h return arrays of the correct dimension.
- Test 007: Checks the solutions recorded in the JSON metadata are feasible.
Authors
| Name | |
|---|---|
| Samuel Ward | s.ward@soton.ac.uk |
| Yaru Qian | y.qian@soton.ac.uk |
| Jordan Fisher | jdjfisher@outlook.com |
| Alain Zemkoho | a.b.zemkoho@soton.ac.uk |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bolib3-3.0.1.tar.gz.
File metadata
- Download URL: bolib3-3.0.1.tar.gz
- Upload date:
- Size: 4.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fdfe85baf8fd10963e392ea2418f0e5ea0b3076b61d7b7212a3cb7e59fecb69f
|
|
| MD5 |
2949b3190ccacaf7d36cb62f33a07f94
|
|
| BLAKE2b-256 |
6642351c21241f3a3a3e50898d7e0fc8b809b4946230929d37c7b9c4c5e16ecf
|
File details
Details for the file bolib3-3.0.1-py3-none-any.whl.
File metadata
- Download URL: bolib3-3.0.1-py3-none-any.whl
- Upload date:
- Size: 5.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f463f6cd82fdd1ac722e1dc73c11ddfb36fd3d926a5f0144085f8c41322efe20
|
|
| MD5 |
9faee041e72ac2d7ca81f6f5ac1be9b3
|
|
| BLAKE2b-256 |
97b57e83a0442b6de05f4749577068a86c89f49bec5adc1c335db9d5a33598fb
|