po3a  

实验一:黄金分割法(0.618法)程序设计

一、实验目的

通过一维寻优黄金分割法的程序设计,培养学生计算机的应用能力,并为今后无约束优化方法的学习和编程,奠定基础;掌握缩小寻优区间的黄金分割法。

 

二、实验内容

1)请用0.618法求解优化问题:

 

的极小点和极小值(进退法确定初始区间),精度为10-6

2)根据0.618法算法步骤编写Matlab的程序实现0.618搜索法;

3)要求输出内容包括:极小点、极小值、每次迭代的abalak的值;

(4)按照模板撰写实验报告,要求规范整洁。

 

三、算法步骤、代码、及结果

1. 算法步骤

1.初始化参数,包括输入的目标函数phi,搜索区间的两个端点a和b,自变量和函数值的容许误差delta和epsilon。

    2. 计算初始的函数值phia和phib。

    3. 计算黄金分割点p和q,以及对应的函数值phip和phiq。

    4. 进入循环,当当前搜索区间的长度h大于设定的误差delta时,继续循环。

    5. 在循环中,如果phip小于phiq,说明极小值在区间a和q之间,因此更新区间端点b为q,相应地也更新对应的函数值和黄金分割点。

    6. 否则,如果phip大于等于phiq,说明极小值在区间p和b之间,因此更新区间端点a为p,同样地,也更新对应的函数值和黄金分割点。

    7. 更新搜索区间长度h和黄金分割点p,q,以及对应的函数值。

    8. 更新迭代次数k,保存此次迭代的值。

    9. 当循环结束,计算最后的误差ds和dphi。

   10. 判断phip和phiq的大小,取较小的那个作为极小值,对应的黄金分割点作为近似极小点。

   11. 输出近似极小点和极小值,以及每次迭代的值和误差。

  1. 代码

0.618程序

function [s,phis,k,G,E]=golds(phi,a,b,delta,epsilon)%输入:phi是目标函数,a,b是搜索区间的两个端点delta,epsilon分别是自变量和函数值的容许误差9%输出:s,phis分别是近似极小点和极小值,G是nx4矩阵。其第k行分别是a,p,q,b的第k次迭代值[ak,pk,qk,bk],E=[ds,dphi],分别是s和phis的误差限

t=(sqrt(5)-1)/2;h=b-a;

phia=feval(phi,a);phib=feval(phi,b);

p=a+(1-t)*h;q=a+t*h;

phip=feval(phi,p);phiq=feval(phi,q);k=1;G(k,:)=[a,p,q,b,h];

while(h>delta)

if(phip<phiq)

b=q;phib=phiq;q=p;phiq=phip;

h=b-a;p=a+(1-t)*h;phip=feval(phi,p);

else

a=p; phia=phip;p=q;phip=phiq;

h=b-a; q=a+t*h;phiq=feval(phi,q);

end

k=k+1; G(k,:)=[a,p,q,b,h];

end

ds=abs(b-a);dphi=abs(phib-phia);

if(phip<=phiq)

s=p;phis=phip;

else

s=q;phis=phiq;

end

E=[ds,dphi];

 

进退法确定初始区间程序

function[section]=JT(fx,x0,h0,t)

f= inline(fx);h = h0;a=x0;k=0;

judge=1;

while judge==1

x1=x0+h;

k = k+1;

if f(x1)<f(x0)

h=t*h;

a=x0;

x0=x1;

else

if k==1

h=-h;

else

judge=0;

end

end

end

m=min(a,x1);n=max(a,x1);

section=sprintf('[%.4f,%.4f]',m,n);

 

 

 

 

 

3. 结果

 

 

 

四、心得体会

 

通过本次实验,我深刻体会到了优化算法的重要性。选择合适的优化算法能够大大提高问题求解的效率和准确性。实验结果表明,0.618法作为一种简单而有效的优化算法,具有较好的收敛性能,在实际应用中具有广泛的适用性。通过不断地收缩搜索区间,该方法能够快速地找到目标函数的极小点,并且在一定程度上保证了搜索的精度。在我们的实验中,该算法成功地找到了函数的极小点和极小值,输出了每次迭代的区间端点和中点的值,使得我可以清晰地了解算法的收敛过程和效果。同时,本次实验也增强了我对优化算法原理的理解,为我进一步学习和应用优化算法打下了良好的基础。

posted on 2024-05-09 23:45  po3a  阅读(45)  评论(0)    收藏  举报