带解算器的Python优化
我有一个关于解算器的问题。我读了很多关于stackoverflow的文章,也读了很多关于stackoverflow的文章,但是我对操作模式还有一些疑问 我想从一个简单的带解算器的Python优化,python,optimization,scipy,solver,minimize,Python,Optimization,Scipy,Solver,Minimize,我有一个关于解算器的问题。我读了很多关于stackoverflow的文章,也读了很多关于stackoverflow的文章,但是我对操作模式还有一些疑问 我想从一个简单的scipy.optimize.minimize开始。因此,我使用以下代码: p_min = minimize(fun, p_start, method='BFGS', jac=None, hess=None, tol=None, options={ 'maxiter': 1000}) 我使用BFGS方法进行1000次迭代。p_s
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))
非常感谢@xdze2!那么
p
可以不定义?是否有必要,我在CF计算的开头写下,p_start=p
?p
不是未定义的。minimize
函数将多次调用cash\u flow\u calculation
函数,当然从cash\u flow\u calculation(p\u start)
开始,然后调用由最小化算法自动确定的p
值。我现在不确定,你所说的“解算器”是什么意思?好吧,是的,这是我的错…我在你的示例中没有看到args
命令。我可以将参数param1
和param2
也用于时间序列数据吗?是的,附加参数也可以是数据,只要它们不是p