我必须使用CPLEX Java API解决以下问题:
我需要编写一个条件,它将返回一组最小的整数变量(假设x [i],i = 1,2,...,n),但只考虑正数。
换句话说:
min {x [i] | X [I]大于0}
我知道CPLEX具有最小功能,但问题是如何将上述条件传递给它。
答案 0 :(得分:1)
创建一个连续变量。添加此新变量必须为< =所有整数变量的约束。然后只需最大化连续变量。
答案 1 :(得分:0)
TimChippingtonDerrick的答案是缺少连续变量的非负性约束。而且,该方法不适应OP的原始目标函数。
这种(昂贵的)方法是引入额外的二进制变量,每个整数变量一个并写出大M约束:
x[i] >= y >= x[i] - M(1-z[i])
SUM(i,z[i]) = 1