资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
姓名:楼金波 学号:064090316实验二实验二 无约束优化方法(改进的鲍威尔法)无约束优化方法(改进的鲍威尔法) 一、实验目的通过实验,进一步理解无约束优化的概念和各类方法的基本原理,同时锻炼学生运用理论知识解决实际问 题的能力。 本次实验重点在于学会运用通用性较强的无约束优化方法改进的鲍威尔法,来求解实际问题。二、实验内容用改进的鲍威尔法编程求解下述问题:22 12min( )4(5)(6)f xxx最优解:,*5x6*()0f x三、实验原理 (1)鲍威尔基本算法(参见课本 P8384) 。 (2)鲍威尔改进算法:在鲍威尔基本算法中,每一轮迭代都用连结始点和终点所产生出的搜索方向去替代原 向量组中的第一个向量,而不管它的“好坏” ,这是产生向量组线性相关的原因所在。因此在改进的算法中首 先判断原向量组是否需要替换。如果需要替换,还要进一步判断原向量组中哪个向量最坏,然后再用新产生的 向量替换这个最坏的向量,以保证逐次生成共轭方向。具体步骤详见课本 P85。四、实验程序(改进的鲍威尔法,精度设为 J=0.005) #include “stdio.h“ #include “math.h“ #define J 0.005 #define M 2 #define N 100 double function(double xM,int i) double s; s=4*(xi0-5)*(xi0-5)+(xi1-6)*(xi1-6); return s; /*自定义函数 1:求函数值*/double *add(double aM,double bM,double cM,double d,int i) int e,h; h=i-1; for(e=0;ey1) h=-h; t3=t1; y3=y1; t1=t2; y1=y2; t2=t3; y2=y3; /*换名*/ t3=t2+h; t=t3; y3=4*(aai0+t*bbi0-5)*(aai0+t*bbi0-5)+(aai1+t*bbi1-6)*(aai1+t*bbi1-6);while(y3c a1=a2; q1=q2;a2=a+k*(b-a); t=a2;q2=4*(aai0+t*bbi0-5)*(aai0+t*bbi0-5)+(aai1+t*bbi1-6)*(aai1+t*bbi1-6); else b=a2; a2=a1; q2=q1;a1=b-k*(b-a); t=a1; q1=4*(aai0+t*bbi0-5)*(aai0+t*bbi0-5)+(aai1+t*bbi1-6)*(aai1+t*bbi1-6);m=(b-a)/b; if(mJ);printf(“The distance between point of origin to destination S=%fn“,s);printf(“optimunX1=%f,optimunX2=%fn“,x00,x01); /*输出最优点的 X 坐标*/printf(“k=%dn“,k); /*输出搜索抡数*/optimunY=function(x,0); /*调用函数求最优点的函数值*/printf(“optimunY=%f“,optimunY); /*输出最优点的函数值*/ 五、程序运行结果从窗口中可以看出,通过 K=2 轮搜索求得满足精度要求的最优解,此时始点到终点的距离 S=0.003999(J=0.005) ,最优解为: OptimunX1=5.001025,optimunX2=5.996608,optimunY=0.000016 六、注意事项(1)在编程之前,应绘制出所用方法的程序框图,并以此为基础进行编程;(2)因为涉及的变量较多,所以要分清楚各变量代表的含义,以免造成不必要的麻烦;(3)使程序模块化,当所求问题变化时,不用对程序作全部更改,只需改变程序的个别参数就可以;(4)尽量简化程序,用相对简单的方法求解问题;(5)可以用自定义函数来简化程序结构,这也减少 main 函数中的变量个数;(6)学会用 WinTC 提供的调试工具调试程序,以提高效率。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号