首页 > 解决方案 > CPLEX:如何在 OPL 中运行子集约束?

问题描述

CPLEX;混合整数线性规划;约束公式:

数据集中有 150 个城镇,每个城镇都有几个市场(或“mandis”)。数据集中的 mandis 总数 = 1800。我有一个二元决策变量 y[mandi][days]。我想添加一个约束条件,即 y[mandi][days] 在任何给定日期对任何给定城镇内的所有 mandis 都是相等的。y[mandi][days] 对于同一天不同城镇的 mandis 可能不同/相同。

样本数据

我正在从 Excel 输入数据。请看附图。你能帮我解决如何在 OPL 中制定这个约束吗?

实现上述目标的一种方法是在每个城镇内的一组 mandis 上指定单独的约束。但是,在这种情况下,约束的数量将变为 150,每个都指一个城镇。此外,我们可能会从客户端收到一些城镇的附加 mandis 列表,这会扭曲 mandi-town 映射编号,我将不得不再次更改 CPLEX 中的映射。有没有更好的方法来做到这一点,它可以直接从附加图像格式的 excel 中获取映射?

标签: optimizationlinear-programmingcplexmixed-integer-programmingilog

解决方案


而不是决策变量

dvar boolean y[mandi][days]

为什么不使用

dvar boolean y[town][days]

?

然后当你需要给定 mandi 的 y 时,你首先得到那个 mandi 的城镇,然后得到它的 y。


推荐阅读