Skip to main content

A Python interface to the Exact integer linear programming solver

Project description

Exact

Exact solves decision and optimization problems formulated as binary linear programs, also known as 0-1 integer linear programs or pseudo-Boolean formulas.

Exact is a fork of RoundingSat and improves upon its predecessor in reliability, performance and ease-of-use. The name "Exact" reflects that the answers are fully sound, as approximate and floating-point calculations only occur in heuristic parts of the algorithm. As such, Exact can soundly be used for verification and theorem proving, where its envisioned ability to emit machine-checkable certificates of optimality and unsatisfiability should prove useful.

Features

  • Native conflict analysis over binary linear constraints, constructing full-blown cutting planes proofs.
  • Highly efficient watched propagation routines.
  • Seamless use of arbitrary precision arithmetic.
  • Hybrid linear (top-down) and core-guided (bottom-up) optimization.
  • Optional integration with the SoPlex LP solver.
  • Compiles on macOS.
  • Python interface with assumption solving. Published as a PyPI package. (supporting only Linux for now)
  • Under development: generation of certificates of optimality and unsatisfiability that can be automatically verified by VeriPB.

Usage

TODO: explain how to use this Python package

Build

after moving the .so and the headers to the folder exact, run

$ poetry build
$ poetry publish

Citations

Origin paper with a focus on cutting planes conflict analysis:
[EN18] J. Elffers, J. Nordström. Divide and Conquer: Towards Faster Pseudo-Boolean Solving. IJCAI 2018

Integration with SoPlex:
[DGN20] J. Devriendt, A. Gleixner, J. Nordström. Learn to Relax: Integrating 0-1 Integer Linear Programming with Pseudo-Boolean Conflict-Driven Search. CPAIOR 2020 / Constraints journal

Watched propagation:
[D20] J. Devriendt. Watched Propagation for 0-1 Integer Linear Constraints. CP 2020

Core-guided optimization:
[DGDNS21] J. Devriendt, S. Gocht, E. Demirović, J. Nordström, P. J. Stuckey. Cutting to the Core of Pseudo-Boolean Optimization: Combining Core-Guided Search with Cutting Planes Reasoning. AAAI 2021

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

exact-0.3.0.tar.gz (787.6 kB view details)

Uploaded Source

Built Distribution

exact-0.3.0-py3-none-any.whl (819.0 kB view details)

Uploaded Python 3

File details

Details for the file exact-0.3.0.tar.gz.

File metadata

  • Download URL: exact-0.3.0.tar.gz
  • Upload date:
  • Size: 787.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.7 CPython/3.8.10 Linux/5.4.0-81-generic

File hashes

Hashes for exact-0.3.0.tar.gz
Algorithm Hash digest
SHA256 c6cfbe2333cc990367a3c003922b7cccf53e5db9e5b55458f59f9d2a3c77d074
MD5 43e7014944d586522031961fdeef885f
BLAKE2b-256 72978263037352c7201ac338bcc67b819851fcb6ebefe3ea23fb4a6d5fe237bf

See more details on using hashes here.

File details

Details for the file exact-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: exact-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 819.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.7 CPython/3.8.10 Linux/5.4.0-81-generic

File hashes

Hashes for exact-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 64adadb487a6afa3189534d1159a95e470a7b4633b3625706f7da9664d199f66
MD5 d580f6c303d96e951bcfba3c2d8266ca
BLAKE2b-256 b7f003d959bad7115f16ba2a8ab123c0e327bc5d340ad46b7bb47f162c2e25b9

See more details on using hashes here.

Supported by

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