20
20
module TestInterface
21
21
22
22
using Test: @test , @test_throws
23
- import JuMP as jmp
23
+ import JuMP
24
24
import JuMPIn as ji
25
25
26
26
# Note: Do not import from IncidenceGraphInterface here; this will
80
80
81
81
function test_construct_interface_rectangular ()
82
82
m = make_degenerate_flow_model ()
83
- @jmp . constraint (
83
+ @JuMP . constraint (
84
84
m,
85
85
sum_flow_eqn,
86
86
m[:flow ] == sum (m[:flow_comp ][:]),
@@ -165,8 +165,8 @@ function test_maximum_matching()
165
165
matching = ji. maximum_matching (igraph)
166
166
@test length (matching) == 7
167
167
for (con, var) in matching
168
- @test typeof (con) <: jmp .ConstraintRef
169
- @test typeof (var) <: jmp .VariableRef
168
+ @test typeof (con) <: JuMP .ConstraintRef
169
+ @test typeof (var) <: JuMP .VariableRef
170
170
@test var in Set (ji. get_adjacent (igraph, con))
171
171
@test con in Set (ji. get_adjacent (igraph, var))
172
172
end
@@ -225,6 +225,32 @@ function test_dulmage_mendelsohn()
225
225
return nothing
226
226
end
227
227
228
+ function test_overconstrained_due_to_fixed_variable ()
229
+ m = JuMP. Model ()
230
+ @JuMP . variable (m, x[1 : 2 ])
231
+ @JuMP . constraint (m, x[1 ] + 2 * x[2 ] == 1 )
232
+ @JuMP . constraint (m, 3 * x[2 ] - x[2 ] == 0 )
233
+ JuMP. fix (x[1 ], 3 )
234
+ igraph = ji. IncidenceGraphInterface (m)
235
+ con_dmp, var_dmp = ji. dulmage_mendelsohn (igraph)
236
+ @test length (var_dmp. overconstrained) == 2
237
+ @test length (con_dmp. overconstrained) == 2
238
+ @test length (con_dmp. unmatched) == 1
239
+ end
240
+
241
+ function test_overconstrained_due_to_including_bound ()
242
+ m = JuMP. Model ()
243
+ @JuMP . variable (m, x)
244
+ @JuMP . variable (m, 0.01 <= y)
245
+ @JuMP . constraint (m, 2 * x + y == 1 )
246
+ @JuMP . NLconstraint (m, x == sqrt (y))
247
+ igraph = ji. IncidenceGraphInterface (m, include_inequality = true )
248
+ con_dmp, var_dmp = ji. dulmage_mendelsohn (igraph)
249
+ @test length (var_dmp. overconstrained) == 2
250
+ @test length (con_dmp. overconstrained) == 2
251
+ @test length (con_dmp. unmatched) == 1
252
+ end
253
+
228
254
function runtests ()
229
255
test_construct_interface ()
230
256
test_construct_interface_rectangular ()
@@ -234,6 +260,8 @@ function runtests()
234
260
test_get_adjacent_to_variable ()
235
261
test_maximum_matching ()
236
262
test_dulmage_mendelsohn ()
263
+ test_overconstrained_due_to_fixed_variable ()
264
+ test_overconstrained_due_to_including_bound ()
237
265
end
238
266
239
267
end
0 commit comments