Python PULP 如何获取相同的值块
Python PULP How To Get Block of Values Same
我正在尝试在 PULP 中找到一种编码方式,使得末尾 IF 语句指定的块中的所有值(即如果 j >= 7 和 j <= 21)都相同。
我不确定从哪里开始,因为我更熟悉 Xpress Mosel 编码而不是 PULP 语言。
model += pulp.lpSum([YALL[(i,j)] for i in range(YPER) for j in range(HE) if j >= 23]) == pulp.lpSum([YALL[(i,j)] for i in range(YPER) for j in range(HE) if j <= 24])
上面的代码是一种非常基本的方法,我必须将 23 和 24 的周期设置为彼此相等。我试图让它可以指定开始时间段(即 7)和结束时间段(即 22),并使这些时间段之间的所有值彼此相等。到目前为止,我的代码在下面,但没有满足我的需要。
model += pulp.lpSum([YALL[(i,j)] for i in range(YPER) for j in range(HE) if j >= 7]) == pulp.lpSum([YALL[(i,j)] for i in range(YPER) for j in range(HE) if j <= 21])
我认为您只需要为 j
in 7, ..., 20:
添加约束条件 YALL[(i,j)] == YALL[(i,j+1)]
for i in range(YPER):
for j in range(7, 21):
model += YALL[(i,j)] == YALL[(i,j+1)]
我的 PuLP 语法可能有点错误,但希望你明白了。
我正在尝试在 PULP 中找到一种编码方式,使得末尾 IF 语句指定的块中的所有值(即如果 j >= 7 和 j <= 21)都相同。
我不确定从哪里开始,因为我更熟悉 Xpress Mosel 编码而不是 PULP 语言。
model += pulp.lpSum([YALL[(i,j)] for i in range(YPER) for j in range(HE) if j >= 23]) == pulp.lpSum([YALL[(i,j)] for i in range(YPER) for j in range(HE) if j <= 24])
上面的代码是一种非常基本的方法,我必须将 23 和 24 的周期设置为彼此相等。我试图让它可以指定开始时间段(即 7)和结束时间段(即 22),并使这些时间段之间的所有值彼此相等。到目前为止,我的代码在下面,但没有满足我的需要。
model += pulp.lpSum([YALL[(i,j)] for i in range(YPER) for j in range(HE) if j >= 7]) == pulp.lpSum([YALL[(i,j)] for i in range(YPER) for j in range(HE) if j <= 21])
我认为您只需要为 j
in 7, ..., 20:
YALL[(i,j)] == YALL[(i,j+1)]
for i in range(YPER):
for j in range(7, 21):
model += YALL[(i,j)] == YALL[(i,j+1)]
我的 PuLP 语法可能有点错误,但希望你明白了。