MOCVXPY: a CVXPY extension for multiobjective optimization
Ludovic Salomon, Daniel Dörfler, Andreas Löhne
TL;DR
MOCVXPY presents a CVXPY-based open-source framework for convex vector optimization, enabling users to model multiobjective problems with a familiar algebraic syntax and solve them via three convergent algorithms: MONMO, MOVS, and AdEnA. The library leverages polyhedral order cones and CVXPY subproblem solvers to construct outer/inner approximations of the Pareto front, provide epsilon-accurate solutions, and support parallel computation. The paper details practical implementation choices, including subproblem reuse, vertex enumeration with cddlib, and scaled stopping criteria, and demonstrates applicability through portfolio optimization and a semidefinite-relaxed multiobjective OPF example. The work highlights the value of integrating vector optimization into standard convex modeling workflows, offering a practical, extensible tool for finance and energy applications, while outlining future enhancements such as mixed-integer convex extensions and deeper solver integrations.
Abstract
MOCVXPY is an open-source Python library for convex vector optimization. It is built on top of CVXPY, a domain-specific language for single-objective convex optimization. MOCVXPY enables practitioners to describe their convex vector optimization problem in an intuitive algebraic language, that closely follows the mathematical formulation. This work presents the main features of MOCVXPY, explains some background of the algorithms it employs to solve the optimization problems, and illustrates its functionality through examples and two real-world applications in finance and energy. MOCVXPY is available at https://github.com/salomonl/mocvxpy under the Apache 2.0 licence, with some documentation and examples.
