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范围的并集。



相关文章
|
7月前
|
机器学习/深度学习 PyTorch 算法框架/工具
pytorch中非标量调用backward()的时候为什么要先进行sum操作
在《动手学深度学习》第二版教程中,当y为非标量的时候,调用backward()函数时,为什么先要求和呢(即y.sum().backward()),估计很多读者有点懵,今天小编给大家说说我的理解。
427 3
使用sorted内置函数排序数列来找出最大三个数的乘积
使用sorted内置函数排序数列来找出最大三个数的乘积
62 0
|
算法
C++11 用next_permutation算法计算排列组合数
C++11 用next_permutation算法计算排列组合数
230 0
(二维vector)(绝对值求和等式的处理)B. Playing in a Casino
(二维vector)(绝对值求和等式的处理)B. Playing in a Casino
97 0
矩阵的初等变换和等价
矩阵的初等变换和等价
278 0
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
132 0
【欧拉计划第 8 题】序列中最大的乘积 Largest product in a series
|
Java 数据库连接 数据库
lamda整合两个集合整合
在使用PageHelper分页工具时,出现统计total异常,或者分页的其他参数有问题,网上有了不少帖子,要么查两次,要么写好mybatis映射。当然mybatis映射我一开始就写好了不起作用。最终还是查两次数据库。
lamda整合两个集合整合
|
算法 BI C++
Harry Potter and The Vector Spell-gym101669D(矩阵的秩-并查集)
题意: 给出一个0 1矩阵,这个矩阵中每一列有且只有两个1,求这个矩阵的秩 输入一行中1的数量x,然后后面x个数代表1出现的列位置 求出这个矩阵的秩 方法: 思维并查集 将每一列的两个1所在的行编号连一条边,然后求一下最小生成树就好 其实就是我们维护一个并查集,在这个并查集里面的所有点都可以两两组合形成一列,如果不在同一个集合里面,就会对答案+1
110 0
Harry Potter and The Vector Spell-gym101669D(矩阵的秩-并查集)