Skip to content

Latest commit

 

History

History
145 lines (125 loc) · 24.5 KB

operations.md

File metadata and controls

145 lines (125 loc) · 24.5 KB

Operations

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 conic 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.) Elementwise means that the function operates elementwise on vector arguments, returning a vector of the same size.

Linear Program Representable Functions

An optimization problem using only these functions can be solved by any LP solver.

operation description vexity slope notes
x+y or x.+y addition affine increasing none
x-y or x.-y subtraction affine increasing in $x$ decreasing in $y$ none none
x*y multiplication affine increasing if constant term $\ge 0$ decreasing if constant term $\le 0$ not monotonic otherwise PR: one argument is constant
x/y division affine increasing PR: $y$ is scalar constant
dot(*)(x, y) elementwise multiplication affine increasing PR: one argument is constant
dot(/)(x, y) elementwise division affine increasing PR: one argument is constant
x[1:4, 2:3] indexing and slicing affine increasing none
diag(x, k) $k$-th diagonal of a matrix affine increasing none
diagm(x) construct diagonal matrix affine increasing PR: $x$ is a vector
x' transpose affine increasing none
vec(x) vector representation affine increasing none
dot(x,y) $\sum_i x_i y_i$ affine increasing PR: one argument is constant
kron(x,y) Kronecker product affine increasing PR: one argument is constant
vecdot(x,y) dot(vec(x),vec(y)) affine increasing PR: one argument is constant
sum(x) $\sum_{ij} x_{ij}$ affine increasing none
sum(x, k) sum elements across dimension $k$ affine increasing none
sumlargest(x, k) sum of $k$ largest elements of $x$ convex increasing none
sumsmallest(x, k) sum of $k$ smallest elements of $x$ concave increasing none
dotsort(a, b) dot(sort(a),sort(b)) convex increasing PR: one argument is constant
reshape(x, m, n) reshape into $m \times n$ affine increasing none
minimum(x) $\min(x)$ concave increasing none
maximum(x) $\max(x)$ convex increasing none
[x y] or [x; y] hcat(x, y) or vcat(x, y) stacking affine increasing none
tr(x) $\mathrm{tr} \left(X \right)$ affine increasing none
partialtrace(x,sys,dims) Partial trace affine increasing none
partialtranspose(x,sys,dims) Partial transpose affine increasing none
conv(h,x) $h \in \mathbb{R}^m$, $x \in \mathbb{R}^n$, $h\star x \in \mathbb{R}^{m+n-1}$; entry $i$ is given by $\sum_{j=1}^m h_jx_{i-j+1}$ with $x_k=0$ for $k$ out of bounds affine increasing if $h\ge 0$ decreasing if $h\le 0$ not monotonic otherwise PR: $h$ is constant
min(x,y) $\min(x,y)$ concave increasing none
max(x,y) $\max(x,y)$ convex increasing none
pos(x) $\max(x,0)$ convex increasing none
neg(x) $\max(-x,0)$ convex decreasing none
invpos(x) $1/x$ convex decreasing IC: $x>0$
abs(x) $\left|x\right|$ convex increasing on $x \ge 0$ decreasing on $x \le 0$ none
opnorm(x, 1) maximum absolute column sum: $\max_{1 ≤ j ≤ n} \sum_{i=1}^m \left|x_{ij}\right|$ convex increasing on $x \ge 0$ decreasing on $x \le 0$
opnorm(x, Inf) maximum absolute row sum: $\max_{1 ≤ i ≤ m} \sum_{j=1}^n \left|x_{ij}\right|$ convex increasing on $x \ge 0$ decreasing on $x \le 0$

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.

operation description vexity slope notes
norm(x, p) $(\sum x_i^p)^{1/p}$ convex increasing on $x \ge 0$ decreasing on $x \le 0$ PR: p >= 1
quadform(x, P; assume_psd=false) $x^T P x$ convex in $x$ affine in $P$ increasing on $x \ge 0$ decreasing on $x \le 0$ increasing in $P$ PR: either $x$ or $P$ must be constant; if $x$ is not constant, then $P$ must be symmetric and positive semidefinite. Pass assume_psd=true to skip checking if P is positive semidefinite.
quadoverlin(x, y) $x^T x/y$ convex increasing on $x \ge 0$ decreasing on $x \le 0$ decreasing in $y$ IC: $y > 0$
sumsquares(x) $\sum x_i^2$ convex increasing on $x \ge 0$ decreasing on $x \le 0$ none
sqrt(x) $\sqrt{x}$ concave decreasing IC: $x>0$
square(x), x^2 $x^2$ convex increasing on $x \ge 0$ decreasing on $x \le 0$ PR : $x$ is scalar
dot(^)(x,2) $x.^2$ convex increasing on $x \ge 0$ decreasing on $x \le 0$ elementwise
geomean(x, y) $\sqrt{xy}$ concave increasing IC: $x\ge0$, $y\ge0$
huber(x, M=1) $\begin{cases} x^2 &|x| \leq M \ 2M|x| - M^2 &|x| > M \end{cases}$ convex increasing on $x \ge 0$ decreasing on $x \le 0$ PR: $M>=1$

Note that for p=1 and p=Inf, the function norm(x,p) is a linear-program representable, and does not need a SOCP solver, and for a matrix x, norm(x,p) is defined as norm(vec(x), p).

Exponential Cone Representable Functions

An optimization problem using these functions can be solved by any exponential cone solver (SCS).

operation description vexity slope notes
logsumexp(x) $\log(\sum_i \exp(x_i))$ convex increasing none
exp(x) $\exp(x)$ convex increasing none
log(x) $\log(x)$ concave increasing IC: $x>0$
entropy(x) $\sum_{ij} -x_{ij} \log (x_{ij})$ concave not monotonic IC: $x>0$
logisticloss(x) $\log(1 + \exp(x_i))$ convex increasing none

Semidefinite Program Representable Functions

An optimization problem using these functions can be solved by any SDP solver (including SCS and Mosek).

operation description vexity slope notes
nuclearnorm(x) sum of singular values of $x$ convex not monotonic none
opnorm(x, 2) (operatornorm(x)) max of singular values of $x$ convex not monotonic none
eigmax(x) max eigenvalue of $x$ convex not monotonic none
eigmin(x) min eigenvalue of $x$ concave not monotonic none
matrixfrac(x, P) $x^TP^{-1}x$ convex not monotonic IC: P is positive semidefinite
sumlargesteigs(x, k) sum of top $k$ eigenvalues of $x$ convex not monotonic IC: P symmetric
T in GeomMeanHypoCone(A, B, t) $T \preceq A #_t B = A^{1/2} (A^{-1/2} B A^{-1/2})^t A^{1/2}$ concave increasing IC: $A \succeq 0$, $B \succeq 0$, $t \in [0,1]$
T in GeomMeanEpiCone(A, B, t) $T \succeq A #_t B = A^{1/2} (A^{-1/2} B A^{-1/2})^t A^{1/2}$ convex not monotonic IC: $A \succeq 0$, $B \succeq 0$, $t \in [-1, 0] \cup [1, 2]$
quantum_entropy(X) $-\textrm{Tr}(X \log X)$ concave not monotonic IC: $X \succeq 0$; uses natural log
quantum_relative_entropy(A, B) $\textrm{Tr}(A \log A - A \log B)$ convex not monotonic IC: $A \succeq 0$, $B \succeq 0$; uses natural log
trace_logm(X, C) $\textrm{Tr}(C \log X)$ concave in X not monotonic IC: $X \succeq 0$, $C \succeq 0$, $C$ constant; uses natural log
trace_mpower(A, t, C) $\textrm{Tr}(C A^t)$ concave in A for $t \in [0,1]$, convex for $t \in [-1,0] \cup [1,2]$ not monotonic IC: $X \succeq 0$, $C \succeq 0$, $C$ constant, $t \in [-1, 2]$
lieb_ando(A, B, K, t) $\textrm{Tr}(K' A^{1-t} K B^t)$ concave in A,B for $t \in [0,1]$, convex for $t \in [-1,0] \cup [1,2]$ not monotonic IC: $A \succeq 0$, $B \succeq 0$, $K$ constant, $t \in [-1, 2]$
T in RelativeEntropyEpiCone(X, Y, m, k, e) $T \succeq e' X^{1/2} \log(X^{1/2} Y^{-1} X^{1/2}) X^{1/2} e$ convex not monotonic IC: $e$ constant; uses natural log

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).

operation description vexity slope notes
logdet(x) log of determinant of $x$ concave increasing IC: x is positive semidefinite

Promotions

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 x and 0.