西电最优化上机报告(大作业)

更新时间:2023-12-05 07:17:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

上机报告

一.最速下降法

算法简述:

1.在本例中,先将最速下降方向变量赋一个值,使其二范数满足大于ε的迭代条件,进入循环。

2.将函数的一阶导数化简,存在一个矩阵,将其hesse矩阵存在另一个矩阵。依照公式求出α,进而求出下一任迭代的矩阵初值。循环内设置一个计数功能的变量,统计迭代次数。

3.求其方向导数的二范数,进行判别,若小于ε,则跳出循环,否则将继续迭代。

4.显示最优解,终止条件,最小函数值。

心得体会:

最速下降法的精髓,无疑是求梯度,然后利用梯度和hesse矩阵综合计算,求解下一个当前最优解。但是,要求函数是严格的凸函数,结合严格凸函数的大致图像,这就给初值的选取提供了一点参考。例如在本例中,由于含有两个变量的二次方之和,结合大致图像,想当然的,初值的选取应当在原点附近;又因为变量的二次方之和后面,还减去了变量的一次形式和一次混合积,所以初值的选取应该再向第一象限倾斜。

综合以上考量,第一次选取(1,1)作为初值,判别精度方面,取到千分位,暂定为0.001。运行以后,结果显示迭代了25次,最优解为(3.9995,1.9996),终止条件为5.4592e-04,目标函数为-8.0000。这个结果已经相当接近笔算结果。整体的运行也比较流畅,运算速度也比较快。

第二次取值,决定保留判别精度不变,将初值再适当向第一象限倾斜,取(2,2)作为初值,运行后,显示只迭代了11次!最优结果显示(3.9996,1.9997),终止条件为3.6204e-04,最优解 -8.0000。可见,最优结果更接近理想值,终止条件也变小了,最关键的是,迭代次数减少至第一次的一半以下!这说明以上初选取的方向是对的!

第三次再进行初值细化,判别精度仍然不变,初值取(3,3)。结果令人兴奋,只迭代了四次!最优解已经显示为(4.0000,2.0000),终止条件为2.4952e-04,目标函数-8.0000。

第四次,判别精度不变,取初值(4,4)。这回显示迭代了6次,最优解和目标函数没什么变化,终止条件变大了,变为5.0889e-04。可见,取(3,3)作为初值,比取(4,4)作初值要更优秀。

接下来对判别精度进行调整,适当缩小,以减少迭代次数从而减少运算量。取初值为(3,3),判别精度为0.01,。结果显示,只迭代了三次,但是最优解的判别精度有所下降,为( 3.9986,1.9991)终止条件有所增大,为0.0012,最优解-8.0000。这意味着计算量确实有所下降。

PS:刚上手matlab时,对于syms和logical的转换不是很懂,编程过程不断遭遇此难题。幸运的是,我通过增加中间变量,成功解决或者说,规避了此问题。还好,matlab不需要不每一个变量进行定义,否则就给跪了。

算法流程图: 开始,选X0,ε,K=0

P(k)=-f(X(k)) Y ||Pk||≤ε N a(K)=||P(k)||^2/(-P(k))'*A *P(k) 输出 X(k+1)=X(K)+a(k)P(K);

将参数设为上述ε,此时设初始点为(1,1)通过迭代,可得最优解为:x1=4,

综上所述:

选取初值为(3,3),判别精度为0.01时,相对迭代次数最少,结果相对最优。

二.共轭梯度法

算法简述:

1.在此方法中,先将最速下降方向变量赋一个值,使其二范数满足大于ε的迭代条件,进入循环。

2.求出函数的方向导数表达式,将其存在一个矩阵,设置变量t,表示出x1[x01,x02]’。将x1[x01,x02]’代入原函数,求出代入后,该函数取最小值时的最优解t,将t代入x1[x01,x02]’的式子,求出x1[x01,x02]’,求函数的下一任方向导数。循环内设置一个计数功能的变量,统计迭代次数。

3.求其方向导数的二范数,进行判别,若小于ε,则跳出循环,否则将继续迭代。直至求出最优解。

4.显示最优解,终止条件,最小函数值。

算法流程图:

开始

选取X0,ε,K=0,计算

P(k)=-f(X(k))

||P(k)||≤ε Y N 算法停止,输出 进行一维搜索,使f(X+tkPk)=min(f(X+tkPk)),令X(k+1)=X+tkPk ||P(k)||<ε Y N λ=,k=k+1

心得体会:

共轭梯度法和最速下降法颇有相似,但是不用求hesse矩阵,而且收敛速度会快很多。但是,由于共轭梯度法所涉及的计算量比较大,计算较之最速下降法更复杂,所以,实际运行时,速度会有所减慢。

例如在本例中,所给函数是严格凸函数,由于含有两个变量的二次方之和,结合大致图像,想当然的,初值的选取应当在原点附近;又因为变量的二次方之和后面,还减去了变量的一次形式和一次混合积,所以初值的选取应该再向第一象限倾斜。

本文来源:https://www.bwwdw.com/article/tvat.html

Top