机械优化设计实例(附带程序和算法框图).docx
- 文档编号:1804982
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:7
- 大小:96.37KB
机械优化设计实例(附带程序和算法框图).docx
《机械优化设计实例(附带程序和算法框图).docx》由会员分享,可在线阅读,更多相关《机械优化设计实例(附带程序和算法框图).docx(7页珍藏版)》请在冰豆网上搜索。
机械优化设计作业
一、优化设计问题的提出
预制一无盖水槽,现有一块长为4m,宽为3m的长方形铁板作为原材料,想在这块铁板的四个角处剪去相等的正方形以制成无盖水槽,问如何剪法使水槽的底面积最大?
二、建立问题的数学模型
为了建成此无盖水槽,可设在这块铁板的四个角处剪去相等的正方形的边长为X,所建造水槽的底面积为S,分析问题有次问题变成
在约束条件:
X≥0
4-2X≥0
3-2X≥0
限制下,求目标函数:
S(X)=(4-2X)(3-2X)=4X2-14X+12
的最大值。
由此可得此问题的数学模型为:
MinS(X)=4X2-14X+12
约束条件:
g1(X)=-X≤0
g2(X)=-(4-2X)≤0
g3(X)=-(3-2X)≤0
三、求解问题选择的优化算法
此问题的求解属于一维优化问题,所选择的优化算法为黄金分割法。
四、外推法确定最优解的搜索区间
用外推法确定函数S(X)=4X2-14X+12的初始搜索区间。
设初始点α0=0,初始步长h=1。
α0=0,S0=S(α0)=12;
α1=α0+h=0+1=1,S1=S(α1)=2;
比较S0和S1,因为S1 h=2h=2x1=2,α2=α1+h=1+2=3,S2=6; 比较S1和S2,因为S2>S1,此时已经形成S0>S1 五、算法框图 开始 输入a=1,b=3,ε=0.00 α1=b-0.618(b-a);α2=a+0.618(b-a) - S1=S(α1);S2=S(α2); S1 Y N α1=b-0.618(b-a); S1=S(α1) α2=a+0.618(b-a); S2=S(α2); a=α1; α1=α2; S1=S2 b=α2; α2=α1; S2=S1; ▏a-b▏≦ε? Y N α*=0.5(a+b);S*=S(α*) Y 结束 六、算法程序 #include #include doubleobfunc(doublex) { doubleff; ff=4*X*X-14*X+12; return(ff); } voidjts(doublex0,doubleh0,doubles[],intn,doublea[],doubleb[]) { inti; doublex[3],h,f1,f2,f3; h=h0; for(i=0;i x[0]=x0; f1=obfunc(x[0]); for(i=0;i f2=obfunc(x[1]); if(f2>=f1) { h=-h0; for(i=0;i x[2]=x[0]; f3=f1; for(i=0;i { x[0]=x[1]; x[1]=x[2]; } f1=f2; f2=f3; } for(;;) { h=2.0*h; for(i=0;i x[2]=x[1]+h*s[i]; f3=obfunc(x[2]); if(f2 break; else { for(i=0;i { x[0]=x[1]; x[1]=x[2]; } f1=f2; f2=f3; } } if(h<0) for(i=0;i { a[i]=x[2]; b[i]=x[0]; } else for(i=0;i { a[i]=x[0]; b[i]=x[2]; } printf("%4d",n); } doublegold(doublea[],doubleb[],doubleeps,intn,doublexx) doublef1,f2,ff,q,w; doublex[3]; for(i=0;i { x[0]=a[i]+0.618*(b[i]-a[i]); x[1]=a[i]+0.382*(b[i]-a[i]); } f1=obfunc(x[0]);f2=obfunc(x[1]); do { if(f1>f2) { for(i=0;i {b[i]=x[0]; x[0]=x[1]; } f1=f2; for(i=0;i x[1]=a[i]+0.382*(b[i]-a[i]); f2=obfunc(x[1]); } else {for(i=0;i { a[i]=x[1]; x[1]=x[0]; } f2=f1; for(i=0;i x[0]=a[i]+0.618*(b[i]-a[i]); f1=obfunc(x[0]); } q=0; for(i=0;i q=q+(b[i]-a[i])*(b[i]-a[i]); w=sqrt(q); }while(w>eps); for(i=0;i xx=0.5*(a[i]+b[i]); ff=obfunc(xx); printf("xx=ff=%5.2f,,,,%5.2f",xx,ff); return(ff); } voidmain() { intn=1; doublea[1],b[1],xx; doubles[]={1},x0=0; doubleeps1=0.001,h0=0.1; jts(x0,h0,s,n,a,b); gold(a,b,eps1,n,xx); 七、程序运行结果与分析 (1)程序运行结果(截屏) (2)结果分析、 对与函数S(X)=(4-2X)(3-2X)=4X2-14X+12,令 S'(X)=8X-14=0可解的X=1.75,说明程序运行结果正确。 八、心得与体会 通过对问题的求解让我更好的理解了黄金分割法的思想和外推法求搜索区间的方法,而这些也巩固了我的课堂所学。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机械 优化 设计 实例 附带 程序 算法 框图
![提示](https://static.bdocx.com/images/bang_tan.gif)