Python 如何在纸浆中使用变量作为除数
我试图用变量a除以变量B来计算约束条件来解决LP问题 问题的简单版本如下所示:Python 如何在纸浆中使用变量作为除数,python,pulp,Python,Pulp,我试图用变量a除以变量B来计算约束条件来解决LP问题 问题的简单版本如下所示: 该产品由两种材料(A和B)制成 %A值应大于50% %B值应小于40% A和B的总金额为100 目标:A的最低用量是多少 代码如下: from pulp import * prob = LpProblem('Simple problem', LpMinimize) x = LpVariable('x', 0, None, 'Integer') y = LpVariable('y', 0, None, 'In
from pulp import *
prob = LpProblem('Simple problem', LpMinimize)
x = LpVariable('x', 0, None, 'Integer')
y = LpVariable('y', 0, None, 'Integer')
prob += x
prob += x / (x + y) > 0.5 # <== Where the error happens
prob += y / (x + y) < 0.4
prob += x + y == 100
prob.solve()
print 'Result: %s' % LpStatus[prob.status]
print 'Amount of A: %s' % value(prob.objective)
来自纸浆进口*
prob=LpProblem(“简单问题”,LpProblem)
x=LpVariable('x',0,无,'Integer')
y=LpVariable('y',0,无,'Integer')
prob+=x
prob+=x/(x+y)>0.5#线性规划不理解除法,因此错误:)
你必须重新计算它,使除法是线性的。
在这种情况下:
prob += x / (x + y) > 0.5
prob += y / (x + y) < 0.4
prob+=x/(x+y)>0.5
prob+=y/(x+y)<0.4
相当于:
prob += x > 0.5 * (x + y)
prob += y < 0.4 * (x + y)
prob+=x>0.5*(x+y)
prob+=y<0.4*(x+y)
这些都是线性约束。
祝你好运 我觉得在我的解决方案中不应该允许零-并且我包含了一个变量,它是x
和y
的总和(你认为它是a
)
来自纸浆导入问题,LpStatus,LpVariable
从纸浆进口LpMinimize、LpMinimize、lpSum、value
#我觉得下限不应该是零。。。
x=LpVariable(“x”,下限=1,cat=“Integer”)
y=LpVariable(“y”,下限=1,cat=“整数”)
z=LpVariable(“z”,下限=1,cat=“Integer”)
模型=LpProblem(“除数问题”,LpMinimize)
模型+=x
模型+=z==x+y
型号+=z==100
#我们可以使用乘法而不是除法
型号+=x>=z*0.5
型号+=y感谢您的解决方案。它起作用了。如果目标是分裂呢?有什么办法可以解决吗?优化非线性目标更具挑战性。如果可以的话,尽量避免或解决它!如果无法避免,请查看Charles Cooper的方法()