Skip to content

Commit fff8d4a

Browse files
authored
Fix table MILP bridge with constants in function (#2544)
1 parent 20db26f commit fff8d4a

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

src/Bridges/Constraint/bridges/table.jl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,11 @@ function bridge_constraint(
7272
end
7373
assign_f = MOI.ScalarAffineFunction(terms, zero(T))
7474
assign_f = MOI.Utilities.operate!(-, T, assign_f, fi)
75-
ci = MOI.add_constraint(model, assign_f, MOI.EqualTo(zero(T)))
75+
ci = MOI.Utilities.normalize_and_add_constraint(
76+
model,
77+
assign_f,
78+
MOI.EqualTo(zero(T)),
79+
)
7680
push!(assignment, ci)
7781
end
7882
return TableToMILPBridge{T,F}(z, unity, assignment, f, s)

test/Bridges/Constraint/table.jl

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,24 @@ function test_runtests()
4040
a4 in ZeroOne()
4141
""",
4242
)
43+
MOI.Bridges.runtests(
44+
MOI.Bridges.Constraint.TableToMILPBridge,
45+
"""
46+
variables: x, y
47+
[x, y, 1] in Table(Float64[1 1 0; 0 1 1; 1 0 1; 1 1 1])
48+
""",
49+
"""
50+
variables: x, y, a1, a2, a3, a4
51+
a1 + a2 + a3 + a4 == 1.0
52+
a1 + a3 + a4 + -1.0 * x == 0.0
53+
a1 + a2 + a4 + -1.0 * y == 0.0
54+
a2 + a3 + a4 == 1.0
55+
a1 in ZeroOne()
56+
a2 in ZeroOne()
57+
a3 in ZeroOne()
58+
a4 in ZeroOne()
59+
""",
60+
)
4361
return
4462
end
4563

0 commit comments

Comments
 (0)