利用Matlab求解机械设计优化问题的讲解

  • 格式:doc
  • 大小:62.79 KB
  • 文档页数:8

下载文档原格式

  / 8
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

利用MATLAB求解机械设计优化问题的分析

周婷婷

(能源与动力学院,油气0701)

摘要:MATLAB是目前国际上最流行的科学与工程计算的软件工具, 它具有强大的数值分析、矩阵运算、信号处理、图形显示、模拟仿真和最优化设计等功能。本文浅谈MATLAB在机械设计优化问题的几点应用。

关键词:MATLAB 约束条件机械设计优化

引言:在线性规划和非线性规划等领域经常遇到求函数极值等最优化问题,当函数或约束条件复杂到一定程度时就无法求解,而只能求助于极值分析算法,如果借助计算器进行手工计算的话,计算量会很大,如果要求遇到求解极值问题的每个人都去用BASIC,C和FORTRAN之类的高级语言编写一套程序的话,那是非一朝一日可以解决的,但如用MATLAB语言实现极值问题的数值解算,就可以避免计算量过大和编程难的两大难题,可以轻松高效地得到极值问题的数值解,而且可以达到足够的精度。

1无约束条件的极值问题的解算方法

设有Rosenbrock函数如下:

f(X1,X2)=100(X2-X1*X1)2+(1-X1)2

求向量X取何值时,F(x)的值最小及最小值是多少?

先用MATLAB语言的编辑器编写求解该问题的程序如下:

%把函数写成MATLAB语言表达式

fun=’100*(X(2)-X(1)*X(1)2+(1-X(1))2

%猜自变量的初值

X0=[-1 2]; %所有选项取默认值

options=[ ];

%调用最优化函数进行计算。

%函数最小值存放在数组元素options(8)中

%与极值点对应的自变量值存放在向量X里

%计算步数存放在数组元素options(10)中

[X,options]=fmins(fun,X0,options);

%显示与极值点对应的自变向量X的值。

%显示函数最小值

options(8)

%显示函数计算步数

options(10)

把上面这段程序保存为m文件,然后用“Tools”菜单中的“Run”命令行这段程序,就可以轻松的得到如下结果:

X=9.999908938395383e-001

9.99982742178110e-001

ans=1.706171071794760e-001

ans=195

显然,计算结果与理论结果的误差小到e-10级,这里调用了MATLAB的最优化函数fmins(),它采用Nelder-Mead的单纯形算法,就是因为这个函数的采用,使最小值问题的解算变得非常简单。

2.带约束条件的极值问题的解法

设目标函数和约束条件如下:

f(x) =-3X1+X2+X3

-X1+2X2-X3>= -11

4X1-X2-2X3<=-3

2X1-X3= -1

X1>=0,X2>=0,X3>=0;

求X向量取何值时函数取极小值?

对条件极值问题通常的做法都是将约束条件标准化(即把等式约束条件写成等号为0的形式,把不等式写成<=0的形式)。然后把条件极值问题转换为非条件极值问题,MATLAB也采用同样的做法。

下面是求解该问题的MATLAB语言程序。

funf =’f=-3*X(1)+X(2)+X(3);’%写出目标函数表达式。

fung=’g=[2*X(1)-X(3)+1;X(1)-2*X(2)+X(3)-11;4*X(1)-X(2)-2*X(3)+3];’%把约束条件标准化,写成向量函数。注意等式约束条件要放在前面。

fun=[funf ,fung] %把目标函数表达式和约束条件表达式合成一个向量函数。

X0=[101] %猜初值

options= [ ]

options[13]=1 %在options(13)中指定等式约束条件的个数。

vlb =zeros(1,3); %指定向量X的下界为0。

vub =[ ]; %对向量的上界不做要求。

[X,options]=constr(fun,X0,options,Vlb,Vlb); %调constr()函数%显示与极值点对应的X 向量值。

options(8) %显示极小值

options(10) %显示计算次数

g=[2*X(1)-X(3)+1;X(1)-2*X(2)+X(3)-11;4*X(1)-X(2)-2*X(3)+3] %显示约束条件表达式的取值。

运行这段MATLAB程序得到如下结果:

X=4.000000000000000e+000

1.00000000000000le+000

9.000000000000005e+000

ans=-1.99999999999999le+000

ans=17

g=-6.21724522790877e-015

1.77635683940025le-015

-1.421085471520200e-014

显然,计算结果是非常精确的,这里调用了MATLAB的最优化函数constr(),它是专门用来解算条件极值问题的。

3.机械优化设计应用实例

机械优化设计把数学规划理论与数值方法应用于设计中,用计

算机从大量可行方案中找出最优化设计方案,从而大大提高设计质

量和设计效率。MATLAB 具有解决线性规划和非线性规划、约束

优化和无约束优化问题的内部函数,因而可以完成这一功能。

现举一例:螺栓组联结的优化设计

如图4所示的压力容器螺栓组联接中,已知D 1= 400mm,D 2 =

250mm ,缸内工作压力为p=1.5 MPa ,螺栓材料为35号钢,σs =320Mpa,安全系数S=3,取残余预紧力Q ’p =1.6F,采用铜皮石棉密封垫片。现从安全、可靠、经济的角度来选择螺栓的个数n 和螺栓的直径d 。

3.1 设计问题分析

若从经济性考虑,螺栓数量尽量少些、尺寸小些,但这会使降低联结的强度和密封性,不能保证安全可靠的工作;若从安全、可靠度考虑,螺栓数量应多一些、尺寸大一些为好,显然经济性差,甚至造成安装扳手空间过小,操作困难。为此,该问题的设计思想是:在追求螺栓组联结经济成本最小化的同时,还要保证联结工作安全、可靠。

3 .2 设计变量 目标函数 约束条件

3.2 .1 设计变量 选取螺栓的个数n 和直径d(mm)为设计变量:

T 21T ]x [x ]d [n X ==

3.2 .2 目标函数 追求螺栓组联结经济成本C n 最小为目标。而当螺栓的长度、材料和加工条件一定时,螺栓的总成本与nd 值成正比,所以本问题优化设计的目标函数为

min F(X) = C n = n d = x 1x 2

① 强度约束条件 为了保证安全可靠地工作,螺栓组联结必须满足强度条件

][32.521σπσ≤=d Q

ca ; 其中Mpa S s 106.

3320][===σσ; n n p n D F F F F Q Q p πππ6093742505.16.246.26.26.12

22'

=⨯=⨯==+=+= N ;

对于粗牙普通螺纹:由文献[3]推荐,小径 d 1=0.85d 所以,强度约束条件为: