合肥工业大学机械优化设计大作业

更新时间:2024-02-03 11:52:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

合肥工业大学

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

研究报告

班 级: 11级机设 学 号: 2011 姓 名:

授课老师: 王卫荣 日 期: 2014年 4月日

一、研究报告内容:

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

黄金分割法要求插入点α1、α2的位置相对于区间{a,b}两端点具有对称性,

α1=b?λ b?a

α2=a+λ(b?a)

除对称要求外,黄金分割法还要求在保留下来的区间内再插入一点所形成的区间新三段,与原来区间的三段具有相同的比例分布。设原区间(a,b)长度为1,保留下来的区间(a, α2)长度为λ,区间缩短率为λ。为了保持相同的比例分布,新插入点α3应在λ(1-λ)位置上,α1在原区间的1-λ位置应相当于在保留区间的λ2位置。故有 1-λ=λ2 即 λ2+λ-1=0 取方程正数解,得

5?1

λ=≈0.618

2

0.618法C语言程序:

#include #include

float m=0.618; float fun(float t) {float y; y=cos(t); return y; } main()

{ float a,b,eps;

printf(\

scanf(\ printf(\

scanf(\ float t1,t2,t,f1,f2,min; printf(\

scanf(\ while((b-a)/b>=eps) { t1=a+(1-m)*(b-a); t2=a+m*(b-a); f1=fun(t1); f2=fun(t2);

if(f1>=f2) { a=t1; t1=t2; f1=f2; t2=a+m*(b-a);

f2=fun(t2); }

else { b=t2;

t2=t1;

输入函数下限% 输入函数上限%

输入精度%

f2=f1;

t1=a+(1-m)*(b-a); f1=fun(t1);

} }

t=(a+b)/2; min=fun(t);

printf(\最优点t=%f\\n\输出最优点t% printf(\最优值f= %f\\n\输出最优值f%

1.Y= cos(t)

2.y= (t-2)*(t-2)+3

2.单位矩阵程序作业

程序如下所示:

#include \void main (void) {

int i,j; int n; int a=1; int b=0;

printf(\阶数n=\ scanf(\ for(i=1;i<=n;i++) {

for (j=1;j<=n;j++) if(i==j)

printf(\

}

}

else

printf(\printf(\

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

一、连杆机构问题: 问题描述:

图1

现优化一曲柄连杆机构,如图1所示,已知曲柄长度L1为44mm,机架长度L4为220mm,,要求当曲柄的转角在[φ0,φ0+π/2 ]时,对应的摇杆的输出角为Ψi,且两者满足对应函数关系Ψi=Ψ0+ ( φ0 - φi )2,φ0和Ψ0分别对应于四连杆在初始位置时曲柄和摇杆的位置角。要求机构传动角的范围是[π/4 ,3π/4 ],优化该问题使得从动件的一系列实际输出角与期望实现函数Ψ=f(φ)的值的平方偏差之和最小。

模型建立

1、设计变量

曲柄摇杆机构按照原动件和从动件的对应关系可知其有5个独立参数,对于图1分别为曲柄长度L1,连杆长度L2,摇杆长度L3,机架长度L4,曲柄初始角φ0和摇杆的初始角Ψ0,由于L1和L4已知,

且由图1的几何关系知:

所以φ0和Ψ0已不再是独立参数,而是杆长的函数。经上分析独立变量只有L2和L3。因此,选择连杆长度L2和摇杆长度L3作为设计变量。 即:X = [L2 L3]T = [X1 X2]T

2、目标函数

图2

图3

由上面图2和图3中机构的几何关系可得如下的运动规律:

S为角度区间的分段数;Ψsi为机构的实际输出角,计算式为:

Ψsi =

根据图中的角度关系求得:

所以根据本机构设计问题,以机构实际输出角Ψsi与理论输出角Ψi的平方偏差最小原则来建立目标函数。

优化目标函数表达式:

3、约束条件

根据已知条件,该机构的约束条件有两方面:一是传动运动过程中的传

动角应大于45度且小于135度;二是保证四杆机构满足曲柄存在条件。

(1) 保证传动角约束

图4

图5

根据图4和图5中机构处于最大传动角和最小传动角时的连杆几何关系,由余弦定理知

将L2=X1,L3=X2,L1=44,L4=220代入上面两式得

(2)、曲柄存在条件

由机械原理的知识可知,曲柄存在的条件为:

将已知的杆长和设计变量代入上述条件得:

经分析上述杆长条件不起约束作用,实际起作用的约束只g1(X)和g2(X),所以最终的数学模型为:

优化设计

1、程序运行结果

Command Window:

Workspace:

根据程序运行结果可知,exitflag的值为1,说明目标函数收敛到局部最优解,优化效果较为理想,此时目标函数f的值为0.0121rad2,连杆的长度为181.5602mm,摇杆的长度为102.4337mm。

2、结果分析

当曲柄在[φ0,φ0+ ]范围内转动时,摇杆输出角与期望实现函数Ψ=f

(φ)的平方偏差值之和最小为0.0121rad2,最优点位于约束条件g2(X)=0上。

二、桁架优化实例

1、问题

如图所示,为某一特殊桁架的一部分,杆2距O点40cm处有一支点C。为了固定桁架,现欲在杆1和2上设置支点A和B,用来连接杆3(可拆卸)。已知当桁架固定时,杆1和2成60度角;而且,杆1右边有一段长为25cm的重要部位,不能设置支点。卸去杆3、收起桁架时,支点A的位置不能高于BC段中点D。求取支点A、B的位置,使得杆3的长度尽量小,以节省材料。

图1 桁架结构示意图

2、数学模型

设A、B两点距离O点的长度分别为x1和x2,而桁架固定时杆1和2成60

2?x1x2。 度角。所以杆3的长度为l3?x12?x2由图1可知,x1?25且x1?1(x2?40),即?x1?25?0且2x1?x2?40?0。 222设X?[x1,x2]T,取f(X)?l3。因此,数学模型为: ?x12?x2

2?x1x2 极小化目标函数:minf(X)?x12?x2约束条件:

g1(X)??x1?25?0 g2(X)?2x1?x2?40?0

3、求解数学模型

外点罚函数法求解

构造外点法罚函数,如下:

2?(X,M(k))?x12?x2?x1x2?M(k){[(max(25?x1,0)]2?[max(2x1?x2?40,0)]2}

程序流程图如图2所示:

给定X(0)、M(0)、c、? k=0 i=0 k=k+1 求??(X)与Hessian矩阵H(X(i)) (i)i=i+1 X(0)?X*(M(k)) M(k?1)?cM(k) X(i?1)?X(i)?[H(X(i))]?1??(X(i))||??(X(i))||?? Y N 牛顿法求min?(X,M(k))的极 X(M*(k))?X(i)值点X(M*(k)) ||X*(M(k))?X(M(k?1))||??N | f[X*(M(k))]?f[X*(M(k?1))]|??*(k?1)f[X(M)]Y 输出X和*f(X*) 结束

图2 外点罚函数法程序流程图

程序步骤:

①选择适当的初始罚因子M(0)、初始点X(0)、收敛精度?和罚因子系数c。在本程序中分别取M(0)?1,X(0)?[25,20],??10?6,c=8。令迭代步数k=0。 ②采用牛顿法求无约束问题min?(X,M(k))的极值点X*(M(k))。

③检验迭代终止准则,若满足

||X(M*(k))?X(M(k?1)f[X*(M(k))]?f[X*(M(k?1))])||?? 及 ||?? *(k?1)f[X(M)]则停止迭代计算,输出最优点X*?X*(M(k));否则,转入步骤④。

④取M(k?1)?cM(k),X(0)?X*(M(k)),k=k+1,转入步骤②继续迭代。 具体程序请看附一。 运行结果:

X*=[25.0000,10.0000] f(X*)=475.0000

因此,A、B两支点与O的距离分别为25cm、10cm,杆3的最小长度为475cm。

目标函数曲线图与目标函数等值线图分别如图3和图4所示。优化路径如图4所示。

图3 目标函数曲线图

图4 目标函数等值线图

4、结论分析

罚因子系数c对外点罚函数法的影响

本次程序中,c取值为8,运行步数k=11。若取c=4,则运行步数k=16;取c=16,则运行步数k=9;取c=32,则运行步数k=8;取c=64,则运行步数k=7。由此可知,罚因子系数c的大小会影响程序的迭代次数k。c的值取得越大,运行步数k越小,程序收敛速度越快,效率越高。但对于c的其他一些取值,如5、7、9等,会导致罚函数形态变坏,使迭代出现问题,导致程序运行失败。因此,需选取合适的罚因子系数c。 附程序:

close all clear all clc

syms x1 x2 M; %M为罚因子。 m(1)=1;

c=8; %c为递增系数。赋初值。 a(1)=25;

b(1)=20;

f=x1^2+x2^2-x1*x2+M*((25-x1)^2+(2*x1-x2-40)^2); %外点罚函数 f0(1)=200;

%求偏导、Hessian元素 fx1=diff(f,'x1'); fx2=diff(f,'x2'); fx1x1=diff(fx1,'x1'); fx1x2=diff(fx1,'x2'); fx2x1=diff(fx2,'x1'); fx2x2=diff(fx2,'x2');

%外点法M迭代循环

for k=1:100 x1=a(k);x2=b(k);M=m(k); %牛顿法求最优值

for n=1:100 f1=subs(fx1); %求解梯度值和Hessian矩阵 f2=subs(fx2); f11=subs(fx1x1); f12=subs(fx1x2); f21=subs(fx2x1); f22=subs(fx2x2);

if(double(sqrt(f1^2+f2^2-f1*f2))<=1e-6) %最优值收敛条件

a(k+1)=double(x1);b(k+1)=double(x2);f0(k+1)=double(subs(f)); break; else

X=[x1 x2]'-inv([f11 f12;f21 f22])*[f1 f2]'; x1=X(1,1);x2=X(2,1); end end

if(double(sqrt((a(k+1)-a(k))^2+(b(k+1)-b(k))^2-(a(k+1)-a(k))*

(b(k+1)-b(k))))<=1e-6)&&(double(abs((f0(k+1)-f0(k))/f0(k)))<=1e-6) %罚因子迭代收敛条件

%输出最优点坐标,罚因子迭代次数,最优值 a(k+1) b(k+1) k f0(k+1) break; else

m(k+1)=c*m(k); end end

% 绘制目标函数曲线图 xx1=0:0.5:50; xx2=0:0.5:50; for i=1:length(xx1) for j=1:length(xx2)

if( (2*xx1(i)-xx2(j)-40<=0) && (25-xx1(i)<=0) ) Z(i,j)=xx1(i)^2+xx2(j)^2- xx1(i)* xx2(j); else

Z(i,j)=0; end end end figure(1); surf(xx1,xx2,Z); axis([0 50 0 50 0 2500]) title('目标函数曲线图'); xlabel('x1'); ylabel('x2');

%绘制目标函数等值线图,并画出优化路径 figure(2); x11=-5:0.5:35; x12=-5:0.5:35;

[xx11,xx12]=meshgrid(x11,x12); F=xx11^2+xx12^2- xx11* xx12; axis([-5 50 -5 50]); contour(xx11,xx12,F); title('目标函数等值线'); xlabel('x1'); ylabel('x2'); hold on

plot(a,b,'r+-');%绘制优化路径

自行选择小型机械设计问题或其他工程优化问题;

某航空公司每天有三个航班服务于A, B, C, H四个城市,其中城市H是可供转机使用的, 三个航班的出发地-目的地分别为AH, HB, HC,可搭乘旅客的最大数量分别为120人, 100人, 110人, 机票的价格分头等舱和经济舱两类. 经过市场调查,公司销售部得到了每天旅客的相关信息, 见表1. 该公司应该在每条航线上分别分配多少头等舱和经济舱的机票? 出发地-目的地 头等舱 头等舱 经济舱 经济舱 需求/人 价格/元 需求/人 价格/元 AH 33 190 56 90 AB(经H转机) 24 244 43 193 AC (经H转机) 12 261 67 199 HB 44 140 69 80 HC 16 186 17 103 问题分析

公司的目标应该是使销售收入最大化, 由于头等舱的机票价格大于对应的经济舱的机票价格, 于是想到先满足所有头等舱的顾客需求: AH 上的头等舱数量为33+24+12=69; HB上的头等舱数量为24+44=68; HC上的头等舱数量为12+16=28;

这种贪婪算法是否一定得到最好的销售计划? 模型建立

设起终点航线i (i=1,2,…,5) 上销售的头等舱机票数为xi ,销售的经济舱机票数为yi , 这就是决策变量. 目标函数

Max Z=190x1+90y1+244x2+193y2+261x3+199y3+140x4+80y4+186x5+103y5

约束条件

(1) 三个航班上的容量限制:

例如, 航班AH上的乘客应当是购买AH, AB, AC机票的所有旅客, 所以

x1 ??x2 ??x3 ??y1 ??y2 ??y3 ??120,

同理, 有 x2 ??x4 ??y2 ??y4 ??100,

x3 ??x5 ??y3 ??y5 ??110.

(2) 每条航线上的需求限制:

0 ??x1 ??33, 0 ??x2 ??24, 0 ??x3 ?12, 0 ??x4 ??44, 0 ??x5 ?16, 0 ??y1 ??56, 0 ??y2 ??43, 0 ??y3 ??67, 0 ??y4 ??69, 0 ??y5 ?17.

线性规划模型

Max Z=190x1+90y1+244x2 +193y2+261x3+199y3+140x4+80y4+186x5+103y5

x1+x2+x3+y1+y2+y3?120 x2+x4+y2+y4?100 x3+x5+y3+y5?110 0?x1?33,0?x2?24,

0?x3 ?12, 0?x4?44, 0?x5?16 0?y1 ?56, 0?y2?43, 0?y3?67 0?y4?69, 0?y5?17

通过计算求得最优解为:

航线AH, AB, AC, HB, HC上分别销售33, 10, 12, 44, 16张头等舱机票, 0,0,65,46,17 张经济舱机票, 总收入为39344元.

4、写出课程实践心得体会,

在学习机械优化设计前,感觉优化只不过是高数中的求一阶、二阶甚至三阶导数然后求极值罢了。没想到优化设计是如此庞大、系统的一门课程,有如此多的优化方法,各有各的优点,适用于不同的问题。总的看来机械优化设计是以数学理论为基础,只要打下扎实的数学功底,哪些看起来复杂的公式,只要静下来读两遍其实也没什么,知识基本的数学计算过程。很多优化方法只存在理论上的可能性,在

实际问题中应用却不是很广,但它们推动了优化方法的发展。现在的优化过程主要还是靠计算机来完成,计算机速度快,精度高,存储信息量大,适用于现代大型工程问题。

很多工程问题的优化程序大同小异,为了方便工程技术人员在设计、开发中缩短周期,提高经济性,相关部门建立了优化设计程序库,这将优化设计提升到了一个新的高度,而我们的老师王卫荣也为此做出了贡献,作为他的学生,我感到很自豪。

现代市场竞争激烈,一个企业能否生存不仅仅取决于它生产的产品的质量好坏,还要取决于很多因素,其中优化就在其中起到了重要的作用,它能让企业在最短的时间内,以最低成本获取最大的利益。

在我们以后的工作、科研生涯中,肯定会遇到种种需要用到机械优化设计知识的问题,只有现在把基础打好,以后才能在处理问题时更加轻松。我们现在学的只是九牛一毛,而且机械优化设计还在不断地丰富和发展,因此我们也不断学习新知识,并尝试将优化知识应用到实际的问题中。

5、为响应学校2014年度教学工作会议的改革要求,探索新的课程考核评价方法,特探索性设立一开放式考核项目,占总成绩的5%。试用您自己认为合适的方式(书面)表达您在本门课程学习方面的努力、进步与收获。

一开始接触这门课,感觉有点像是数学课,随着慢慢地深入地学习,感觉这门课很有意思,没想到优化有如此丰富的内容,我也下定决心要学好这门课,为此,我做出了以下努力:

(1) 当了解到这门课与数学的关系如此紧密,我便及时将相关

的数学知识复习了一边,包括函数的高阶导数,矩阵的运算和逆矩阵的求解,,,,,,这样更有利于学习优化理论, (2) 上课前,我回提前做好预习工作,对于不理解的问题,上

课要留心,上课时,认真做好笔记,跟着老师的思路走,果然,这样的方法非常高效。

(3) 课后,对于老师布置的作业及时完成,并认真地温习课本,

对于课本上一些老师没讲的内容,我也会去自主地学习一般,学完感觉对优化的认识更加系统,搞清楚来龙去脉,将很多零散的知识联系起来,受益匪浅!

(4) 因为现代很多优化问题主要靠计算机来完成,所以必须要

掌握一定的计算机操作技术。为此我学习复习了一些C语言知识并验证了一些程序,我还复习了一些MATLAB中的一些基础操作。同时,我还去找了一些有关优化的论文,看看目前优化技术的发展状况。

学习了机械优化设计之后,我的进步、收获主要有以下几点: (1) 系统地了解了优化的相关知识,具备了一些基本的优化

能力。

(2) 能够将数学中的理论知识运用到实际的问题中,解决了一

些简单的工程实例问题,为以后的工作、科研生涯打下扎实的基础。

(3) 复习了相关的数学、C语言编程知识。

本文来源:https://www.bwwdw.com/article/p3tw.html

Top