Python 使用求解器进行优化

Python optimization with a solver

我有一个关于求解器的问题。我已经阅读了很多关于它们的内容,也在 Whosebug 上阅读了很多,但我对操作模式仍有一些疑问。

我想从一个简单的 scipy.optimize.minimize 开始。因此我使用以下代码:

p_min = minimize(fun, p_start, method='BFGS', jac=None, hess=None, tol=None, options={ 'maxiter': 1000})

我使用 BFGS 方法进行了 1000 次迭代。 p_start 是我的起始值。我的函数是一个完整的现金流量计算,我必须在其中找到最低价格,调整后的现值为零。对于这种情况,我需要一个求解器,因为我有一个预测价格,并且始终将我的价格与预测价格进行比较,并使用较高的价格。

我的问题是,如何定义函数?我的整个现金流量计算应该是函数吗?我该如何定义它呢?感谢您的帮助!

函数必须是整个流量计算(除非有常数部分,但这取决于你使用的公式)。该函数必须使用常规 python 函数定义。它只能是一个参数的函数。如果有其他参数,您可以使用选项 args=(param1, param2) 例如:

def cash_flow_calculation(p, param1, param2):
   # compute the cash_flow 
   return cash_flow

p_start = 0
param1, param2 = 4, 5
p_min = minimize(cash_flow_calculation, p_start, method='BFGS', options={ 'maxiter': 1000}, args=(param1, param2))