Numpy には、float の配列の 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 が float の配列を想定しているのに対し、LpAffineExpressions の配列を渡しているためです。私の質問は、これをやや簡単な方法で実装する方法はありますか? アルゴリズムを手動で実装しようとしましたが、PuLP 制約定義内では実行できません。