-
Notifications
You must be signed in to change notification settings - Fork 280
Expand file tree
/
Copy pathtest_recipe_getLocalConss.py
More file actions
38 lines (31 loc) · 1.57 KB
/
test_recipe_getLocalConss.py
File metadata and controls
38 lines (31 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from pyscipopt import Model, SCIP_EVENTTYPE
from pyscipopt.recipes.getLocalConss import *
from helpers.utils import random_mip_1
def localconss(model, event):
local_conss = getLocalConss(model)
assert len(local_conss[1]) == getNLocalConss(model)[1]
assert len(local_conss[0]) == len(model.getConss())
assert local_conss[0] == model.getConss()
vars = model.getVars()
if model.getCurrentNode().getNumber() == 1:
pass
elif model.getCurrentNode().getNumber() == 2:
model.data["local_cons1"] = model.addCons(vars[0] + vars[1] <= 1, name="c1", local=True)
assert getNLocalConss(model)[1] == 1
assert getLocalConss(model)[1][0] == model.data["local_cons1"]
elif model.getCurrentNode().getNumber() == 4:
local_conss = getLocalConss(model)
model.data["local_cons2"] = model.addCons(vars[1] + vars[2] <= 1, name="c2", local=True)
model.data["local_cons3"] = model.addCons(vars[2] + vars[3] <= 1, name="c3", local=True)
assert getNLocalConss(model)[1] == 3
assert getLocalConss(model)[1][0] == model.data["local_cons1"]
assert getLocalConss(model)[1][1] == model.data["local_cons2"]
assert getLocalConss(model)[1][2] == model.data["local_cons3"]
elif model.getCurrentNode().getParent().getNumber() not in [2,4]:
assert getLocalConss(model) == [model.getConss(), []]
def test_getLocalConss():
model = random_mip_1(node_lim=4)
model.data = {}
model.attachEventHandlerCallback(localconss, [SCIP_EVENTTYPE.NODEFOCUSED])
model.optimize()
assert len(model.data) == 3