繁体   English   中英

JuMP 是否可以使用 VariableRef 作为索引

[英]JuMP is it possible to use VariableRef as indices

我正在使用 Julia 的 JuMP 求解器来尝试找到最佳路径。

我的问题是目标 function 是矩阵元素的总和,其索引是我的优化问题中的变量。

nb_dem, nb_prod, nb_mag, nb_noeuds, S, Q, R = read_data_24(inputfilepath, inputfilename)
@variable(model, produits[1:nb_mag,1:nb_prod,1:nb_dem] >= 0, Int)
@variable(model, chemins[1:nb_noeuds+1, 1:nb_mag], Int)
@variable(model, binaires[1:nb_mag,1:nb_dem], Bin)

# define objective function
@objective(model, Min, sum(sum(R[chemins[k,i],chemins[k+1,i]] for k in 1:nb_noeuds) for i in 1:nb_mag))

我添加了一些约束,但是当我尝试运行时,我收到一条错误消息,告诉我不能使用 VariablesRef 作为索引。

ArgumentError: invalid index: chemins[1,1] of type VariableRef

无论如何将 VariablesRef 转换为可用索引?

您需要创建一个二进制向量来表示索引,然后乘以它,例如:

x = [2,5,7]
@variable(m, x_indices[1:length(x)])
@variable(m, y)
@constraint(m, y >= sum(x .* x_indices))
@constraint(m, sum(x_indices) == 1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM