如何将math.ceil函数应用于python中的目标函数部分

如何将math.ceil函数应用于python中的目标函数部分,python,linear-programming,pulp,Python,Linear Programming,Pulp,我试图将math.ceil函数应用于python中目标函数的一部分。但是,我越来越 "TypeError: must be real number, not LpAffineExpression" error. 下面是一个例子 models = [A, B, C, D, E] modelCost = {A: 10, B: 15, C: 20, D: 25, E: 30} TotalModelsCost = pulp.lpSum([(model*modelCost[model]) for mod

我试图将
math.ceil
函数应用于python中目标函数的一部分。但是,我越来越

"TypeError: must be real number, not LpAffineExpression" error.
下面是一个例子

models = [A, B, C, D, E]
modelCost = {A: 10, B: 15, C: 20, D: 25, E: 30}
TotalModelsCost = pulp.lpSum([(model*modelCost[model]) for model in models])
OverHeadCost = (math.ceil(pulp.lpSum([model for model in models])/4))*100

prob += TotalModelsCost + OverHeadCost

如何将
ceil
函数应用于
overdecost

创建一个名为
overdecostceil
的新决策变量,它是一个通用整数(非二进制)变量:

OverHeadCostCeil = pulp.LpVariable('OverHeadCostCeil', 0, None, LpInteger)
通过约束要求
oversedcostceil>=oversedcost

prob += OverHeadCostCeil >= OverHeadCost
替换目标函数中的术语:

prob += TotalModelsCost + OverHeadCostCeil

然后解决。请注意,您需要使用能够处理一般整数变量的解算器。

在线性程序中不能使用
ceil
——它是一个非线性函数。有很多方法可以实现这一点,但你是否有必要对目标函数的这一部分进行四舍五入呢?如果你允许分数,你的工作(以及求解者的工作)会更容易。谢谢你的回复。是的,应用
ceil
是必要的。你能告诉我怎么才能做到吗?当然可以。别忘了你也可以投票/接受回答说“谢谢”。)