v1.0 is out! The basic building blocks are in place, and cvxpy-gurobi
can be used for solving real-world problems without fear of API breakage. That doesn't mean development is finished and new features won't be added, quite the contrary, but everything that has been done up to now will be supported in the future.
And now, the changes compared to the previous release.
Newly supported atoms
- CVXPY atoms that have an equivalent generalized expression in
gurobipy
are correctly translated. This is done by adding auxilliary
variables constrained to the value of the arguments of the atom to
the problem: reshape
atoms are handled during translation (#42).- The
hstack
andvstack
atoms are translated into their
gurobipy
counterparts, available from Gurobi 11 (#43, #44).
Fixed
- The
axis
argument tocp.sum
is no longer ignored (#39). - If a scalar expression is given to
cp.sum
, it no longer raises an error (#48). - The dual values should be more correct in cases where the sign is reversed
betweencvxpy
andgurobipy
(#50).
Dependencies
The numpy
and scipy
dependencies have lower bounds, set willingly
to fairly old versions (#56).
Testing
- The library is tested in CI against the oldest supported versions and
the latest releases (#56). - All test problems must be feasible and bounded to ensure they have a
unique solution (#50). - Backfilling infeasible and unbounded problems is explicitly tested (#53).
Removed
The variable_map
argument used when filling a Model
was removed.
Instead, the variable map is handled by the Translater
internally (#24).
In the future, there will be an official way to provide custom translations
which is not limited to variables.
What's Changed
- Add contributing guidelines by @jonathanberthias in #22
- Create Gurobi variables during translation by @jonathanberthias in #24
- Support
abs
generalized expressions by @jonathanberthias in #27 - Update fixtures for CVXPY v1.5.3 and NumPy v2 by @jonathanberthias in #28
- Fix
abs
for 1d scalar case by @jonathanberthias in #30 - Add support for
min
andmax
atoms by @jonathanberthias in #31 - Add support for
minimum
andmaximum
by @jonathanberthias in #34 - Support norm1 atom by @jonathanberthias in #35
- Add support for
norm2
by @jonathanberthias in #36 - Add support for
norm_inf
by @jonathanberthias in #37 - Forward axis in sum atom by @jonathanberthias in #39
- Move
Translater
to its own file by @jonathanberthias in #41 - Support
reshape
atom by @jonathanberthias in #42 - Support
hstack
andvstack
atoms by @jonathanberthias in #43 - Stack is not available on
gurobipy<11
by @jonathanberthias in #44 - Fix
minimum
andmaximum
with non-variable expressions by @jonathanberthias in #45 - Fix handling of sum of scalar expression by @jonathanberthias in #48
- Ensure all test problems are bounded and feasible by @jonathanberthias in #50
- Ensure
minimum
/maximum
arguments are scalars by @jonathanberthias in #51 - Add tests for infeasible and unbounded problems by @jonathanberthias in #53
- Improve usage of hatch environments by @jonathanberthias in #55
- Add lower bounds to dependencies and test them by @jonathanberthias in #56
- Reset ID counter in between test groups by @jonathanberthias in #57
- Fix
minimum
/maximum
with a scalar argument by @jonathanberthias in #58 - Prepare for v1.0 release by @jonathanberthias in #59
Full Changelog: v0.1.0...v1.0.0