




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、机械优化设计实验报告m录1 .进退法确定初始区间进退法基本思路:按照一定的规则试算若干个点,比较其函数值的大小,直至找到函数值按“高-低-高”变化的单峰区间。进退法程序框图题目:用进退法求解函数fXx27x10的搜索区间源程序代码及运行结果#include#includemain()floath,h0,y1,y2,y3,a1=0,a2,a3,fa2,fa3;scanf(h0=%f,y1=%f,&h0,&y1);h=h0;a2=h;y2=a2*a2-7*a2+10;if(y2y1)h=-h;a3=a1;y3=y1;Ioop:a1=a2;y1=y2;a2=a3;y2=y3;a3=a2+2*h;y3
2、=a3*a3-7*a3+10;if(y3eps)if(y1=y2)a=a1;a1=a2;y1=y2;a2=a+*(b-a);y2=f(a2);elseb=a2;a2=a1;y2=y1;a1=*(b-a);yi=f(ai);endendxxx=*(a+b)f=Inlinefunction:f(x)=xA2-7*x+9xxx=3 .牛顿型法牛顿型法基本思路:在xk邻域内用一个二次函数x来近似代替原目标函数,并将x的极小点作为对目标函数fx求优的下一个迭代点xk1。经多次迭代,使之逼近目标函数fx的极小点阻尼牛顿法的流程图:itcl=1;1;题目:用牛顿阻尼法求函数fx2x1开始源程序代码及结果:k
3、=0;ptol=;xk=input( input x0:一42x1 2x2的极小点)whilenorm(itcl)=ptolf1=4*xk(1,1)A3-24*xk(1,1)A2+50*xk(1,1)-4*xk(2,1)-32;-4*xk(1,1)+8*xk(2,1);G=12*xk(1,1)A2-48*xk(1,1)+50,-4;-4,8;dk=-inv(G)*f1;a=-(dk*f1)/(dk*G*dk);xk=xk+a*dk;itcl=a*dk;k=k+1;endf=(xk(1,1)-2)A4+(xk(1,1)-2*xk(2,1)A2;fprintf(n6?x6?&龙?立一心uu%d?o
4、6心?心?D?心?x*?D?afna:,k);disp(xk);disp(f);结果显示:inputx0:1;1用阻尼牛顿法迭代27次后得到极小点x*及极小值f为:4 .鲍威尔法鲍威尔法基本思路:在不用导数的前提下,在迭代中逐次构造G的共轭方向。鲍威尔法流程图:4 3题目:求函数f(x)=x0*x0+x1*x1-x0*x1-10*x0-4*x1+60的最优点,收敛精度e=源程序代码及结果:#include#include#includedoubleobjf(doublex)doubleff;ff=x0*x0+x1*x1-x0*x1-10*x0-4*x1+60;return(ff);)voidj
5、tf(doublex0,doubleh0,doubles,intn,doublea,doubleb)inti;double*x3,h,f1,f2,f3;for(i=0;i3;i+)xi=(double*)malloc(n*sizeof(double);h=h0;for(i=0;in;i+)*(x0+i)=x0i;f1=objf(x0);for(i=0;i=f1)h=-h0;for(i=0;in;i+)*(x2+i)=*(x0+i);f3=f1;for(i=0;in;i+)*(x0+i)=*(x1+i);*(x1+i)=*(x2+i);)f1=f2;f2=f3;)for(;)h=2*h;for(
6、i=0;in;i+)*(x2+i)=*(x1+i)+h*si;f3=objf(x2);if(f2f3)break;elsefor(i=0;in;i+)*(x0+i)=*(x1+i);*(x1+i)=*(x2+i);f1=f2;f2=f3;if(h0)for(i=0;in;i+)ai=*(x2+i);bi=*(x0+i);elsefor(i=0;in;i+)ai=*(x0+i);bi=*(x2+i);for(i=0;i3;i+)free(xi);doublegold(doublea,doubleb,doubleeps,intn,doublexx)inti;doublef1,f2,*x2,ff,q
7、,w;for(i=0;i2;i+)xi=(double*)malloc(n*sizeof(double);for(i=0;if2)for(i=0;in;i+)bi=*(x0+i);*(x0+i)=*(x1+i);)f1=f2;for(i=0;in;i+)*(x1+i)=ai+*(bi-ai);f2=objf(x1);)elsefor(i=0;in;i+)ai=*(x1+i);*(x1+i)=*(x0+i);f2=f1;for(i=0;in;i+)*(xO+i)=ai+*(bi-ai);f1=objf(x0);)q=0;for(i=0;ieps);for(i=0;in;i+)xxi=*(ai+b
8、i);ff=objf(xx);for(i=0;i2;i+)free(xi);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);jtf(x0,h0,s,n,a,b);ff=gold(a,b,epsg,n,x);free(a);free(b);return(ff);doublepowell(doublep,doubleh0,dou
9、bleeps,doubleepsg,intn,doublex)inti,j,m;double*xx4,*ss,*s;doublef,f0,f1,f2,f3,fx,dlt,df,sdx,q,d;ss=(double*)malloc(n*(n+1)*sizeof(double);s=(double*)malloc(n*sizeof(double);for(i=0;in;i+)for(j=0;j=n;j+)*(ss+i*(n+1)+j)=0;*(ss+i*(n+1)+i)=1;for(i=0;i4;i+)xxi=(double*)malloc(n*sizeof(double);for(i=0;in;
10、i+)*(xx0+i)=pi;for(;)for(i=0;in;i+)*(xx1+i)=*(xx0+i);xi=*(xx1+i);fO=f1=objf(x);dlt=-1;for(j=0;jn;j+)for(i=0;idlt)dlt=df;m=j;sdx=O;for(i=0;in;i+)sdx=sdx+fabs(xi-(*(xx1+i);if(sdxeps)free(ss);free(s);for(i=0;i4;i+)free(xxi);return(f);)for(i=0;in;i+)*(xx2+i)=xi;f2=f;for(i=0;in;i+)*(xx3+i)=2*(*(xx2+i)-(*
11、(xx1+i);xi=*(xx3+i);)fx=objf(x);f3=fx;q=(f1-2*f2+f3)*(f1-f2-dlt)*(f1-f2-dlt);d=*dlt*(f1-f3)*(f1-f3);if(f3f1)|(qd)if(f2=f3)for(i=0;in;i+)*(xx0+i)=*(xx2+i);elsefor(i=0;in;i+)*(xx0+i)=*(xx3+i);)elsefor(i=0;in;i+)*(ss+(i+1)*(n+1)=xi-(*(xx1+i);*(s+i)=*(ss+(i+1)*(n+1);)f=oneoptim(xx0,s,h0,epsg,n,x);for(i=
12、0;in;i+)*(xx0+i)=xi;for(j=m+1;j=n;j+)for(i=0;in;i+)*(ss+i*(n+1)+j-1)=*(ss+i*(n+1)+j);)voidmain()doublep=1,2;doubleff,x2;ff=powell(p,2,x);printf(x0=%f,x1=%f,ff=%fn,x0,x1,ff);getchar();5 .复合形法复合行法基本思想:在可行域中选取K个设计点(n+1WKW2n)作为初始复合形的顶点。比较各顶点目标函数值的大小,去掉目标函数值最大的顶点(称最坏点),以坏点以外其余各点的中心为映射中心,用坏点的映射点替换该点,构成新的复
13、合形顶点。反复迭代计算,使复合形不断向最优点移动和收缩,直至收缩到复合形的顶点与形心非常接近,且满足迭代精度要求为止。题目:求函数f(x)=(x1-5)*(x1-5)+4*(x2-6)*(x2-6)的最优点,约束条件为g1(x)=64-x1*x1-x2*x200;g2(x)=x2-x1-1000;g3(x)=x1-1000;收敛精度e自定义;源程序代码及结果:#include#include#include#include#defineE01e-5/*复合形法收敛控制精度*/double*apply(int,int);/*申请矩阵空间*/doublef(double*);/*目标函数*/dou
14、ble*g(double*);/*约束函数*/booljudge(double*);/*可行点的判断*/intmain()intn,k;inti,j,k1;intl;doubletemporary;doublerestrain;/*收敛条件*/doublereflect;/*反射系数*/srand(unsigned)time(NULL);printf(请输入目标函数的维数n:);/*输入已知数据*/scanf(%d,&n);printf(请输入复合形的顶点数k:);scanf(%d,&k);double*x=apply(k,n);/*存放复合形顶点*/double*y=(double*)cal
15、loc(k,sizeof(double);/*存放目标函数值*/double*p=(double*)calloc(3,sizeof(double);/*存放约束函数值*/double*a=(double*)calloc(n,sizeof(double);/*存放设计变量的下限*/double*b=(double*)calloc(n,sizeof(double);/*存放设计变量的上限*/double*x_c=(double*)calloc(n,sizeof(double);/*存放可行点中心*/double*x_r=(double*)calloc(n,sizeof(double);/*存放最坏
16、点的反射点*/printf(请输入选定的第一个可行点x1(包含d个数)二n);for(i=0;in;i+)scanf(%lf,*x+i);printf(请输入初选变量的下限a(包含%个数):,n);for(i=0;in;i+)scanf(%lf,a+i);printf(请输入初选变量的上限b(包含%d个数)二n);for(i=0;in;i+)scanf(%lf,b+i);printf(输出输入结果为:nn=%d,k=%d,x1=(,n,k);/*输出已知数据*/for(i=0;in-1;i+)printf(%.5lf,*(*x+i);printf(%.5lf)na=(,*(*x+n-1);fo
17、r(i=0;in-1;i+)printf(%f,*(a+i);printf(%.5lf),b=(,*(a+n-1);for(i=0;in-1;i+)printf(%f,*(b+i);printf(%.5lf)n,*(b+n-1);L1:for(i=1;ik;i+)/*随机得到其余(k-1)个可行点*/for(j=0;jn;j+)*(*(x+i)+j)=*(a+j)+(double)(rand()%10000)/10000*(*(b+j)-*(a+j);l=1;for(i=1;ik;i+)/*找出可行点的个数l,并把可行点放在前l个位置上*/if(judge(*(x+i)for(j=1;jk;j
18、+)if(!judge(*(x+j)for(k1=0;k1n;k1+)temporary=*(*(x+i)+k1);*(*(x+i)+k1)=*(*(x+j)+k1);*(*(x+j)+k1)=temporary;break;l+;for(i=0;il-1;i+)/*把前l个可行点按目标函数值从大到小排序*/for(j=i+1;jl;j+)if(f(*(x+i)f(*(x+j)for(k1=0;k1n;k1+)temporary=*(*(x+i)+k1);*(*(x+i)+k1)=*(*(x+j)+k1);*(*(x+j)+k1)=temporary;)for(i=0;in;i+)/*求可行点
19、中心*/*(x_c+i)=0;for(i=0;il;i+)for(j=0;jn;j+)*(x_c+j)+=*(*(x+i)+j);for(i=0;in;i+)*(x_c+i)/=l;if(!judge(x_c)/*判断可行点中心是否可行*/(for(i=0;in;i+)(*(a+i)=*(*(x+l-1)+i);*(b+i)=*(x_c+i);)gotoL1;)else(for(i=l;ik;i+)/*将不可行点可行化*/do(for(j=0;jn;j+)*(*(x+i)+j)=*(x_c+j)+*(*(*(x+i)+j)-*(x_c+j);)while(!judge(*(x+i);L2:fo
20、r(i=0;ik-1;i+)/*将可行点按目标函数值从大到小排序*/for(j=i+1;jk;j+)if(f(*(x+i)f(*(x+j)for(k1=0;k1n;k1+)(temporary=*(*(x+i)+k1);*(*(x+i)+k1)=*(*(x+j)+k1);*(*(x+j)+k1)=temporary;)restrain=0;/*求收敛条件*/for(i=0;ik;i+)restrain+=(f(*(x+i)-f(*(x+k-1)*(f(*(x+i)-f(*(x+k-1);restrain=sqrt(k-1)*restrain);if(restrainE0)/*判断收敛条件*/(
21、printf(n求得约束最优点为:();for(i=0;in;i+)printf(%.5f”,*(*(x+k-1)+i);printf()n目标函数的最优解为:.5fn,f(*(x+k-1);return0;)else(L3:for(i=0;in;i+)/*计算除去最坏点*x外的(k-1)个顶点的中心*/*(x_c+i)=0;for(i=1;ik;i+)for(j=0;jn;j+)*(x_c+j)+=*(*(x+i)+j);for(i=0;in;i+)*(x_c+i)/=k-1;reflect=;L4:for(i=0;in;i+)/*求反射点*/(x_r+i)=*(x_c+i)+reflect
22、*(*(x_c+i)-*(*x+i);if(!judge(x_r)reflect*=;gotoL4;elseif(f(x_r)f(*x)for(i=0;in;i+)*(*x+i)=*(x_r+i);gotoL2;elseif(reflect=1e-10)for(i=0;in;i+)*(*x+i)=*(*(x+1)+i);gotoL3;elsereflect*=;gotoL4;double*apply(introw,intcol)/*申请矩阵空间*/inti;double*x=(double*)calloc(row*col,sizeof(double);double*y=(double*)cal
23、loc(row,sizeof(double*);if(!x|!y)printf(内存分配失败!);exit(1);for(i=0;irow;i+)*(y+i)=x+i*col;returny;doublef(double*x)/*目标函数*/return(*x-5)*(*x-5)+4*(*(x+1)-6)*(*(x+1)-6);double*g(double*x)/*约束函数*/double*p=(double*)calloc(3,sizeof(double);if(!p)printf(内存分配失败!);exit(1);*p=64-(*x)*(*x)-(*(x+1)*(*(x+1);*(p+1
24、)=*(x+1)-*x-10;*(p+2)=*x-10;returnp;booljudge(double*x)/*可行点的判断*/inti;double*p=(double*)calloc(3,sizeof(double);p=g(x);for(i=0;i0)break;if(i=3)returntrue;elsereturnfalse;6.外点惩罚函数法解题思路:外点法是从可行域的外部构造一个点序列去逼近原约束问题的最优解。外点法可以用来求解含不等式和等式约束的优化问题。外点惩罚函数的形式为:流程框图:.m-2l2(x,r)f(x)rmax0,gi(x)rhj(x)题目:求函数f(x)=(x
25、1-5户(X1-5)+4*(x2-6)*(x2-6)的最优点,约束条件:g1(x)=64-x1*x1-x2*x20;g2(x)=x2-x1-100;g3(x)=x1-100;收敛精度e=源程序代码及结果:#include#include#includedoublelamta10=0,0,0,0,1,0,0,0,1械设计实际问题分析题目:图示为一对称的两杆支架,在支架的顶点承受一个载荷为2F=300000,支架之间的水平距离2B=1520mm,若已选定壁厚T=2.5mm钢管,密度p=8300kg/m3,屈服点,材料的加00M诂E 2.1 1011N/m2计算过程如下:解:计算压杆的临界柔度为:2
26、E2B要求在满足强度与稳定性条件下设计最轻的支架尺寸。22.110-55.4,700106由于支架为空心杆,失效形式主要为屈服,故计算稳定性用屈服极限公式。根据题意“可得方程组:RrT,E2Fsin4代入整理得到内点混合惩罚函数法的标准形式为:构建惩罚函数:X,r22/k) 284.86 x1x2r x12X2r k 96.46 x12 x2-x12 x22.5rk一cr k,其中r的初值r 01,0.1,解得:0,0令迭代精度为:10 7,由于函数是X的2次方程,故不必判别函数值的相对变化m k 1Mo r cr,c 0.01源程序编写#include #include double GetX3( double r)return (1-42*sqrt(r)*sqrt(r)+*r)/*sqrt(r)-38*r)+;doub
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能传感器网络在工业泄漏预警中的多维度监测技术突破
- 新能源汽车前独立臂悬挂系统热-机耦合作用对可靠性影响评估
- 新型环保制冷剂在电机系统中的相容性及热力学性能瓶颈
- 新型复合材料在凸耳卡箍防腐性能与成本控制的博弈关系
- 文化遗产砖墙修复中的传统工艺现代化改造困境
- 数字孪生技术驱动的液位计故障预测模型构建难点
- Module 04 大单元学习(教学设计)-2023-2024学年外研版(三起)英语三年级下册
- 放电加工液循环系统的纳米颗粒污染控制路径
- 抛光均匀性与饮用水桶材料热膨胀系数动态匹配难题
- 医养结合医疗设备配置与安装方案
- 2025秋部编版(2024)八年级上册语文上课课件 第二单元 阅读综合实践
- lng燃气安全管理制度
- 2022年全国青少年禁毒知识竞赛题库附答案(共470题)
- 网络安全防骗秘籍2
- 钙钛矿型稀土氧化物的制备与红外发射率性能研究
- 湖南文艺出版社小学四年级上册全册音乐教案
- 乡村振兴文旅融合发展项目可行性研究报告
- 专科护理建设体系构建与实施路径
- 直销团队文化课件
- 旅游景区管理协议书
- 如何提高采购效率培训课件
评论
0/150
提交评论