【问题标题】:CPLEX/OPL - constraint with boolean (optimisation model)CPLEX/OPL - 布尔约束(优化模型)
【发布时间】:2025-12-21 00:50:11
【问题描述】:

我有一个优化模型,应该将 10 个市场的需求分配给 3 个生产地点。生产基地有自己的能力,所有的需求都必须得到满足。我想最小化总成本。

但是,我还有一个称为批准的参数,它表示生产站点是否可以用于特定市场 = 这是一个布尔值(如果站点可以生产,则为 1,如果不能生产,则为 0)。我很难定义一个约束来将这个批准包含在模型中。

我有一个目标函数,可以最小化成本乘以数量乘以批准的总和,然后我有 2 个约束来满足所有需求并且不生产超过生产现场的能力。现在,我想有一个约束,只考虑那些批准 = 1 的生产站点的成本。

有人可以帮忙吗?

谢谢!

【问题讨论】:

  • 添加你有的不起作用的代码,然后我们评论它

标签: optimization model cplex opl


【解决方案1】:

欢迎访问该网站。习惯上发布您尝试过的代码以及哪些代码不起作用。你会得到更好的答案....也就是说,我想我可以为你指明正确的方向。

您需要另一个索引和一个大 M。

在伪代码中:

您应该按市场和生产来源为您的决策变量编制索引

Supply[p, m]   p ∈ {production sources}, m ∈ {markets}

这将允许您编写适当的约束。对于关于允许的 p-m 对的参数,您可以简单地设置一个类似的双索引参数。

Allowable[p, m] ∈ {binary}

然后使用大 M 约束将任何产生式钳制为零以进行“非法”配对。

Supply[p, m] <= Allowable[p, m] * M

如果这些概念中的任何一个对您来说是新的,那么在线或线性规划文本中有许多示例/资源。

【讨论】: