【发布时间】:2019-02-12 04:07:41
【问题描述】:
我有这个等式
-0.19430381*clo + 0.02507341*vam + 0.13574366*sla + 0.01667444*so = 10
我需要找到 clo、vam、sla 的最小值,这样才能解出这个方程。我已经使用 PuLP 来查找值。
# declare your variables
clo = LpVariable("clo", 65, 80)
vam = LpVariable("vam", 63, 90)
sla = LpVariable("sla", 70, 80)
so = LpVariable("so", 75, 85)
# defines the problem
prob = LpProblem("problem", LpMinimize)
目标函数和约束写成
# defines the objective function to minimize
prob += -0.19430381*clo + 0.02507341*vam + 0.13574366*sla + 0.01667444*so-10
#define Constraints
prob+= clo>=65
prob+= clo<=80
prob+= vam>=63
prob+= vam<=90
prob+= sla>=71
prob+= sla<=80
prob+= so>=75
prob+= so<=85
当我使用默认求解器求解时,它为 clo 取上限值 80,而为所有其他变量取下限值。目标函数值为负。
print (pulp.value(prob.objective))
-13.21204077
我希望这个目标函数的值为0。在这种情况下,我需要找到所有参数的值。参数的值也可以是浮点数。
【问题讨论】:
-
根据您的需要添加对目标项的约束,使其为非负数或零。
标签: python optimization pulp