Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在纸浆中使用变量作为除数_Python_Pulp - Fatal编程技术网

Python 如何在纸浆中使用变量作为除数

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

我试图用变量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, '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的方法()