Skip to content

Commit ed0f348

Browse files
authored
Add more tests to DominguezRios (#109)
1 parent dabce8d commit ed0f348

File tree

1 file changed

+38
-1
lines changed

1 file changed

+38
-1
lines changed

test/algorithms/DominguezRios.jl

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -600,7 +600,44 @@ function test_vector_of_variables_objective()
600600
MOI.set(model, MOI.ObjectiveFunction{typeof(f)}(), f)
601601
MOI.add_constraint(model, sum(1.0 * xi for xi in x), MOI.GreaterThan(1.0))
602602
MOI.optimize!(model)
603-
MOI.get(model, MOI.TerminationStatus()) == MOI.OPTIMAL
603+
@test MOI.get(model, MOI.TerminationStatus()) == MOI.OPTIMAL
604+
return
605+
end
606+
607+
function test_issue_105()
608+
cost = [100.0, 120.0, 150.0, 110.0, 200.0, 170.0]
609+
time = [8.0, 3.0, 4.0, 2.0, 5.0, 4.0]
610+
capacity = [10.0, 8.0]
611+
demand = [5.0, 8.0, 5.0]
612+
m, n = 2, 3
613+
model = MOI.instantiate(; with_bridge_type = Float64) do
614+
return MOA.Optimizer(HiGHS.Optimizer)
615+
end
616+
MOI.set(model, MOA.Algorithm(), MOA.DominguezRios())
617+
MOI.set(model, MOI.Silent(), true)
618+
x = MOI.add_variables(model, m * n)
619+
MOI.add_constraint.(model, x, MOI.GreaterThan(0.0))
620+
MOI.add_constraint.(model, x, MOI.Integer())
621+
X = reshape(x, m, n)
622+
for i in 1:m
623+
f_i = MOI.ScalarAffineFunction(MOI.ScalarAffineTerm.(1.0, X[i, :]), 0.0)
624+
MOI.add_constraint(model, f_i, MOI.LessThan(capacity[i]))
625+
end
626+
for j in 1:n
627+
f_j = MOI.ScalarAffineFunction(MOI.ScalarAffineTerm.(1.0, X[:, j]), 0.0)
628+
MOI.add_constraint(model, f_j, MOI.EqualTo(demand[j]))
629+
end
630+
f = MOI.Utilities.operate(
631+
vcat,
632+
Float64,
633+
MOI.ScalarAffineFunction(MOI.ScalarAffineTerm.(cost, x), 0.0),
634+
MOI.ScalarAffineFunction(MOI.ScalarAffineTerm.(time, x), 0.0),
635+
MOI.ScalarAffineFunction(MOI.ScalarAffineTerm.(1.0, x), 0.0),
636+
)
637+
MOI.set(model, MOI.ObjectiveSense(), MOI.MIN_SENSE)
638+
MOI.set(model, MOI.ObjectiveFunction{typeof(f)}(), f)
639+
MOI.optimize!(model)
640+
@test MOI.get(model, MOI.ResultCount()) == 6
604641
return
605642
end
606643

0 commit comments

Comments
 (0)