可以将yijl = max(xijk + xilk-1)(k介于0和n之间)写成线性约束吗?

时间:2018-03-19 04:53:41

标签: java max cplex

我的问题是关于

如何在cplex java中将yijl = max(xijk + xilk-1)写为线性约束? yijl,xilk和xijk是二进制变量

1 个答案:

答案 0 :(得分:0)

假设您的max超过k,则需要添加n个附加约束: yijl >= xijk+xilk-1 for every k y_ijl >= xij0+xil0-1 y_ijl >= xij1+xil1-1 ... y_ijl >= xijn+xiln-1

<强>更新

要求为xijk=xilk=1 for every k then yijl=1 and 0 otherwise

假设最小化问题,在两个变量的情况下:如果x1和x2都是1则y为1,否则为0;它可以按如下方式处理:

2*y >= x1 + x2 - 1 y, x1, x2, are {0,1}

如果x1 = x2 = 1则y被限制为1。

现在,当我们有2(n + 1)个变量时:

2*(n+1)*y_ijl >= sum_k (x_ijk+x_ilk) - 2*(n+1)-1