机械优化设计上机实践报告_第1页
机械优化设计上机实践报告_第2页
机械优化设计上机实践报告_第3页
机械优化设计上机实践报告_第4页
机械优化设计上机实践报告_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、机械优化设计上机实践报告班级:机械(茅以升)101姓名:学 号:1004010510成绩:指导教师: 张迎辉日 期:2013.11.201一维搜索方法上机实践报告1、写出所选择的一维搜索算法的基本过程、原理(可附流程图说明)。(一)进退法1 .算法原理进退法是用来确定搜索区间(包含极小值点的区间)的算法,其理论依据是:f(x)为单谷函数(只有一个极值点),且a,b为其极小值点的一个搜索区间,对于任意 xi,X2 a,b,如果fx1fx2,则a, X2为极小值的搜索区间,如果fx1fx2,则xi,b为极小值的搜索区间。因此,在给定初始点x0,及初始搜索步长h的情况下,首先以初始步长向前搜索一步,

2、 计算f x0 h。(1)如果 f xof xo h则可知搜索区间为%xo h,其中场寺求,为确定 购 后退一步计算f(xo h), 为缩 小系数,且01,直接找到合适的,使得f(xo h) f xo ,从而确定搜索区间xoh,xo h。(2)如果 f xof xo h则可知搜索区间为xo,%,其中为寺求,为确定 的前进一步计算f(xo h), 为放大 系数,且 1 ,知道找到合适的 ,使得f xo h f(xoh),从而确定搜索区间_ *_ _ xo, xoh o2 .算法步骤用进退法求一维无约束问题 min f(x),x R的搜索区间(包含极小值点的区间)的基本算 法步骤如下:(1)给定初

3、始点x(o),初始步长ho ,令h ho, x(1) x(o), k o;(2)令 x(4) x(1) h ,置 k k 1 ;(3)若f x f x,则转步骤(4),否则转步骤(5);(4)(2)(4)h左上/o(4) Mx x , x x,fx f x ,fx f x ,令h2h,较步骤(2);(5)若k 1 ,则转步骤(6)否则转步骤(7);(6)令 h h, x x(4) , f x(2)f x(4) ,转步骤(2); 令x(3)x(2),x(2)x(1),xx(4) ,停止计算,极小值点包含于区间(1)(3)(3)(I)x ,x Mx ,x (二)黄金分割法1、黄金分割法基本思路:黄

4、金分割法适用于a, b区间上的任何单股函数求极小值问题,对函数除要求“单谷”外不 做其他要求,甚至可以不连续。因此,这种方法的适应面非常广。黄金分割法也是建立在区 问消去法原理基础上的试探方法,即在搜索区间a, b内适当插入两点al, a2,并计算其函 数值。al, a2将区间分成三段,应用函数的单谷性质,通过函数值大小的比较,删去其中一 段,是搜索区间得以缩小。然后再在保留下来的区间上作同样的处理,如此迭代下去,是搜索区间无限缩小,从而得到极小点的数值近似解 。2黄金分割法的基本原理一维搜索是解函数极小值的方法之一,其解法思想为沿某一已知方向求目标函数的极小值点。一维搜索的解法很多,这里主要

5、采用黄金分割法(0.618法)。该方法用不变的区间缩短率0.618代替斐波那契法每次不同的缩短率,从而可以看成是斐波那契法的近似,实现起来比 较容易,也易于人们所接受。rl=a-h0,382(b-a)r2=a-H) 618(b-a) 如图氏阳理) 所以新区间为m,r2以为新区间,继续求新的试点黄金分割法是用于一元函数f(x)在给定初始区间a,b内搜索极小点a *的一种方法。它是优化计算中的经典算法,以算法简单、收敛速度均匀、效果较好而著称,是许多优化算法 的基础,但它只适用于一维区间上的凸函数6,即只在单峰区间内才能进行一维寻优,其收 敛效率较低。其基本原理是:依照“去劣存优”原则、对称原则、

6、以及等比收缩原则来逐步 缩小搜索区间口。具体步骤是:在区间a,b内取点:al , a2把a,b分为三段。如果 f(a1)>f(a2),令 a=a1,a1=a2,a2=a+r*(b-a);如果 f(a1)<f(a2),令 b=a2,a2=a1,a1=b-r*(b-a), 如果| (b-a)/b |和| (y1-y2)/y2 |都大于收敛精度e重新开始。因为 a,b为单峰区间,这样每次可将搜索区间缩小 0.618倍或0.382倍,处理后的区间都将包含 极小点的区间缩小,然后在保留下来的区间上作同样的处理,如此迭代下去,将使搜索区a,b 逐步缩小,直到满足预先给定的精度时,即获得一维优化

7、问题的近似最优解。黄金分割法原 理如图1所示,3程序流程如下:4实验所编程序框图a2=a+r*(b-a) y2=f(a2)a1=b-r*(b-a) y1=f(a1)算例 1 : minf(x)= x*x+2*x(1)C+程序如下:#include <math.h>#include <stdio.h>* define f(x) x*x+2*xdouble calc(double *a,double *b,double e,int *n) double x1,x2,s;if(fabs(*b-*a)<=e)s=f(*b+*a)/2);else x1=*b-0.618*(

8、*b-*a);x2=*a+0.618*(*b-*a);if(f(x1)>f(x2)* a=x1;else* b=x2;* n=*n+1;s=calc(a,b,e,n);return s;main() double s,a,b,e;int n=0;scanf("%lf %lf %lf",&a,&b,&e);s=calc(&a,&b,e,&n);printf("a=%lf,b=%lf,s=%lf,n=%dn",a,b,s,n);2、程序运行结果:l:po cumbht sana jbtt mgsvAOAi

9、nisT raT d.0001a=-l_000028,b=-0.999951,s=-l.000000,n=24Press any key to continue算例 2: minf=xA2-i0*x+36理论最优解:x*=5.0 , f (x* ) =11.0(1) MATLAB 程序清单:function f=myfun_yi(x)f=xA2-10*x+36>> fminbnd(myfun_yi,1,12)(2)运行结果:>> fminbnd(myfun_yi,1,12)f =11.0407f =18.8309f =12.9691f =11f =11.000011.0

10、000 ans =(3)结果分析:由迭代程序f=11.0 , ans=5 ,与理论结果相等算例 3: minf=xA4-5*xA3+4*xA2-6*x+60理论最优解:x*=3.2796, f (x* ) =22.6590(1) MATLAB 程序清单:function f=myfun_yi(x)f=xA4-5*xA3+4*xA2-6*x+60>> fminbnd(myfun_yi,1,12)(2)运行结果:>> fminbnd(myfun_yi,1,12)f =165.39481.5836e+0324.873035.919423.908922.7621 f =31.7

11、507 f =22.6673 f =22.6594 f =22.6590 f =22.6590 f =22.6590 f =22.6590 ans =3.2796(3)结果分析:由迭代程序得f =22.659, ans =3.27% 与理论最优解相等2无约束优化搜索方法上机实践报告1、写出所选择的无约束优化搜索算法的基本过程、原理(可附流程图说明)。鲍威尔改进方法鲍威尔(Powell)法是直接利用函数值来构造共腕方向的一种方法在鲍威尔基本算法中,每一轮迭代都用连结始点和终点所产生出的搜索方向去替换原向量组 中的第一个向量,而不管它的“好坏”,这是产生向量组线性相关的原因所在。在改进的算法中首先

12、判断原向量组是否需要替换。如果需要替换,还要进一步判断原向量组 中哪个向量最坏,然后再用新产生的向量替换这个最坏的向量,以保证逐次生成共腕方向。结束2、程序计算结果分析:中间各步骤的结果分析及与理论计算结果分析对比 算例 1 : min f=4*(x(1)-5)A2+(x(2)-6)A2初始点:x0=8;9,f(x0)=45最优解:x*=5;6,f(x*)=0(1)MATLAB程序清单:function f=myfun_wuyueshu(x)f=4*(x(1)-5)A2+(x(2)-6)A2>> x,fval=fminunc(myfun_wuyueshu,x0)(2)运行结果:f

13、=45Warning: Gradient must be provided for trust-region algorithm;using line-search algorithm instead.> In fminunc at 367f =45.0000f =45.0000f =23.562523.5625 f =23.5625 f =2.6958 f =2.6958 f =2.6958 f =1.3788 f =1.3788 f =1.37880.00540.0054 f =0.0054 f =6.4975e-05 f =6.4973e-05 f =6.4975e-05 f =6

14、.1579e-09 f =6.1522e-09 f =6.1443e-091.7876e-121.8627e-12f =1.5586e-12Local minimum found.Optimization completed because the size of the gradient is less than the default value of the function tolerance.<stopping criteria details> x =5.00006.0000fval =1.7876e-12(3)结果分析:由迭代程序得x = 5.0000; 6.0000

15、,fval =1.7876e-12,与理论最优解相等。算例 2: minf=(x(1)A2+x(2)-11)A2+(x(1)+x(2)A2-7)A2初始点:x0=1;1,f(x0)=106 最优解:x*=3;2,f(x*)=0(1)MATLAB 程序清单:function f=myfun_wuyueshu(x)f=(x(1)A2+x(2)-11)A2+(x(1)+x(2)A2-7)A2>> x,fval=fminunc(myfun_wuyueshu,x0)(2)运行结果:>> x0=1;1x0 =11>> x,fval=fminunc(myfun_wuyue

16、shu,x0)f =106Warning: Gradient must be provided for trust-region algorithm; using line-search algorithm instead.> In fminunc at 367f =106.0000f =106.0000f =29.5430f =29.5430f =29.5430f =1.7450e+041.7450e+04 f =1.7450e+04 f =90.3661 f =90.3661 f =90.3661 f =0.3575 f =0.3575 f =0.3575 f =0.01790.01

17、79 f =0.0179 f =0.0064 f =0.0064 f =0.0064 f =1.0048e-06 f =1.0044e-06 f =1.0049e-06 f =4.8639e-094.8567e-094.8781e-09f =5.2125e-12f =5.8703e-12f =5.7870e-12Local minimum found.Optimization completed because the size of the gradient is less than the default value of the function tolerance.<stoppi

18、ng criteria details> x =3.00002.0000fval =5.2125e-12(3)结果分析:由迭代程序得x=3;2,fval = 5.2125e-12,与理论最优解相等算例 3: ff=x0*x0+2*x1*x1-4*x0-2*x0*x1;(1)鲍威尔改进算法C+®序清单:#include "stdio.h"#include "stdlib.h"#include "math.h"double objf(double x)double ff;ff=x0*x0+2*x1*x1-4*x0-2*x0

19、*x1;return(ff);void jtf(double x0 ,double h0,double s ,int n,double a ,double b) int i;double *x3,h,f1,f2,f3;for (i=0;i<3;i+)xi=(double *)malloc (n*sizeof(double);h=h0;for(i=0;i<n;i+)*(x0+i)=x0i;f1=objf(x0);for(i=0;i<n;i+)*(x1+i)=*(x0+i)+h*si;f2=objf(x1);if(f2>=f1)h= -h0;for (i=0;i<n;

20、i+)*(x2+i)=*(x0+i);f3=f1;for(i=0;i<n;i+)*(x0+i)= *(x1+i);*(x1+i)= *(x2+i);f1=f2;f2=f3;for(;)h=2. *h;for(i=0;i<n;i+)*(x2+i)=* (x1+i) +h*si;f3= objf(x2);if(f2<f3)break;else for(i=0;i<n;i+)*(x0+i)= *(x1+i);*(x1+i)= *(x2+i);f1=f2;f2=f3;)if(h<0.) for(i=0;i<n;i+) ai=*(x2+i);bi=*(xO+i);)e

21、lsefor(i=0;i<n;i+) ai=*(xO+i);bi=*(x2+i);)for(i=0;i<3;i+) free(xi);) double gold(double a,double b,double epsjnt n,double xx) (int i;double f1 ,f2,*x2,ff,q,w;for(i=0;i<2;i+)xi=(double*)malloc (n*sizeof(double);for(i=0;i<n;i+)*(x +i 尸 ai+0.618*(bi-ai);*(x1+i 尸 ai+0.382*(bi-ai);)f1=objf(x0

22、);f2=objf(x1);doif(f1 >f2)for(i=0;i<n;i+)bi=*(x0+i);*(x0+i 尸 *(x1+i);)f1=f2;for(i=0;i<n;i+)*(x1+i 尸 ai+0.382*(bi-ai);f2=objf(x1);)elsefor(i=0;i<n;i+)ai=*(x1+i);*(x1+i 尸 *(x0+i);)f2=f1;for(i=0;i<n;i+)*(x0+i)=ai+0.618*(bi-ai);f1=objf(x0);q=0;for(i=0;i<n;i+)q=q+(bi-ai)*(bi-ai);w=sqrt(

23、q);while(w>eps);for(i=0;i<n;i+)xxi=0.5*(ai+bi);ff=objf(xx);for(i=0;i<2;i+)free(xi);return(ff);double oneoptim(double x0,double s,double h0,double epsg,int n,double x) 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,

24、n,x);free(a);free(b);return(ff);double powell(double p,double h0,double eps,double epsg,int n,double x)int i,j,m;double *xx4,*ss,*s;double f,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;i<n;i+)for (j=0;j<=n;j+)*(ss+i*(n+1

25、)+j)=0;*(ss+i*(n+1)+i)=1;for (i=0;i<4;i+)xxi=(double *)malloc(n*sizeof(double);for (i=0;i<n;i+)*(xx0+i)=pi;for(;)for (i=0;i<n;i+)*(xx1+i)=*(xx0+i);xi=*(xx1+i);)fO=f1=objf(x);dlt=-1;for 0=O;j<n;j+)for (i=0;i<n;i+)*(xx0+i)=xi;*(s+i)=*(ss+i*(n+1)+j);)f=oneoptim(xx0,s,hO,epsg,n,x);df=fO-f

26、;if(df>dlt)dlt=df;m=j;)sdx=0.;for (i=0;i<n;i+)sdx=sdx+fabs(xi-(*(xx1+i);if(sdx<eps)free(ss);free(s);for (i=0;i<4;i+)free(xxi);return(f);)for (i=0;i<n;i+)*(xx2+i)=xi;f2=f;for (i=0;i<n;i+)*(xx3+i)=2*(*(xx2+i)-(*(xx1+i);xi=*(xx3+i);)fx=objf(x);f3=fx;q=(f1 -2*f2+f3)*(f1 -f2-dlt)*(f1 -f

27、2-dlt);d=0.5*dlt*(f1-f3)*(f1-f3);if(f3<f1)|(q<d)if(f2<=f3)for (i=0;i<n;i+)*(xx0+i)=*(xx2+i);elsefor (i=0;i<n;i+)*(xx0+i)=*(xx3+i);)elsefor (i=0;i<n;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=0;i<n;i+)*(xx0+i)=xi;for (j=m+1;j<

28、=n;j+)for (i=0;i<n;i+)*(ss+i*(n+1)+j-1)=*(ss+i*(n+1)+j);) void main() double p=1,1;double ff,x2,x1,x2,f;ff=powell(p,0.3,0.001,0.0001,2,x); printf("shuchuzuiyoujie : n"); x1=x1;x2=x2;f=ff;printf("x1=%f,x2=%f,f=%fn",x1,x2,f); getchar();(2)运行结果为:匚二 C:¥in-TCproj ectsl1. ezej

29、huchuz u iyo uj ieu|<1=1-999758,x2 =1.999758,f =-8.000003约束优化搜索方法上机实践报告1、写出所选择的约束优化搜索算法的基本过程、原理(可附流程图说明)。算法同介防机方向法是 种原现简单的直接方法.它的基本思路是在可行域内选择一个初始 点.利用随机制的概率特性.产生若干个随机方向.并从中选择一个能使H标函数值卜 降最快的随机方向作为可行搜索方向.记作/从和始点xO出发,沿d方向以一定的步 氏进行搜索.得到新点工,新点於座满足约束条件常小)=0(j=L 2,通,且曳量於仁(, 至此完成一次迭代.然后,将起始点移至工,即令工的信赋给箱

30、用笈以上过程,经过若干次迭代计算 后,最终取得约束最优解.随HL方向法的优*是对H标雨数的性态后招稣要求.程序设计简单,使用方便.由 于可行搜索方向是从许多随机方向中选择的使目标函数下降最快的方向,加之步长还可 以灵活变动.所以此尊法的收敛速度比较快.若能取得一个较好的初始点,迭代次数可 以大大减小,它是求解小型的机械优化设计间题的一种十分有效的算法.2、程序计算结果分析:中间各步骤的结果分析及与理论计算结果分析对比算例 1:minf= (x(1)-2)A2+(x(2)-1)A2;s.t g1(x)=x(1)A2-x(2)<=0 g2(x)=x(1)+x(2)-2 <=0初始点:x

31、0=3;3,f(x0)=5最优解:x*=1;1 f(x*)=1(1)MATLAB程序清单:functionf=myfun_constrain(x)f= (x(1)-2)A2+(x(2)-1F2;functionc,ceq=mycon(x)c=x(1)A2-x(2);x(1)+x(2)-2 ceq=>> x,fval=fmincon(myfun_constrain,x0,A,b,口,口,mycon) (2)运行结果:>> A=-1,0;0,-1b=0;0x0=3;3A =-100-1b =x0 =>> x,fval=fmincon(myfun_constrai

32、n,x0,A,b,口,口,mycon)Warning: The default trust-region-reflective algorithm does not solve problems with the constraints you have specified. FMINCON will use the active-set algorithm instead. For information on applicable algorithms, see Choosing the Algorithm in the documentation.> In fmincon at 4

33、86 f = ceq =5.00006.00004.0000 ceq =5.00006.00004.0000ceq =2.00001.0000-1.0000ceq =2.00001.0000-1.0000ceq =2.0000c =1.0000-1.0000ceq =f =1.0000c =1.0e-15 *0.99920.4441ceq =f =1.0000c =1.0e-07 *0.29800.1490ceq =f =1.0000c =1.0e-07 *-0.14900.1490ceq =Local minimum found that satisfies the constraints.

34、Optimization completed because the objective function is non-decreasing in feasible directions, to within the default value of the function tolerance, and constraints are satisfied to within the default value of the constraint tolerance.<stopping criteria details>Active inequalities (to within

35、 options.TolCon = 1e-06):lower upper ineqlin ineqnonlin12x =1.00001.0000 fval =1.0000(3)结果分析:由迭代程序得x =1,0000; 1.0000,fval =1.0000,与理论最优解相等S.t g1(x)=算例 2.minf=1000-x(1)A2-2*x(2)A2-x(3)A2-x(1)*x(2)-x(1)*x(3);x(1)A2+x(2)A2+x(3)A2-25<=0 g2(x)8*x(1)+14*x(2)+7*x(3)-56<=0g3(x)=-x(1)<=0g4(x)=-x(2)&

36、lt;=0g5(x)=-x(3)<=0初始点:x0=2;2;2,f(x0)=976最优解:x*=3,512;0.217;3,552,f(x*)=961,715(1) MATLAB 程序清单:functionf=myfun_constrain(x)f=1000-x(1)A2-2*x(2)A2-x(3)A2-x(1)*x(2)-x(1)*x(3);functionc,ceq=mycon(x)c=x(1)A2+x(2)A2+x(3)A2-25;8*x(1)+14*x(2)+7*x(3)-56 ceq=>> x,fval=fmincon(myfun_constrain,x0,A,b,

37、mycon)(2)运行结果>> A=-1,0,0;0,-1,0;0,0,-1b=0;0;0-1x0=2;2;20-1-1x0 =2 2>> x,fval=fmincon(myfun_constrain,x0,A,b,口,口,mycon)Warning: The default trust-region-reflective algorithm does not solve problems with the constraints you have specified. FMINCON will use the active-set algorithm instead.

38、 For information on applicable algorithms, see Choosing the Algorithm in the documentation. > In fmincon at 486 c =-13 2ceq =c =-13.00002.0000 ceq = c =-13.00002.0000 ceq = c =-13.00002.0000ceq = c =-5.93200ceq = c =-5.93200.0000 ceq = c =-5.93200.0000 ceq = c =-5.93200.0000 ceq = c =1.15620.0000

39、 ceq = c =1.15620.0000 ceq = c =1.15620.0000 ceq = c =1.15620.0000 ceq =31.57130.0000ceq =8.18510.0000ceq =8.18510.0000ceq =8.18510.0000ceq =8.18510.0000ceq =3.25530.0000ceq =3.25530.0000ceq =3.25530.0000ceq =3.25530.0000ceq =1.0789-0.0000ceq =1.07890.0000ceq =1.07890.0000ceq =1.07890.0000ceq =c =0.

40、47930.0000 ceq = c =0.47930.0000 ceq =c =0.47930.0000 ceq =c =0.47930.0000ceq = c =0.0039-0.0000 ceq = c =0.00390.0000 ceq = c =0.00390.0000 ceq = c =0.00390.0000 ceq =1.0e-06 *0.48840.0000ceq =1.0e-06 *0.85590.4187ceq =1.0e-06 *0.49480.2086ceq =1.0e-06 *0.86440.3705 ceq =Local minimum possible. Con

41、straints satisfied.fmincon stopped because the predicted change in the objective function is less than the default value of the function tolerance and constraintsare satisfied to within the default value of the constraint tolerance.<stopping criteria details>Active inequalities (to within opti

42、ons.TolCon = 1e-06):lower upper ineqlin ineqnonlin12x =3.51200.21703.5523fval =961.7152>>(3)结果分析:由迭代程序得x= 3.5120; 0.2170; 3.5523,fval =961.7152,与理论结果相等。4平面连杆机构中再现已知运动规律的优化设计上机实践报告1、写出所针对此实际的优化问题,所确定的优化目标函数和约束条件。例8.5设计一曲柄摇杆机构(如图9所示),要求曲柄11从。转到0 90时,摇杆13的转角最佳再现已知的运动规律:E 0 0 2 ,且已知11 1,14 5, 0为极位角,其3传动角允许在45135范围内变化2、MATLAB程序清单:function f=objfun(x)n=30;L1=1;L2=5;fx=0;fa0=acos(L1+x(1)A2-x(2)A2+L2A2)/(2*(L1+x(1)*L2);%?u ± u 3? e ?pu0=acos(L1+x(1)A2-x(2)A2-L2A2)/(2*(x(2)*L2);%o ?3? e ?for i=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论