Convex.jl currently supports the following functions. These functions may be composed according to the DCP composition rules to form new convex, concave, or affine expressions. Convex.jl transforms each problem into an equivalent cone program in order to pass the problem to a specialized solver. Depending on the types of functions used in the problem, the conic constraints may include linear, second-order, exponential, or semidefinite constraints, as well as any binary or integer constraints placed on the variables. Below, we list each function available in Convex.jl organized by the (most complex) type of cone used to represent that function, and indicate which solvers may be used to solve problems with those cones. Problems mixing many different conic constraints can be solved by any solver that supports every kind of cone present in the problem.
In the notes column in the tables below, we denote implicit constraints imposed on the arguments to the function by IC, and parameter restrictions that the arguments must obey by PR. (Convex.jl will automatically impose ICs; the user must make sure to satisfy PRs.)
Linear Program Representable Functions¶
An optimization problem using only these functions can be solved by any LP solver.
Second-Order Cone Representable Functions¶
An optimization problem using these functions can be solved by any SOCP solver (including ECOS, SCS, Mosek, Gurobi, and CPLEX). Of course, if an optimization problem has both LP and SOCP representable functions, then any solver that can solve both LPs and SOCPs can solve the problem.
Exponential Cone Representable Functions¶
An optimization problem using these functions can be solved by any exponential cone solver (SCS).
Semidefinite Program Representable Functions¶
An optimization problem using these functions can be solved by any SDP solver (including SCS and Mosek).
Exponential + SDP representable Functions¶
An optimization problem using these functions can be solved by any solver that supports exponential constraints and semidefinite constraints simultaneously (SCS).
||log of determinant of \(x\)||concave||increasing||IC: x is positive semidefinite|
When an atom or constraint is applied to a scalar and a higher dimensional variable, the scalars are promoted. For example, we can do
max(x, 0) gives an expression with the shape of
x whose elements are the maximum of the corresponding element of