In [1]:
using JuMP
m = Model()
@variable(m, Boat2Dock[i=1:20,j=1:20], Bin)
Out[1]:
In [2]:
# Distance Data
Distances = [1 1 1 1 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2;
1 1 1 1 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2;
1 1 1 1 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2;
1 1 1 1 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2;
1 1 1 1 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2;
1 1 1 1 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2;
1 1 1 1 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2;
1 1 1 1 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2;
2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1;
2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1;
2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1;
2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1;
2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1;
3 3 3 3 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1;
3 3 3 3 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1;
3 3 3 3 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1;
3 3 3 3 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1;
3 3 3 3 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1;
3 3 3 3 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1;
3 3 3 3 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1]
Out[2]:
In [3]:
# set the Objective Function : Min Total Distance
@objective(m,Min,sum{Boat2Dock[i,j]*Distances[i,j], i=1:20, j=1:20})
# Each Boat can only occupy one Dock space
for i = 1:20
@constraint(m, sum{Boat2Dock[i,j],j=1:20}==1)
end
# Each Dock space contains only one Boat
for j = 1:20
@constraint(m, sum{Boat2Dock[i,j],i=1:20}==1)
end
In [4]:
status = solve(m)
#print(m)
# Print the solution
println("Objective is: ",m.objVal)
println("\nSolution:")
for r = 1:20, i = 1:20
x = getvalue(Boat2Dock[r,i])
if x > 0
println(" boat ", r, " to dock space ", i, " distance ", Distances[r,i])
end
end