版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
最速下降法基本原理分析综述(一)无约束问题的最优性条件本文给出了一些关于求解非限制问题的最佳解决方案的基本前提和充分条件。定理1设f:Rn→R1在点X∈Rn处可微,如果有P∈Rn定理2设f:Rn→R1在点X∗∈Rn上可微,如果X∗是非约束问题的局部最优解,那么X∗就是函数上述定理指出,当我们得到了一个局部最优解时,且得到的梯度为0,那么就说明此时是该点的局部最优解的必要条件。定理3设f:Rn→R1在点X∗∈Rn上的Hesse矩阵∇2f(定理4设f:Rn→R1,X∗∈Rn,f是则X∗(二)最速下降法的基本思想和迭代步骤最速下降法是1847年著名数学家柯西提出的,它是最早的一种分析方法。其它的分析方法不是由其变化就是由其所启发,因此这是最优化方法的基础。这是一种最基本的算法,是实现最优解的关键。该方法具有工作量小、存储小、对起始点要求不高等特点;但其不足之处在于,其收敛速度较慢、效率较低,且往往无法达到最优解。非线性规划问题的主要目标是求解非线性函数的最优解。其理论与方法在军事、经济、管理等领域有着广阔的应用前景。在多维无约束的条件下,最优的解法应该是最速下降法。最速下降法是只需要考察目前的下降速度,而无法得到全部体现,所以它又可以叫瞎子爬山法。最速下降迭代法这是一个用于解决非线性规划问题的迭代法,其核心问题是如何求算出每个迭代的方向pk和步长t(1)搜索方向pk方向pk为单位量,pk=1,从X(k)按方向pkf可以得到在X(k)lim如果要使X(k+1)处的目标函数值比X(k∇θ为两向量之间的夹角。为了使单位时间内下降速度最快,即cosθ应取得最小值,即cosθ=−1,即pk从上述我们可以确定最速下降法的搜索方向为pk(2)求解搜索步长t。最速下降法采取的搜索步长的方法有两种:a.最优步长搜索法即:f通过求最小值求得步长。b.近似最佳步长法f对上述式子求导并等于0,可以得到步长t=∇(3)算法步骤(a).选取初始点X0,设置终止误差ϵ(b).计算∇fX(k)(c).计算搜索方向pk(d).通过对步长t的计算,可以得到X(k+1)最速下降法能够有效的解决一些无约束最优化问题。理论证明[10],最速下降法在特定的条件之下是能够收敛的。(三)最速下降法例题求证例1minf(x)=x1−解:由题可知∇fx令搜索方向p(1)=−∇令步长为t,最优步长为t1,则X于是有f令φ1't=2t−2=0可得继续迭代得到:∇fX则有:X故f令φ2't∇fX综上知,最优解为X∗=−11.5(四)Python实现最速下降法例2fx1,Python代码如下:importmath
fromsympyimport*
#定义符号变量
x_1=symbols('x_1')
x_2=symbols('x_2')
#定义目标函数
fun=2*x_1*x_2+2*x_2-x_1**2-2*x_2**2
fun
#求导数
grad_1=diff(fun,x_1)
grad_2=diff(fun,x_2)
#定义参数
MaxIter=100
epsilon=0.0001
#定义初始点
x_1_value=0.5
x_2_value=0.5
iter_cnt=0
current_step_size=10000
grad_1_value=(float)(grad_1.subs({x_1:x_1_value,x_2:x_2_value}).evalf())
grad_2_value=(float)(grad_2.subs({x_1:x_1_value,x_2:x_2_value}).evalf())
current_obj=fun.subs({x_1:x_1_value,x_2:x_2_value}).evalf()
print(
'itCnt:%2dcur_point(%3.2f,%3.2f)cur_Obj:%5.4fgrad_1:%5.4fgrad_2:%5.4fstep_size:%5.4f'%(
iter_cnt,x_1_value,x_2_value,current_obj,grad_1_value,grad_2_value,current_step_size))
#while(iter_cnt<=MaxIterandabs(grad_1_value)+abs(grad_2_value)>=epsilon):
while(abs(grad_1_value)+abs(grad_2_value)>=epsilon):
iter_cnt+=1
#findthestepsize
t=symbols('t')
x_1_updated=x_1_value+grad_1_value*t
x_2_updated=x_2_value+grad_2_value*t
Fun_updated=fun.subs({x_1:x_1_updated,x_2:x_2_updated})
grad_t=diff(Fun_updated,t)
t_value=solve(grad_t,t)[0]#解决grad_t==0
#更新x_1_valueandx_2_value
grad_1_value=(float)(grad_1.subs({x_1:x_1_value,x_2:x_2_value}).evalf())
grad_2_value=(float)(grad_2.subs({x_1:x_1_value,x_2:x_2_value}).evalf())
x_1_value=(float)(x_1_value+t_value*grad_1_value)
x_2_value=(float)(x_2_value+t_value*grad_2_value)
current_obj=fun.subs({x_1:x_1_value,x_2:x_2_value}).evalf()
current_step_size=t_value
print('itCnt:%2dcur_point(%3.2f,%3.2f)cur_Obj:%5.4fgrad_1:%5.4fgrad_2:%5.4fstep_size:%5.4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 空调设计入门培训
- 带状疱疹患者的出院指导与随访
- 安全教育培训讲义
- 灭火器配置培训
- 灭火器实操培训
- 碳素热场材料项目环评报告
- 2026岚图汽车品牌传播中心招聘备考题库及参考答案详解1套
- 2026年房地产经纪人综合能力测评试题及答案
- 员工抗压能力测试题及答案
- 2026安徽芜湖无为市人才发展有限责任公司公司代无为乡投文化旅游开发有限公司招聘6人备考题库及完整答案详解1套
- 2021-2025年河南省中考英语试题分类汇编:短文选词填空(学生版)
- 2025年江苏医药行业分析报告及未来发展趋势预测
- 肿瘤内科知识培训内容课件
- 电化学储能电站火灾成因多维度分析及消防安全体系现状与对策研究
- 物业安全部工作年终总结
- 起重吊装应急演练
- IPC7711C7721C-2017(CN)电子组件的返工修改和维修(完整版)
- 煤矿建设安全规范
- 内架搭设合同范本
- 化工钳工基本知识培训课件
- 意识障碍的诊断及治疗
评论
0/150
提交评论