繁体   English   中英

我们如何求解具有范围条件约束的纸浆 python 的线性方程

[英]how can we solve the linear equation with pulp python with range conditonal constraint

我的目标 function 具有预定的目标值,但想知道该目标 function 的决策变量的值。

from pulp import LpMaximize, LpProblem, LpStatus, lpSum, LpVariable, LpConstraint

constraints =['0 <= X1<= 150',
'0 <= X2= 1453',
'0 <= X3<= 12',
'0 <= X4<= 149',
,'X1+X2 <= 14'
,'X3+X4 <=1'
,'X1+ X3 <= 6'
,'X2 +X4 <= 9']

for i in range(4):
  t = f'X{i+1} = LpVariable('X{i+1}' , cat= \'Integer\')'
  exec(t)

model = LpProblem(name = "test" , sense = LpMaximize )

for i in range(0, len(constraints)):
    model += (eval(constraints[i]), 'constraint'+str(i))

#objective function
model += lpsum([eval('X1+X2+X3+X4')]

status = model.solve()
for var in model.varibles():
   print(f"{var.name}: {var.value()}")

预期的 output: X1=6,X2=8,X3=0,X4=1 但得到 output X1= -6,X2=20,X3=12,X4= -11,即使我已经为决策添加了范围约束多变的。

谁能帮我解决这个问题,我怎样才能得到预期的 output 变量值不应该是负数。

有几件事...

首先,您在上面粘贴的代码没有执行,它有一些需要修复的拼写错误,所以我不确定您是如何从中获得解决方案的。

其次,不清楚为什么要使用非标准的字符串和exec()方法。 你为什么不直接编码约束而不是尝试处理字符串?

据我所知, pulp不能处理两侧的不平等。 将每个约束分解为单个不等式,然后重试。 如果卡住,请回复评论::)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM