1
+ from pyscipopt import Model , SCIP_EVENTTYPE
2
+ from pyscipopt .recipes .getLocalConss import *
3
+ from helpers .utils import random_mip_1
4
+
5
+ def localconss (model , event ):
6
+ local_conss = getLocalConss (model )
7
+ assert len (local_conss [1 ]) == getNLocalConss (model )[1 ]
8
+ assert len (local_conss [0 ]) == len (model .getConss ())
9
+ assert local_conss [0 ] == model .getConss ()
10
+
11
+ vars = model .getVars ()
12
+ if model .getCurrentNode ().getNumber () == 1 :
13
+ pass
14
+
15
+ elif model .getCurrentNode ().getNumber () == 2 :
16
+ model .data ["local_cons1" ] = model .addCons (vars [0 ] + vars [1 ] <= 1 , name = "c1" , local = True )
17
+ assert getNLocalConss (model )[1 ] == 1
18
+ assert getLocalConss (model )[1 ][0 ] == model .data ["local_cons1" ]
19
+
20
+ elif model .getCurrentNode ().getNumber () == 4 :
21
+ local_conss = getLocalConss (model )
22
+ model .data ["local_cons2" ] = model .addCons (vars [1 ] + vars [2 ] <= 1 , name = "c2" , local = True )
23
+ model .data ["local_cons3" ] = model .addCons (vars [2 ] + vars [3 ] <= 1 , name = "c3" , local = True )
24
+ assert getNLocalConss (model )[1 ] == 3
25
+ assert getLocalConss (model )[1 ][0 ] == model .data ["local_cons1" ]
26
+ assert getLocalConss (model )[1 ][1 ] == model .data ["local_cons2" ]
27
+ assert getLocalConss (model )[1 ][2 ] == model .data ["local_cons3" ]
28
+
29
+ elif model .getCurrentNode ().getParent ().getNumber () not in [2 ,4 ]:
30
+ assert getLocalConss (model ) == [model .getConss (), []]
31
+
32
+ def test_getLocalConss ():
33
+ model = random_mip_1 (node_lim = 4 )
34
+ model .data = {}
35
+
36
+ model .attachEventHandlerCallback (localconss , [SCIP_EVENTTYPE .NODEFOCUSED ])
37
+ model .optimize ()
38
+ assert len (model .data ) == 3
0 commit comments