问题描述
我遇到了以下代码:
from pulp import *
import numpy as np
prob = LpProblem("lp_prob",LpMinimize)
decision_variables = LpVariable.dicts('x',range(5))
prob += np.sum(decision_variables.values())
TypeError: Can only add LpConstraintvar,LpConstraint,LpAffineExpression or True objects
不能将numpy数组添加到LpProblem
中。现在我正在猜测给定的代码是否不正确?还有其他任何方式/版本(python和/或numpy和/或纸浆)可以在numpy对象中添加LpProblem
吗?
解决方法
-
decision_variables
不是一个numpy数组。这是一本字典,这就是为什么您可以decision_variables.values()
来做。 -
decision_variables.values()
也不是一个numpy数组,它是一个dictvalues
对象。 -
np.sum
的结果不是一个numpy数组。 应用于numpy数组时,它应返回标量值。但是对于dictvalues
对象,它什么也不做(至少没有总和)。 -
我不确定您为什么在这里完全需要使用
np.sum
。
在纸浆中,一组纸浆变量(列表,dictvalue,dictkey等)的总和通过lpSum
函数(https://www.coin-or.org/PuLP/pulp.html#pulp.lpSum)完成。
prob += lpSum(decision_variables.values())