在PuLP MIP中定义多个逻辑或约束

时间:2018-08-28 02:07:59

标签: python linear-programming pulp mixed-integer-programming

说,我有一组像这样的二进制变量:

ht = {}
for t in range(100):
    ht[t] = pulp.LpVariable('ht[%i]' % t, lowBound=0, upBound=1, cat='Integer')

我想确保ht [t]之间存在间隙,例如:

ht[t] + ht[t + 1] + ht[t + 2] + ht[t + 3] + ht[t + 4] + ht[t + 5] <= 1
OR
ht[t - 1] + ht[t] + ht[t + 1] + ht[t + 2] + ht[t + 3] + ht[t + 4] <= 1
OR
ht[t - 2] + ht[t - 1] + ht[t] + ht[t + 1] + ht[t + 2] + ht[t + 3] <= 1
OR
ht[t - 3] + ht[t - 2] + ht[t - 1] + ht[t] + ht[t + 1] + ht[t + 2] <= 1
OR
ht[t - 4] + ht[t - 3] + ht[t - 2] + ht[t - 1] + ht[t] + ht[t + 1] <= 1
OR
ht[t - 5] + ht[t - 4] + ht[t - 3] + ht[t - 2] + ht[t - 1] + ht[t] <= 1

根据“ t”的位置,左侧和/或右侧的相邻邻居必须为0。

是否可以在PuLP中编写此约束?

1 个答案:

答案 0 :(得分:1)

对不起,这不是那么容易或便宜:我们需要额外的二进制变量:

5 * δ[t,k]

约束中的术语δ[t,k]=0 => k-th constraint is active δ[t,k]=1 => k-th constraint is relaxed 是:

δ[t,k]

我们至少需要一个活动约束,因此我们不允许所有C:\Users\Antonio\Documents\test> dir El volumen de la unidad C no tiene etiqueta. El número de serie del volumen es: 0895-160E Directorio de C:\Users\Antonio\Documents\test 27/08/2018 09:38 p. m. <DIR> . 27/08/2018 09:38 p. m. <DIR> .. 27/08/2018 09:35 p. m. 20 (Address) Flashing.pdf 27/08/2018 09:35 p. m. 20 (Address) Roof.pdf 27/08/2018 09:35 p. m. 20 (Address) Summary.pdf 27/08/2018 09:35 p. m. 20 (Address) Top FG.pdf 27/08/2018 09:45 p. m. 274 test.bat 5 archivos 354 bytes 2 dirs 393,053,315,072 bytes libres 为1。