我的问题是关于
如何在cplex java中将yijl = max(xijk + xilk-1)写为线性约束? yijl,xilk和xijk是二进制变量
答案 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