如何约束整数变量不在整数区间内

时间:2016-12-26 07:34:48

标签: gams-math

如标题中所述,如何使用线性约束来确保整数 n 不会出现( n1 n2 ),其中 n,n1,n2 都是整数,间隔不是[ n1 n2 ]

我在GAMS中将问题表述为

n2 - n1 =l= abs(2*n - n2 - n1)

但MIP模型中不允许abs()

THX

1 个答案:

答案 0 :(得分:0)

您需要为低于或高于间隔的n eing eighter定义二进制变量( nlow )。然后使用两个约束来强制执行此操作。数字 M 应该很大,例如它不会限制您的变量 n

Scalar M /1000/;    
Integer Variable n;    
Binary Variable nlow;    
Equation below, above;

below ..  n =L= n1 + M*(1-nlow);    
above ..  n =G= n2 - M*nlow;