【问题标题】:Why cplex gives me an error "name j2 does not exist"?为什么 cplex 给我一个错误“名称 j2 不存在”?
【发布时间】:2021-10-12 08:09:42
【问题描述】:

我在 cplex 中编写了以下代码,但它给了我一个错误,例如“名称 j2 不存在”

subject to {

   forall (r in R)

     forall (j1, j2 in J)//con j1 =!da j2
    
         (T[j2][r] >= C[j1] - bigM*(1-Q[j1][j2][r]) - bigM*(2-z[j1][r]-z[j2][r]));
         
         (T[j1][r] >= C[j2] - bigM*Q[j1][j2][r] - bigM*(2-z[j1][r]-z[j2][r]));
}

你能帮我理解我哪里错了吗?谢谢!

【问题讨论】:

    标签: indexing constraints cplex


    【解决方案1】:

    你可以尝试改变吗

    forall (j1, j2 in J)//con j1 =!da j2
    
         (T[j2][r] >= C[j1] - bigM*(1-Q[j1][j2][r]) - bigM*(2-z[j1][r]-z[j2][r]));
         
         (T[j1][r] >= C[j2] - bigM*Q[j1][j2][r] - bigM*(2-z[j1][r]-z[j2][r]));
    

    进入

    forall (j1, j2 in J)//con j1 =!da j2
    
    {
    
         (T[j2][r] >= C[j1] - bigM*(1-Q[j1][j2][r]) - bigM*(2-z[j1][r]-z[j2][r]));
         
         (T[j1][r] >= C[j2] - bigM*Q[j1][j2][r] - bigM*(2-z[j1][r]-z[j2][r]));
    
    }
    

    ?

    【讨论】:

    • 我试过了,效果很好!非常感谢!
    • 不客气。注意:您可以使用逻辑约束代替 bigM。示例:github.com/AlexFleischerParis/zooopl/blob/master/zoological.mod
    • 很高兴 Alex 的解决方案有效。这是我从那些先学会了 Python 编程并忘记了代码块周围的大括号/方括号的人那里多次看到的一种错误。
    猜你喜欢
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 2021-06-09
    • 2018-12-23
    相关资源
    最近更新 更多