No project description provided
Project description
GeneralDichotomy
A general and minimalist toolkit for multi-objective optimization
GeneralDichotomy is a library and a package to enumerate supported extreme solutions of general multi-objective optimization problems.
This package is independent of any single-objective optimization solver.
The user implements the solving function that is called by the GeneralDichotomy algorithm.
In return, the solving function provides to the algorithm the objective cost vector associated to the solution.
Solution assignments are managed by the user and they can be associated to the objective cost vectors from their indices at the end of the search.
Internally, the GeneralDichotomy algorithm relies on polytope vertices enumeration to maintain a precise description of the convex hull of the Pareto front. Two polytope computation libraries can be currently used as backends: CDD and PPL. This organized search procedure provide an exhaustive set of supported (extreme) solutions when such set is enumerable. More generally, this tool can also be used with stochastic and heuristic optimizers to create a proxy of the Pareto convex hull.
The GeneralDichotomy core algorithm is implemented in C++. A C++ and a Python interface are available for the user-side (see examples). An additional Julia implementation interfaced with the JuMP package is also available.
build pygeneraldichotomy
Build and install from sources:
python -m build --wheel
pip install dist/*.whl
Build and test locally (for developers only):
cd "your_build_directory"
cmake .. [...]
cmake --build . -t pygdichotomy
export PYTHONPATH="your_build_directory"
python your_test_script.py
Or, in your python script:
import sys
sys.path.append("path_to_your_build_directory")
Usage
The GeneralDichomy package can be used via the C++ or the Python programming interface. In both cases, the used creates a class where they can implement the call to their solver (which can be run from an external package for instance).
Library and package compilation
As a C++ library, the GeneralDichotomy development package must be compiled from its sources to be tested. Compilation instructions can be found on the dedicated wiki page [[Library compilation|Library-compilation]]. Note that the Python binding also needs a compilation step.
Examples
- Linear assignment [cpp,ortools]
cmake --build . -t example_lap_cpp_otools
- Linear assignment [cpp,toulbar2]
cmake --build . -t example_lap_cpp_tb2
- Linear assignment [python,pytoulbar2]
This example depends on the python package pytoulbar2 (python binding of the toulbar2 solver).
It can be installed via pip install pytoulbar2 in a python environment.
To run the example from the example/python_lap directory:
export PYTHONPATH="${PYTHONPATH}:generaldichotomy_build_dir/pydgichotomy" && python3 python_lap.py
Known issues
with python 3.12.3 on ubuntu 24.04 (apptainer env), ortools python package does not work with version 9.14.6206. It has been tested successfully with version 9.12.4544.
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 Distributions
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 pygeneraldichotomy-0.0.1.4.tar.gz.
File metadata
- Download URL: pygeneraldichotomy-0.0.1.4.tar.gz
- Upload date:
- Size: 31.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71f9ad4b06f06361d307eb274bfb75c8340c0dffcf9925fb14685ed6d0b4197f
|
|
| MD5 |
2d4fcf057994b54738477f2b2f76d4bc
|
|
| BLAKE2b-256 |
3ff139266ae19202ca5cb06e17c1f434ebad9797fb19abcf9b5af7a14e096c7c
|
File details
Details for the file pygeneraldichotomy-0.0.1.4-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pygeneraldichotomy-0.0.1.4-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 130.9 kB
- Tags: CPython 3.14t, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a662e9ab5160d7b5f0e4680a1285c1177b25fd3cf5dcb73011e5ea8c96982d18
|
|
| MD5 |
cfb0b150f88a64f8350772d28e567701
|
|
| BLAKE2b-256 |
f33c9c1040ed58a747bc829848c2a32c7d3e83b989fb8114fbfcba7a68ea9f95
|
File details
Details for the file pygeneraldichotomy-0.0.1.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pygeneraldichotomy-0.0.1.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 130.7 kB
- Tags: CPython 3.14, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a5d18297cc265ebc29aacfe2de62c12390d31263faa5b9dc3870bcaaf5a26b4
|
|
| MD5 |
37cc06249b5315c73cf4c84e5de961ed
|
|
| BLAKE2b-256 |
26ef57dd3290474d8f566ed56e1938e4be6e20f9bca3b6b783852c30d08c7b2a
|
File details
Details for the file pygeneraldichotomy-0.0.1.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pygeneraldichotomy-0.0.1.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 130.6 kB
- Tags: CPython 3.13, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b430025802b9a07212871c3f9046d505a01c3c6ee92e1927105a19a9c4281287
|
|
| MD5 |
04d5bbcdbff05f75b88cf38aa9720a7b
|
|
| BLAKE2b-256 |
8a903e45b46a60c2249974c690392ef6c69b5d2179e25e6b8ff9210bce2b4235
|
File details
Details for the file pygeneraldichotomy-0.0.1.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pygeneraldichotomy-0.0.1.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 130.6 kB
- Tags: CPython 3.12, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dec5d894c312440e07105ecb37d23cfc8d9a7a87533f52cab3860ce9c5946332
|
|
| MD5 |
b51b2794ff8d2a2681bf58a6f6674b22
|
|
| BLAKE2b-256 |
a9ff4ba60931f3df967222e93302e7e097a0e678eae3c5456b9214a7c88e579e
|
File details
Details for the file pygeneraldichotomy-0.0.1.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pygeneraldichotomy-0.0.1.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 130.5 kB
- Tags: CPython 3.11, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
badd2a122f4c2a8d1991f18693cb926b433ab15f74c25944c6915f88918bdb64
|
|
| MD5 |
64944076c4f0f17d4dbd6dc580959c60
|
|
| BLAKE2b-256 |
b0f1f63dd63b1bff3387bfbde98dbb7b7b1f4bba1ea994b42402ff2edcc257eb
|
File details
Details for the file pygeneraldichotomy-0.0.1.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pygeneraldichotomy-0.0.1.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 130.6 kB
- Tags: CPython 3.10, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f321392ee6c50d338ab8d6ab53154058f906afe1b83c479f701d8abb6af45c23
|
|
| MD5 |
1945d732d600cf4d1fe7fd44202437b4
|
|
| BLAKE2b-256 |
506f10ebe3b3346718e3a763b7717bb629fb3ed1de6d2e5f3e405fe060b18702
|
File details
Details for the file pygeneraldichotomy-0.0.1.4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pygeneraldichotomy-0.0.1.4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 130.6 kB
- Tags: CPython 3.9, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e228ab2f2433dea75e5577e97a282bcb7ba955485b25dc67813e211307eb121
|
|
| MD5 |
3d29faa40cee89a7d3b934ef68fa0d11
|
|
| BLAKE2b-256 |
aeeba51b20511b29f48d4406b54f40a9bd920458c3cf8ea812f5cab90a5b947e
|
File details
Details for the file pygeneraldichotomy-0.0.1.4-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pygeneraldichotomy-0.0.1.4-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 130.3 kB
- Tags: CPython 3.8, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c2c1ae9dbac811fd9690edc34e92b8e80caf26c2d7304236d39673a915b83df
|
|
| MD5 |
afba4673978baa8b64bde94fb066a41f
|
|
| BLAKE2b-256 |
7ce555c991ecf7392570a032061deed56a179c628181d4cd8a27b00fd1e623c1
|