State of DCP (Disciplined Convex Programming)

Lately I have been switching back between CVXPY and JuMP.jl a lot (mainly for work).

One of the many nice features CVXPY has, is that it can automatically reformulate problems which are DCP-compliant through reductions. DCP is also used to verify convexity of a program. DCP itself can also be interesting and useful outside of optimization. For example, in machine learning, control, and as a general tool in the symbolics toolbox.

I noticed that for this last application, SciML is developing: GitHub - SciML/SymbolicAnalysis.jl: Symbolics-based function property propagation for optimization (in stealth?). While at the same time, we already have Convex.jl which also has an implementation of DCP and can even be used as an ‘experimental’ JuMP solver.

So I guess I can summarize by asking a few questions:

  • What are the goals of SymbolicAnalysis.jl?
  • Are there any plans to make it available as a JuMP solver like Convex.jl can be?
  • Will Convex.jl ever leave ‘experimental’ status as a JuMP solver and match CVXPY?

Nope. My current goal with Convex is to keep it minimally maintained.

I know you already know this, but just pointing out to other readers that Convex.jl is mainly intended to be used standalone by itself without JuMP. It is a CVXPY equivalent. (It just carries some technical debt from design choices made when Julia was v0.2 (!!!))

1 Like

And thank you for your efforts as always, in particular the rewrite of Convex.jl in version 0.16 :slight_smile:

(I mainly want to poke the SciML people with this post)