检查变量的值是否等于固定集中的某个值

时间:2016-07-04 08:53:28

标签: linear-programming cplex gurobi

我目前正在为一个线性程序建模,我正在使用一个我不知道它是否好的配方。 我有一些变量X,并且在某些约束中我想检查X是否从某个列表或集合中获取值(如果是这种情况,那么禁止该值,否则通过BigM方法禁用约束等等,但我认为这不是那么重要)。 举个例子,SET = {1,2,10},现在如果在解决方案X中它是2,则不允许这样做,X必须采用不同的值。 现在我正在为SET中的每个可能值x创建约束,并在约束中使用| X - x |,然后执行类似0< = | X - x |的操作。 *每个x的BigM。 有没有"标准"对此进行建模的方法,您知道更好的解决方案吗?我没有找到关于这个主题的任何内容。非常感谢!

1 个答案:

答案 0 :(得分:0)

在OPL中你可以写

  

{int} SET = {1,2,10};

     

dvar int x;

     

受制于    {

     

forall(我在SET中)x!= i;

     

}