最优化算法4.0【信赖域方法】

摘要:
思路:线搜索最优化算法,一般是先确定迭代方向(下降方向),然后确定迭代步长;信赖域方法直接求得迭代位移;算法分析第(k)次迭代,确定迭代位移的问题为(信赖域子问题):[minq_k(d)=g_k^Td+frac{1}{2}d^TB_kd_k][s.t.quad||d||leqDelta_k]其中(Delta_k)为信赖域半径对于求得的迭代位移,实际下降量:[Deltaf_k=f(x_k)-f(x_

思路:线搜索最优化算法,一般是先确定迭代方向(下降方向),然后确定迭代步长;
信赖域方法直接求得迭代位移;

算法分析

(k)次迭代,确定迭代位移的问题为(信赖域子问题):

[min q_k(d)=g_k^Td+frac{1}{2}d^TB_kd_k ]
[s.t.quad ||d||leq Delta_k ]

其中(Delta_k)为信赖域半径

对于求得的迭代位移,实际下降量:

[Delta f_k=f(x_k)-f(x_k+d_k) ]

估计下降量:

[Delta q_k=q_k(0)-q_k(d_k) ]

定义:

[r_k=frac{Delta f_k}{Delta q_k} ]

一般情况,(Delta q_k>0),因此,当(r_k)小于0时,表示求得的(x_{k+1})不是下降方向;需要缩小信赖域重新求解;当(r_k)趋近于1时,表明对于函数的二次近似具有较高的精度,可以扩大信赖域;

算法

(输入:0<eta_1<eta_2<1,0< au_1<1< au_2,初始点x,初始hesse阵近似阵:B_0,容许误差:epsilon;信赖域半径上限: ilde{Delta},初始信赖域半径:Delta_0in(0, ilde{Delta}])

maxite=100; 最大迭代次数
g=gfun(x);
k=0;
while k < maxite and g > (epsilon)
(qquad) solve the child question of optizimation,get (x_{k+1});
(qquad)get (r_k);
(qquad)if (r_k <eta_1)
(qquad)(qquad)(Delta_{k+1})=( au_1Delta_k);
(qquad) elif (eta_1<r_k<eta_2)
(qquad)(qquad)(Delta_{k+1}=Delta_{k};)
(qquad) else
(qquad)(qquad)(Delta_{k+1}= au_2Delta_k;)
(qquad) endif
(qquad) if (r_k<eta_1)
(qquad)(qquad)(x_{k+1}=x;)
(qquad)(qquad)(B_{k+1}=B_k;)
(qquad) else
(qquad)(qquad)(refresh B_k, get B_{k+1};)
(qquad) endif
(qquad)(k=k+1;)
(qquad)(g=gfun(x_{k+1});)
endwhile

(输出:最优解x)

免责声明:文章转载自《最优化算法4.0【信赖域方法】》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇windows系统中Emacs的HOME目录及配置文件的正确路径从未如此简单:10分钟带你逆袭Kafka!【转】下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

shellcode xor编码/解码[1]

shellcode的初级变形的一点点总结,大部分搜集、翻译,少量原创 0x01 病毒上重定位问题0x02 shellcode解码0x03 一个unix例子0x04 源码解读0x05 参考 shellcode xor编码/解码器是一种较为初级的shellcode变形的方法,当然它从中采用的方法跟病毒上的方法有些类似 0x01 病毒上重定位问题病毒上的解决重定...

DateTime与long互转

DateTime转long: public static long GetDateLong(object time) { DateTime epoc = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); Tim...

python assert使用说明

self.assertEqual(a,b,msg=msg)   #判断a与1.b是否一致,msg类似备注,可以为空 self.assertNotEqual(a,b,msg=msg)  #判断a与b是否不一致 self.assertTrue(a,msg=none)    #判断a是否为True self.assertFalse(b,msg=none)   #...

用python输出未来时间,递增

输入当前时间,之前与之后的365天时间日期 按格式化输出 #!/usr/bin/evn python # -*- coding: UTF-8 -*- # import time import datetime # # 输出的是时间戳 # print time.time() # # # 格式化时间戳为标准格式 # print time.strftim...

Latex常用符号

Todo: 添加数学符号名称和用途 优化界面 希腊字母: 字母名称 小写 latex 大写 latex alpha $alpha$ alpha A A beta $eta$ eta B B gamma $gamma$ gamma $Gamma$ Gamma delta $delta$ delta $Delta$ Delta ep...

蓝牙解析数据及文档解析说明

1.建议用RealTerm从串口抓数据,下载地址:http://realterm.sourceforge.net/index.html#downloads_Download2.打开RealTerm,指定显示方式:在Displa标签页,选择Hex+space。 下图中红圈标记的地方: 3.指定波特率,端口,点击Open按钮。如果连接成功,你应该会看到类似下图...