设为首页添加收藏

您好! 欢迎来到广东某某建材科技有限公司

微博
扫码关注官方微博
微信
扫码关注官方微信
电话:400-123-4567

您的位置: 主页 > 杏鑫资讯 > 行业动态
行业动态

scipy.optimize优化器的各种使用

发布日期:2024-05-06 来源: 网络 阅读量(

目录

0.scipy.optimize.minimize

1.无约束最小化多元标量函数

1.1Nelder-Mead(单纯形法)

 1.2拟牛顿法:BFGS算法

1.3牛顿 - 共轭梯度法:Newton-CG

2 约束最小化多元标量函数

2.1SLSQP(Sequential Least SQuares Programming optimization algorithm)

 2.2最小二乘最小化Least-squares minimization

3.单变量函数最小化器

4.有界最小化

5.定制自己的最小化器

6.找根

1)f(x)=0的根

2)两个等式的根 

3)寻找大问题的根源


scipy api:https://docs.scipy.org/doc/scipy-0.18.1/reference/index.html

优化器optimize的参数设置:https://docs.scipy.org/doc/scipy-0.18.1/reference/optimize.html#module-scipy.optimize 

优化器optimize的使用:https://docs.scipy.org/doc/scipy-0.18.1/reference/tutorial/optimize.html#constrained-minimization-of-multivariate-scalar-functions-minimize


scipy.optimize.minimize(funx0args=()method=Nonejac=Nonehess=Nonehessp=Nonebounds=Noneconstraints=()tol=Nonecallback=Noneoptions=None)

fun:目标函数,返回单值,

x0:初始迭代点,

method:求解方法

jac:目标函数的雅可比矩阵。可选的。仅适用于CG,BFGS,Newton-CG,L-BFGS-B,TNC,SLSQP,dogleg,trust-ncg。如果jac是布尔值并且为True,则假定fun会返回梯度以及目标函数。如果为False,将以数字方式估计梯度。jac也可以是一个可调用的,返回目标的梯度。在这种情况下,它必须接受与fun相同的参数。

hess:可选的,目标函数的Hessian(二阶导数矩阵)或目标函数的Hessian乘以任意向量p。仅适用于Newton-CG,dogleg,trust-ncg。只需要给出hessp或hess中的一个。如果提供了hess,那么hessp将被忽略。如果没有提供hess和hessp,那么将使用jac上的有限差分来近似Hessian乘积。hessp必须将Hessian时间计算为任意向量。

bounds:序列,可选变量的界限(仅适用于L-BFGS-B,TNC和SLSQP)。(min,max)对x中每个元素的对,定义该参数的边界。

constraints:约束,类型有: ‘eq’ for equality, ‘ineq’ for inequality,如:constraints=cons

\large x^3 - y=0,y - 1\geq 0



callback(xk):每次迭代召唤函数,需要有参数xk.

options : 字典可选,




 

1.无约束最小化多元标量函数

函数Rosenbrock :

\large f\left(\mathbf{x}\right)=\sum_{i=1}^{N-1}100\left(x_{i}-x_{i-1}^{2}\right)^{2}+\left(1-x_{i-1}\right)^{2}.



求解: 



 


拟牛顿法的核心思想是构造目标函数二阶导数矩阵黑塞矩阵的逆的近似矩阵,避免了解线性方程组求逆的大量计算,更加高效。介绍:https://blog.csdn.net/jiang425776024/article/details/87602847

函数Rosenbrock :

\large f\left(\mathbf{x}\right)=\sum_{i=1}^{N-1}100\left(x_{i}-x_{i-1}^{2}\right)^{2}+\left(1-x_{i-1}\right)^{2}.



导数:



求解: 




利用黑塞矩阵和梯度来优化,介绍:https://blog.csdn.net/jiang425776024/article/details/87601854

函数Rosenbrock :

\large f\left(\mathbf{x}\right)=\sum_{i=1}^{N-1}100\left(x_{i}-x_{i-1}^{2}\right)^{2}+\left(1-x_{i-1}\right)^{2}.

构造目标函数的近似二次型(泰勒展开):

\large f\left(\mathbf{x}\right)\approx f\left(\mathbf{x}_{0}\right)+
abla f\left(\mathbf{x}_{0}\right)\cdot\left(\mathbf{x}-\mathbf{x}_{0}\right)+\frac{1}{2}\left(\mathbf{x}-\mathbf{x}_{0}\right)^{T}\mathbf{H}\left(\mathbf{x}_{0}\right)\left(\mathbf{x}-\mathbf{x}_{0}\right).

利用黑塞矩阵H和梯度做迭代

\large \mathbf{x}_{	extrm{opt}}=\mathbf{x}_{0}-\mathbf{H}^{-1}
abla f.

黑塞矩阵:



实现:




 

形如:

例子:



实现:




leastsq(最小化一组方程的平方和):https://blog.csdn.net/jiang425776024/article/details/86801232

è?é?è?°

Least-squares(求解带变量边界的非线性最小二乘问题):

形如:

例:



 

导数:

拟合显示:

















 





 

 

 

 

 

 

平台注册入口