optimization - 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 中获取映射?
解决方案
而不是决策变量
dvar boolean y[mandi][days]
为什么不使用
dvar boolean y[town][days]
?
然后当你需要给定 mandi 的 y 时,你首先得到那个 mandi 的城镇,然后得到它的 y。
推荐阅读
- c# - Identity Server Saml2AuthExtensions Idp 发起的 SSO 处理响应
- octave - Octave 中的重做快捷方式是什么?
- javascript - 提交按钮未从部分视图中点击操作方法
- vba - 制表符的文本到列逗号分隔问题
- angular - 带有 JSON 的 Angular 中的动态菜单
- attachment - 如何知道 Corda 事务中的所有附件都已收到
- python-3.x - 如何使用python将字符串日期时间转换为int
- python - 如何从文本文件中检索计数并按最大数排序然后在python上显示
- angular - NgSwitch - 行为出乎意料,`No provider for NgSwitch` - 出现异常
- solace - 只有当它有一个活跃的订阅者时才会创建安慰主题吗?