[CP-SAT] fix #4568

This commit is contained in:
Laurent Perron
2025-02-25 19:33:33 +01:00
committed by Mizux Seiha
parent 4e1659a83b
commit 8d90fe1ca3
2 changed files with 14 additions and 1 deletions

View File

@@ -2182,7 +2182,7 @@ class CpModel:
# Raises TypeError if linear_expr is not an integer.
flat_expr = cmh.FlatIntExpr(linear_expr)
result.offset = flat_expr.offset
result.offset = flat_expr.offset * mult
for var in flat_expr.vars:
result.vars.append(var.index)
for coeff in flat_expr.coeffs:

View File

@@ -1025,6 +1025,19 @@ class CpModelTest(absltest.TestCase):
)
self.assertTrue(passed)
def test_issue4568(self) -> None:
model = cp_model.CpModel()
target = 11
value = model.new_int_var(0, 10, "")
defect = model.new_int_var(0, cp_model.INT32_MAX, "")
model.add_abs_equality(defect, value - target)
model.minimize(defect)
solver = cp_model.CpSolver()
status = solver.Solve(model)
self.assertEqual(status, cp_model.OPTIMAL)
self.assertEqual(solver.objective_value, 1.0)
def test_division(self) -> None:
model = cp_model.CpModel()
x = model.new_int_var(0, 10, "x")