dwave-optimization enables the formulation of nonlinear models for industrial optimization problems. The package includes:
- A class for nonlinear models used by the Leap service's quantum-classical hybrid nonlinear-program solver.
- Model generators for common optimization problems.
Example Usage
The
flow-shop scheduling
problem is a variant of the renowned
job-shop scheduling
optimization problem. Given n jobs to schedule on m machines, with
specified processing times for each job per machine, minimize the makespan
(the total length of the schedule for processing all the jobs). For every
job, the i-th operation is executed on the i-th machine. No machine
can perform more than one operation simultaneously.
This small example builds a model for optimizing the schedule for processing two jobs on three machines.
from dwave.optimization.generators import flow_shop_scheduling processing_times = [[10, 5, 7], [20, 10, 15]] model = flow_shop_scheduling(processing_times=processing_times)
For explanations of the terminology, see the Ocean glossary.
See the documentation for more examples.
Installation
Installation from PyPI:
pip install dwave-optimization
During package development, it is often convenient to use an editable install. See meson-python's editable installs for more details.
pip install --group dev --group blas pip install --editable . \ --no-build-isolation \ --config-settings=editable-verbose=true \ --config-settings=setup-args="-Dblas=enabled"
Testing
All code should be thoroughly tested and all pull requests should include tests.
To run the Python tests, first install the package using an editable install as described above. The tests can then be run with unittest.
To run the C++ tests, first install the project dependencies, then setup a
meson build directory. You must configure the build as a debug build for
the tests to run.
pip install --group dev --group blas meson setup build -Dbuildtype=debug -Dblas=enabled
You can then run the tests using meson's test framework.
To run the doctests, install the docs requirements:
You can then run them using the docs/Makefile.
License
Released under the Apache License 2.0. See LICENSE file.
Contributing
Ocean's contributing guide has guidelines for contributing to Ocean packages.
dwave-optimization includes some formatting customization in the
.clang-format and setup.cfg files.
Release Notes
dwave-optimization makes use of reno
to manage its release notes.
When making a contribution to dwave-optimization that will affect users,
create a new release note file by running
reno new your-short-descriptor-here
You can then edit the file created under releasenotes/notes/.
Remove any sections not relevant to your changes.
Commit the file along with your changes.
See reno's user guide for details.