CPLEX - 在条件下获得最少的一组变量

时间:2013-06-18 08:28:22

标签: cplex

我必须使用CPLEX Java API解决以下问题:

我需要编写一个条件,它将返回一组最小的整数变量(假设x [i],i = 1,2,...,n),但只考虑正数。

换句话说:

min {x [i] | X [I]大于0}

我知道CPLEX具有最小功能,但问题是如何将上述条件传递给它。

2 个答案:

答案 0 :(得分:1)

创建一个连续变量。添加此新变量必须为< =所有整数变量的约束。然后只需最大化连续变量。

答案 1 :(得分:0)

TimChippingtonDerrick的答案是缺少连续变量的非负性约束。而且,该方法不适应OP的原始目标函数。

这种(昂贵的)方法是引入额外的二进制变量,每个整数变量一个并写出大M约束:

x[i] >= y >= x[i] - M(1-z[i])

SUM(i,z[i]) = 1