合肥工业大学《机械优化设计》课程实践报告.docx

上传人:b****3 文档编号:5271440 上传时间:2022-12-14 格式:DOCX 页数:19 大小:891.29KB
下载 相关 举报
合肥工业大学《机械优化设计》课程实践报告.docx_第1页
第1页 / 共19页
合肥工业大学《机械优化设计》课程实践报告.docx_第2页
第2页 / 共19页
合肥工业大学《机械优化设计》课程实践报告.docx_第3页
第3页 / 共19页
合肥工业大学《机械优化设计》课程实践报告.docx_第4页
第4页 / 共19页
合肥工业大学《机械优化设计》课程实践报告.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

合肥工业大学《机械优化设计》课程实践报告.docx

《合肥工业大学《机械优化设计》课程实践报告.docx》由会员分享,可在线阅读,更多相关《合肥工业大学《机械优化设计》课程实践报告.docx(19页珍藏版)》请在冰豆网上搜索。

合肥工业大学《机械优化设计》课程实践报告.docx

合肥工业大学《机械优化设计》课程实践报告

合肥工业大学

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

研究报告

 

班级:

学号:

姓名:

授课教师:

日期:

2016年11月7日

 

作业要求

1、λ=0.618的证明、一维搜索程序作业;

2、单位矩阵程序作业;

3、注释最佳再现给定运动规律连杆机构优化设计问题模型子程序;

4、连杆机构问题+自行选择小型机械设计问题或其他工程优化问题;

(1)分析优化对象,根据设计问题的要求,选择设计变量,确立约束条件,建立目标函数,建立优化设计的数学模型并编制问题程序;

(2)选择适当的优化方法,简述方法原理,进行优化计算;

(3)进行结果分析,并加以说明。

5、写出课程实践心得体会,附列程序文本。

 

一、λ=0.618的证明、一维搜索程序作业

1、0.618法的基本思想

“0.618法”,又称为黄金分割法,是常用的一种一维搜索试探方法,适用于

区间上的任何单调函数求极小值问题。

0.618法是建立在区间消去法原理基础上的试探方法,即在搜索区间

内适当插入两点

,且

,如下图所示。

通过比较函数值

的大小,应用函数的单调性,可得出以下两种情况:

1)若

,则取

为缩短后的区间。

2)若

,则取

为缩短后的区间。

然后在保留下来的区间上进行同样的处置,如此迭代下去,使搜索区间无限缩小,从而得到极小点的数值近似解。

 

2、关于0.618法中参数λ=0.618的证明

0.618法要求插入点

的位置相对于区间

两端点具有对称性,即

假设

,根据以上公式,得出分割后的区间如下图所示:

进行再次分割时,0.618法要求在保留下来的区间内再插入一点,所形成的区间新三段与原来区间的三段具有相同的比例分布。

假设保留下来的区间为

,区间长度为

为了保持相同的比例分布,根据以上公式计算,新插入点

应在

位置上,

在原区间的

位置相当于在保留区间的

位置。

所谓0.618法,就是使整段长与较长段的长度比值等于较长段与较短段长度的比值,即:

通过计算解得

若保留下来的区间为

,根据插入点的对称性,也能推得同样的

值。

3、一维搜索程序作业

0.618法的搜索过程如下:

1)给出初始搜索区间及收敛精度,将λ代入0.618。

2)按坐标点计算公式计算

,并计算其对应的函数值。

3)根据区间消去法原理缩短搜索区间。

4)检查区间是否缩短到足够小和函数值是否收敛到足够近,如果条件不满足,则返回第二步。

5)如果条件满足,取最后两实验点的平均值作为极小点的数值近似解。

 

程序框图如下:

根据以上思路,下面借助C++,运用0.618法求解正弦函数的极小值。

初始区间为

 

程序代码如下:

//0.618.cpp:

定义控制台应用程序的入口点。

#include"stdafx.h"

#include

#include

#include

#definePI3.1415926

usingnamespacestd;

floatmain()

{

floata=0,b=2*PI,t;//t为计算精度

floata1,a2,y1,y2,A,min;//A为极小点,min为所对应的极小值

floatr=0.618;

intp=0;//p为迭代次数

cout<<"请输入计算精度,如0.1:

";

cin>>t;

a1=b-r*(b-a);

a2=a+r*(b-a);

y1=sin(a1);

y2=sin(a2);

while(abs((b-a)/b)>=t||abs((y2-y1)/y2)>=t)

{

if(y1>=y2)

{

a=a1;

a1=a2;

y1=y2;

a2=a+r*(b-a);

y2=sin(a2);

}

else

{

b=a2;

a2=a1;

y2=y1;

a1=b-r*(b-a);

y1=sin(a1);

}

p++;

}

A=(a+b)/2;

min=sin(A);

cout<<"\n迭代次数为:

"<

cout<<"在【0,2π】区间内正弦函数的最小值为:

"<

system("pause");

return0;

}

 

程序运行结果如下

二、单位矩阵程序作业

Ø作业要求:

编写生成

阶单位矩阵的程序,要求维数

在程序运行时从键盘输入。

ØC++程序代码如下:

#include"stdafx.h"

#include

usingnamespacestd;

intmain()

{

inti,j,n;

inta[200][200];

cout<<"请输入n*n单位矩阵的阶数(n小于200):

";

cin>>n;

for(i=0;i

{

for(j=0;j

if(i==j)

a[i][j]=1;

else

a[i][j]=0;

}

cout<<"N";

for(i=0;i

{

cout.width(3);

cout<

}

cout<<"\n";

for(i=0;i

cout<<"---";

cout<<"\n";

for(i=0;i

{

cout.width

(2);

cout<

";

for(j=0;j

{

cout.width(3);

cout<

}

cout<<"\n";

}

system("pause");

return0;

}

Ø程序运行结果如下:

 

 

三、注释最佳再现给定运动规律连杆机构优化设计

问题模型子程序

Ø作业要求

对给定的最佳再现给定运动规律连杆机构优化设计问题模型子程序(FORTRAN语言)进行必要的注释。

Ø注释结果

连杆机构问题函数子程序

目标函数==============

SUBROUTINEFFX(N,X,FX)/定义目标函数(子函数)FFX/

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

DIMENSIONX(N)/定义一维数组X/

COMMON/ONE/I1,I2,I3,I4,NFX,I6/开辟公共区域ONE,其中有整型变量I1、I2、I3、I4、I6,实型变量NFX/

NFX=NFX+1

P0=ACOS(((1.0+X

(1))**2-X

(2)**2+25.0)/(10.0*(1.0+X

(1))))

Q0=ACOS(((1.0+X

(1))*+*2-X

(2)**2-25.0)/(10.0*X

(2)))

T=90.0*3.1415926/(180.0*30.0)将输入角30等份

FX=0.0

DO10K=0,30/DO语句实现循环功能,循环初值为0,终值为30/

PI=P0+K*T

QE=Q0+2.0*(PI-P0)**2/(3.0*3.1415926)

D=SQRT(26.0-10.0*COS(PI))

AL=ACOS((D*D+X

(2)*X

(2)-X

(1)*X

(1))/(2.0*D*X

(2)))

BT=ACOS((D*D+24.0)/(10.0*D))

IF(PI.GE.0.0.AND.PI.LT.3.1415926)THEN/IF条件语句:

若PI>0‘且’PI<π,则执行件/

QI=3.1415926-AL-BT/THEN块,条件满足选择此句/

ELSE

QI=3.1415926-AL+BT/ELSE块,条件不满足选择此句/

ENDIF/结束IF选择结构/

IF(K.NE.0.OR.k.NE.30)THEN

FX=FX+(QI-QE)**2*T

ELSE

FX=FX+(QI-QE)**2*T/2.0

ENDIF

10CONTINUE

END/程序停止运行/

不等约束=================

SUBROUTINEGGX(N,KG,X,GX)/计算不等式约束函数子程序GGX/

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

DIMENSIONX(N),GX(KG)/一维数组X、GX/

GX

(1)=1.0-X

(1)

GX

(2)=1.0-X

(2)

GX(3)=1.0-5.0

GX(4)=(1.0+X

(1))-(X

(2)+5.0)

GX(5)=(1.0+X

(2))-(X

(1)+5.0)

GX(6)=(1.0+5.0)-(X

(1)+X

(2))

GX(7)=-(1.4142*X

(1)*X

(2)-X

(1)**2-X

(2)**2)-16.0

GX(8)=-(X

(1)**2+X

(2)**2+1.4142*X

(1)*X

(2))+36.0/不等式约束条件GX

(1)、GX

(2)、GX(3)、GX(4)、GX(5)、GX(6)、GX(7)、GX(8)/

END/使程序停止运行/

等式约束=================

SUBROUTINEHHX(N,KH,X,HX)/计算等式约束函数子程序HHX/

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

DIMENSIONX(N),HX(KH)/定义一维数组X、HX/

X

(1)=X

(1)

END/使程序停止运行/

四、连杆机构问题+其他工程优化问题

1、连杆机构问题

设计一曲柄连杆摇杆机构,要求曲柄

转到

时,摇杆

的转角最佳再现已知的运动规律:

为极位角,其传动角允许在

范围内变化。

解:

1、设计变量的确定

已知

,根据余弦定理有:

因此,只有

为独立变量,则设计变量为

2、目标函数的建立

目标函数可根据已知的运动规律与机构实际运动规律之间的偏差最小为指标来建立,先假设在

间进行30等分,则可得目标函数的表达式:

式中:

 

3、约束条件的确定

曲柄存在的条件:

传动角要求:

 

4、优化计算结果

运用MATLAB编程求解:

●定义目标函数M文件

functionf=myobj(x)

f=0;%f为目标函数

Ao=acos(((1+x

(1))^2-x

(2)^2+25)/(10*(1+x

(1))));

%Ao--初始极位角,x

(1)--L2,x

(2)--L3

Bo=acos(((1+x

(1))^2-x

(2)^2-25)/(10*x

(2)));%Bo--初始位置角

forAi=Ao:

(pi/2)/30:

(Ao+pi/2)

%极位角Ai从Ao开始,分100等分,一直转到Ao+90°的角度

Bei=Bo+2*(Ai-Ao)^2/(3*pi);

%Bei为理想情况下曲柄每转过一个角度时,摇杆转过的角度

r=sqrt(26-10*cos(Ai));

m=acos((r^2+x

(2)^2-x

(1)^2)/(2*r*x

(2)));

n=acos((r^2+24)/(10*r));

if(Ai>=0&&Ai<=pi)

Bi=pi-m-n;

else

Bi=pi-m+n;

end

f=f+(Bi-Bei)^2;%Bi为曲柄每转过一个角度时,摇杆实际转过的角度

end

●定义非线性约束条件M文件

function[c,ceq]=mycon(x)

c=[acos((x

(1)^2+x

(2)^2-36)/(2*x

(1)*x

(2)))-135*(pi/180);

45*(pi/180)-acos((x

(1)^2+x

(2)^2-16)/(2*x

(1)*x

(2)))];

%c为非线性不等式约束(传动角要求)

ceq=[];%ceq为非线性等式约束(无)

●调用主程序

x0=[6,3];

A=[-10;0-1;-1-1;1-1;-11];

b=[-1;-1;-6;4;4];

[x,fval]=fmincon(@myobj,x0,A,b,[],[],[],[],@nonlcon)

 

程序运行结果如下:

通过MATLAB编程求解得到该问题的最优解为

 

2、其他工程问题:

运装计划:

某航空公司的运输机分前、后舱两部分装运客货,前舱容积为

,最大装载量为

,后舱容积为

,最大装载量为

今有客货两种,其单位体积及总重量如下表所示,表中还列出两种客货的运输单价。

装载时要求前后舱的载重量保持在

的比例,若货物一次装不完,剩下的货物可随其他客货第二次运出。

试为公司安排一个装货计划,使该次航班的收益最大。

货品

总重量/t

单位体积/(

运费/(元/t)

20

20

200

12

40

300

建立数学模型:

设a、b分别表示装载甲、乙货品的重量,下标1、2分别表示运输机的前、后舱。

根据题意,此问题的目标函数为:

按规定,运输机对装载重量和体积有要求,所以有下列约束条件:

装载货物的总重量不可能超过所需运输的货物总重量,且货物重量不能为负值,故:

同时,运输机要求前、后舱的载重量保持1:

1.5的比例:

转化为MATLAB的数学模型为:

运用MATLAB求解代码如下:

clear,clc

f=[-200;-200;-300;-300];

A=[1100;0011;1010;0101;200400;020040];

b=[20;12;10;15;160;320];

Aeq=[1.5-11.5-1];

beq=[0];

lb=zeros(4,1);

[x,fval]=linprog(f,A,b,Aeq,beq,lb)

 

求解结果如下:

结果显示:

时,可使该航班的收益最大,最大收益为4400元

 

五、课程实践心得体会

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1