A General and Streamlined Differentiable Optimization Framework
Andrew W. Rosemberg, Joaquim Dias Garcia, Fran\c{c}ois Pacaud, Robert B. Parker, Beno\^it Legat, Kaarthik Sundar, Russell Bent, Pascal Van Hentenryck

TL;DR
This paper introduces an improved, unified differentiable optimization framework within Julia that simplifies computing sensitivities for complex models, enabling easier integration of optimization into machine learning and decision-making workflows.
Contribution
It presents a general, user-friendly API for differentiable optimization that handles multiple parameters and integrates seamlessly with the Julia ecosystem, including nonconvex problems.
Findings
Successfully applied to economic dispatch and portfolio optimization
Enabled gradient-based energy market bidding strategies
Facilitated Sobolev-style training of optimization proxies
Abstract
Differentiating through constrained optimization problems is increasingly central to learning, control, and large-scale decision-making systems, yet practical integration remains challenging due to solver specialization and interface mismatches. This paper presents a general and streamlined framework-an updated DiffOpt.jl-that unifies modeling and differentiation within the Julia optimization stack. The framework computes forward - and reverse-mode solution and objective sensitivities for smooth, potentially nonconvex programs by differentiating the KKT system under standard regularity assumptions. A first-class, JuMP-native parameter-centric API allows users to declare named parameters and obtain derivatives directly with respect to them - even when a parameter appears in multiple constraints and objectives - eliminating brittle bookkeeping from coefficient-level interfaces. We…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
