欢迎来到天天文库
浏览记录
ID:48365101
大小:125.01 KB
页数:8页
时间:2019-11-27
《齐童:无约束优化搜索方法的上机实践操作报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、无约束优化搜索方法》上机实践报告1、写出所选择的无约束优化搜索算法的基本过程、原理(可附流程图说明)。鲍威尔(Powell)法是直接利用函数值来构造共轭方向的一种方法在鲍威尔基本算法中,每一轮迭代都用连结始点和终点所产生出的搜索方向去替换原向量组中的第一个向量,而不管它的“好坏”,这是产生向量组线性相关的原因所在。在改进的算法中首先判断原向量组是否需要替换。如果需要替换,还要进一步判断原向量组中哪个向量最坏,然后再用新产生的向量替换这个最坏的向量,以保证逐次生成共轭方向。2、程序计算结果分析:中间各步骤的结果分析及与理论计算结果分析对比。算例:ff=x[0]*x[0]+2*x[1]*
2、x[1]-4*x[0]-2*x[0]*x[1];(1)鲍威尔改进算法C++程序清单:#include"stdio.h"#include"stdlib.h"#include"math.h"doubleobjf(doublex[]){doubleff;ff=x[0]*x[0]+2*x[1]*x[1]-4*x[0]-2*x[0]*x[1];return(ff);}voidjtf(doublex0[],doubleh0,doubles[],intn,doublea[],doubleb[]){inti;double*x[3],h,f1,f2,f3;for(i=0;i<3;i++)x[i]=(d
3、ouble*)malloc(n*sizeof(double));h=h0;for(i=0;i=f1){h=-h0;for(i=0;i4、n;i++)*(x[2]+i)=*(x[1]+i)+h*s[i];f3=objf(x[2]);if(f25、,doubleb[],doubleeps,intn,doublexx[]){inti;doublef1,f2,*x[2],ff,q,w;for(i=0;i<2;i++)x[i]=(double*)malloc(n*sizeof(double));for(i=0;if2){for(i=0;i6、]+i);}f1=f2;for(i=0;ieps);for(i=0;i7、i]=0.5*(a[i]+b[i]);ff=objf(xx);for(i=0;i<2;i++)free(x[i]);return(ff);}doubleoneoptim(doublex0[],doubles[],doubleh0,doubleepsg,intn,doublex[]){double*a,*b,ff;a=(double*)malloc(n*sizeof(double));b=(double*)malloc(n*sizeof(double));j
4、n;i++)*(x[2]+i)=*(x[1]+i)+h*s[i];f3=objf(x[2]);if(f25、,doubleb[],doubleeps,intn,doublexx[]){inti;doublef1,f2,*x[2],ff,q,w;for(i=0;i<2;i++)x[i]=(double*)malloc(n*sizeof(double));for(i=0;if2){for(i=0;i6、]+i);}f1=f2;for(i=0;ieps);for(i=0;i7、i]=0.5*(a[i]+b[i]);ff=objf(xx);for(i=0;i<2;i++)free(x[i]);return(ff);}doubleoneoptim(doublex0[],doubles[],doubleh0,doubleepsg,intn,doublex[]){double*a,*b,ff;a=(double*)malloc(n*sizeof(double));b=(double*)malloc(n*sizeof(double));j
5、,doubleb[],doubleeps,intn,doublexx[]){inti;doublef1,f2,*x[2],ff,q,w;for(i=0;i<2;i++)x[i]=(double*)malloc(n*sizeof(double));for(i=0;if2){for(i=0;i6、]+i);}f1=f2;for(i=0;ieps);for(i=0;i7、i]=0.5*(a[i]+b[i]);ff=objf(xx);for(i=0;i<2;i++)free(x[i]);return(ff);}doubleoneoptim(doublex0[],doubles[],doubleh0,doubleepsg,intn,doublex[]){double*a,*b,ff;a=(double*)malloc(n*sizeof(double));b=(double*)malloc(n*sizeof(double));j
6、]+i);}f1=f2;for(i=0;ieps);for(i=0;i7、i]=0.5*(a[i]+b[i]);ff=objf(xx);for(i=0;i<2;i++)free(x[i]);return(ff);}doubleoneoptim(doublex0[],doubles[],doubleh0,doubleepsg,intn,doublex[]){double*a,*b,ff;a=(double*)malloc(n*sizeof(double));b=(double*)malloc(n*sizeof(double));j
7、i]=0.5*(a[i]+b[i]);ff=objf(xx);for(i=0;i<2;i++)free(x[i]);return(ff);}doubleoneoptim(doublex0[],doubles[],doubleh0,doubleepsg,intn,doublex[]){double*a,*b,ff;a=(double*)malloc(n*sizeof(double));b=(double*)malloc(n*sizeof(double));j
此文档下载收益归作者所有