@@ -11,31 +11,58 @@ import ECOS
1111using JuMP
1212using PolyJuMP
1313
14- function _test_motzkin (x, y, T, solver, set)
14+ function _test_motzkin (x, y, T, solver, set, feasible, square, neg )
1515 model = Model (solver)
16+ a = square ? x^ 2 : x
17+ b = square ? y^ 2 : y
1618 PolyJuMP. setpolymodule! (model, PolyJuMP. RelativeEntropy)
17- motzkin = x^ 4 * y^ 2 + x^ 2 * y^ 4 + one (T) - 3 x^ 2 * y^ 2
19+ if neg
20+ motzkin = - a^ 2 * b - a * b^ 2 + one (T) - 3 a * b
21+ else
22+ motzkin = a^ 2 * b + a * b^ 2 + one (T) - 3 a * b
23+ end
24+ @show motzkin
1825 @constraint (model, motzkin in set)
1926 optimize! (model)
20- @test termination_status (model) == MOI. OPTIMAL
21- @test primal_status (model) == MOI. FEASIBLE_POINT
27+ inner = model. moi_backend. optimizer. model
28+ println (inner)
29+ vis = MOI. get (inner, MOI. ListOfVariableIndices ())
30+ @show MOI. get (inner, MOI. VariablePrimal (), vis)
31+ if feasible
32+ @test termination_status (model) == MOI. OPTIMAL
33+ @test primal_status (model) == MOI. FEASIBLE_POINT
34+ else
35+ @test termination_status (model) == MOI. INFEASIBLE
36+ end
2237end
2338
2439function test_motzkin (x, y, T, solver)
25- _test_motzkin (
26- x,
27- y,
28- T,
29- solver,
30- PolyJuMP. RelativeEntropy. SignomialAGESet (x^ 2 * y^ 2 ),
31- )
32- return _test_motzkin (
33- x,
34- y,
35- T,
36- solver,
37- PolyJuMP. RelativeEntropy. SignomialSAGESet (),
38- )
40+ set = PolyJuMP. RelativeEntropy. SignomialAGESet (x^ 2 * y^ 2 )
41+ _test_motzkin (x, y, T, solver, set, true , true , false )
42+ set = PolyJuMP. RelativeEntropy. SignomialAGESet (x * y)
43+ _test_motzkin (x, y, T, solver, set, true , false , false )
44+ set = PolyJuMP. RelativeEntropy. SignomialAGESet (x^ 4 * y^ 2 )
45+ _test_motzkin (x, y, T, solver, set, false , true , false )
46+ set = PolyJuMP. RelativeEntropy. SignomialAGESet (x^ 2 * y)
47+ _test_motzkin (x, y, T, solver, set, false , false , false )
48+ set = PolyJuMP. RelativeEntropy. SignomialSAGESet ()
49+ _test_motzkin (x, y, T, solver, set, true , true , false )
50+ _test_motzkin (x, y, T, solver, set, true , false , false )
51+ _test_motzkin (x, y, T, solver, set, false , true , true )
52+ _test_motzkin (x, y, T, solver, set, false , false , true )
53+ set = PolyJuMP. RelativeEntropy. PolynomialAGESet (x^ 2 * y^ 2 )
54+ _test_motzkin (x, y, T, solver, set, true , true , false )
55+ set = PolyJuMP. RelativeEntropy. PolynomialAGESet (x * y)
56+ _test_motzkin (x, y, T, solver, set, false , false , false )
57+ set = PolyJuMP. RelativeEntropy. PolynomialAGESet (x^ 4 * y^ 2 )
58+ _test_motzkin (x, y, T, solver, set, false , true , false )
59+ set = PolyJuMP. RelativeEntropy. PolynomialAGESet (x^ 2 * y)
60+ _test_motzkin (x, y, T, solver, set, false , false , false )
61+ set = PolyJuMP. RelativeEntropy. PolynomialSAGESet ()
62+ _test_motzkin (x, y, T, solver, set, true , true , false )
63+ set = PolyJuMP. RelativeEntropy. PolynomialSAGESet ()
64+ _test_motzkin (x, y, T, solver, set, false , false , false )
65+ return
3966end
4067
4168import ECOS
0 commit comments