当前位置:文档之家› 《优化设计报告》.

《优化设计报告》.

《优化设计报告》.
《优化设计报告》.

(课程实践报告封面模版)

合肥工业大学

《机械优化设计》课程实践

研究报告

班级:机设六班

学号: 20100581

姓名:李继鑫

授课老师:王卫荣

日期: 2013年 5 月 7 日

(一)一维搜索 min f(x)=]10,0[]2,0[]32)2[(*cos *π???+-x d x c 注:其中c 、d 为待定系数,用于确定选择的函数是哪一个。 C 语言程序段如下:

#include

#include

#define p 3.14

float 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

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

{

for(j=0;j

{

if(i==j) printf("%3d",d);

else printf("%3d",c);

}

printf("\n");

}

}

●实验数据验证如下,取n=5得到5阶单位矩阵:

●取n=10得到10阶单位矩阵:

(三)连杆机构问题优化设计

修改程序实现过程如下:

unit sumt_fgh;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,Math; type

arr3 = array[1..55]of real;

type

TForm3 = class(TForm)

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

Procedure ffx;

Procedure ggx;

Procedure hhx;

implementation

uses 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;

begin

with form1.sumt do begin

fx:=0;

for i:= 1 to 30 do

begin

y0:=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; //约束函数

begin

with form1.sumt do begin

gx[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; //约束函数

begin

with form1.sumt do begin

hx[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]=4

X[2]=4

-----------------------------------------------------------------------------

设计变量下界BL:

BL[1]=0

BL[2]=0

-----------------------------------------------------------------------------

设计变量上界BU:

BU[1]=10

BU[2]=10

-----------------------------------------------------------------------------

初始点目标函数值F(X0)= 3355.25624403039

-----------------------------------------------------------------------------

初始点处的不等约束函数值G(X0):

GX[1]= -6.624000E+00

GX[2]= -1.862400E+01

GX[3]= -4.000000E+00

GX[4]= -4.000000E+00

GX[5]= -2.000000E+00

GX[6]= -4.000000E+00

GX[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+00

X[2]= 1.650658E+00

-----------------------------------------------------------------------------

最优值F(X*)= 3308.87943922349

-----------------------------------------------------------------------------

最优点处的不等约束函数值G(X*):

GX[1]= -9.389790E-01

GX[2]= -1.785757E+00

GX[3]= -4.868133E+00

GX[4]= -1.650658E+00

GX[5]= -5.187906E-01

GX[6]= -7.825248E-01

GX[7]= -7.217475E+00

-------------------------------------------------------------------------------

--- STOP ---

(四)自选工程问题

例6-7 试求点集A (x 1,x 2,x 3)和点集B (x 4,x 5,x 6)之间的最短距离。限制条件(改动)

X 12+x 22

+x 32≤4

(x 4_3)2+x 5

2≤1 4≤x6≤8

题毕 建立数学模型minf (x )=(x 1-x 4)2+(x 2-x 5)2+(x 3-x 6)

2 S.t. g1(x)=x 12+x 22+x 32-4≤0

g2(x)= (x 4_

3)2+x 52-0.64≤0 g3(x)=x 6-8≤0

g4(x)=4-x 6≤0

Delphi 语言的惩罚函数实现过程如下:

常用优化方法——惩罚函数法

^^^^^^^^^^^^^^^^^^^^^^^^^^

一、初始数据

===============================================================================

设计变量个数 N = 6

-----------------------------------------------------------------------------

不等式约束个数 KG = 4 等式约束个数 KH = 0

-----------------------------------------------------------------------------

惩罚因子 R = 1 惩罚因子降低系数 C = 0.2

-----------------------------------------------------------------------------

初始步长 T0 = 0.01 收敛精度 EPS = 0.001 -----------------------------------------------------------------------------

无约束优化方法:

-----------------------------------------------------------------------------

设计变量初始点 X0:

X[1]=1

X[2]=1

X[3]=1

X[4]=3

X[5]=0.7

X[6]=7

-----------------------------------------------------------------------------

设计变量下界BL:

BL[1]=-100

BL[2]=-100

BL[3]=-100

BL[4]=-100

BL[5]=-100

BL[6]=-100

-----------------------------------------------------------------------------

设计变量上界BU:

BU[1]=100

BU[2]=100

BU[3]=100

BU[4]=100

BU[5]=100

BU[6]=100

-----------------------------------------------------------------------------

初始点目标函数值F(X0)= 40.09

-----------------------------------------------------------------------------

初始点处的不等约束函数值G(X0):

GX[1]= -1.000000E+00

GX[2]= -1.500000E-01

GX[3]= -1.000000E+00

GX[4]= -3.000000E+00

-------------------------------------------------------------------------------

二、计算过程__数据

====================================================================== =========

IRC = 0 R = 1.000000E+00 PEN = 49.09

-----------------------------------------------------------------------------

IRC = 1 R = 2.000000E-01 PEN = 18.6748713054182

-----------------------------------------------------------------------------

IRC = 2 R = 4.000000E-02 PEN = 11.1881630924976

-----------------------------------------------------------------------------

IRC = 3 R = 8.000000E-03 PEN = 8.78866588701082

-----------------------------------------------------------------------------

IRC = 4 R = 1.600000E-03 PEN = 7.76901746798554

-----------------------------------------------------------------------------

IRC = 5 R = 3.200000E-04 PEN = 7.33007787175112

-----------------------------------------------------------------------------

IRC = 6 R = 6.400000E-05 PEN = 7.14793735472187

-----------------------------------------------------------------------------

IRC = 7 R = 1.280000E-05 PEN = 7.0620591272465

-----------------------------------------------------------------------------

IRC = 8 R = 2.560000E-06 PEN = 7.02128235779726

-----------------------------------------------------------------------------

三、优化结果__数据

====================================================================== =========

罚函数构造次数IRC = 9

-----------------------------------------------------------------------------

无约束优化方法调用次数ITE = 9 一维搜索方法调用次数ILI = 54

-----------------------------------------------------------------------------

惩罚函数值计算次数NPE = 262 目标函数值计算次数IFX = 0

-----------------------------------------------------------------------------

设计变量最优点X*:

X[1]= 1.311487E+00

X[2]= 8.433797E-06

X[3]= 1.509287E+00

X[4]= 2.200969E+00

X[5]= 3.394259E-06

X[6]= 4.000524E+00

-----------------------------------------------------------------------------

最优值F(X*)= 6.99743732000065

-----------------------------------------------------------------------------

最优点处的不等约束函数值G(X*):

GX[1]= -2.053107E-03

GX[2]= -1.549393E-03

GX[3]= -3.999476E+00

GX[4]= -5.238987E-04

-------------------------------------------------------------------------------

--- STOP ---

(五)感悟与心得

机械优化设计这门课乍学感觉就是一些列的数学,当然兴趣也不是很高,上课时老师所讲的更是没有深入进去听,理解方面也是不到位,对优化设计的理解仅仅限于单纯的数学问题。

然而,邻近的考试使我全面认真的研究机械优化设计这本书中的精髓,什么一维搜索的黄金分割,二次插值,最速下降法的牛顿法,共轭方向法的共轭梯度法,也有不依据导数值信息搜素最优点的复合形法,随机方向法,最具有吸引力字眼的就数惩罚函数啦!

王老师在第一节课就布置了一道四连杆问题,当时提出惩罚函数法,觉得什么都不懂,惩罚?咋惩罚?再学了惩罚函数的思想后知道是大概怎么回事,在报告中的机构四连杆问题就选中这个优化问题来研究。不过,就能力来书,让我独编写整段语言,我是做不到的,还好老师给我们了模板,按照help文件的提示,自己研究和百度,摸索了程序编制目标函数ffx。

以上,稍微一处不起眼的错误都导致整体的失败,可见在程序编写中要真正做到误差为零的要求,对于只学了c语言的我面对新的语言delphi,觉得更具方便性,但在一些语法如for循环中基本格式有几分相像之处,理解上稍微好一点。

通过各种问题优化方法的课堂学习,让自己知道面对一个实际的工程问题时只要知道方法的程序框图,就可以试着将其实现程序化,运用计算机的强大计算功能实现目标优化。我想这门课对于以后自己解决问题的能力是一次启蒙,同时也要求我注意将课本知识实践化,

才能真正体会到所学的东西值钱!!!

谢谢王老师!

相关主题
文本预览
相关文档 最新文档