将GAMS集合转换为Julia JuMP:约束定义的正确方法
GAMS到Julia JuMP约束的正确转换写法
你的代码里存在一个小问题:在约束表达式中重复遍历了集合D。外层@constraint已经通过[d in D]为每个d生成单独约束,所以内部不需要再写demIReal[d in D],直接引用demIReal[d]即可。
正确的约束代码如下:
D = [1,2,3,4,5] L = [1,2,3] @constraint(model, eDemIR[d in D], demIReal[d] + sum(line2dem[l, d] * lineIReal[l] for l in L) == 0)
这段代码完全对应原GAMS约束逻辑:
- 为每个
d ∈ D生成名为eDemIR[d]的约束 - 约束表达式为
demIReal(d)加上所有l ∈ L对应的line2dem(l,d)*lineIReal(l)之和等于0,和GAMS中的sum(l,line2dem(l,d)*lineIReal(l))语义一致
内容的提问来源于stack exchange,提问作者sati
相关产品推荐
相关产品推荐

