Paper examples

using Convex, ECOS

Summation.

println("Summation example")
x = Variable();
e = 0;
@time begin
    for i in 1:1000
        global e
        e += x
    end
    p = minimize(e, x >= 1)
end
@time solve!(p, ECOS.Optimizer; silent = true)
Problem statistics
  problem is DCP         : true
  number of variables    : 1 (1 scalar elements)
  number of constraints  : 1 (1 scalar elements)
  number of coefficients : 2
  number of atoms        : 2

Solution summary
  termination status : OPTIMAL
  primal status      : FEASIBLE_POINT
  dual status        : FEASIBLE_POINT
  objective value    : 1000.0

Expression graph
  minimize
   └─ + (affine; real)
      ├─ [0;;]
      ├─ real variable (id: 165…583)
      ├─ real variable (id: 165…583)
      ⋮
  subject to
   └─ ≥ constraint (affine)
      └─ + (affine; real)
         ├─ real variable (id: 165…583)
         └─ [-1;;]

Indexing.

println("Indexing example")
x = Variable(1000, 1);
e = 0;
@time begin
    for i in 1:1000
        global e
        e += x[i]
    end
    p = minimize(e, x >= ones(1000, 1))
end
@time solve!(p, ECOS.Optimizer; silent = true)
Problem statistics
  problem is DCP         : true
  number of variables    : 1 (1_000 scalar elements)
  number of constraints  : 1 (1_000 scalar elements)
  number of coefficients : 1_001
  number of atoms        : 1_002

Solution summary
  termination status : OPTIMAL
  primal status      : FEASIBLE_POINT
  dual status        : FEASIBLE_POINT
  objective value    : 1000.0

Expression graph
  minimize
   └─ + (affine; real)
      ├─ [0;;]
      ├─ index (affine; real)
      │  └─ 1000-element real variable (id: 497…720)
      ├─ index (affine; real)
      │  └─ 1000-element real variable (id: 497…720)
      ⋮
  subject to
   └─ ≥ constraint (affine)
      └─ + (affine; real)
         ├─ 1000-element real variable (id: 497…720)
         └─ 1000×1 Matrix{Float64}

Matrix constraints.

println("Matrix constraint example")
n, m, p = 100, 100, 100
X = Variable(m, n);
A = randn(p, m);
b = randn(p, n);
@time begin
    p = minimize(norm(X), A * X == b)
end
@time solve!(p, ECOS.Optimizer; silent = true)
Problem statistics
  problem is DCP         : true
  number of variables    : 1 (10_000 scalar elements)
  number of constraints  : 1 (10_000 scalar elements)
  number of coefficients : 20_000
  number of atoms        : 4

Solution summary
  termination status : OPTIMAL
  primal status      : FEASIBLE_POINT
  dual status        : FEASIBLE_POINT
  objective value    : 610.6659

Expression graph
  minimize
   └─ norm2 (convex; positive)
      └─ reshape (affine; real)
         └─ 100×100 real variable (id: 688…339)
  subject to
   └─ == constraint (affine)
      └─ + (affine; real)
         ├─ * (affine; real)
         │  ├─ …
         │  └─ …
         └─ 100×100 Matrix{Float64}

Transpose.

println("Transpose example")
X = Variable(5, 5);
A = randn(5, 5);
@time begin
    p = minimize(norm2(X - A), X' == X)
end
@time solve!(p, ECOS.Optimizer; silent = true)

n = 3
A = randn(n, n);
#@time begin
X = Variable(n, n);
p = minimize(norm(X' - A), X[1, 1] == 1);
solve!(p, ECOS.Optimizer; silent = true)
#end
Problem statistics
  problem is DCP         : true
  number of variables    : 1 (9 scalar elements)
  number of constraints  : 1 (1 scalar elements)
  number of coefficients : 19
  number of atoms        : 8

Solution summary
  termination status : OPTIMAL
  primal status      : FEASIBLE_POINT
  dual status        : FEASIBLE_POINT
  objective value    : 1.0682

Expression graph
  minimize
   └─ norm2 (convex; positive)
      └─ reshape (affine; real)
         └─ + (affine; real)
            ├─ …
            └─ …
  subject to
   └─ == constraint (affine)
      └─ + (affine; real)
         ├─ index (affine; real)
         │  └─ …
         └─ [-1;;]

This page was generated using Literate.jl.