Skip to content

Commit e76f1e0

Browse files
committed
test: add indentical variable constraints
1 parent 0ccb811 commit e76f1e0

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

test/mip_test.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from os import environ
55

66
import networkx as nx
7+
from mip.entities import LinExpr
78
import mip.gurobi
89
import mip.highs
910
from mip import Model, xsum, OptimizationStatus, MAXIMIZE, BINARY, INTEGER
@@ -578,6 +579,28 @@ def test_obj_const2(self, solver: str):
578579
assert model.objective_const == 1
579580

580581

582+
@skip_on(NotImplementedError)
583+
@pytest.mark.parametrize("solver", SOLVERS)
584+
@pytest.mark.parametrize("constraint, lb, ub", [
585+
(lambda x: x + x >= 3, 1, 2),
586+
(lambda x: x - x >= 0, 1, 2),
587+
(lambda x: x == x, 1, 2),
588+
(lambda x: x >= x, 1, 2),
589+
(lambda x: x <= x, -2, -1),
590+
# (lambda x: LinExpr([x, x, x], [2, -1, -1], sense="="), 1, 2),
591+
])
592+
def test_identical_vars(solver: str, constraint, lb, ub):
593+
"""Try if constraints are correctly added when variables are identical"""
594+
m = Model(solver_name=solver)
595+
x = m.add_var(name="x", lb=lb, ub=ub, obj=1)
596+
597+
m.add_constr(constraint(x))
598+
599+
m.optimize()
600+
assert m.status == OptimizationStatus.OPTIMAL
601+
assert lb - TOL <= x.x <= ub + TOL
602+
603+
581604
@skip_on(NotImplementedError)
582605
@pytest.mark.parametrize("val", range(1, 4))
583606
@pytest.mark.parametrize("solver", SOLVERS)

0 commit comments

Comments
 (0)