如何使用Python将主题约束为四舍五入整数
我用纸浆来解决一个线性优化问题。我想把题目四舍五入到100。我该怎么做呢 我看到了这个问题的答案,但我不知道在这个例子中如何定义一个整数变量I。如何使用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
谢谢你 考虑由目标函数和变量约束组成的简单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