【问题标题】:Writing a constraint with cplex python使用 cplex python 编写约束
【发布时间】:2022-11-27 05:00:20
【问题描述】:

我分享了模型的参数、变量和符号:

我很难用 cplex 编写方程式 7,它是模型的约束之一。我写的代码块如下:

mdl.add_constraints(T[i, j, k] >=  mdl.sum(p[l]*y[i, l, s] + s[l]*x[i, l, s] for l in N for s in ???)- d[j] - 100000*(1 - x[i, j, k])   
                for i in M
                for j in N
                for k in N) #7

你能帮我解决这个问题吗?会很受欢迎的。如果需要,我还可以分享我编写的所有模型代码。

【问题讨论】:

  • Please do not post text as images。将文本复制并粘贴到您的问题中,然后使用代码格式化工具({} 按钮)正确格式化。图像不可搜索,屏幕阅读器无法为有视力障碍的人解读,也无法复制以用于测试和调试目的。使用edit 链接修改您的问题。

标签: python optimization constraints cplex


【解决方案1】:

该约束中的“关键”(困难部分)是s 上的总和范围受索引k 限制的事实。因为您的索引是数字的,所以您可以只使用 range 命令来生成适当的子集。

警告:你有 2 个名为 s 的元素,所以你需要重命名一个。我改变了你的索引变量。

还:

  • 你有mdl.sum() 你不需要/不应该在那里需要mdl.

  • 你的变量/集合都不是“模型对象”,除非你之前重命名它们(不推荐)。我希望看到类似mdl.x[...] 等和mdl.M 等....

代码:

mdl.add_constraints(T[i, j, k] >=  sum(p[l]*y[i, l, s_idx] + s[l]*x[i, l, s_idx] for l in N for s_idx in range(1, k+1))- d[j] - 100000*(1 - x[i, j, k])   
                for i in M
                for j in N
                for k in N) #7

【讨论】:

    猜你喜欢
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多