出于对生产计划问题进行编码的目的,我使用的是“Julia”。在公式中,有一个公式的下界是一个向量。请看附件
.
当我想输入这个向量作为求和的下限时,软件会给我一个错误,即求和边界应该是缩放器
.
出于对生产计划问题进行编码的目的,我使用的是“Julia”。在公式中,有一个公式的下界是一个向量。请看附件
.
当我想输入这个向量作为求和的下限时,软件会给我一个错误,即求和边界应该是缩放器
.
括号中的语法在一段时间前已被弃用 - 在当前版本的 Julia 和 JuMP(Julia 0.6.0,JuMP 0.18.0)中,当我运行它时,以下工作:
using JuMP
using Cbc
bar = Model(solver=CbcSolver())
# data
N = 3
M = 3
W = 3
K = 3
T = 77
s = ones(3,3)
@variable(bar, x[1:N,1:M,1:K,1:T],Bin)
p = reshape( [
[[9,7,12]; [10,6,8]; [8,10,9]];
[[6,5,9]; [8,4,6]; [6,8,6]];
[[4,4,5]; [4,3,4]; [5,3,5]]],
3,3,3)
for t = 1:T
@constraint(bar,
sum( ( ( (x[i, j, k, t] * k
for h = t:t + p[i, j, k] + 1 )
for j = 1:M)
for k = 1:K)
for i = 1:N) == 0)
end
solve(bar)
如果不能选择使用当前版本,那么普通的 for 循环也应该可以工作:
(... same stuff as before up to the for loop ...)
for t = 1:T
s = 0.0
for j = 1:M
for k = 1:K
for i = 1:N
for h = t:t + p[i, j, k] + 1
s += k*x[i,j,k,t]
end
end
end
end
@constraint(bar, s == 0)
end
无论如何,这可以说比第一个公式更具可读性。如果这些版本都不适合您,请告诉我,然后我们可以进一步研究。
PS如果你问一些关于代码片段的问题,截图很好,但实际代码更好,那么我们不必再次输入所有内容:)