资源描述:
《机械优化设计-惩罚函数法.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、#include#include#definem4floatr=0.01;floatf(floatx[]);voidmjtf(intn,floatx0[],floath,floats[],floata[],floatb[]);voidmhjfgf(intn,floata[],floatb[],floatflag,floatx[]);voidmpowell(intn,floatx0[],floath,floatflag1,floatflag2,floata[],floatb[],floatx[]);voidmndc
2、fhs(intn,floath,floatx0[],floatflag1,floatflag2,floatflag3,floata[],floatb[],floatx[]);floatf(floatx[]){floatresult;result=((0.713+0.0085*x[2]*x[2]*x[2]-x[2]*x[2]/30000)+1/(x[0]-19)+1/(23-x[0])+1/(x[1]-9.5)+1/(12.7-x[1])+1/(x[2]-50)+1/(60-x[2])+1/(x[0]*x[1]-37.1134)+1/(-x[0]*
3、x[1]+927.835));returnresult;}/*搜索区间子程序*/voidmjtf(intn,floatx0[],floath,floats[],floata[],floatb[]){a[0]=9,b[0]=23;a[1]=1,b[1]=50;a[2]=10,b[2]=100;a[3]=1,b[3]=10;}/*多维黄金分割法子程序*/voidmhjfgf(intn,floata[],floatb[],floatflag,floatx[]){inti;floatx1[m],x2[m],f1,f2,sum;for(i=0;i4、+)/*计算初始两点*/x1[i]=b[i]-(float)0.618*(b[i]-a[i]);f1=f(x1);for(i=0;i5、0;iflag);for(i=0;i6、,floatx0[],floath,floatflag1,floatflag2,floata[],floatb[],floatx[]){inti,j,k,r;floatx1[m],x11[m],x2[m],f0,f1,f2,fn[m],s[m][m],sum;for(i=0;i7、){mjtf(n,x1,h,s[i],a,b);mhjfgf(n,a,b,flag1,x1);fn[i]=f(x11)-f(x1);/*计算函数下降值*/x11[i]=x1[i];}for(i=0;i=f0
8、
9、(f0-
10、2*f1+f2)*(f0-f1-fn[0])*(f0-f1-fn[0])>=0.5*fn[0]*(f0-f2)*(f0-f2)){/*判