Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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_Rounding_Pulp - Fatal编程技术网

如何使用Python将主题约束为四舍五入整数

如何使用Python将主题约束为四舍五入整数,python,rounding,pulp,Python,Rounding,Pulp,我用纸浆来解决一个线性优化问题。我想把题目四舍五入到100。我该怎么做呢 我看到了这个问题的答案,但我不知道在这个例子中如何定义一个整数变量I。 谢谢你 考虑由目标函数和变量约束组成的简单ILP: min x1 + x2 s.t. x1 + x2 >= 50 x1 >= 0 x2 >= 0 要强制执行您的条件,您可以添加两个变量y和z以及两个约束: y>=x1+x2 y==100*j对于某些j>=1 并在miny中更改目标函数 代码: 原始配方 改装的 “四舍五入到100

我用纸浆来解决一个线性优化问题。我想把题目四舍五入到100。我该怎么做呢

我看到了这个问题的答案,但我不知道在这个例子中如何定义一个整数变量I。


谢谢你

考虑由目标函数和变量约束组成的简单ILP:

min x1 + x2
s.t.
x1 + x2 >= 50
x1 >= 0 
x2 >= 0
要强制执行您的条件,您可以添加两个变量
y
z
以及两个约束:

  • y>=x1+x2
  • y==100*j
    对于某些
    j>=1
  • 并在
    miny
    中更改目标函数

    代码:

    原始配方 改装的
    “四舍五入到100”是什么意思?你能提供一个例子吗?就像我希望结果是100倍,如果它返回90,我希望是100倍。你能分享代码片段并分享它导致错误的地方吗?非常感谢。你也可以看看这个:应用每个LP变量都应该是100的倍数这一条件的方法是什么?我试图解决一个供应链问题,其中每个零件的数量(即LP变量)应为100的倍数。好心帮忙
    x1 = pulp.LpVariable('x1',lowBound=0,cat=pulp.LpContinuous)
    x2 = pulp.LpVariable('x2',lowBound=0,cat=pulp.LpContinuous)
    
    prob1 = pulp.LpProblem('example1',pulp.LpMinimize)
    # obj
    prob1+= 5*x1 + 10*x2
    # constraints
    prob1+= x1 + x2 >= 50
    
    prob1.solve() 
    print(pulp.value(prob1.objective)) #250
    
    y = pulp.LpVariable('y',lowBound=0, cat=pulp.LpContinuous)
    z = pulp.LpVariable('z',lowBound=1, cat=pulp.LpInteger)
    
    prob2 = pulp.LpProblem('example2',pulp.LpMinimize)
    # obj
    prob2+= y
    # constraints
    prob2+= y >= 5*x1 + 10*x2
    prob2+= y == 100 * z
    prob2+= x1 + x2 >= 50
    
    prob2.solve()
    print(pulp.value(prob2.objective)) #300