Skip to content

Commit 14596b1

Browse files
committed
test: fix qcqp test.
1 parent 24ee590 commit 14596b1

File tree

1 file changed

+34
-12
lines changed
  • examples/ospf-kotlin-example/src/test/fuookami/ospf/kotlin/example

1 file changed

+34
-12
lines changed

examples/ospf-kotlin-example/src/test/fuookami/ospf/kotlin/example/QuadraticTest.kt

+34-12
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ class QuadraticTest {
3232
val result2 = runBlocking { solver2(model) }
3333
assert(result2.value!!.solution[0] eq -Flt64.two)
3434

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)
3838
}
3939

4040
@Test
@@ -56,9 +56,9 @@ class QuadraticTest {
5656
val result2 = runBlocking { solver2(model) }
5757
assert(result2.value!!.solution[0] eq Flt64.two)
5858

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)
6262
}
6363

6464
@Test
@@ -69,21 +69,43 @@ class QuadraticTest {
6969

7070
val model = QuadraticMetaModel()
7171
model.addVar(x)
72-
model.maximize(x * x)
72+
model.minimize(x * x)
7373
model.addConstraint(x * x leq Flt64(4.0))
7474

75-
model.export("1.opm")
75+
val solver1 = SCIPQuadraticSolver()
76+
val result1 = runBlocking { solver1(model) }
77+
assert(result1.value!!.solution[0] eq Flt64.zero)
7678

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))
8098

8199
val solver1 = SCIPQuadraticSolver()
82100
val result1 = runBlocking { solver1(model) }
83101
assert(result1.value!!.solution[0] eq Flt64.two)
84102

85103
val solver2 = CplexQuadraticSolver()
86104
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)
88110
}
89111
}

0 commit comments

Comments
 (0)