A modular framework for mixed integer programming.
Project description
Optiframe
Optiframe is an optimization framework for writing mixed integer programs (MIPs).
It allows you to structure your MIPs in a way that allows clear separation of concerns, high modularity and testability.
Core Concepts
- The optimization process is divided into multiple steps which are clearly separated:
- Validation allows you to validate the input data.
- Pre-processing allows you to optimize the provided data to reduce the size of the final model.
- MIP building allows you to modify the MIP to define the optimization problem.
- Solving is a pre-defined step that obtains an optimal solution for the problem.
- Solution extraction allows you to process the variable values of the solution into something more meaningful.
- Tasks are the core components that allow you to implement functionality for each step.
- The constructor of a task allows you to define dependencies for that task, which are automatically injected by the optimizer based on their type annotation.
- The execute method allows you to implement the functionality. It may return data which can then be used by other tasks as a dependency.
- Modules combine tasks that belong together. Each module must contain a task for building the MIP and can additionally contain tasks for validation, pre-processing and solution extraction. The modules are what makes Optiframe so extendable: You can define extensions of a problem in a separate module and only include it if needed.
- The optimizer allows you to configure the packages that you need. Afterwards, you can initialize it with the instance data and then solve the optimization problem.
Installation & Usage
pip install optiframe
Take a look at the examples
folder for examples on how to use Optiframe!
License
This project is available under the terms of the MIT license.
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
optiframe-0.5.0.tar.gz
(11.5 kB
view details)
Built Distribution
optiframe-0.5.0-py3-none-any.whl
(14.7 kB
view details)
File details
Details for the file optiframe-0.5.0.tar.gz
.
File metadata
- Download URL: optiframe-0.5.0.tar.gz
- Upload date:
- Size: 11.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.2 CPython/3.10.6 Linux/6.2.6-76060206-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d42a7277ca7184017da7a8ca2d658f1e46f7b2de66c3ee8e1683e4cfde422a90 |
|
MD5 | 9c05390aef7e9caf9f900614ac4269de |
|
BLAKE2b-256 | dd8cb7b57f0debafcfff7b6adec22cfc696dc7e5fc983e554641b34b1a356a14 |
File details
Details for the file optiframe-0.5.0-py3-none-any.whl
.
File metadata
- Download URL: optiframe-0.5.0-py3-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.2 CPython/3.10.6 Linux/6.2.6-76060206-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b345eb113182d1a698d36378f8212983da913cee72bee38fb303ada5a6b6b61b |
|
MD5 | 5cd29bcc914ee4a91239f62b185babbf |
|
BLAKE2b-256 | 6db418d3cfc81dbe88c9aa91146b10a37e816b58a3ed1434494fefddac8101b2 |