Python 纸浆:目标函数:连接多个lpSum

Python 纸浆:目标函数:连接多个lpSum,python,pulp,Python,Pulp,我试图将几个lpSum表达式连接到一个长表达式中,这将是我的目标函数。然而,我试图以一种优雅的方式合并这些表达式,却导致了不期望的结果 我想要这样的东西: a=pulp.lpSum(…) b=纸浆.lpSum(…) c=纸浆.lpSum(…) 概率+=a+b-c 我的代码更加具体: alloc_prob=纸浆.LpProblem(“供应商分配问题”,纸浆.LpProblem) TPC_func=纸浆.lpSum(X[s][p]*生产成本[s][p]对于供应商中的s,对于供应商中的p “采购总

我试图将几个
lpSum
表达式连接到一个长表达式中,这将是我的目标函数。然而,我试图以一种优雅的方式合并这些表达式,却导致了不期望的结果

我想要这样的东西:

a=pulp.lpSum(…)
b=纸浆.lpSum(…)
c=纸浆.lpSum(…)
概率+=a+b-c
我的代码更加具体:


alloc_prob=纸浆.LpProblem(“供应商分配问题”,纸浆.LpProblem)
TPC_func=纸浆.lpSum(X[s][p]*生产成本[s][p]对于供应商中的s,对于供应商中的p
“采购总成本”
TTC_func=pill.lpSum(X[s][p]*将供应商中的s转换为供应商中的p
项目),总运输成本(包括税费)
TD_func=纸浆.lpSum(X_SEP[c][1]*折扣系数['Bonus/ton[€/t]”][c]
c)公司的“总折扣”`
#目标函数:TPC+TTC-TD->min
alloc_prob+=TPC_func+TTC_func-TD_func
我已经尝试过不同的嵌套方法,例如:

prob+=[pulp.lpSum(X[s][p]*procCosts[s][p]+X[s][p]*s的转码[s][p]
项目中p的供应商)-纸浆.lpSum(X_SEP[c][1]*折扣因子['Bonus]
/吨[欧元/吨][c]对于公司中的c]
输出执行它应该执行的操作。然而,这既不是一个好代码,也不能分配给目标函数。有没有明智的实施方法


谢谢

在没有看到错误的情况下,我可以100%确定,但我认为您在lpsum中包含的名称是导致问题的原因,请尝试以下操作

alloc_prob = pulp.LpProblem("Supplier Allocation Problem", pulp.LpMinimize)

TPC_func = pulp.lpSum(X[s][p]*procCosts[s][p] for s in supplier for p in 
project)
TTC_func = pulp.lpSum(X[s][p]*transCosts[s][p] for s in supplier for p in 
project)
TD_func = pulp.lpSum(X_SEP[c][1]*discountFactor['Bonus / ton [€/t]'][c] for 
c in company)

# Objective function: TPC + TTC - TD -> min
alloc_prob += TPC_func  + TTC_func - TD_func

欢迎来到SO!您的原始代码(使用单独的总和)会出现什么错误。您是否能够提供一个最小的工作示例(输入数据最少的完整代码,以便我可以尝试运行)。来自的解决方案运行良好,解决了问题:)完美,非常感谢!我没有想到删除这些名字——你知道为什么命名会引起问题吗?