有没有办法在 PuLP 中实现 IRR 算法?
Is there a way to implement the IRR algorithm in PuLP?
Numpy 有一个函数可以让我计算浮点数数组的 IRR。我的问题是我试图在 PuLP 问题中使用它,我想传递给函数的数组由问题的变量组成。这里我
problem = pulp.LpProblem("TIR_MINIMIZE", pulp.LpMaximize)
price_ppa = pulp.LpVariable("price_ppa")
price_production = []
for i in range(10):
price_production.append(price_ppa * annual_production[i])
# anual_production is an array of values calculated outside the function
irr = numpy.irr(price_production)
# CONSTRAINTS #####################################################################################
problem += irr>= 0.075
objective_function = -irr
problem += objective_function
#####################################################################################################
problem.solve()
并且此代码不起作用,因为 numpy.irr 需要一个浮点数数组,而我向它传递了一个 LpAffineExpressions 数组。我的问题是,有没有办法以一种比较简单的方式实现它?我曾尝试手动实现该算法,但我无法在 PuLP 约束定义中实现它。
理论
IRR 计算本质上是非线性的,因此无法在 PuLP 模型中处理。 PuLP 只处理线性模型。
练习
您正在调用 numpy.irr
,但这必须在 LP 求解器为 运行 时调用。那是不允许的。 LP 求解器无法调用外部函数。
Numpy 有一个函数可以让我计算浮点数数组的 IRR。我的问题是我试图在 PuLP 问题中使用它,我想传递给函数的数组由问题的变量组成。这里我
problem = pulp.LpProblem("TIR_MINIMIZE", pulp.LpMaximize)
price_ppa = pulp.LpVariable("price_ppa")
price_production = []
for i in range(10):
price_production.append(price_ppa * annual_production[i])
# anual_production is an array of values calculated outside the function
irr = numpy.irr(price_production)
# CONSTRAINTS #####################################################################################
problem += irr>= 0.075
objective_function = -irr
problem += objective_function
#####################################################################################################
problem.solve()
并且此代码不起作用,因为 numpy.irr 需要一个浮点数数组,而我向它传递了一个 LpAffineExpressions 数组。我的问题是,有没有办法以一种比较简单的方式实现它?我曾尝试手动实现该算法,但我无法在 PuLP 约束定义中实现它。
理论
IRR 计算本质上是非线性的,因此无法在 PuLP 模型中处理。 PuLP 只处理线性模型。
练习
您正在调用 numpy.irr
,但这必须在 LP 求解器为 运行 时调用。那是不允许的。 LP 求解器无法调用外部函数。