/
jump_soc.jl
51 lines (39 loc) · 1.62 KB
/
jump_soc.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
function test_jump_soc(solver)
@testset "Second-order Cone Programming" begin
@testset "SOC1" begin
m = Model(solver=solver)
@variable(m, x)
@variable(m, y)
@variable(m, t >= 0)
@objective(m, Min, t)
@constraint(m, x + y >= 1)
@constraint(m, [t,x,y] in MOI.SecondOrderCone(3))
JuMP.solve(m)
@test JuMP.isattached(m)
@test JuMP.hasvariableresult(m)
@test JuMP.terminationstatus(m) == MOI.Success
@test JuMP.primalstatus(m) == MOI.FeasiblePoint
@test JuMP.objectivevalue(m) ≈ sqrt(1/2) atol=1e-6
@test JuMP.resultvalue.([x,y,t]) ≈ [0.5,0.5,sqrt(1/2)] atol=1e-3
end
@testset "RotatedSOC1" begin
m = Model(solver=solver)
@variable(m, x[1:5] >= 0)
@variable(m, 0 <= u <= 5)
@variable(m, v)
@variable(m, t1 == 1)
@variable(m, t2 == 1)
@objective(m, Max, v)
@constraint(m, [t1/sqrt(2),t2/sqrt(2),x...] in MOI.RotatedSecondOrderCone(7))
@constraint(m, [x[1]/sqrt(2), u/sqrt(2), v] in MOI.RotatedSecondOrderCone(3))
JuMP.solve(m)
@test JuMP.isattached(m)
@test JuMP.hasvariableresult(m)
@test JuMP.terminationstatus(m) == MOI.Success
@test JuMP.primalstatus(m) == MOI.FeasiblePoint
@test JuMP.resultvalue.(x) ≈ [1,0,0,0,0] atol=1e-2
@test JuMP.resultvalue(u) ≈ 5 atol=1e-4
@test JuMP.resultvalue(v) ≈ sqrt(5) atol=1e-6
end
end
end