如何获取Pulp运输问题中各路线的目标函数分项值?
解决方法
要获取每条路线对应的目标函数分项值(运输量×单位运输成本),你可以通过Pulp目标函数的get()方法获取变量对应的单位成本系数,再和运输量相乘即可。修改后的代码如下:
for x in prob.variables(): if x.varValue > 0: # 获取该路线的单位运输成本(目标函数中对应变量的系数) unit_cost = prob.objective.get(x) # 计算该路线的总成本贡献 route_total_cost = x.varValue * unit_cost print(f"{x.name} = {x.varValue}, 该路线总成本:{route_total_cost}")
为什么之前的方法无效?
你之前尝试调用prob.objective()是错误的——prob.objective是一个LpAffineExpression类型的目标表达式,直接调用它并不会返回单个变量的系数。正确的做法是用get()方法传入变量,获取该变量在目标函数中的对应系数(也就是这条路线的单位运输成本)。
内容的提问来源于stack exchange,提问作者fancymove
相关产品推荐
相关产品推荐

