CPLEX中range实现取并集运算

简介: CPLEX中range实现取并集运算

1、问题缘由


首先指出,在CPLEX的OPL语言中,不支持range定义的范围的取并集运算,但是想要获得不连续的range 范围应该怎样做呢?



2、解决方法


使用not in将连续范围进行打断,迂回实现取并集的操作。下面通过一段例子来具体结束。

range T1 = 1..4;
range T2 = 7..9;
range T3 = 5..6;
range T4 = 1..9;
dvar int x[T4][T4];
subject to
{
forall(j in T1)sum(i in T4:i not in T3)x[i][j] == 1;
}

上面代码中,可以实现range范围T1和T2的并集,通过i in T4:i not in T3将全集中的某个range集合去除之后得到其他range范围的并集。



相关文章
|
12天前
|
算法 JavaScript 前端开发
使用 Set 类型实现数组的交集运算
【10月更文挑战第30天】使用 `Set` 类型实现数组的交集运算是一种常见且有效的方法,它为我们处理数据集合的运算提供了一种便捷的途径。通过合理地运用这种方法,我们可以轻松地实现数组的交集计算,并在各种编程任务中灵活运用。
|
6月前
lambda中sorted排序
lambda中sorted排序
(二维vector)(绝对值求和等式的处理)B. Playing in a Casino
(二维vector)(绝对值求和等式的处理)B. Playing in a Casino
90 0
SP10707 COT2 - Count on a tree II(欧拉序 树上莫队)
SP10707 COT2 - Count on a tree II(欧拉序 树上莫队)
115 0
SP10707 COT2 - Count on a tree II(欧拉序 树上莫队)
LeetCode 5340. 统计有序矩阵中的负数 Count Negative Numbers in a Sorted Matrix
LeetCode 5340. 统计有序矩阵中的负数 Count Negative Numbers in a Sorted Matrix
|
Python
【欧拉计划第 8 题】序列中最大的乘积 Largest product in a series
【欧拉计划第 8 题】序列中最大的乘积 Largest product in a series
124 0
【欧拉计划第 8 题】序列中最大的乘积 Largest product in a series
|
Java 数据库连接 数据库
lamda整合两个集合整合
在使用PageHelper分页工具时,出现统计total异常,或者分页的其他参数有问题,网上有了不少帖子,要么查两次,要么写好mybatis映射。当然mybatis映射我一开始就写好了不起作用。最终还是查两次数据库。
lamda整合两个集合整合
|
机器学习/深度学习
【欧拉计划第 6 题】和的平方与平方的和差值 Sum square difference
【欧拉计划第 6 题】和的平方与平方的和差值 Sum square difference
161 0
|
Python
Python求两个list的交集、并集、补集、对称差集的两种方法
Python求两个list的交集、并集、补集、对称差集的两种方法
810 0
|
算法 Python
动态规划法(三)子集和问题(Subset sum problem)
  继续讲故事~~   上次讲到我们的主人公丁丁,用神奇的动态规划法解决了杂货店老板的两个找零钱问题,得到了老板的肯定。之后,他就决心去大城市闯荡了,看一看外面更大的世界。
2458 1