小白最优化学习(三) 算法学习 一维搜索算法

一、一维搜索算法

1、确定搜索方向d_{k},即按照一定的规则,构造f在x_{k}点处的下降方向作为搜索方向

2、确定步长因子\alpha _{k},是目标函数值有某种意义下的下降

3、令x_{k+1}=x_{k}+\alpha_{k}d_{k}},若x_{k+1}满足某种终止条件则终止迭代,得到近似最优解x_{k+1},否则,重复上述步骤

在上述迭代算法中,当方向确定后,涉及到求一个步长\alpha _{k},使得目标函数值减小(极小值问题),这就是在一直线上求目标函数的极小点,即极小化f\left ( x_{k}+\alpha_{k}d_{k} \right )。则称为alpha对变量的一维搜索问题,或称为线搜索。

二、一个例子

设目标函数为fx,过点x_{k},沿d_{k}的点集可以表示为:\left \{ x|x=x_{k}+\alpha d_{k} \right \},

求fx在直线L上的极小点就转化为求:\varphi \left(\alpha \right )=f\left ( x_{k}+\alpha_{k}d_{k} \right )

\varphi \left(\alpha \right )的极小点为\lambda_{k}为沿方向d_{k}的步长因子,于是fx在直线L上的极小点为x_{k+1}=x_{k}+\alpha_{k}d_{k}}

三、几个一维搜索算法经典例子

进退法

step 1:初始化\alpha_{0},初始化步长 h_{0} >0以及精度 \varepsilon >0,计算 \varphi\left(\alpha_{0} \right ) ,加倍系数 t

step 2:比较目标值函数,令\alpha_{k+1}=\alpha_{k}+h_{k},计算\varphi_{k+1}=\varphi\left(\alpha_{k+1} \right )

step 3:若\varphi_{k+1} <\varphi_{k},搜索成功,反复循环 h_{k+1} : = t h_{k}\alpha: =\alpha_{k}\alpha_{k}: =\alpha_{k+1}\varphi_{k} :=\varphi_{k+1}k:=k+1

step 4:若搜索失败,可以反向搜索,若k=0则转换搜索方向,令h_{k}=-h_{k}\alpha_{k}: =\alpha_{k+1},转向step 2;否则停止。

缺点:效率低

黄金分割法:要求,黄金分割法是单峰函数极值的一种试探法

step 1:初始化区间 [a_{1},b_{1}],精度 \varepsilon> 0 ,t=(\sqrt{5}-1)/2,并且计算两个试探点

             \lambda_{1}=a_{1}+(1-t)(b_{1}-a_{1})

             \mu _{1}=a_{1}+t(b_{1}-a_{1})

step 2:如果\varphi ( \lambda _{1})-\varphi ( \mu _{1})>0;则转step 3 

             否则\varphi ( \lambda _{1})-\varphi ( \mu _{1})<=0;则转 step 4 

step 3:如果b_{k}-\lambda _{k}<=\delta,则停止计算,输出 \mu_{k} ;否则

              a_{k+1}:=\lambda_{k}b_{k+1}:=b_{k}\lambda _{k+1}:=\mu_{k}\varphi (\lambda _{k+1} ):=\varphi(\mu_{k})\mu _{k+1}=a_{k+1}+t(b_{k+1}-a_{k+1})

              计算\varphi (\mu _{k+1} ) , 转step 5

step 4:如果\mu _{k}-a_{k}<=\delta,则停止计算,输出 \lambda _{k} ;否则

              a_{k+1}:= a_{k}b_{k+1}:=\mu_{k}\mu _{k+1}:=\lambda_{k}\varphi (\mu _{k+1} ):=\varphi(\lambda_{k})\mu _{k+1}=a_{k+1}+(1-t)(b_{k+1}-a_{k+1})

              计算\varphi (\lambda _{k+1} ) , 转step 5

step 5:k:=k+1,转step 2

缺点:收敛速度慢

二分法:

基本上 和黄金分割法差不多

牛顿法法:

介绍:如果函数二阶可微,可用牛顿法求解极小值。核心思想就是在当前点构造一个二次函数,通过求解这个二次函数的极小值点,间接求得原始函数的极小值点。构造函数为:q(x)=f(x^{k})+f^{'}(x^{k})(x-x^{k})+1/2f^{''}(x^{k})(x-x^{k})^{2}

求以上式子的极小值:则一阶求导f^{'}(x)=0

解得x=x^{k}-\frac{f^{'}(x^{k}))}{f^{''}(x^{k})}

1、初始化 x1,\varepsilon_{1} , \varepsilon_{2}

2、如果|f^{'}(x_k) | < \varepsilon_{1},则解出x=x^{k}-\frac{f^{'}(x^{k}))}{f^{''}(x^{k})}

3、如果|f^{'}(x_k) | >= \varepsilon_{1},做4

4、如果二次导数小于0,则不能用这种方法,如果可以二次导数,则x=x^{k}-\frac{f^{'}(x^{k}))}{f^{''}(x^{k})},判断|(x_{k+1})-x_{k} | < \varepsilon_{2},是则解出x=x^{k}-\frac{f^{'}(x^{k}))}{f^{''}(x^{k})},否则k=k+1

缺点:必须计算二次导数,对初始点要求较高、局部收敛

优点:收敛速度快

 

重新的复习————————————————————————————————————————————————

在多变量函数最优化问题中,迭代格式为x_{k+1}=x_{k}+\alpha_{k}d_{k}},其关键就在于构造搜索方向d_{k}和步长因子\alpha _{k},设

\varphi (\alpha_{k})=f(x_{k}+\alpha d_{k});这样从x_{k}出发,沿搜索方向d_{k},确定步长因子\alpha _{k},使\varphi (\alpha_{k})<\varphi(0)的问题就是关于\alpha的一维搜索问题。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值