CPLEX:如何在OPL中运行子集约束



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

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

样本数据

我正在从Excel中输入数据。请参阅所附图片。你能帮助我如何在OPL中制定这个约束吗?

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

而不是决策变量

dvar boolean y[mandi][days]

为什么不使用

dvar boolean y[town][days]

然后,当你需要一个给定曼迪的y时,你首先得到这个曼迪的城镇,然后得到它的y。

最新更新