loops - Julia Jump 约束的嵌套迭代
问题描述
我正在尝试嵌套迭代以稍微压缩我的代码。我有一个可以运行的大型 MIP,但代码非常混乱。我想把它浓缩成向量等。
我的代码基本上如下:
using JuMP
using Gurobi
model = Model(with_optimizer(Gurobi.Optimizer))
@variable(model, x[1:11, 1:17, 1:54], Bin)
I = [(1:6),(7:11),(1:6),(7:11)]
K = [(51:54), (1:4), (1:50),(5:54)]
RHS = [4,4,0,0]
@constraints(model, begin
[i in I[1]], sum(x[i,17,k] for k in K[1]) == RHS[1]
[i in I[2]], sum(x[i,17,k] for k in K[2]) == RHS[2]
[i in I[3]], sum(x[i,17,k] for k in K[3]) == RHS[4]
[i in I[4]], sum(x[i,17,k] for k in K[4]) == RHS[4]
end
)
本质上,我想将所有这些约束浓缩到一行,就像在程序中进一步完成的那样,我有类似的约束,有 54 次迭代。
我试过了:
@constraint(model,
for (a,b,c) in zip(I, K, RHS)
[i in a], sum(x[i,17,k] for k in b) == c
end
)
和其他一些组合,比如
@constraint(model, [(a,b,c) in zip(I, K, RHS), i in a], sum(x[i,17,k] for k in b) == c)
但它对我来说并不合适——我会遇到加载错误或重复迭代器错误。
帮助将不胜感激!!!:-)
解决方案
这个版本对我有用:
@constraint(
model,
[(a, b, c) in zip(I, K, RHS), i in a],
sum(x[i, 17, k] for k in b) == c
)
另一个更易读的版本是
for (a, b, c) in zip(I, K, RHS)
@constraint(model, [i in a], sum(x[i, 17, k] for k in b) == c)
end
推荐阅读
- python - 试图为目录中的每个文本文件计算一个值,但它只给我一个结果
- python - 将鼠标悬停在所选单词上时弹出
- python - Beautiful Soup 内容为空,无法抓取此网页,是否被屏蔽?
- javascript - 更改下拉菜单位置时清除谷歌地图上的标记
- windows - 如何 Cygwin 编译目录中的所有 .c 文件(在 Windows 中通配)
- asp.net-mvc - Asp.net core blazor vs .net core mvc with razor
- c++ - 使用动态数组时的C ++合并排序问题
- firebird - 我可以使用任何用户名和密码登录 Firebird 3 数据库
- android - React Native 更改按钮文本颜色
- laravel - 如何检查外部表中是否存在用户ID