欢迎来到天天文库
浏览记录
ID:19922424
大小:38.50 KB
页数:5页
时间:2018-10-07
《机械优化设计坐标轮换发c语言》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include#include#definem10/*数组长度m>=维数n*/floatf(floatx[]);voidmjtf(intn,floatx0[],floath,floats[],floata[],floatb[]);voidmhjfgf(intn,floata[],floatb[],floatflag,floatx[]);voidzblhf(intn,floatx0[],floath,floatflag1,floatflag2,floata[],floatb[]
2、,floatx[]);/*目标函数(n维)*//*入口参数:x:n维数组,自变量*//*返回值:函数值*/floatf(floatx[]){floatresult;result=60-10*(x[0])-4*(x[1])+(x[0]*x[0])+(x[1]*x[1])-(x[0]*x[1]);returnresult;}/*多维进退法子程序*//*入口参数:n:优化模型维数x0:n维数组,初始点坐标h:初始搜索步长s:n维数组,搜索方向*//*出口参数:a:n维数组,搜索区间下限b:n维数组,搜索区间上限*/v
3、oidmjtf(intn,floatx0[],floath,floats[],floata[],floatb[]){inti;floatx1[m],x2[m],x3[m],f1,f2,f3;for(i=0;i=f1)/*判断搜索方向*/{/*搜索方向为反向,转身*/h=(-1)*h;for(i=0;i4、;i5、i]=x2[i]+h*s[i];f3=f(x3);}/*已完成*/for(i=0;i0)//if(x1[i]6、计算初始两试点*/x1[i]=b[i]-(float)0.618*(b[i]-a[i]);f1=f(x1);for(i=0;i7、f1=f(x1);}else{/*消去左*/for(i=0;iflag);/*判断是否未达到精度要求,若未达到则返回继续缩小区间*/for(i=0;i<8、n;i++)x[i]=(float)0.5*(b[i]+a[i]);/*已达到,输出极小点*/}/*坐标轮换法子程序*//*入口参数:n:优化模型维数x0:n维数组,初始点坐标h:初始搜索步长flag1:黄金分割法迭代精度flag2:鲍威尔法迭代精度a:n维数组,搜索区间下限b:n维数组,搜索区间上限*//*出口参数:x:n维数组,极小点坐标*/voidzblhf(intn,float
4、;i5、i]=x2[i]+h*s[i];f3=f(x3);}/*已完成*/for(i=0;i0)//if(x1[i]6、计算初始两试点*/x1[i]=b[i]-(float)0.618*(b[i]-a[i]);f1=f(x1);for(i=0;i7、f1=f(x1);}else{/*消去左*/for(i=0;iflag);/*判断是否未达到精度要求,若未达到则返回继续缩小区间*/for(i=0;i<8、n;i++)x[i]=(float)0.5*(b[i]+a[i]);/*已达到,输出极小点*/}/*坐标轮换法子程序*//*入口参数:n:优化模型维数x0:n维数组,初始点坐标h:初始搜索步长flag1:黄金分割法迭代精度flag2:鲍威尔法迭代精度a:n维数组,搜索区间下限b:n维数组,搜索区间上限*//*出口参数:x:n维数组,极小点坐标*/voidzblhf(intn,float
5、i]=x2[i]+h*s[i];f3=f(x3);}/*已完成*/for(i=0;i0)//if(x1[i]6、计算初始两试点*/x1[i]=b[i]-(float)0.618*(b[i]-a[i]);f1=f(x1);for(i=0;i7、f1=f(x1);}else{/*消去左*/for(i=0;iflag);/*判断是否未达到精度要求,若未达到则返回继续缩小区间*/for(i=0;i<8、n;i++)x[i]=(float)0.5*(b[i]+a[i]);/*已达到,输出极小点*/}/*坐标轮换法子程序*//*入口参数:n:优化模型维数x0:n维数组,初始点坐标h:初始搜索步长flag1:黄金分割法迭代精度flag2:鲍威尔法迭代精度a:n维数组,搜索区间下限b:n维数组,搜索区间上限*//*出口参数:x:n维数组,极小点坐标*/voidzblhf(intn,float
6、计算初始两试点*/x1[i]=b[i]-(float)0.618*(b[i]-a[i]);f1=f(x1);for(i=0;i7、f1=f(x1);}else{/*消去左*/for(i=0;iflag);/*判断是否未达到精度要求,若未达到则返回继续缩小区间*/for(i=0;i<8、n;i++)x[i]=(float)0.5*(b[i]+a[i]);/*已达到,输出极小点*/}/*坐标轮换法子程序*//*入口参数:n:优化模型维数x0:n维数组,初始点坐标h:初始搜索步长flag1:黄金分割法迭代精度flag2:鲍威尔法迭代精度a:n维数组,搜索区间下限b:n维数组,搜索区间上限*//*出口参数:x:n维数组,极小点坐标*/voidzblhf(intn,float
7、f1=f(x1);}else{/*消去左*/for(i=0;iflag);/*判断是否未达到精度要求,若未达到则返回继续缩小区间*/for(i=0;i<
8、n;i++)x[i]=(float)0.5*(b[i]+a[i]);/*已达到,输出极小点*/}/*坐标轮换法子程序*//*入口参数:n:优化模型维数x0:n维数组,初始点坐标h:初始搜索步长flag1:黄金分割法迭代精度flag2:鲍威尔法迭代精度a:n维数组,搜索区间下限b:n维数组,搜索区间上限*//*出口参数:x:n维数组,极小点坐标*/voidzblhf(intn,float
此文档下载收益归作者所有