机械优化设计实例(附带程序和算法框图)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

机械优化设计作业一、优化设计问题的提出预制一无盖水槽,现有一块长为4m,宽为3m的长方形铁板作为原材料,想在这块铁板的四个角处剪去相等的正方形以制成无盖水槽,问如何剪法使水槽的底面积最大?二、建立问题的数学模型为了建成此无盖水槽,可设在这块铁板的四个角处剪去相等的正方形的边长为X,所建造水槽的底面积为S,分析问题有次问题变成在约束条件:X≥04-2X≥03-2X≥0限制下,求目标函数:S(X)=(4-2X)(3-2X)=4𝑋2-14X+12的最大值。由此可得此问题的数学模型为:MinS(X)=4𝑋2-14X+12约束条件:𝑔1(X)=-X≤0𝑔2(X)=-(4-2X)≤0𝑔3(X)=-(3-2X)≤0三、求解问题选择的优化算法此问题的求解属于一维优化问题,所选择的优化算法为黄金分割法。四、外推法确定最优解的搜索区间用外推法确定函数S(X)=4𝑋2-14X+12的初始搜索区间。设初始点𝛼0=0,初始步长h=1。𝛼0=0,𝑆0=S(𝛼0)=12;𝛼1=𝛼0+h=0+1=1,𝑆1=S(𝛼1)=2;比较𝑆0和𝑆1,因为𝑆1𝑆0,故正向搜索:h=2h=2x1=2,𝛼2=𝛼1+h=1+2=3,𝑆2=6;比较𝑆1和𝑆2,因为𝑆2𝑆1,此时已经形成𝑆0𝑆1𝑆2的局面,故搜索区间可定为[a,b]=[1,3]。五、算法框图开始输入a=1,b=3,ε=0.00YNYNY𝛼1=b-0.618(b-a);𝛼2=a+0.618(b-a)-𝑆1=S(𝛼1);𝑆2=S(𝛼2);𝑆1𝑆2?𝑏=𝛼2;𝛼2=𝛼1;𝑆2=𝑆1;𝛼2=a+0.618(b-a);𝑆2=S(𝛼2);a=𝛼1;𝛼1=𝛼2;𝑆1=𝑆2𝛼1=b-0.618(b-a);𝑆1=S(𝛼1)▏a-b▏≦ε?𝛼∗=0.5(a+b);𝑆∗=S(𝛼∗)结束六、算法程序#includemath.h#includestdio.hdoubleobfunc(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;in;i++)x[0]=x0;f1=obfunc(x[0]);for(i=0;in;i++)x[1]=x[0]+h*s[i];f2=obfunc(x[1]);if(f2=f1){h=-h0;for(i=0;in;i++)x[2]=x[0];f3=f1;for(i=0;in;i++){x[0]=x[1];x[1]=x[2];}f1=f2;f2=f3;}for(;;){h=2.0*h;for(i=0;in;i++)x[2]=x[1]+h*s[i];f3=obfunc(x[2]);if(f2f3)break;else{for(i=0;in;i++){x[0]=x[1];x[1]=x[2];}f1=f2;f2=f3;}}if(h0)for(i=0;in;i++){a[i]=x[2];b[i]=x[0];}elsefor(i=0;in;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;in;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(f1f2){for(i=0;in;i++){b[i]=x[0];x[0]=x[1];}f1=f2;for(i=0;in;i++)x[1]=a[i]+0.382*(b[i]-a[i]);f2=obfunc(x[1]);}else{for(i=0;in;i++){a[i]=x[1];x[1]=x[0];}f2=f1;for(i=0;in;i++)x[0]=a[i]+0.618*(b[i]-a[i]);f1=obfunc(x[0]);}q=0;for(i=0;in;i++)q=q+(b[i]-a[i])*(b[i]-a[i]);w=sqrt(q);}while(weps);for(i=0;in;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)=4𝑋2-14X+12,令𝑆′(X)=8X-14=0可解的X=1.75,说明程序运行结果正确。八、心得与体会通过对问题的求解让我更好的理解了黄金分割法的思想和外推法求搜索区间的方法,而这些也巩固了我的课堂所学。

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功