资源描述:
《机械优化设计-复合型法.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、机械优化设计实验报告8(一)题目:用复合形法求约束优化问题;;的最优解。基本思路:在可行域中构造一个具有K个顶点的初始复合形。对该复合形各顶点的目标函数值进行比较,找到目标函数值最大的顶点(即最坏点),然后按一定的法则求出目标函数值有所下降的可行的新点,并用此点代替最坏点,构成新的复合形,复合形的形状每改变一次,就向最优点移动一步,直至逼近最优点。(二)复合形法的计算步骤1)选择复合形的顶点数k,一般取,在可行域内构成具有k个顶点的初始复合形。2)计算复合形个顶点的目标函数值,比较其大小,找出最好点xL、最坏点xH、及此坏点xG..3)计算除去最坏点xH以外的
2、(k-1)个顶点的中心xC。判别xC是否可行,若xC为可行点,则转步骤4);若xC为非可行点,则重新确定设计变量的下限和上限值,即令,然后转步骤1),重新构造初始复合形。4)按式计算反射点xR,必要时改变反射系数α的值,直至反射成功,即满足式。然后xR以取代xH,构成新的复合形。5)若收敛条件得到满足,计算终止。约束最优解为:。(三)复合形法程序框图见下图:8是否否否否是是是是否求反射点计算各顶点的目标函数值f(xj)(j=1,2,……,k)一次坏点xG代替最坏点xH结束xR可行?xC可行??计算出去xH后的各顶点中心将各定点的目标函数值和坐标按目标函数值的大
3、小排序形成初始复合形的k个顶点xj(j=1,2,……,k)输入n,k,ε开始8(一)源程序如下:#includedoubleobjfx(doublex[]){doubleff;ff=(x[0]-5)*(x[0]-5)+4*(x[1]-6)*(x[1]-6);returnff;}#includevoidmain(){voidcomple(intn,intk,intkg,doubleep,doublex[],doublebl[],doublebu[],doublexcom[][100],double*f);doublea[]={0
4、,0},b[]={10,20},f,x[2],xcom[2][100];comple(2,3,3,0.00001,x,a,b,xcom,&f);printf("输出最优解及目标函数值:");printf("x1=%.5fx2=%.5ff(x1,x2)=%.5f",x[0],x[1],f);}/*wsd说明n优化模型维数k复合形顶点数kg约束函数个数ep收敛精度xa初始点下限b初始点上限xcom进程中的优化结果*f*/#include#include#includedoubleob
5、jfx(doublex[]);voidconstraint(doublex[],doubleg[]);voidconstraint(doublex[],doubleg[]){g[0]=64-x[0]*x[0]-x[1]*x[1];g[1]=x[1]-x[0]-10;g[2]=x[0]-10;}intgau(doublex[],doubleg[],intkg){inti;constraint(x,g);for(i=0;i0)gotos33;}return1;s33:return0;}voidxcent(intn,intk,int
6、ll,intlh,doublex0[],doublexcom[][100])8{inti,l;doublexs;for(i=0;i-1)x0[i]=xs/(ll-1);elsex0[i]=xs/ll;}}voidfxse(intn,intk,doublex[],doublexcom[][100],doublefxk[]){intl,lp,lp1,i;doubletemp;for(l=0;l7、l;lp++){lp1=lp+1;if(fxk[lp]<=fxk[lp1]){temp=fxk[lp];fxk[lp]=fxk[lp1];fxk[lp1]=temp;for(i=0;i8、lefx,fx0,sdx,fxh,fx