def test_multiple_cons_params(): """Test if setting the remaining parameters works as expected""" def assert_conss_neq(a, b): assert a.isInitial() != b.isInitial() assert a.isSeparated() != b.isSeparated() assert a.isEnforced() != b.isEnforced() assert a.isChecked() != b.isChecked() assert a.isPropagated() != b.isPropagated() assert a.isModifiable() != b.isModifiable() assert a.isDynamic() != b.isDynamic() assert a.isRemovable() != b.isRemovable() assert a.isStickingAtNode() != b.isStickingAtNode() kwargs = dict(initial=True, separate=True, enforce=True, check=True, propagate=True, local=False, modifiable=False, dynamic=False, removable=False, stickingatnode=False) m = Model() x = m.addVar("x", vtype = 'C', obj = 1.0) y = m.addVar("y", vtype = 'C', obj = 2.0) conss = m.addConss([x + 2 * y <= 1], **kwargs) conss += m.addConss([x + 2 * y <= 1], **{k: not v for k, v in kwargs.items()}) assert_conss_neq(conss[0], conss[1])
def test_multiple_cons_simple(): def assert_conss_eq(a, b): assert a.name == b.name assert a.isInitial() == b.isInitial() assert a.isSeparated() == b.isSeparated() assert a.isEnforced() == b.isEnforced() assert a.isChecked() == b.isChecked() assert a.isPropagated() == b.isPropagated() assert a.isLocal() == b.isLocal() assert a.isModifiable() == b.isModifiable() assert a.isDynamic() == b.isDynamic() assert a.isRemovable() == b.isRemovable() assert a.isStickingAtNode() == b.isStickingAtNode() s = Model() s_x = s.addVar("x", vtype = 'C', obj = 1.0) s_y = s.addVar("y", vtype = 'C', obj = 2.0) s_cons = s.addCons(s_x + 2 * s_y <= 1.0) m = Model() m_x = m.addVar("x", vtype = 'C', obj = 1.0) m_y = m.addVar("y", vtype = 'C', obj = 2.0) m_conss = m.addConss([m_x + 2 * m_y <= 1.0]) assert len(m_conss) == 1 assert_conss_eq(s_cons, m_conss[0]) s.freeProb() m.freeProb()
def test_multiple_cons_names(): m = Model() x = m.addVar("x", vtype = 'C', obj = 1.0) y = m.addVar("y", vtype = 'C', obj = 2.0) names = list("abcdef") conss = m.addConss([x + 2 * y <= 1 for i in range(len(names))], names) assert len(conss) == len(names) assert all([c.name == n for c, n in zip(conss, names)]) m.freeProb() m = Model() x = m.addVar("x", vtype = 'C', obj = 1.0) y = m.addVar("y", vtype = 'C', obj = 2.0) name = "abcdef" conss = m.addConss([x + 2 * y <= 1 for i in range(5)], name) assert len(conss) == 5 assert all([c.name.startswith(name + "_") for c in conss])