Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pygeneraldichotomy-0.0.1.4.tar.gz (31.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pygeneraldichotomy-0.0.1.4-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (130.9 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pygeneraldichotomy-0.0.1.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (130.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pygeneraldichotomy-0.0.1.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (130.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pygeneraldichotomy-0.0.1.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (130.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pygeneraldichotomy-0.0.1.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (130.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pygeneraldichotomy-0.0.1.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (130.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pygeneraldichotomy-0.0.1.4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (130.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

pygeneraldichotomy-0.0.1.4-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (130.3 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

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

Hashes for pygeneraldichotomy-0.0.1.4.tar.gz
Algorithm Hash digest
SHA256 71f9ad4b06f06361d307eb274bfb75c8340c0dffcf9925fb14685ed6d0b4197f
MD5 2d4fcf057994b54738477f2b2f76d4bc
BLAKE2b-256 3ff139266ae19202ca5cb06e17c1f434ebad9797fb19abcf9b5af7a14e096c7c

See more details on using hashes here.

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

File hashes

Hashes for pygeneraldichotomy-0.0.1.4-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a662e9ab5160d7b5f0e4680a1285c1177b25fd3cf5dcb73011e5ea8c96982d18
MD5 cfb0b150f88a64f8350772d28e567701
BLAKE2b-256 f33c9c1040ed58a747bc829848c2a32c7d3e83b989fb8114fbfcba7a68ea9f95

See more details on using hashes here.

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

File hashes

Hashes for pygeneraldichotomy-0.0.1.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8a5d18297cc265ebc29aacfe2de62c12390d31263faa5b9dc3870bcaaf5a26b4
MD5 37cc06249b5315c73cf4c84e5de961ed
BLAKE2b-256 26ef57dd3290474d8f566ed56e1938e4be6e20f9bca3b6b783852c30d08c7b2a

See more details on using hashes here.

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

File hashes

Hashes for pygeneraldichotomy-0.0.1.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b430025802b9a07212871c3f9046d505a01c3c6ee92e1927105a19a9c4281287
MD5 04d5bbcdbff05f75b88cf38aa9720a7b
BLAKE2b-256 8a903e45b46a60c2249974c690392ef6c69b5d2179e25e6b8ff9210bce2b4235

See more details on using hashes here.

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

File hashes

Hashes for pygeneraldichotomy-0.0.1.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dec5d894c312440e07105ecb37d23cfc8d9a7a87533f52cab3860ce9c5946332
MD5 b51b2794ff8d2a2681bf58a6f6674b22
BLAKE2b-256 a9ff4ba60931f3df967222e93302e7e097a0e678eae3c5456b9214a7c88e579e

See more details on using hashes here.

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

File hashes

Hashes for pygeneraldichotomy-0.0.1.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 badd2a122f4c2a8d1991f18693cb926b433ab15f74c25944c6915f88918bdb64
MD5 64944076c4f0f17d4dbd6dc580959c60
BLAKE2b-256 b0f1f63dd63b1bff3387bfbde98dbb7b7b1f4bba1ea994b42402ff2edcc257eb

See more details on using hashes here.

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

File hashes

Hashes for pygeneraldichotomy-0.0.1.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f321392ee6c50d338ab8d6ab53154058f906afe1b83c479f701d8abb6af45c23
MD5 1945d732d600cf4d1fe7fd44202437b4
BLAKE2b-256 506f10ebe3b3346718e3a763b7717bb629fb3ed1de6d2e5f3e405fe060b18702

See more details on using hashes here.

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

File hashes

Hashes for pygeneraldichotomy-0.0.1.4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3e228ab2f2433dea75e5577e97a282bcb7ba955485b25dc67813e211307eb121
MD5 3d29faa40cee89a7d3b934ef68fa0d11
BLAKE2b-256 aeeba51b20511b29f48d4406b54f40a9bd920458c3cf8ea812f5cab90a5b947e

See more details on using hashes here.

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

File hashes

Hashes for pygeneraldichotomy-0.0.1.4-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5c2c1ae9dbac811fd9690edc34e92b8e80caf26c2d7304236d39673a915b83df
MD5 afba4673978baa8b64bde94fb066a41f
BLAKE2b-256 7ce555c991ecf7392570a032061deed56a179c628181d4cd8a27b00fd1e623c1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page