(课程实践报告封面模版)合肥工业大学《机械优化设计》课程实践研究报告班级:机设六班学号:姓名:李继鑫授课老师:王卫荣日期: 2013年 5 月 7 日(一)一维搜索 min f(x)=]10,0[]2,0[]32)2[(*cos *π⎩⎨⎧+-x d x c 注:其中c 、d 为待定系数,用于确定选择的函数是哪一个。
C 语言程序段如下:#include <stdio.h>#include<math.h>#define p 3.14float fun(float x,float c,float d);void main(void){float a0,a1,a2,r,a,b;float y1=0.0000,y2=0.0000,u;float c,d;u=0.618;printf("input[a,b]and r:a= b= r= ");scanf("%f%f%f",&a,&b,&r);printf("choose only ONE function number c=1 0 or d=0 1\n"); scanf("%f%f",&c,&d);if(c==1) d=0;else c=0,d=1;a1=b-u*(b-a),y1=fun(a1,c,d);a2=a+u*(b-a),y2=fun(a2,c,d);do{if(y1>=y2){a=a1;a1=a2,y1=y2;a2=a+u*(b-a),y2=fun(a2,c,d);}else{b=a2;a2=a1,y2=y1;a1=b-u*(b-a),y1=fun(a1,c,d);}}while(fabs((b-a)/b)>r && fabs((y2-y1)/y2)>r); a0=0.5*(a+b);printf("The best result a0=%f\n",a0);}/******function editting********/float fun(float x,float c,float d){float Y;Y=c*cos(x)+d*((x-2)*(x-2)+3);return(Y);}●选择第二的函数(0,1)极小值a0=2.000970,理论值为2,正确。
●选择第一的函数(1,0)极小值a0=3.140134,理论值为 ,正确。
(二)单位矩阵C语言程序实现n阶单位矩阵如下:#include<stdio.h>void main(void){int n,i,j;int d=1,c=0;printf("Input the dimension of array n=\n");scanf("%d",&n);printf("the array of n*n is:\n");for(i=0;i<n-1;i++){for(j=0;j<n-1;j++){if(i==j) printf("%3d",d);else printf("%3d",c);}printf("\n");}}●实验数据验证如下,取n=5得到5阶单位矩阵:●取n=10得到10阶单位矩阵:(三)连杆机构问题优化设计修改程序实现过程如下:unit sumt_fgh;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,Math; typearr3 = array[1..55]of real;typeTForm3 = class(TForm)private{ Private declarations }public{ Public declarations }end;varForm3: TForm3;Procedure ffx;Procedure ggx;Procedure hhx;implementationuses sumt_1, sumt_2;{$R *.DFM}// 应用惩罚函数法优化方法计算优化问题,用户应首先根据具体问题// 建立其优化的数学模型(①目标函数;②不等式约束函数;③等式约束函数。
);// min F[x]// s.t. GX[j]≤0 (j=1,2,...kg)// HX[j]=0 (j=1,2,...kh)// 再将目标函数、约束函数按DELPHI语言改写成表达式,// fx := ...;// gx[1] := ...;// gx[2] := ...;// .// .// gx[kg] := ...;// hx[1] := ...;// hx[2] := ...;// .// .// hx[kh] := ...;// 替换下面的procedure ffx段中的目标函数的计算表达式fx;// 替换下面的procedure ggx段中的目标函数的计算表达式gx[1]、gx[2]...gx[kg]// 替换下面的procedure hhx段中的目标函数的计算表达式hx[1]、hx[2]...hx[kh]}procedure ffx; //目标函数var y0,y1,z,t,b,a,y2 : double;var i :integer;beginwith form1.sumt do beginfx:=0;for i:= 1 to 30 dobeginy0:=arccos(((1+x[1])*(1+x[1])-x[2]*x[2]+25)/(10*(1+x[1])));y1:=y0+(i+1)*i*0.5;z:=arccos(((1+x[1])*(1+x[1])-x[2]*x[2]-25)/(10*x[2]));r:=sqrt(26-10*cos(y1));t:=z+2*(y1-y0)/3.0/3.14;b:=arccos((r*r+24)/(10*r));y2:=3.14-a-b;a:=arccos((r*r+x[2]*x[2]-x[1]*x[1])/(2*r*x[2]));fx:=fx+(y2-t)*(y2-t)*3.14/60.0;end;end;end;procedure ggx; //约束函数beginwith form1.sumt do begingx[1]:=x[1]*x[1]+x[2]*x[2]-1.414*x[1]*x[2]-16.0;gx[2]:=36.0-x[1]*x[1]-x[2]*x[2]-1.414*x[1]*x[2];gx[3]:=-x[1];gx[4]:=-x[2];gx[5]:=6-x[1]-x[2];gx[6]:=x[1]-x[2]-4;gx[7]:=x[2]-x[1]-4;end;end;procedure hhx; //约束函数beginwith form1.sumt do beginhx[1]:=x[1];end;end;End.●参数数输入窗口:●连杆问题存档资料:常用优化方法——惩罚函数法^^^^^^^^^^^^^^^^^^^^^^^^^^一、初始数据====================================================================== =========设计变量个数N = 2-----------------------------------------------------------------------------不等式约束个数KG = 7 等式约束个数KH = 0-----------------------------------------------------------------------------惩罚因子R = 4.41942089203984 惩罚因子降低系数 C = 0.2-----------------------------------------------------------------------------初始步长T0 = 0.01 收敛精度EPS = 0.0001-----------------------------------------------------------------------------无约束优化方法:-----------------------------------------------------------------------------设计变量初始点X0:X[1]=4X[2]=4-----------------------------------------------------------------------------设计变量下界BL:BL[1]=0BL[2]=0-----------------------------------------------------------------------------设计变量上界BU:BU[1]=10BU[2]=10-----------------------------------------------------------------------------初始点目标函数值F(X0)= 3355.25624403039-----------------------------------------------------------------------------初始点处的不等约束函数值G(X0):GX[1]= -6.624000E+00GX[2]= -1.862400E+01GX[3]= -4.000000E+00GX[4]= -4.000000E+00GX[5]= -2.000000E+00GX[6]= -4.000000E+00GX[7]= -4.000000E+00-------------------------------------------------------------------------------二、计算过程__数据====================================================================== =========IRC = 0 R = 4.419421E+00 PEN = 3362.83720242824-----------------------------------------------------------------------------IRC = 1 R = 8.114894E-01 PEN = 3332.21039499842-----------------------------------------------------------------------------三、优化结果__数据====================================================================== =========罚函数构造次数IRC = 2-----------------------------------------------------------------------------无约束优化方法调用次数ITE = 5 一维搜索方法调用次数ILI = 11-----------------------------------------------------------------------------惩罚函数值计算次数NPE = 76 目标函数值计算次数IFX = 0-----------------------------------------------------------------------------设计变量最优点X*:X[1]= 4.868133E+00X[2]= 1.650658E+00-----------------------------------------------------------------------------最优值F(X*)= 3308.87943922349-----------------------------------------------------------------------------最优点处的不等约束函数值G(X*):GX[1]= -9.389790E-01GX[2]= -1.785757E+00GX[3]= -4.868133E+00GX[4]= -1.650658E+00GX[5]= -5.187906E-01GX[6]= -7.825248E-01GX[7]= -7.217475E+00---------------------------------------------------------------------------------- STOP ---(四)自选工程问题例6-7 试求点集A (x 1,x 2,x 3)和点集B (x 4,x 5,x 6)之间的最短距离。