Recent Releases of cvxpy

cvxpy - v.1.7.2

Patch notes 1.7.2

This is a micro patch release which fixes many bugs and typos.

| Link | Type | 1.7.x | Comment | |------|------|-------|---------| | #2869 | Docs | ✅ | | | #2870 | Setup | ✅ | | | #2872 | Bug Fix | ✅ | | | #2878 | CI | ✅ | | | #2882 | Bug Fix | ✅ | | | #2886 | Docs | ✅ | | | #2888 | Solver Interface | ✅ | | | #2892 | Version Bump | ✅ | | | #2894 | Docs | ✅ | | | #2897 | Bug Fix | ✅ | | | #2906 | Bug Fix | ✅ | | | #2908 | Bug Fix | ✅ | | | #2903 | Bug Fix | ✅ | |

- C++
Published by Transurgeon 6 months ago

cvxpy - v1.7.1

Patch notes 1.7.1

This is a micro patch release which fixes two bugs from the 1.7.0 release.

| Link | Type | 1.7.x | Comment | |------|------|-------|---------| | #2862 | Bug Fix | ✅ | | | #2864 | Bug Fix | ✅ | |

Bug fixes

  • Update SciPy dependency to >= 1.13.0
  • Fix issue with scalar boolean variables

- C++
Published by Transurgeon 7 months ago

cvxpy - v1.7.0

CVXPY 1.7

This release is consistent with our semantic versioning guarantee. It comes packed with many new features, bug fixes, and performance improvements.

This version of CVXPY supports Python 3.9 through 3.13. While working on the next release, we continue to officially support CVXPY 1.6.

New GPU solvers

CVXPY begins supporting GPU solvers in this release. The following solvers are supported:

MPAX runs on a GPU device specified by the JAX environment. MPAX, cuOpt, and CuClarabel are new solver interfaces that can be used with CVXPY. SCS has a new backend based on cuDSS that can be used through the existing SCS interface.

Sparse array support

SciPy is deprecating the sparse matrix API in favor of sparse arrays. See the migration guide here.

CVXPY 1.7 supports the new sparse array API but continues to support the sparse matrix API for backwards compatibility.

Update on reshape order

In CVXPY 1.6, we began raising warnings for the default reshape order being Fortran ('F'), which differs from NumPy's default order ('C'). We also mentioned that we would raise an error if the order was not specified in CVXPY 1.7, and switch the default order to 'C' in CVXPY 1.8. However, we have decided to postpone these changes to CVXPY 2.0, the next major release. We believe that raising errors could break existing code and cause confusion among users. We encourage users to continue explicitly specifying the order when using reshape, vec, and flatten atoms.

New features

  • Multiple attributes for variables and parameters
  • New QOCO solver interface
  • New atom: broadcast_to
  • New atom: transpose(expr, axes)
  • New atom: swapaxes
  • New atom: moveaxis
  • New atom: permute_dims
  • Add warm-start support for HiGHS
  • Add warm-start support for PIQP

Summary

This new release totaled 84 PRs from 27 users. - @563925743 | #2683 - @akshayka | #2711 - @andresliszt | #2634 - @bstellato | #2769 - @dependabot[bot] | #2638, #2639, #2650, #2659, #2757, #2795, #2819, #2827, #2831, #2832, #2848 - @dschult | #2689, #2710 - @goulart-paul | #2697, #2737 - @govindchari | #2670, #2712, #2719, #2720, #2730, #2744, #2761, #2762, #2763 - @jonathanberthias | #2740 - @klobucar | #2648 - @kydonian | #2796 - @kylematoba | #2726 - @maxschaller | #2635, #2693, #2694, #2734 - @mbataillou | #2745 - @mlubin | #2636 - @napinoco | #2846 - @PTNobel | #2692, #2701, #2702, #2717, #2718, #2803, #2812, #2815, #2839, #2844 - @rileyjmurray | #2834, #2847 - @RSchwan | #2797 - @samuela | #2798 - @senhalil | #2691, #2785, #2810, #2838 - @smachen42 | #2695 - @SteveDiamond | #2647, #2705, #2765, #2778, #2792, #2824 - @tasseff | #2714 - @Transurgeon | #2361, #2637, #2654, #2658, #2667, #2690, #2724, #2756, #2760, #2768, #2772, #2784, #2805, #2817, #2829 - @tschm | #2676, #2678, #2680 - @ZedongPeng | #2802

Special shoutout to @PTNobel for leading the integration of GPU solver interfaces into CVXPY.

- C++
Published by Transurgeon 8 months ago

cvxpy - v1.6.7

Patch notes (from #2859)

This is a micro patch release which fixes a few bugs.

| Link | Type | 1.6.x | Comment | |------|------|-------|---------| | #2829 | Bug Fix | ✅ | | | #2839 | Bug Fix | ✅ | | | #2834 | Bug Fix | ✅ | | | #2838 | Bug Fix | ✅ | | | #2846 | Doc | ✅ | |

Bug fixes

  • Fix issue with duals not working in the HiGHS interface @senhalil @SteveDiamond
  • Update sparse cholesky expression handling @rileyjmurray
  • Adds new warning for using .value with sparse leaves @PTNobel

- C++
Published by Transurgeon 8 months ago

cvxpy - v1.7.0

CVXPY 1.7

This release is consistent with our semantic versioning guarantee. It comes packed with many new features, bug fixes, and performance improvements.

This version of CVXPY supports Python 3.9 through 3.13. While working on the next release, we continue to officially support CVXPY 1.6.

New GPU solvers

CVXPY begins supporting GPU solvers in this release. The following solvers are supported:

MPAX runs on a GPU device specified by the JAX environment. MPAX, cuOpt, and CuClarabel are new solver interfaces that can be used with CVXPY. SCS has a new backend based on cuDSS that can be used through the existing SCS interface.

Sparse array support

SciPy is deprecating the sparse matrix API in favor of sparse arrays. See the migration guide here.

CVXPY 1.7 supports the new sparse array API but continues to support the sparse matrix API for backwards compatibility.

Update on reshape order

In CVXPY 1.6, we began raising warnings for the default reshape order being Fortran ('F'), which differs from NumPy's default order ('C'). We also mentioned that we would raise an error if the order was not specified in CVXPY 1.7, and switch the default order to 'C' in CVXPY 1.8. However, we have decided to postpone these changes to CVXPY 2.0, the next major release. We believe that raising errors could break existing code and cause confusion among users. We encourage users to continue explicitly specifying the order when using reshape, vec, and flatten atoms.

New features

  • Multiple attributes for variables and parameters
  • New QOCO solver interface
  • New atom: broadcast_to
  • New atom: transpose(expr, axes)
  • New atom: swapaxes
  • New atom: moveaxis
  • New atom: permute_dims
  • Add warm-start support for HiGHS
  • Add warm-start support for PIQP

Summary

This new release totaled 84 PRs from 27 users. - @563925743 | #2683 - @akshayka | #2711 - @andresliszt | #2634 - @bstellato | #2769 - @dependabot[bot] | #2638, #2639, #2650, #2659, #2757, #2795, #2819, #2827, #2831, #2832, #2848 - @dschult | #2689, #2710 - @goulart-paul | #2697, #2737 - @govindchari | #2670, #2712, #2719, #2720, #2730, #2744, #2761, #2762, #2763 - @jonathanberthias | #2740 - @klobucar | #2648 - @kydonian | #2796 - @kylematoba | #2726 - @maxschaller | #2635, #2693, #2694, #2734 - @mbataillou | #2745 - @mlubin | #2636 - @napinoco | #2846 - @PTNobel | #2692, #2701, #2702, #2717, #2718, #2803, #2812, #2815, #2839, #2844 - @rileyjmurray | #2834, #2847 - @RSchwan | #2797 - @samuela | #2798 - @senhalil | #2691, #2785, #2810, #2838 - @smachen42 | #2695 - @SteveDiamond | #2647, #2705, #2765, #2778, #2792, #2824 - @tasseff | #2714 - @Transurgeon | #2361, #2637, #2654, #2658, #2667, #2690, #2724, #2756, #2760, #2768, #2772, #2784, #2805, #2817, #2829 - @tschm | #2676, #2678, #2680 - @ZedongPeng | #2802

Special shoutout to @PTNobel for leading the way with integrating GPU solvers into CVXPY.

- C++
Published by Transurgeon 8 months ago

cvxpy - v1.6.6

Patch notes (from #2821)

This is a micro patch release which fixes a few bugs and updates solver interfaces.

| Link | Type | 1.6.x | Comment | |------|------|-------|---------| | #2805 | Bug Fix | ✅ | | | #2798 | Bug Fix | ✅ | | | #2797 | Interface | ✅ | | | #2796 | Interface | ✅ | |

Bug fixes

  • support negative axes in sum (and other axis_atoms) @Transurgeon
  • send logging messages to stderr @samuela

- C++
Published by Transurgeon 9 months ago

cvxpy - v1.6.5

Patch notes (from #2789)

This is a micro patch release which fixes a few bugs and updates solver interfaces.

| Link | Type | 1.6.x | Comment | |------|------|-------|---------| | #2785 | Interface | ✅ | | | #2784 | Interface | ✅ | | | #2778 | Bug Fix | ✅ | | | #2769 | Interface | ✅ | | | #2765 | Bug Fix | ✅ | | | #2763 | Interface | ✅ | | | #2760 | Bug Fix | ✅ | | | #2756 | Bug Fix | ✅ | |

Bug fixes

  • Fixes issue with broadcasting in constraints. @SteveDiamond
  • Fixes equality constraints error in QOCO. @govindchari
  • Fixes highs solver options. @senhalil
  • Fixes bug with quadoverlin and usequadobj=True. @SteveDiamond
  • Fixes OSQP polish parameter name (also keeps compatibility with two versions of OSQP). @bstellato @vineetbansal
  • Fixes issue with infeasible sparse problems. @Transurgeon

- C++
Published by Transurgeon 11 months ago

cvxpy - v1.6.4

Patch notes (from #2748)

This is a micro patch release which adds an interface for QOCO. Notably this release will allow cvxpygen to use the interface and integrate with qocogen.

| Link | Type | 1.6.x | Comment | |------|------|-------|---------| | #2745 | Interface | ✅ | | | #2724 | Interface | ✅ | | | #2719 | Interface | ✅ | |

All three PRs are from @govindchari , author of QOCO.

- C++
Published by Transurgeon 12 months ago

cvxpy - v1.6.3

Patch notes (from #2748)

This is a micro patch release which fixes two bugs.

| Link | Type | 1.6.x | Comment | |------|------|-------|---------| | #2745 | Bug | ✅ | | | #2724 | Bug | ✅ | |

Bug fixes

  • Fixes issues with broadcasting for >= 3d expressions. Also improved error messages. @Transurgeon @SteveDiamond
  • Fixes xpress interface for xpress >= 9.5. @mbataillou

- C++
Published by Transurgeon 12 months ago

cvxpy - v1.6.2

Patch notes (from #2738)

This is a micro patch release which fixes two bugs and removes one warning.

| Link | Type | 1.6.x | Comment | |------|------|-------|---------| | #2737 | Bug | ✅ | | | #2734 | Bug | ✅ | | | #2726 | Warning | ✅ | |

Bug fixes

  • Removes Mosek 11 warnings in interface @kylematoba
  • fix bug in axis_grad @maxschaller
  • fix clarabel on parametric update @goulart-paul

- C++
Published by Transurgeon about 1 year ago

cvxpy - v1.6.1

Patch notes (from #2716)

| Link | Type | 1.6.x | Comment | |------|------|-------|---------| | #2630 | Interface update | ✅ | | | #2634 | Bug | ✅ | Remove bound setter | | #2635 | Bug | ✅ | | | #2636 | Interface update | ✅ | ortools bump | | #2691 | Docs | ✅ | | | #2694 | Bug | ✅ | | | #2695 | Type hints | ✅ | | | #2697 | Bug | ✅ | Clarabel fix | | #2702 | Bug | ✅ | | | #2705 | Docs | ✅ | | | #2711 | Docs | ✅ | | | #2714 | Bug | ✅ | | | #2690 | Dependency | ✅ | |

Bug fixes

  • The implementation of inv_prod was broken for variables of shape other than 1D. It is now fixed. This may break some code that was previously incorrectly allowed and giving incorrect answers.
  • The implementation of sparse variables did not allow for maximal efficiency gains. This can now be addressed with the value_sparse attribute.
  • Clarabel issues for DQCP are now fixed.

Documentation

  • New set of marimo notebooks for "basic" cvxpy examples. Thanks @akshayka !
  • Typo in atomic functions table

- C++
Published by Transurgeon about 1 year ago

cvxpy - v1.5.4

Patch notes (from #2628)

| Link | Type | 1.5.x | Comment | |------|------|-------|---------| | #2541 | Bug | ✅ | | | #2542 | Bug | ✅ | | | #2549 | Bug | ✅ | | | #2609 | Bug | ✅ | | | #2624 | Bug | ✅ | | | #2630 | Interface update | ✅ | |

New backward support policy

This release will be the last one in the 1.5.x series. We plan to no longer support cvxpy versions 1.5.x, where x<4, while we continue working on cvxpy 1.6.x Version 1.5.4 will be the last supported version in the 1.5.x series. In the future, we might update 1.5.4 with backport bug fixes.

- C++
Published by Transurgeon over 1 year ago

cvxpy - v1.6.0

CVXPY 1.6

This release is consistent with our semantic versioning guarantee. It comes packed with many new features, bug fixes, and performance improvements. This version of CVXPY supports Python 3.9 through 3.13. While working on the next release, we continue to officially support CVXPY 1.5.

Default reshape order warning

CVXPY's default order for array manipulation atoms such as reshape, vec and flatten, is Fortran ('F'). In this release CVXPY raises a warning when no explicit order is specified.

In version 1.7, we plan to raise an error if the order is not specified. Finally, in version 1.8, we will switch the default order from ('F') to ('C') to match NumPy's behavior.

Dropping ECOS dependency

In version 1.5, we changed our default solver from ECOS to Clarabel and announced that we would be removing ECOS as a dependency in 1.6. Despite some regressions in certain DQCP tests, we are moving forward with dropping ECOS in this release. If you are experiencing any issues with Clarabel we encourage you to try using SCS or add ECOS as a dependency to your project.

Features and bug fixes

  • Added Python 3.13 support and dropped Python 3.8 support
  • New HiGHS solver interface
  • New atom: cvar
  • New atom: cumprod
  • New atom: quantumrelentr
  • New atom: quantumcondentr
  • New atom: concatenate
  • Support for N-dimensional variables and expressions for the following operations: - axis atoms like min, max and sum - indexing - elementwise operations
  • Sparsity attribute for variables
  • New website and documentation theme based on Sphinx Immaterial
  • Ability to pass multiple solvers as argument to .solve()
  • Performance improvement for sum_largest and cumsum
  • Performance improvement for integer and boolean variables
  • Improving string representation of special index

Summary

This new release totaled 80 PRs from 24 users, 14 of which are first time contributors :). * @StefRe made their first contribution in https://github.com/cvxpy/cvxpy/pull/2436 * @cjerdonek made their first contribution in https://github.com/cvxpy/cvxpy/pull/2454 * @timkpaine made their first contribution in https://github.com/cvxpy/cvxpy/pull/2452 * @sven-oxionics made their first contribution in https://github.com/cvxpy/cvxpy/pull/2461 * @nikkujensen made their first contribution in https://github.com/cvxpy/cvxpy/pull/2469 * @alexandercarruthers made their first contribution in https://github.com/cvxpy/cvxpy/pull/2490 * @oriyalperin made their first contribution in https://github.com/cvxpy/cvxpy/pull/2450 * @GaetanLepage made their first contribution in https://github.com/cvxpy/cvxpy/pull/2508 * @jonathanberthias made their first contribution in https://github.com/cvxpy/cvxpy/pull/2542 * @matthieubulte made their first contribution in https://github.com/cvxpy/cvxpy/pull/2549 * @simonbowly made their first contribution in https://github.com/cvxpy/cvxpy/pull/2541 * @davidppineiro made their first contribution in https://github.com/cvxpy/cvxpy/pull/2552 * @UweGensheimer made their first contribution in https://github.com/cvxpy/cvxpy/pull/2580 * @andresliszt made their first contribution in https://github.com/cvxpy/cvxpy/pull/2597

The list below details all contributions made throughout this new release. Thank you all for your incredible work! - @alexandercarruthers | #2490 - @andresliszt | #2597, #2615 (concatenate atom) - @aryamanjeendgar | #2606, #2621 - @bkurtz | #2585, #2590 (CI refactor and stdist publishing) - @carlosgmartin | #2608 - @chasilvester | #2586 - @cjerdonek | #2454 - @davidppineiro | #2552 (cvar atom) - @dependabot[bot] | #2443, #2444, #2448, #2455, #2456, #2463, #2468, #2476, #2477 - @GaetanLepage | #2508 - @jonathanberthias | #2527, #2542 - @matthieubulte | #2549 - @nikkujensen | #2469 - @oriyalperin | #2450 - @phschiele | #2481, #2482 - @PTNobel | #2538, #2624 - @rluce | #2484 - @simonbowly | #2541 - @sven-oxionics | #2461 - @syanga | #2462 - @timkpaine | #2452 - @Transurgeon | #2392, #2457, #2473, #2475, #2479, #2487, #2488, #2494, #2496, #2500, #2501, #2509, #2524, #2525, #2529, #2532, #2535, #2543, #2546, #2556, #2560, #2561, #2562, #2563, #2564, #2570, #2577, #2578, #2579, #2581, #2582, #2589, #2592, #2593, #2595, #2596, #2601, #2602, #2614, #2616, #2617, #2622 - @UweGensheimer | #2580, #2609 (HiGHS interface) - @wujianjack | #2489 - @SteveDiamond | many many code reviews

- C++
Published by Transurgeon over 1 year ago

cvxpy - v1.5.3

@rluce Fixing compatibility between NumPy 2.0 and the Gurobi interface #2484 @Transurgeon Numerous bug fixes @GaetanLepage Improved scipy compatibility #2508

- C++
Published by PTNobel over 1 year ago

cvxpy - v1.5.2

What's Changed

This release is the first one compatible with NumPy 2.0. It is backward compatible, i.e., NumPy versions < 2.0 will continue to work.

  • #2475 updating pyproject to support numpy 2.0 (@Transurgeon)
  • #2461 Fix integer overflow on Windows in TensorRepresentation.flatten_tensor (@sven-oxionics)
  • #2454 Clarify ECOSDEPDEPRECATION_MSG, including how to suppress the warning (@cjerdonek)
  • #2452 Include minimum necessary meta information in setup.py (@timkpaine)
  • #2392 Updating numpy.i (cvxcore) swig interface (@Transurgeon)
  • #2481 [CI] Updates macos version (@phschiele)
  • various CI updates

Full Changelog: https://github.com/cvxpy/cvxpy/compare/v1.5.1...v1.5.2

- C++
Published by phschiele over 1 year ago

cvxpy - v1.5.1

What's Changed

  • #2438 Fixes QP canonicalization (@phschiele)
  • #2436 Fix link in README.md (@StefRe)
  • #2435 Fix for issue with quadoverlin parameters (@SteveDiamond)
  • #2441 Adds back DGP + DPP quadoverlin (@phschiele)

Full Changelog: https://github.com/cvxpy/cvxpy/compare/v1.5.0...v1.5.1

- C++
Published by phschiele almost 2 years ago

cvxpy - v1.4.4

What's Changed

  • #2411 value.A is deprecated (@chofchof)
  • #2420 Preserve expression sign in canonicalization of minimum and maximum (@zacharyweiss)
  • #2423 Adds warning for constants from nested lists (@phschiele)
  • #2425 New XPRESS API (@phschiele)
  • #2427 Fix convolve bug (@SteveDiamond)
  • #2424 Fix DQCP bugs (@SteveDiamond)
  • #2426 Fix nuclear norm gradient for non-square inputs (@SteveDiamond)
  • #2428 Reduce memory consumption for sum(list) (@phschiele)
  • #2431 Fix keep dims for min atom (@allenlawrence94)
  • #2332 Implements inplace mutation error (@PTNobel)
  • #2432 Updates notable contributors (@PTNobel)
  • #2438 Fixes QP canonicalization (@phschiele)
  • #2436 Fix link in README.md (@StefRe)
  • #2435 Fix for issue with quadoverlin parameters (@SteveDiamond)
  • #2441 Adds back DGP + DPP quadoverlin (@phschiele)

Full Changelog: https://github.com/cvxpy/cvxpy/compare/v1.4.3...v1.4.4

- C++
Published by phschiele almost 2 years ago

cvxpy - v1.5.0

CVXPY 1.5

This release is consistent with our semantic versioning guarantee. It comes packed with many new features, bug fixes, and performance improvements. This version of CVXPY supports Python 3.8 through 3.12. While working on the next release, we continue to officially support CVXPY 1.5 and 1.4.

This release may not be compatible with NumPy 2.0.

ECOS deprecation

CVXPY has used ECOS as the default solver for many years; however, it has known issues with performance and numerical stability in edge cases. Recently, a new solver, Clarabel, that improves the algorithm and implementation of ECOS has been under development.

In this release, CVXPY uses Clarabel instead of ECOS for all categories of problems where ECOS was previously the default.

In 1.6, we plan to no longer install ECOS as a CVXPY dependency. We have no plans to remove support for calling ECOS as a solver.

We encourage you to try and use Clarabel instead, but if you're dependent on ECOS's exact behavior please explicitly specify it as a solver and as a dependency for your project.

Features and bug fixes

  • Major updates to the documentation, adding a number of new sections to the User Guide and breaking up the monolithic Advanced features page [Many PRs] @Transurgeon
  • Added .curvatures containing all curvatures an expression is compatible with #1540 @sunnygurm
  • Variable bounds can be specified with cp.Variable(bound=(lower, upper)) and are directly passed to the solver when helpful. lower and upper can be either a NumPy array or floating point number. #2234, #2321 @Paulnkk, @SteveDiamond
  • Constants can be named by writing cp.Constant(name='...') #2335 @SteveDiamond
  • Added a new atom, vdot, that has the same behavior as scalar_product #2371 @Transurgeon
  • CVXPY runs in the next PyOdide release via wasm #2363, #2382 @phschiele
  • Added or-tools 9.9 support #2316 @mlubin
  • Major rewrite to the PDLP interface #2252 @mlubin
  • Dropped MOSEK <= 9 support and upgraded the MOSEK integration code #2326 @aszekMosek
  • Improved HIGHS solver stats #2333 @bstellato
  • Removes pybind11 as runtime dep #2334 @phschiele
  • Quadratic objectives in NAG solver #2339 @chasilvester
  • DAQP solver interface #2312 @enzbus
  • Adds solver_verbose #2354 @hailiangliu89
  • ECOS deprecation progress #2388, #2391 @PTNobel @Transurgeon
  • Improved type annotations #2304 @sunnygurm
  • Adds save_file to COPT interface #2393 @wujianjack
  • Setup dependabot #2369 @tschm
  • Many many infrastructure PRs @phschiele
  • Fixes doc deploy #2331 @PTNobel
  • Modernized build-system and metadata #2276 #2277 @mkoeppe
  • Uses oldest-supported-numpy #2291 @enzbus
  • Fix keep dims for min atom #2431 @allenlawrence94
  • Reduce memory consumption for sum(list) #2428 @phschiele
  • Fix convolve when used with parameters #2427 @SteveDiamond
  • Fix nuclear norm gradient for non-square inputs #2426 @SteveDiamond
  • Improve XPRESS interface #2425 #2288 @phschiele
  • Fix DQCP bugs with parameters #2424 @SteveDiamond
  • Warning for creating constants from nested lists #2423 @phschiele
  • Preserve sign in minimum and maximum #2420 @zacharyweiss
  • Resolves deprecation warnings in the SDPA interface #2350 @usamamuneeb
  • Starts NumPy 2.0 support #2319 @phschiele
  • Fixes counting of constraints #2303 @PTNobel

- C++
Published by PTNobel almost 2 years ago

cvxpy - v1.3.4

What's Changed

  • #2351 Fix invalid escape sequences in docstrings (@befelix)
  • #2338 Improving the Gurobi integration by supporting further error codes (@jmarecek)
  • #2358 Removes deprecated scipy_wrapper.py (@PTNobel)
  • #2356 Redirect model output to Python instead of Terminal (@anmolsahoo25)

New Contributors

  • @syanga made their first contribution in https://github.com/cvxpy/cvxpy/pull/2415

Full Changelog: https://github.com/cvxpy/cvxpy/compare/v1.3.3...v1.3.4

- C++
Published by phschiele almost 2 years ago

cvxpy - v1.4.3

This is a patch release for 1.4. The patch includes a variety of fixes:

What's Changed

  • #2351 Fix invalid escape sequences in docstrings (@befelix)
  • #2338 Improving the Gurobi integration by supporting further error codes (@jmarecek)
  • #2358 Removes deprecated scipy_wrapper.py (@PTNobel)
  • #2356 Redirect model output to Python instead of Terminal (@anmolsahoo25)
  • #2406 [Bug] Parametrized quad form broken when values are zero (@phschiele)

Full Changelog: https://github.com/cvxpy/cvxpy/compare/v1.4.2...v1.4.3

- C++
Published by phschiele almost 2 years ago

cvxpy - v1.4.2

This is a patch release for 1.4. The patch includes a variety of fixes:

SCIP return solution if [total]nodelimit hit (https://github.com/cvxpy/cvxpy/pull/2279) Update swig autogenerated files to swig 4.1.1 (https://github.com/cvxpy/cvxpy/pull/2273) Update contributing docs to reflect usage of ruff over flake8/isort (https://github.com/cvxpy/cvxpy/pull/2302) Change some O(n) lookups in scipconif.py to O(1) (https://github.com/cvxpy/cvxpy/pull/2313) Avoid sparse matrix multiply for identity matrix (https://github.com/cvxpy/cvxpy/pull/2315) Restore Mosek 9 compatibility (https://github.com/cvxpy/cvxpy/pull/2325) Reformatting the installation page (https://github.com/cvxpy/cvxpy/pull/2268) Updating NAG website links in doc (https://github.com/cvxpy/cvxpy/pull/2299) Fix Gurobi interface issues (https://github.com/cvxpy/cvxpy/pull/2300) Use new NumPy API (https://github.com/cvxpy/cvxpy/pull/2319) Fixing links to cvxshort_course (https://github.com/cvxpy/cvxpy/pull/2264)

- C++
Published by SteveDiamond about 2 years ago

cvxpy - v1.4.1

This is a patch release for 1.4. The patch includes fixes from several contributors:

@goulart-paul Change conic solver preference order (#2259) @maxschaller Include usequadobj in cache (#2262)

- C++
Published by SteveDiamond over 2 years ago

cvxpy - v1.4.0

This release is consistent with our semantic versioning guarantee. It comes packed with many new features, bug fixes, and performance improvements. This version of CVXPY supports Python 3.8 through 3.12, and is our first release that supports Python 3.12. While working on the next release, we continue to officially support CVXPY 1.3 and 1.4.

New features

  • New atom: convolve
  • New atom: mean
  • New atom: outer
  • New atom: ptp
  • New atom: std
  • New atom: var
  • New atom: vec_to_upper_tri
  • Adds methods to CVXPY expressions that are found on NumPy ndarrays such as .sum(), .max(), and .mean()
  • New solver interface: PIQP
  • Adds SDP support to the Clarabel interface
  • Added support for OR-Tools 9.7
  • Removed support for OR-Tools 9.4
  • PowerConeND now supports extracting its dual variables
  • reshape now supports using -1 as a dimension, with the same meaning it has in NumPy
  • Indexing CVXPY expressions with floats now raises an appropriate error
  • Clearer error messages for a number of common errors
  • The perspective atom now supports s=0
  • Performance improvements in the SCIPY backend
  • Performance improvements in canonicalizing parameterized QPs
  • Performance improvements for quadratic forms with sparse matrices
  • Greater support for static typing

ECOS deprecation

CVXPY has used ECOS as the default solver for many years; however, it has known issues with performance and numerical stability in edge cases. Recently, a new solver, Clarabel, that improves the algorithm and implementation of ECOS has been under development.

In 1.5, CVXPY plans to start using Clarabel instead of ECOS by default for some categories of problems. In 1.6, we plan to no longer install ECOS as a CVXPY dependency. We have no plans to remove support for calling ECOS as a solver. As part of this transition, in 1.4 CVXPY will raise a warning whenever ECOS is called by default. We encourage you to try and use Clarabel instead, but if you're dependent on ECOS's exact behavior please explicitly specify it as a solver.

conv deprecation

The CVXPY atom conv is inconsistent with NumPy's convolve functions. We are deprecating it, but have no plans to remove it in the short term. We encourage all users to use the CVXPY atom convolve instead.

NonPos deprecation

The NonPos cone uses the opposite dual variable sign convention as the rest of the CVXPY cones and a constraint of NonPos(expr) is the same as a constraint on NonNeg(-expr). We are deprecating NonPos, but have no plans to remove it in the short term. We encourage users to switch to using NonNeg.

Contributors

This release would not have been possible without the contributions of many CVXPY users and developers. Across 29 contributors and 116 PRs, we would like to thank the following people for their contributions to this release (in alphabetical order):

  • @akshayka | #2105
  • @allenlawrence94 | #2080, #2103
  • @alxhslm | #2046
  • @aryamanjeendgar | #2171, #2192, #2204, #2241
  • @aszekMosek | #2017, #2029
  • @bkurtz | #1821
  • @carlosgmartin | #2246, #2250
  • @cbonet | #2173, #2175
  • @dcajasn | #2131, #2152
  • @goulart-paul | #2108
  • @h-vetinari | #1998
  • @jlchen0 | #2028
  • @michaels0m | #2085
  • @mkoeppe | #2118
  • @mlubin | #2169, #2251
  • @Paulnkk | #2069, #2073, #2078, #2084, #2086, #2096, #2117, #2119, #2137, #2144, #2179
  • @phschiele | #2008, #2009, #2049, #2053, #2054, #2061, #2063, #2088, #2094, #2113, #2120, #2127, #2141, #2146, #2156, #2161, #2164, #2185, #2196, #2206, #2219, #2220, #2221, #2245, #2247, #2249, #2253
  • @pragmaticTNT | #2057
  • @PTNobel | #2058, #2081, #2172, #2188, #2207, #2238, #2248, #2254, #2255
  • @r-barnes | #1697
  • @rileyjmurray | #2001, #2123, #2125, #2139, #2155
  • @RSchwan | #2190
  • @samuel-adekunle | #2016
  • @sdementen | #2056
  • @SteveDiamond | #2007, #2022, #2041, #2043, #2047, #2060, #2067, #2071, #2079, #2110, #2111, #2126, #2130, #2159, #2160, #2183, #2225, #2226, #2232, #2233, #2244
  • @Transurgeon | #2044, #2091, #2186, #2213, #2215, #2223, #2224, #2230, #2239
  • @usamamuneeb | #2097, #2116, #2147
  • @wfan19 | #2157
  • @wujianjack | #2134

Special shoutout to our Google Summer of Code interns @aryamanjeendgar and @Transurgeon!

- C++
Published by PTNobel over 2 years ago

cvxpy -

This is a patch release for 1.1. The patch includes fixes from many contributors:

  • @SteveDiamond Fix conv and add convolve (#2047)
  • @allenlawrence94 fix: scipy time limit raises SolverError (#2080)
  • @Paulnkk Fix scip timelimit no solution (#2084)
  • @phschiele Adds devcontainer support (#2088)
  • @dcajasn Fixes to PowCone3D and updates to testconicsolvers.py (#2131)
  • @Paulnkk Fix rare bugs in curvature calculation: identity matrices and nondeterministic starting vectors in eigsh (#2086)
  • @SteveDiamond Fix bug with calling Mosek simplex solver (#2126)
  • @rileyjmurray CBC interface: add ability to configure the underlying CLP solver (#1821)
  • @SteveDiamond Remove github banner (#2160)
  • @SteveDiamond Update scipy_wrapper (#2159)

- C++
Published by phschiele over 2 years ago

cvxpy - v1.2.5

This is a patch release for 1.2. The patch includes fixes from many contributors:

  • @SteveDiamond Fix conv and add convolve (#2047)
  • @allenlawrence94 fix: scipy time limit raises SolverError (#2080)
  • @Paulnkk Fix scip timelimit no solution (#2084)
  • @phschiele Adds devcontainer support (#2088)
  • @dcajasn Fixes to PowCone3D and updates to testconicsolvers.py (#2131)
  • @Paulnkk Fix rare bugs in curvature calculation: identity matrices and nondeterministic starting vectors in eigsh (#2086)
  • @SteveDiamond Fix bug with calling Mosek simplex solver (#2126)
  • @rileyjmurray CBC interface: add ability to configure the underlying CLP solver (#1821)
  • @SteveDiamond Remove github banner (#2160)
  • @SteveDiamond Update scipy_wrapper (#2159)

- C++
Published by phschiele over 2 years ago

cvxpy - v1.3.2

This is a patch release for 1.3. The patch includes fixes from many contributors:

  • @phschiele Introduce ruff linter (#2049)
  • @Paulnkk Fix scip timelimit no solution (#2084)
  • @phschiele Adds devcontainer support (#2088)
  • @rileyjmurray Correct categorization of tr_inv atom. (#2123)
  • @dcajasn Fixes to PowCone3D and updates to testconicsolvers.py (#2131)
  • @Paulnkk Fix rare bugs in curvature calculation: non-psd diagonal matrices and starting vectors in eigsh (#2086)
  • @wujianjack Map imprecise status to optimal_inaccurate (#2134)
  • @SteveDiamond Fix bug with calling Mosek simplex solver (#2126)
  • @SteveDiamond Fix conv and add convolve (#2047)
  • @allenlawrence94 fix: scipy time limit raises SolverError (#2080)
  • @bkurtz CBC interface: add ability to configure the underlying CLP solver (#1821)
  • @SteveDiamond remove github banner (#2160)
  • @SteveDiamond Update scipy_wrapper (#2159)
  • @phschiele PR benchmark against base branch (#2161)

- C++
Published by phschiele over 2 years ago

cvxpy - v1.1.23

This is a patch release for 1.1. The patch includes fixes from many contributors:

@SteveDiamond Fix cvxpy base deployment https://github.com/cvxpy/cvxpy/pull/2071 @Transurgeon Typo fix in documentation https://github.com/cvxpy/cvxpy/pull/2044 @SteveDiamond Fix Mosek power cone https://github.com/cvxpy/cvxpy/pull/2043 @aszekMosek Clean up Mosek parameter settings https://github.com/cvxpy/cvxpy/pull/2029 @jlchen0 Fix p-norm issue with DGP problems https://github.com/cvxpy/cvxpy/pull/2028 @SteveDiamond Unpin setuptools https://github.com/cvxpy/cvxpy/pull/2022 @samuel-adekunle Update atomic functions docs https://github.com/cvxpy/cvxpy/pull/2016 @phschiele Build wheels on push https://github.com/cvxpy/cvxpy/pull/2008 @SteveDiamond Fix issue with matrix multiplication involving quad https://github.com/cvxpy/cvxpy/pull/2067 @PTNobel Adds error on floats as indices https://github.com/cvxpy/cvxpy/pull/2058 @h-vetinari Fixes for 1.3.0 https://github.com/cvxpy/cvxpy/pull/1998

- C++
Published by phschiele almost 3 years ago

cvxpy - v1.2.4

This is a patch release for 1.2. The patch includes fixes from many contributors:

@SteveDiamond Fix cvxpy base deployment https://github.com/cvxpy/cvxpy/pull/2071 @Transurgeon Typo fix in documentation https://github.com/cvxpy/cvxpy/pull/2044 @SteveDiamond Fix Mosek power cone https://github.com/cvxpy/cvxpy/pull/2043 @aszekMosek Clean up Mosek parameter settings https://github.com/cvxpy/cvxpy/pull/2029 @jlchen0 Fix p-norm issue with DGP problems https://github.com/cvxpy/cvxpy/pull/2028 @SteveDiamond Unpin setuptools https://github.com/cvxpy/cvxpy/pull/2022 @samuel-adekunle Update atomic functions docs https://github.com/cvxpy/cvxpy/pull/2016 @phschiele Build wheels on push https://github.com/cvxpy/cvxpy/pull/2008 @SteveDiamond Fix issue with matrix multiplication involving quad https://github.com/cvxpy/cvxpy/pull/2067 @PTNobel Adds error on floats as indices https://github.com/cvxpy/cvxpy/pull/2058 @rileyjmurray Remove ill-posed xexp test case https://github.com/cvxpy/cvxpy/pull/2001 @h-vetinari Fixes for 1.3.0 https://github.com/cvxpy/cvxpy/pull/1998

- C++
Published by phschiele almost 3 years ago

cvxpy - v1.3.1

This is a patch release for 1.3. The patch includes fixes from many contributors:

@phschiele New deepcopy semantics https://github.com/cvxpy/cvxpy/pull/2053 @Transurgeon Typo fix in documentation https://github.com/cvxpy/cvxpy/pull/2044 @SteveDiamond Fix Mosek power cone https://github.com/cvxpy/cvxpy/pull/2043 @aszekMosek Clean up Mosek parameter settings https://github.com/cvxpy/cvxpy/pull/2029 @jlchen0 Fix p-norm issue with DGP problems https://github.com/cvxpy/cvxpy/pull/2028 @SteveDiamond Unpin setuptools https://github.com/cvxpy/cvxpy/pull/2022 @aszekMosek Attach Mosek log handler before inputting data https://github.com/cvxpy/cvxpy/pull/2017 @samuel-adekunle Update atomic functions docs https://github.com/cvxpy/cvxpy/pull/2016 @phschiele Build wheels on push https://github.com/cvxpy/cvxpy/pull/2008 @phschiele aarch64 wheels https://github.com/cvxpy/cvxpy/pull/2054 @phschiele Keep sparsity for PSD constraints in Mosek interface https://github.com/cvxpy/cvxpy/pull/2063 @SteveDiamond Fix issue with matrix multiplication involving quad https://github.com/cvxpy/cvxpy/pull/2067 @PTNobel Adds error on floats as indices https://github.com/cvxpy/cvxpy/pull/2058 @phschiele Improved PSD check message https://github.com/cvxpy/cvxpy/pull/2009 @SteveDiamond Fix bug with quadratic objective and power atom https://github.com/cvxpy/cvxpy/pull/2060 @rileyjmurray Remove ill-posed xexp test case https://github.com/cvxpy/cvxpy/pull/2001

- C++
Published by SteveDiamond almost 3 years ago

cvxpy - v1.3.0

CVXPY 1.3

This release marks our first minor release since the introduction of semantic versioning in March 2022. It comes packed with many new features, bug fixes, and performance improvements. This version of CVXPY supports Python 3.7 through 3.11, and is our first release that supports Python 3.11. While working on the next release, we continue to officially support CVXPY 1.2 and 1.3, and will backport important bug fixes to 1.1, if feasible.

New features

  • New atoms:
    • dotsort
    • tr_inv
    • von_neumann_entr
    • perspective
  • Support for native quadratic forms (x.T @ P @ x)
  • New solver interfaces: COPT, SDPA, Clarabel, proxqp
  • A new SciPy-based backend
  • New constraints:
    • FiniteSet
    • RelEntrConeQuad
    • OpRelEntrConeQuad
  • ... and many more!

Other big developments

  • The new OpRelEntrConeQuad constraint class is the first major piece of our effort to improve support for quantum information modeling (GSOC project)
  • Continuous performance benchmarking (GSOC project)

API changes

Moving forward, the public API of CVXPY is considered to be everything that is importable directly from the cvxpy namespace. We plan to introduce a cvxpy.experimental namespace for features in development where the API has not yet been fixed. It is explicitly not a part of our API whether atoms are implemented by functions or classes, e.g. we do not consider replacing cvxpy.power, which is currently a class, with a function to be a breaking change or replacing cp.quad_form which is a function to become a class to be a breaking change. Code of the form cvxpy.power(a, b) is guaranteed to remain working.

Community

We were thrilled to see the CVXPY community grow since our last release. In GitHub issues and the increasingly utilized GitHub discussions, we saw a lot of great reports and questions. Reaching almost 1000 members, the CVXPY Discord has become a great place to ask questions and get quick help. It was great to meet some of you at SciPy 2022 and ICCOPT 2022.

Planned projects

A major upcoming project is an overhaul of the web documentation, making it more modern, structured, and interactive. For this, we received a NumFOCUS Small Development Grant and are currently looking for a web developer to help us with the implementation. Email us at cvxpydevs@gmail.com if interested.

Contributors

This release would not have been possible without the contributions of many CVXPY users and developers. Across 30 contributors and 95 PRs, we would like to thank the following people for their contributions to this release (in alphabetical order):

  • @aryamanjeendgar | #1740, #1789, #1833, #1875, #1899
  • @BehrouzSohrabi | #1966
  • @Brown2345 | #1754
  • @chrisyeh96 | #1814, #1861, #1862
  • @dcajasn | #1897
  • @ericlux | #1869, #1867
  • @fabinsch | #1882, #1894
  • @goulart-paul | #1888
  • @h-vetinari | conda-forge PR #75
  • @imcjp | #1822
  • @JiaxinWang-thu | #1720
  • @jlchen0 | #1986
  • @joycebrum | #1892, #1927
  • @KerimovEmil | #1871
  • @merraksh | #1935
  • @Michael-123123 | #1793
  • @mkoeppe | #1707, #1705, #1719, #1727
  • @mlubin | #1859, #1872
  • @parthb83 | #1768, #1810, #1798
  • @phschiele | #1748, #1783, #1725, #1792, #1804, #1803, #1838, #1839, #1846, #1851, #1874, #1852, #1887, #1893, #1896, #1922, #1931, #1840, #1933, #1937, #1936, #1929, #1979
  • @piiq | #1951
  • @r-barnes | #1693
  • @rileyjmurray | #1733, #1736, #1738, #1866, #1977, #1976, #1978, #1984, #1987
  • @rluce | #1962
  • @roberthuisman | #1854
  • @SteveDiamond | #1689, #1757, #1761, #1794, #1802, #1807, #1796, #1818, #1820, #1829, #1835, #1844, #1856, #1880, #1885, #1886, #1877, #1898, #1909
  • @tasseff | #1830
  • @usamamuneeb | #1769
  • @wujianjack | #1836
  • @yasirroni | #1744, #1745, #1756

Special thanks to @michaels0m for numerous discussions about the new backend.

- C++
Published by phschiele about 3 years ago

cvxpy - v1.2.3

This is a patch release for 1.2. The patch includes bug fixes from many contributors:

@phschiele @h-vetinari SciPy 1.9 compatibility https://github.com/cvxpy/cvxpy/pull/1931

@piiq Pin setuptools version https://github.com/cvxpy/cvxpy/pull/1951

@rileyjmurray Make log_det robust https://github.com/cvxpy/cvxpy/pull/1866

@rluce Adapt to API changes in gurobipy https://github.com/cvxpy/cvxpy/pull/1962

@rileyjmurray Correct handling of KNOWNSOLVERERRORS https://github.com/cvxpy/cvxpy/pull/1984

@rileyjmurray Bugfixes related to complex2real https://github.com/cvxpy/cvxpy/pull/1978

@rileyjmurray More bugfixes related to complex2real https://github.com/cvxpy/cvxpy/pull/1987

- C++
Published by SteveDiamond about 3 years ago

cvxpy - v1.1.22

This is a patch release for 1.1. The patch includes bug fixes from many contributors:

@phschiele @h-vetinari SciPy 1.9 compatibility https://github.com/cvxpy/cvxpy/pull/1931

@piiq Pin setuptools version https://github.com/cvxpy/cvxpy/pull/1951

@rileyjmurray Make log_det robust https://github.com/cvxpy/cvxpy/pull/1866

@rluce Adapt to API changes in gurobipy https://github.com/cvxpy/cvxpy/pull/1962

@rileyjmurray Bugfixes related to complex2real https://github.com/cvxpy/cvxpy/pull/1978

@rileyjmurray More bugfixes related to complex2real https://github.com/cvxpy/cvxpy/pull/1987

- C++
Published by SteveDiamond about 3 years ago

cvxpy - v1.2.2

This is a patch release for 1.2. The patch includes bug fixes from many contributors:

@mlubin Fix timelimitsec for GLOP and PDLP #1859

@fabinsch Fix OSQP warm start https://github.com/cvxpy/cvxpy/pull/1882

@SteveDiamond Switch SCS timings to seconds https://github.com/cvxpy/cvxpy/pull/1880

@phschiele Allow deepcopy of constraints https://github.com/cvxpy/cvxpy/pull/1852

@phschiele Fix linters https://github.com/cvxpy/cvxpy/pull/1851

@rileyjmurray @SteveDiamond @phschiele Fix SOC residual https://github.com/cvxpy/cvxpy/pull/1844

@SteveDiamond Fix bug with diff https://github.com/cvxpy/cvxpy/pull/1835

@akshayka @SteveDiamond Fix DQCP issue with sign function https://github.com/cvxpy/cvxpy/pull/1829

@SteveDiamond Minor test formatting fix https://github.com/cvxpy/cvxpy/pull/1886

@SteveDiamond New SCIP interface https://github.com/cvxpy/cvxpy/pull/1898

@phschiele Allow lists as shapes https://github.com/cvxpy/cvxpy/pull/1922

@roberthuisman Fix gradient for multidimensional quad form https://github.com/cvxpy/cvxpy/pull/1854

@KerimovEmil Add edge case handling for string inputs into norm https://github.com/cvxpy/cvxpy/pull/1871

- C++
Published by SteveDiamond over 3 years ago

cvxpy - v1.1.21

This is a patch release for 1.1. The patch includes bug fixes from many contributors:

@fabinsch Fix OSQP warm start https://github.com/cvxpy/cvxpy/pull/1882

@SteveDiamond Switch SCS timings to seconds https://github.com/cvxpy/cvxpy/pull/1880

@phschiele Allow deepcopy of constraints https://github.com/cvxpy/cvxpy/pull/1852

@phschiele Fix linters https://github.com/cvxpy/cvxpy/pull/1851

@rileyjmurray @SteveDiamond @phschiele Fix SOC residual https://github.com/cvxpy/cvxpy/pull/1844

@SteveDiamond Fix bug with diff https://github.com/cvxpy/cvxpy/pull/1835

@akshayka @SteveDiamond Fix DQCP issue with sign function https://github.com/cvxpy/cvxpy/pull/1829

@SteveDiamond Minor test formatting fix https://github.com/cvxpy/cvxpy/pull/1886

@SteveDiamond New SCIP interface https://github.com/cvxpy/cvxpy/pull/1898

@phschiele Allow lists as shapes https://github.com/cvxpy/cvxpy/pull/1922

@roberthuisman Fix gradient for multidimensional quad form https://github.com/cvxpy/cvxpy/pull/1854

@KerimovEmil Add edge case handling for string inputs into norm https://github.com/cvxpy/cvxpy/pull/1871

- C++
Published by SteveDiamond over 3 years ago

cvxpy - v1.2.1

CVXPY 1.2.1 is a patch release (i.e., a bugfix release) in the 1.2.X release series. Special thanks to @mkoeppe for his contribution!

Changes since 1.2.0:

  • Web documentation updates (#1731).
  • More web doc updates (#1732).
  • Fix sign error with logsumexp (#1689).
  • Handle new CyLP statuses from https://github.com/coin-or/CyLP/pull/150 (#1707), from @mkoeppe.
  • Fix TypeError in GLOP and PDLP interfaces (#1736).
  • Update error message for mixed-integer problems (#1738).
  • Propagate SCIP interface bugfix from PR (#1739).

- C++
Published by SteveDiamond almost 4 years ago

cvxpy - v1.1.20

CVXPY 1.1.20 is a patch release (i.e., a bugfix release) in the 1.1.X release series. Special thanks to @mkoeppe for his contribution!

Changes since 1.1.19:

  • Fix sign error with logsumexp (#1689).
  • Handle new CyLP statuses from https://github.com/coin-or/CyLP/pull/150 (#1707), from @mkoeppe.
  • Update error message for mixed-integer problems (#1738).
  • Propagate SCIP interface bugfix from PR (#1739).

- C++
Published by SteveDiamond almost 4 years ago

cvxpy - v1.2.0

CVXPY 1.2

This release marks a big milestone in CVXPY's development. It's the first time we've incremented the minor version number since releasing CVXPY 1.1 in June 2020. Since then we've added many new features and improved CVXPY's efficiency in important ways. A summary of those changes -- including many which were released with little fanfare between CVXPY 1.1.1 and 1.1.18 -- can be found on cvxpy.org. Changes specific to CVXPY 1.2 include:

  • Four new and improved "atoms" for use in optimization modeling: xexp, partial_trace, partial_transpose, and kron. The latter three atoms significantly expand CVXPY's modeling capabilities for matrix representations of tensor products; they'll be especially useful for quantum information applications.
  • Two new interfaces to numerical solvers. CVXPY can now interface with Google OR Tools to call GLOP and PDLP.
  • Support for Python versions 3.7 to 3.10.

We've also grown in ways that can't be seen from changes to source code alone. We've adopted open governance principles, become a NumFOCUS affiliated project, and -- starting this week -- we're adopting semantic versioning.

Semantic versioning

Our adoption of semantic versioning will fundamentally change the way we approach CVXPY's maintenance and development. The most observable change is that new features will only be released in major or minor releases, as opposed to patch releases. Since CVXPY receives new feature contributions on a regular basis, that means you can expect minor releases from us much more often: multiple times per year instead of once in two years. It also means we'll support multiple minor-release series at any given time. Right now we provide bugfix support for CVXPY 1.1 and 1.2. Once CVXPY 1.3 comes out later this year, we'll provide bugfix support for CVXPY 1.1, 1.2, and 1.3.

While this approach creates more work for day-to-day maintenance, it has two major benefits:

  1. It gives us space to heavily refactor CVXPY's back-end for improved efficiency in the future. This will be important for CVXPY users who want to scale their convex optimization workflows to larger and more sophisticated problems.

  2. It makes it easier for us to publicly recognize and encourage CVXPY's many volunteer contributors. This is crucial for the long-term health of CVXPY as an open-source software project.

Our adoption of semantic versioning is an ongoing process. Stay tuned for announcements on our Discord server, website, or Twitter for more information.

Who made this possible?

CVXPY 1.2.0 includes contributions from 15 people across more than 25 pull requests. In no particular order, those contributors are

  • @phschiele (PRs #1607, #1617, #1624, #1628)
  • @xinyueshen (PR #1660)
  • @allenlawrence94 (PR #1621)
  • @lochsh (PR #1677)
  • @PTNobel (PR #1648)
  • @Michael-git96 (PR #1684)
  • @chrisyeh96 (PR #1616)
  • @TimonKnigge (PRs #1637, #1646)
  • @dcajasn (PR #1640)
  • @parthb83 (PRs #1641, #1683)
  • @mlubin (PRs #1655, #1682)
  • @AtsushiSakai (PR #1665)
  • @h-vetinari (for conda-forge PR 68)
  • @SteveDiamond (PRs #1606, #1659, #1669)
  • @rileyjmurray (PRs #1598, #1643, #1670, #1688)

Among those listed above, we would like to call special attention to @phschiele, @Michael-git96, and @dcajasn -- each of whom has made contributions to CVXPY prior to version 1.1.18. Those recurring contributions are instrumental to CVXPY's success.

On behalf of the CVXPY project maintainers, Riley Murray CC: @akshayka @SteveDiamond, @bstellato

- C++
Published by rileyjmurray almost 4 years ago

cvxpy - v1.1.19

CVXPY 1.1.19 is a patch release (i.e., a bugfix release) in the 1.1.X release series. It's released concurrently with CVXPY 1.2.0, which has the same set of bugfixes as well as additional features. CVXPY 1.1.19 supports Python 3.6 to 3.10, while CVXPY 1.2.0 only supports Python 3.7 through 3.10. You can read about version 1.2.0 here.

The full set of changes between CVXPY 1.1.18 and 1.1.19 can be found in PR #1673.

CC @SteveDiamond @akshayka @bstellato

- C++
Published by rileyjmurray almost 4 years ago

cvxpy - v1.1.18

Changelog/bug fixes: - Use s.LOGGER instead of stdout in mosek. (#1476) - Prevent bad Xpress license from breaking cvxpy (#1526) - Fix handling of 2d arrays in PowCone3D (apply same fix to ExpCone) - Gershgorin circle theorem PSD/NSD checks (#1534) - Update Expression.curvature to include log-log curvature (#1539) - Specify tests paths (#1542) - User-facing "infeasible or unbounded" status (#1535) - Have complex2real properly handle absence of dual variables (#1551) - [CI] Adding Sonar (v2) (#1565) - Change logging in MOSEK (#1570) - Replace usage of eval() in processing cplex params (#1584) - Fix bugs in the example of Channel Capacity (#1582) - Add some types to Variable, Expression, and performance_utils (#1575) - Add deployment/testing with Python 3.10 (#1593)

- C++
Published by SteveDiamond about 4 years ago

cvxpy - v1.1.17

Changelog: - Backwards compatible support for SCS 3 v2 (#1499)

- C++
Published by SteveDiamond over 4 years ago

cvxpy - v1.1.16

Changelog:

  • Support for Gurobi Environments (#1445)
  • Validate constraints on problem creation (#1463)
  • Fix SCS requirement issue (Issue #1474) (#1481)
  • Fixes for DQCP (#1484)
  • [CI] Build cvxpy-base (Issue 1478) (#1485)
  • More types (#1389)
  • Sort imports (#1488)
  • Improved handling of solver import errors (#1498)
  • Add pre-commit config (#1507)
  • Improve solver inheritance (#1509)

- C++
Published by SteveDiamond over 4 years ago

cvxpy - v1.1.15

Changelog - Update performanceutils.py (#1437) - Fix Constant.ispsd() and Constant.is_nsd() (#1456) - Fixed DIFFCP interface to handle ECOS - Use builtin types instead of deprecated numpy aliases (#1442)

- C++
Published by SteveDiamond over 4 years ago

cvxpy - v1.1.14

  • Update SCS status map to use status vals rather than string matching (#1441)
  • Added relative entropy atom (#1427)
  • Fix CVXOPT interface (#1427)
  • Add some aggressive compilation warning settings (#1432)
  • Eliminate some old/extraneous test files and scripts (#1434)
  • [CI] Only install Mosek if license is available (#1435)
  • Specify solvers in tests (#1430)
  • More Solvers for CI (#1417)
  • remove model update within soc constraint for loop (#1411)
  • Gurobi CI (#1413)
  • Adding dual variables for SciPy LP solver interfaces #1425 (#1426)
  • Add an interface to SciPy-accessible LP solvers - Issue: #1414 (#1416)
  • loggamma approximation (#1400)
  • Move Windows CI to GitHub Action v2 (#1398)
  • add py.typed file so that users of cvxpy get type info from the package (#1388)
  • Skip deploy step (#1396)

- C++
Published by SteveDiamond over 4 years ago

cvxpy - v1.1.12

Improvements - Gurobi warm start (#1248) - paramdict and vardict (#1279) - Implement handling of bool valued constraints (#1283) - Use lazy interpolation for logging (#1312) - Set prob.value to prob.objective.value (#1300) - populate solverstats for ecosbb, ecos & scs (#1323)

Bug fixes - Gurobi: fix for when time limit is hit with no solution (#1270) - Gurobi: fix for when time limit is hit with no solution (QP case) (#1272) - Fix NonPos (#1277) - Switch to using safe default arguments (#1311)

- C++
Published by SteveDiamond almost 5 years ago

cvxpy - v1.1.13

Key changes

  • Dropped Python 3.5 support (#1386)
  • Build Manylinux Wheels (#1378)

Improvements

  • Add boolean type annotations (#1319)
  • Move Travis CI to GitHub Actions (#1368)
  • Annotations for warm_start, verbose, and shape (#1364)
  • use flexible numpy version in pyproject.toml (#1376)

Bug fixes

  • Fixed bug with verbose=True that was causing exceptions.
  • Logistic atom - improved gradient calculation (#1359)
  • Fix edge case for vstack (#1339)

- C++
Published by SteveDiamond almost 5 years ago

cvxpy - v1.1.11

CVXPY version 1.1.11 introduces better verbose logging, several performance improvements, and various bug fixes. One performance optimization, namely multi-threaded compilation with OpenMP, is experimental, and must be opted into (see below).

Better verbose logging

When solving problems with verbose=True, you will now see detailed logging that describes CVXPY's compilation of your problem, in addition to logs output by the underlying solver. This logging can be helpful when compiling large problems. (It is sometimes easy to forget that CVXPY is a compiler that interfaces your problems to low-level numerical solvers; CVXPY is not a solver.)

Here's an example of the new output.

```

                                 CVXPY                                     
                                v1.1.11                                   

=============================================================================== (CVXPY) Feb 26 10:30:24 PM: Your problem has 20 variables, 2 constraints, and 0 parameters. (CVXPY) Feb 26 10:30:24 PM: It is compliant with the following grammars: DCP, DQCP (CVXPY) Feb 26 10:30:24 PM: (If you need to solve this problem multiple times, but with different data, consider using parameters.)

(CVXPY) Feb 26 10:30:24 PM: CVXPY will first compile your problem; then, it will invoke a numerical solver to obtain a solution.

                              Compilation                                   

(CVXPY) Feb 26 10:30:24 PM: Compiling problem (target solver=OSQP). (CVXPY) Feb 26 10:30:24 PM: Reduction chain: CvxAttr2Constr -> Qp2SymbolicQp -> QpMatrixStuffing -> OSQP (CVXPY) Feb 26 10:30:24 PM: Applying reduction CvxAttr2Constr (CVXPY) Feb 26 10:30:24 PM: Applying reduction Qp2SymbolicQp (CVXPY) Feb 26 10:30:24 PM: Applying reduction QpMatrixStuffing
(CVXPY) Feb 26 10:30:24 PM: Applying reduction OSQP
(CVXPY) Feb 26 10:30:24 PM: Finished problem compilation (took 5.444e-03 seconds).

(CVXPY) Feb 26 10:30:24 PM: (Subsequent compilations of this problem, using the same arguments, should take less time.)

                            Numerical solver                                

(CVXPY) Feb 26 10:30:24 PM: Invoking solver OSQP to obtain a solution.

       OSQP v0.6.0  -  Operator Splitting QP Solver
          (c) Bartolomeo Stellato,  Goran Banjac
    University of Oxford  -  Stanford University 2019

problem: variables n = 50, constraints m = 70 nnz(P) + nnz(A) = 700 settings: linear system solver = qdldl, epsabs = 1.0e-05, epsrel = 1.0e-05, epspriminf = 1.0e-04, epsdualinf = 1.0e-04, rho = 1.00e-01 (adaptive), sigma = 1.00e-06, alpha = 1.60, maxiter = 10000 checktermination: on (interval 25), scaling: on, scaledtermination: off warm start: on, polish: on, timelimit: off

iter objective pri res dua res rho time 1 0.0000e+00 1.95e+00 6.37e+02 1.00e-01 1.61e-04s 200 1.9831e+01 2.92e-05 5.58e-06 1.29e+00 7.50e-04s plsh 1.9831e+01 3.35e-16 8.89e-15 -------- 8.37e-04s

status: solved solution polish: successful number of iterations: 200 optimal objective: 19.8313 run time: 8.37e-04s optimal rho estimate: 4.33e+00


                                Summary                                     

(CVXPY) Feb 26 10:30:24 PM: Problem status: optimal (CVXPY) Feb 26 10:30:24 PM: Optimal value: 1.983e+01 (CVXPY) Feb 26 10:30:24 PM: Compilation took 5.444e-03 seconds (CVXPY) Feb 26 10:30:24 PM: Solver (including time spent in interface) took 1.555e-03 seconds ``` See #1251 for more context.

Performance improvements

We have made several optimizations to CVXPY's compilation process (#1255, #1259). These optimizations can sometimes yield modest to large reductions in the time CVXPY spends compiling your problem.

CVXPY 1.1.11 also includes experimental multi-threaded compilation, which can yield dramatic speed-ups on problems with many expressions. To enable multi-threaded compilation, you'll need to have OpenMP installed and compile from source. For example, on Linux with GCC, use

CFLAGS='-fopenmp' LDFLAGS='-lgomp' pip install cvxpy --no-binary cvxpy

Control the number of threads used either by setting the OMP_NUM_THREADS environment variable, or by using the function cvxpy.set_num_threads. The latter takes precedence.

Bug fixes

  • CVXPY no longer resets warning filters on loggers (#1240 by @rileyjmurray )
  • The diag atom's is_nonneg method now checks for PSD-ness (#1242 by @phschiele)
  • A fix to the Gurobi interface (#1246 by @bstellato)
  • Reshaping with order=C now works properly (#1264 by @akshayka )
  • The gradient of quad_form was fixed to handle complex inputs (#1261 by @SteveDiamond )

- C++
Published by akshayka almost 5 years ago

cvxpy - v1.1.10

There were many changes between CVXPY versions 1.1.7 and 1.1.8. However, CVXPY 1.1.8 should not be used because of NumPy configuration issues and CVXPY 1.1.9 was quickly followed by a bugfix. Therefore CVXPY version 1.1.10 is the spiritual successor to 1.1.7. Here's an account of the merged PR's since 1.1.7:

Features, infrastructure, and speed improvements. * @tommyod helped us switch from nose to pytest (see #1166). * @nrontsis created a mechanism by which you can write custom solver interfaces without affecting CVXPY source code (see #1172). * @merraksh improved the speed with which we can pass problems to XPRESS (see #1210). * @h-vetinari has put in a lot of work over at conda-forge/cvxpy-feedstock. * @rileyjmurray added support for 3D and ND power cone constraints (see #1211). * @ali-tny added a log_normcdf atom based on piecewise quadratic approximation (see #1224). * @phschiele improved a speed bottleneck for DPP problems with many parameters (see #1235).

Bug-fixes: * Constructing OSQP problem data (#1162 by @akshayka) * Domains of Expression objects (#1181 by @RSchwan) * CVXOPT status handling and a new test case for all MILP solvers (#1199 by @b1a0). * @h-vetinari fixed a bug in one of our unittests (#1208). * Raise SolverErrors when appropriate in the affine2direct code path (#1227 by @rileyjmurray). * Account for when ECOS_BB is not installed (#1233 by @phschiele). * Pin NumPy versions in pyproject.toml for source installations via pip (#1234 by @akshayka).

Documentation improvements: * @WillianFuks corrected a link in a helper function implementation note (#1200) * @lumbric added notes about ECOS_BB changes to the web docs (#1180) * @tomas789 cleaned up a docstring (#1167)

- C++
Published by SteveDiamond about 5 years ago

cvxpy - v1.1.7

- C++
Published by SteveDiamond over 5 years ago

cvxpy - v1.1.6

- C++
Published by SteveDiamond over 5 years ago

cvxpy - v1.1.5

Speed ups for QP canonicalization.

- C++
Published by SteveDiamond over 5 years ago

cvxpy - v1.1.4

Adds FICO Xpress interface and bug fixes.

- C++
Published by SteveDiamond over 5 years ago

cvxpy - v1.0.31

Removes some circular dependencies that caused issues on some platforms.

- C++
Published by akshayka almost 6 years ago

cvxpy - v1.0.29

Includes a bug fix for DGP problems. Before this version, DGP problems using the quad_over_lin atom were incorrectly canonicalized.

- C++
Published by akshayka almost 6 years ago

cvxpy - v1.0.28

This release gives priority to conic solvers over QP solvers when solving LPs.

ECOS, the default conic solver, solves QPs more reliably than the default QP solver (OSQP).

1.0.27 was meant to add this functionality, but didn't due to a small bug.

- C++
Published by akshayka about 6 years ago

cvxpy - v1.0.27

This release gives priority to conic solvers over QP solvers when solving LPs.

ECOS, the default conic solver, solves QPs more reliably than the default QP solver (OSQP).

- C++
Published by akshayka about 6 years ago

cvxpy - v1.0.26

This release includes a bug fix for DQCP.

Fix detection of monotone real functions.

Fixes a bug in DQCP analysis in analyzing monotone real functions; DQCP analysis previously did not check whether the argument of a scalar function was also scalar. This bug caused DQCP analysis to be too permissive, incorrectly labeling things as DQCP and causing the reduction to fail in surprising ways.

As an extension, this change adds the vector atoms cp.max and cp.min to the DQCP atom library, letting users take the max or min of quasiconvex or quasiconcave expressions. Previously, only the elementwise cp.maximum and cp.minimum atoms were allowed.

- C++
Published by akshayka about 6 years ago

cvxpy - v1.1.0a2

New features: * Support function atom (PR #860) * Scalar product atom (PR #910)

Bug fixes and enhancements: * Fix formatting of MOSEK cone programs with exponential cones (PR #862) * Allow warm-starting diffcp (PR #867) * Default to conic solvers for LPs (PR #871) * Restart SCS without AA when solution inaccurate (PR #876) * Fix bugs in detection of monotone real functions for DQCP (PR #909) * Fix bugs in conic dual variable recovery (PR #910)

- C++
Published by akshayka about 6 years ago