@@ -32,9 +32,9 @@ class QuadraticTest {
32
32
val result2 = runBlocking { solver2(model) }
33
33
assert (result2.value!! .solution[0 ] eq - Flt64 .two)
34
34
35
- // val solver3 = GurobiQuadraticSolver()
36
- // val result3 = runBlocking { solver3(model) }
37
- // assert(result3.value!!.solution[0] eq -Flt64.two)
35
+ val solver3 = GurobiQuadraticSolver ()
36
+ val result3 = runBlocking { solver3(model) }
37
+ assert (result3.value!! .solution[0 ] eq - Flt64 .two)
38
38
}
39
39
40
40
@Test
@@ -56,9 +56,9 @@ class QuadraticTest {
56
56
val result2 = runBlocking { solver2(model) }
57
57
assert (result2.value!! .solution[0 ] eq Flt64 .two)
58
58
59
- // val solver3 = GurobiQuadraticSolver()
60
- // val result3 = runBlocking { solver3(model) }
61
- // assert(result3.value!!.solution[0] eq Flt64.two)
59
+ val solver3 = GurobiQuadraticSolver ()
60
+ val result3 = runBlocking { solver3(model) }
61
+ assert (result3.value!! .solution[0 ] eq Flt64 .two)
62
62
}
63
63
64
64
@Test
@@ -69,21 +69,43 @@ class QuadraticTest {
69
69
70
70
val model = QuadraticMetaModel ()
71
71
model.addVar(x)
72
- model.maximize (x * x)
72
+ model.minimize (x * x)
73
73
model.addConstraint(x * x leq Flt64 (4.0 ))
74
74
75
- model.export(" 1.opm" )
75
+ val solver1 = SCIPQuadraticSolver ()
76
+ val result1 = runBlocking { solver1(model) }
77
+ assert (result1.value!! .solution[0 ] eq Flt64 .zero)
76
78
77
- val himodel = runBlocking { QuadraticModel (model).value!! }
78
- val limodel = runBlocking { QuadraticTetradModel (himodel) }
79
- limodel.export(" 1.lp" , ModelFileFormat .LP )
79
+ val solver2 = CplexQuadraticSolver ()
80
+ val result2 = runBlocking { solver2(model) }
81
+ assert (result2.value!! .solution[0 ].abs() leq Flt64 (1e- 5 ))
82
+
83
+ val solver3 = GurobiQuadraticSolver ()
84
+ val result3 = runBlocking { solver3(model) }
85
+ assert (result3.value!! .solution[0 ] eq Flt64 .zero)
86
+ }
87
+
88
+ @Test
89
+ fun notConvexQcqp () {
90
+ val x = RealVar (" x" )
91
+ x.range.leq(Flt64 .two)
92
+ x.range.geq(- Flt64 .two)
93
+
94
+ val model = QuadraticMetaModel ()
95
+ model.addVar(x)
96
+ model.maximize(x * x + x)
97
+ model.addConstraint(x * x leq Flt64 (4.0 ))
80
98
81
99
val solver1 = SCIPQuadraticSolver ()
82
100
val result1 = runBlocking { solver1(model) }
83
101
assert (result1.value!! .solution[0 ] eq Flt64 .two)
84
102
85
103
val solver2 = CplexQuadraticSolver ()
86
104
val result2 = runBlocking { solver2(model) }
87
- assert (result2.value!! .solution[0 ] eq Flt64 .two)
105
+ assert (result2.failed)
106
+
107
+ val solver3 = GurobiQuadraticSolver ()
108
+ val result3 = runBlocking { solver3(model) }
109
+ assert (result3.value!! .solution[0 ] eq Flt64 .two)
88
110
}
89
111
}
0 commit comments