1合肥工业大学《机械优化设计》课程实践研究报告班级:机设12-6班学号:2012216281姓名:丁雷鸣授课老师:王卫荣日期:2015年11月10日2目录一、=0.618的证明………………………………………………………………………1二、一维搜索程序作业………………………………………………………1(1)例1程序文本……………………………………………………………………1(2)例1输出结果截图………………………………………………………………2(1)例2程序文本……………………………………………………………………2(2)例2输出结果截图………………………………………………………………3三、单位矩阵程序作业………………………………………………………4(1)程序文本……………………………………………………………………4(2)输出结果截图………………………………………………………………4四、连杆机构问题………………………………………………………6(1)目标函数……………………………………………………………………6(2)约束条件………………………………………………………………7(3)选择方法……………………………………………………………………7(4)程序文本………………………………………………………………7(5)数据输入截图……………………………………………………………………8(6)输出结果……………………………………………………………………9五、自行选择小型机械设计问题或其他工程优化问题………10(1)设计变量……………………………………………………………………10(2)目标函数………………………………………………………………10(3)约束条件……………………………………………………………………10(4)程序文本………………………………………………………………10(5)数据输入截图……………………………………………………………………11(6)输出数据……………………………………………………………………11六、机械优化设计课程实践心得体会…………………………………………131一、=0.618的证明在实际计算中,最常用的一维搜索方法是黄金分割法。黄金分割法是建立在区间消去法原理基础上的试探方法,即在搜索区间ba,内适当插入两点1,2。并且计算其函数值。黄金分割法要求插入点1,2的位置相对于区间ba,两端点具有对称性,即)(1abb、)(2aba、其中为待定常数。除对称要求外,黄金分割法还要求保留下来的区间内再再插入一点,所形成的区间新三段与原来的区间三段具有相同的比例分布。设原区间ba,长度为1,保留下来的区间2,a长度为,区间缩短率为。为了保持想相同的比例分布,新插入点3应该在)1(位置上,1在原区间的1-位置应该相当于在保留区间的2位置。故有21012取方程正数解,得618.0215二、一维搜索程序作业例1、a=0,b=2,f(x)=cosx(1)例1程序文本#includestdio.hincludemath.hvoidmain(){floatA,B,C=0.618,aa[3],y[3],D;scanf(“%f,%f,%f”,&A,&B,&D):aa[1]=B-C*(B-A);aa[2]=A+C*(B-A);y[1]=cos(aa[1]);y[2]=cos(aa[2]);do{if(y[1]y[2]){A=aa[1];aa[1]=aa[2];y[1]=y[2];aa[2]=A+C*(B-A);}2Else{B=aa[2];aa[2]=aa[1];y[2]=y[1];aa[1]=B-C*(B-A);y[1]=cos(aa[1]);}}While(fabs(B-A)/BD);aa[0]=(A+B)/2;y[0]=cos(aa[0]);printf(“A=%f\n”,aa[0]);printf(“y=%f\n”,y[0]);}(2)例1输出结果截图:输入a=0,b=2,精度d=0.000001,输出极小值点和函数极小值如下:例2、a=0,b=10,f(x)=(x-2)2+3(3)例2、程序文本#includestdio.h#includemath.hvoidmain(){floata,b,c=0.618,aa[3],y[3],d;scanf(%f,%f,%f,&a,&b,&d);aa[1]=b-c*(b-a);3aa[2]=a+c*(b-a);y[1]=(aa[1]-2)*(aa[1]-2)+3;y[2]=(aa[2]-2)*(aa[2]-2)+3;do{if(y[1]y[2]){a=aa[1];aa[1]=aa[2];y[1]=y[2];aa[2]=a+c*(b-a);y[2]=(aa[2]-2)*(aa[2]-2)+3;}else{b=aa[2];aa[2]=aa[1];y[2]=y[1];aa[1]=b-c*(b-a);y[1]=(aa[1]-2)*(aa[1]-2)+3;}}while(fabs((b-a)/b)d);aa[0]=(a+b)/2;y[0]=(aa[0]-2)*(aa[0]-2)+3;printf(a*=%f\n,aa[0]);printf(y=%f\n,y[0]);}(4)例2输出结果截图:输入a=0,b=10,精度d=0.000001,输入极小值点和函数极小值如下:4三、单位矩阵程序作业作业:编写生成单位矩阵的程序。要求:通用、输出美观、语言少为佳。(1)程序文本#includestdio.hvoidmain(void)#definem500{inti,j,n,a[m][m];printf(pleaseinputanumber);scanf(%d,&n);for(i=1;i=n;i++){for(j=1;j=n;j++){if(i==j)a[i][j]=1;elsea[i][j]=0;printf(%d,a[i][j]);}printf(\n);}}(2)输出结果截图:当n=4时,输出结果如下:5当n=12时,输出结果如下:6四、连杆机构问题设计一曲柄摇杆机构,要求曲柄1l从0转到m=0+090时,摇杆3l的转角最佳再现已知的运动规律:E=0+2320)(且已知1l=1,4l=5,0为极位角,其传动角允许在40°0135范围内变化。设计变量该机构的运动简图如上图所示。在这个问题中,已知1l=1,4l=5且0和0不是独立参数,它们可由下式求出:0=arccos)1(1025)122322lll(0=arccos323221025)1(lll所以还问题只有两个独立参数2l和3l,因此设计变量为X=Txx],[21=T32],[ll(1)目标函数将输入角分成30等分,并用近似公式计算,可得目标函数的表达式f(x)=)]()[(3012iiiii式中i——当i时的机构实际输出角,其计算公式为i=ii式中7i=arccos3222322lrllrii=arccos2212222xrxxriii=arccos4212422lrllrii=arccosiirr10242ir=21412421cos2illll=21cos1026iEi为当i时的理想输出角,其值由下式计算Ei=0+20)(32i(2)约束条件平面铰链四杆机构常用的约束条件有曲柄存在条件和传动角条件。由此得约束条件为0)(11xxg、0)(22xxg、06)(213xxxg04)(214xxxg、04)(125xxxg016414.1)(2122216xxxxxg、0414.136)(2122216xxxxxg(3)选择方法采用惩罚函数法进行计算。(4)程序文本procedureffx;//目标函数varp0,q0,p,Ri,A,B,Q,Qi,K:real;i:integer;beginwithform1.sumtdobeginp0:=ArcCos((sqr(1.0+X[1])-X[2]*x[2]+25.0)/(10.0*(1.0+X[1])));q0:=ArcCos((sqr(1.0+x[1])-x[2]*x[2]-25.0)/(10.0*x[2]));K:=90.0/30.0*(3.1415926/180.0);fx:=0;fori:=0to30do;beginP:=i*K+p0;Qi:=q0+2.0*sqr(P-p0)/(3.0*3.1415926);Ri:=sqrt(26.0-10.0*cos(P));A:=ArcCos((Ri*Ri+x[2]*x[2]-x[1]*x[1])/(2.0*Ri*x[2]));B:=ArcCos((Ri*Ri+24.0)/(10.0*Ri));8Q:=3.14159-A-B;fx:=fx+sqr(Q-Qi)*K;end;end;end;procedureggx;//约束函数beginwithform1.sumtdobegingx[1]:=-x[1];gx[2]:=-x[2];gx[3]:=6.0-x[1]-x[2];gx[4]:=x[1]-x[2]-4.0;gx[5]:=x[2]-x[1]-4.0;gx[6]:=x[1]*x[1]+x[2]*x[2]-1.414*x[1]*x[2]-16;gx[7]:=36-x[1]*x[1]-x[2]*x[2]-1.414*x[1]*x[2];end;end;procedurehhx;beginwithform1.sumtdobeginghx[1]:=hx[1];end;end;End.(5)数据输入截图9输入初始点为(5,5),精度为0.001(6)输出结果10五、自行选择小型机械设计问题或其他工程优化问题某车间生产甲、乙两种产品。生产甲种产品每件需要材料9kg、3个工时、4kw电,可获利60元。生产乙种产品每件需材料4kg、10个工时、5kw电,可获利120元。若每天能供应材料360kg,有300个工时,能供200kw电,问每天生产甲、乙两种产品各多少件,才能够获得最大的利润。(1)设计变量设每天生产的甲、乙两种产品分别为1x、2x件。因此设计变量为X=Txx],[21(2)目标函数此问题的数学模型为f(1x,2x)=601x+1202xmax所以目标函数的表达式为minf(x)=-601x-1202x(3)约束条件依题意得约束条件为:1x0、2x0、91x+42x-3600(材料约束)31x+102x-3000(工时约束)41x+52x-2000(电力约束)(4)程序文本procedureffx;//目标函数beginwithform1.hfgddobeginNFX:=NFX+1;fx:=-60*x[1]-120*x[2];end;end;procedureggx;//约束函数beginwithform1.hfgddobegingx[1]:=9*x[1]+4*x[2]-360;gx[2]:=3*x[1]+10*x[2]-300;gx[3]:=4*x[1]+5*x[2]-200;gx[4]:=-x[1];gx[5]:=-x[2];end;11end;(5)输入数据截图(6)输出数据常用优化方法——约束随机法^^^^^^^^^^^^^^^^^^^^^^^^^^^一、初始数据===============================================================================设计变量个数N=2不等式约束个数KG=5---------------------------------------------