pypi cvxpy 1.9.0
CVXPY 1.9.0

3 hours ago

CVXPY 1.9

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.11 through 3.14. We will support CVXPY 1.9 with bugfixes while developing the 1.10 release. CVXPY 1.8 and older are no longer supported.

Disciplined Nonlinear Programming (DNLP)

This release introduces Disciplined Nonlinear Programming (DNLP), a ruleset that extends CVXPY beyond convex optimization to a broad class of nonlinear problems. DNLP canonicalizes nonsmooth functions in the same way as DCP, but allows for general smooth functions to be used otherwise.

To use DNLP, pass nlp=True to problem.solve(...). Supported NLP solvers include IPOPT, KNITRO, UNO, and COPT. See the DNLP tutorial for more details and examples.

Variable bounds

Variable bounds can now be specified with expressions involving parameters, and also support sparse bound arrays (when the variable itself is sparse). Many solvers now natively use variable bounds when they are provided.

DPP for parametric quadratic objectives

quad_form(x, P) with a parametric PSD matrix P is now DPP-compliant on solvers that natively support quadratic objectives, allowing efficient re-solves when only P's value changes.

New features

  • New solver interface: PDCS
  • New tutorial: Performance tips
  • New page: Solver benchmarks
  • a ** x now works for positive constant a (canonicalized via exp(x * log(a)))
  • axis argument support for sum_largest and sum_smallest
  • N-D and tuple-axis support generalized across AxisAtom canonicalizers (max, norm_inf, log_sum_exp, cummax, ...)
  • Support for zero-sized expressions
  • Parameter values may now be ±inf
  • Sparse Cholesky now uses QDLDL

Summary

This new release totaled 124 PRs from 25 contributors.

Don't miss a new cvxpy release

NewReleases is sending notifications on new releases.