[CP-SAT] fix #4568
This commit is contained in:
committed by
Mizux Seiha
parent
4e1659a83b
commit
8d90fe1ca3
@@ -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:
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user