R
library("scs")
Second-order cone programming
\[\begin{split}\begin{array}{rr}
\underset{x}{\text{maximize}}
& x + y \\
\text{subject to}
& \sqrt{x^2 + y^2} \leq \sqrt{2} \\
& x, y \geq 0
\end{array}\end{split}\]
obj <- c(-1, -1)
A <- rbind(c(-1, 0), # x >= 0
c( 0, -1), # y >= 0
c( 0, 0),
c(-1, 0),
c( 0, -1))
b <- c(0, 0, sqrt(2), 0, 0)
cone <- list(z = 0, l = 2, q = 3)
solution <- scs(A, b, obj, cone = cone)
str(solution)
#R> List of 4
#R> $ x : num [1:2] 1 1
#R> $ y : num [1:5] 0 0 1.41 -1 -1
#R> $ s : num [1:5] 1 1 1.41 1 1
#R> $ info:List of 21
#R> ..$ iter : int 50
#R> ..$ status : chr "solved"
#R> ..$ status_val : int 1
#R> ..$ scale_updates : int 0
#R> ..$ pobj : num -2
#R> ..$ dobj : num -2
#R> ..$ res_pri : num 4.86e-05
#R> ..$ res_dual : num 1.98e-06
#R> ..$ gap : num 0.000141
#R> ..$ res_infeas : num NaN
#R> ..$ res_unbdd_a : num 0.707
#R> ..$ res_unbdd_p : num 0
#R> ..$ setup_time : num 0.0236
#R> ..$ solve_time : num 0.0237
#R> ..$ scale : num 0.1
#R> ..$ comp_slack : num 1.34e-14
#R> ..$ rejected_accel_steps: int 0
#R> ..$ accepted_accel_steps: int 0
#R> ..$ lin_sys_time : num 0.00668
#R> ..$ cone_time : num 0.00439
#R> ..$ accel_time : num 0
Primal exponential cone
\[\begin{split}\begin{array}{rr}
\underset{x}{\text{maximize}} & x + y + z \\
\text{subject to} & y e^{\frac{x}{y}} \leq z \\
& x \geq 0, y > 0, z \in [0, e]
\end{array}\end{split}\]
obj <- c(-1, -1, -1)
A <- rbind(-diag(3), # x, z >= 0, y >= 1e-12
c(0, 0, 1), # z <= e
-diag(3)) # K_exp
b <- c(0, -1e-12, 0, exp(1), double(3))
cone <- list(z = 0L, l = 4L, ep = 1L)
solution <- scs(A, b, obj, cone = cone)
str(solution)
#R> List of 4
#R> $ x : num [1:3] 8.46e-05 2.72 2.72
#R> $ y : num [1:7] 1.17e-05 0.00 0.00 2.00 -1.00 ...
#R> $ s : num [1:7] 0.00 2.72 2.72 0.00 5.68e-05 ...
#R> $ info:List of 21
#R> ..$ iter : int 75
#R> ..$ status : chr "solved"
#R> ..$ status_val : int 1
#R> ..$ scale_updates : int 0
#R> ..$ pobj : num -5.44
#R> ..$ dobj : num -5.44
#R> ..$ res_pri : num 0.000273
#R> ..$ res_dual : num 2.02e-05
#R> ..$ gap : num 0.000583
#R> ..$ res_infeas : num NaN
#R> ..$ res_unbdd_a : num 0.5
#R> ..$ res_unbdd_p : num 0
#R> ..$ setup_time : num 0.0273
#R> ..$ solve_time : num 0.273
#R> ..$ scale : num 0.1
#R> ..$ comp_slack : num 8.54e-09
#R> ..$ rejected_accel_steps: int 0
#R> ..$ accepted_accel_steps: int 0
#R> ..$ lin_sys_time : num 0.0118
#R> ..$ cone_time : num 0.242
#R> ..$ accel_time : num 0