使用求解器进行 Python 优化

标签 python optimization scipy solver minimize

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

我想从一个简单的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))

关于使用求解器进行 Python 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51352538/

相关文章:

python - 在 Cython 中使用 Fortran NumPy 运算和 NOGIL,什么是相当于 NumPy 乘法的 Fortran 库?

python - 将文件读入二维列表

python - Gamma CDF 和逆 CDF 不产生互补值

optimization - Levenberg-Marquardt 算法的局限性

python - 为什么我在 python 中的 Spearman 相关性中得到 nan

python - 非线性回归中的标准误差

python - Python paramiko执行远程shell脚本并以字符串格式获取输出

python - 为什么使用 `iter` 函数的双参数形式而不是 while 循环?

c++ - 在成员函数中保留对对象本身的引用

variables - 汇编语言中哪个方法执行速度更快 : adding by variables or adding by immediate value? 为什么?