@@ -182,36 +182,33 @@ def test_cons_indicator():
182182def test_cons_indicator_with_matrix_binvar ():
183183 # test matrix variable binvar #1043
184184 m = Model ()
185+ x = m .addVar (vtype = "B" )
185186
187+ # test binvar with int
186188 with pytest .raises (TypeError ):
187- m .addConsIndicator (m . addVar ( vtype = "B" ) <= 1 , 1 )
189+ m .addConsIndicator (x <= 0 , 1 )
188190
189191 # test binvar with (1, 1, 1) shape of matrix variable
190- x = m .addVar (vtype = "B" )
191- binvar1 = m .addMatrixVar (((1 , 1 , 1 )), vtype = "B" )
192- m .addConsIndicator (x >= 1 , binvar1 , activeone = True )
193- m .addConsIndicator (x <= 0 , binvar1 , activeone = False )
192+ with pytest .raises (ValueError ):
193+ m .addConsIndicator (x <= 0 , m .addMatrixVar (((1 , 1 , 1 )), vtype = "B" ))
194194
195195 # test binvar with (2, 3) shape of matrix variable
196- y = m .addVar (vtype = "B" )
197- binvar2 = m .addMatrixVar (((2 , 3 )), vtype = "B" )
198- m .addConsIndicator (y >= 1 , binvar2 , activeone = True )
199- m .addConsIndicator (y <= 0 , binvar2 , activeone = False )
196+ with pytest .raises (TypeError ):
197+ m .addConsIndicator (x <= 0 , m .addMatrixVar (((2 , 3 )), vtype = "B" ))
200198
201199 # test binvar with (2, 1) shape of list of lists
202- z = m .addVar (vtype = "B" )
203- binvar3 = [[m .addVar (vtype = "B" )], [m .addVar (vtype = "B" )]]
204- m .addConsIndicator (z >= 1 , binvar3 , activeone = True )
205- m .addConsIndicator (z <= 0 , binvar3 , activeone = False )
206-
207- m .setObjective (
208- binvar1 .sum () + binvar2 .sum () + binvar3 [0 ][0 ] + binvar3 [1 ][0 ], "maximize"
209- )
200+ with pytest .raises (TypeError ):
201+ m .addConsIndicator (x <= 0 , [[m .addVar (vtype = "B" )], [m .addVar (vtype = "B" )]])
202+
203+ # test binvar with requiring type and dimension
204+ binvar = m .addMatrixVar (1 , vtype = "B" )
205+ m .addConsIndicator (x >= 1 , binvar , activeone = True )
206+ m .addConsIndicator (x <= 0 , binvar , activeone = False )
207+
208+ m .setObjective (binvar .sum (), "maximize" )
210209 m .optimize ()
211210
212211 assert m .getVal (x ) == 1
213- assert m .getVal (y ) == 1
214- assert m .getVal (z ) == 1
215212
216213@pytest .mark .xfail (
217214 reason = "addConsIndicator doesn't behave as expected when binary variable is False. See Issue #717."
0 commit comments