Skip to content

Releases: jonathanberthias/cvxpy-gurobi

1.0.0 - 2024-09-28

28 Sep 11:33
25b707a
Compare
Choose a tag to compare

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 and vstack atoms are translated into their
    gurobipy counterparts, available from Gurobi 11 (#43, #44).

Fixed

  • The axis argument to cp.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
    between cvxpy and gurobipy (#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

Full Changelog: v0.1.0...v1.0.0

v0.1.0

01 Aug 11:53
fed6b33
Compare
Choose a tag to compare

This is the first release of cvxpy-gurobi!

The core idea of the package is in place and the solver API
is not expected to change. However, only basic expressions
and constraints are easily manageable and many internal changes
will be required to add support for expressions which cannot
be translated in a straightforward way, such as cp.abs that
requires gurobipy's GenExpr.

In this release, the following elements are already covered:

  • AddExpression
  • Constant
  • DivExpression
  • index (indexing with integers)
  • MulExpression (multiplication by a constant)
  • multiply (element-wise multiplication)
  • NegExpression
  • power (only if p is 2)
  • Promote (broadcasting)
  • quad_over_lin (sum_squares)
  • special_index (indexing with arrays)
  • Sum
  • Variable (duh)

What's Changed

New Contributors

  • @jonathanberthias made their first contribution in #1
  • @github-actions made their first contribution in #7

Full Changelog: https://github.com/jonathanberthias/cvxpy-gurobi/commits/v0.1.0