问题来自Example 3.6 from Principles of sequencing and scheduling
![8e5f750b65cf3af02f50ea4371f9490e.png](https://img-blog.csdnimg.cn/img_convert/8e5f750b65cf3af02f50ea4371f9490e.png)
模型长这样:
![f57dea55286ae1bb7bfe0c2d4a20da05.png](https://img-blog.csdnimg.cn/img_convert/f57dea55286ae1bb7bfe0c2d4a20da05.png)
Gurobi+JuMP+Julia求解
直接上代码叭。语法会因为版本不同而不同。安装了Cplex的小伙伴可以直接将Gurobi换为Cplex就好了,其他地方都不变。
using JuMP, Gurobi
m = Model(solver=GurobiSolver())
n = 5
ix = 1:n
p = [40 78 73 11 22]
d = [54 66 143 145 149]
@variable(m, x[ix, ix], Bin)
@variable(m, t[ix] >= 0)
@objective(m, Min, sum(t[k] for k in ix))
constraint1 = Dict()
@constraint(m, constraint1[k in ix], sum(x[i, k] for i in ix) == 1)
constraint11 = Dict()
@constraint(m, constraint11[i in ix], sum(x[i, k] for k in ix) == 1)
constraint2 = Dict()
@constraint(m, constraint2[k in ix], sum(sum(p[i] * x[i, u] for i in ix) for u in 1:k) - sum(d[i] * x[i, k] for i in ix) <= t[k])
status = solve(m)
for i in ix
for j in ix
println("x[$i][$j] = ", getvalue(x[i, j]))
end
end
println("objective value = ", getobjectivevalue(m))
print(m)
Linux下跑出来长这样:
Academic license - for non-commercial use only
Optimize a mode