机械优化设计大作业长江大学Word文件下载.docx
《机械优化设计大作业长江大学Word文件下载.docx》由会员分享,可在线阅读,更多相关《机械优化设计大作业长江大学Word文件下载.docx(11页珍藏版)》请在冰点文库上搜索。
s.t2x1+x2+5x3=20
x1,x2≥0
程序清单如下:
f=[1,1,1];
A=[-1,-2,-3];
Aeq=[2,1,5];
b=[-15];
beq=[20];
lbnd=[0,0];
[x,minf]=linprog(f,A,b,Aeq,beq,lbnd,[])
程序运行结果整理:
x1=0.0000
x2=2.1429
x3=3.5714
minf=5.7143
解法二:
构造新的函数求解
由2x1+x2+5x3=20可知x3=
所以f=x1+x2+x3=x1+x2+=﹣x1+x2+4
令F=5(f-4)=3x1+4x2,则可行域可化为:
-x1-2x2-3x3≤-15x1-7x2≤-15
s.t2x1+x2+5x3=20s.t
x1,x2≥0x1,x2≥0
所以欲求minf即求minF
f=[3,4];
A=[1,-7];
[x,minF]=linprog(f,A,b,[],[],lbnd,[])
x1=0.0000;
x2=2.1429
minF=8.5714
因此minf=+4=+4=5.7143
解法三:
将解法二的可行域转化
x1-7x2≤-15x1-7x2≤-15
s.t-x1≤0
x1,x2≥0-x2≤0
此时不等式的约束关系可表示为:
1-7x1-15
-10≤0
0-1x20
A=[1,-7;
-1,0;
0,-1];
b=[-15,0,0];
[x,minF]=linprog(f,A,b)
注:
Ⅰ.由以上三种方法的运行结果可知,三种方法均可行。
此处用三种方法解答主要是为了体现线性规划函数linprog的用法,其用法及语法规则归纳如下:
①x=linprog(f,A,b)返回值x为最优解向量;
②x=linprog(f,A,b,Aeq,beq)作有等式约束的问题。
若没有不等式约束,则令A=[]、b=[]。
③x=linprog(f,A,b,Aeq,beq,lbnd,ubnd,x0,options)中lbnd,ubnd分别为变量x的下界和上界,x0为初值点,options为指定优化参数进行最小化。
④Options的参数描述:
Display显示水平。
选择’off’不显示输出;
选择’Iter’显示每一步迭代过程的输出;
选择’final’显示最终结果。
Ⅱ.在求解线性规划问题minf和maxf时,要将其可行域化为标准形式,matlab优化工具箱中的函数都是用来求函数极小值的,若求解maxf,则要把c向量取目标函数系数的相反数,这样得到的最优解才是maxf的最大值。
2.
解:
首先将目标函数化为标准形式:
x1-2Tx1
minf=(x1,x2)+
1x2-6x2
H=[,
c=[-2,-6];
A=[1,1;
-1,2;
2,1];
b=[2,2,3];
Aeq=[];
beq=[];
LBnd=[0,0];
UBnd=[];
[X,fval]=quadprog(H,c,A,b,Aeq,beq,LBnd,UBnd)
x1=0.6667
x2=1.3333
fval=-8.2222
所以minf=-8.2222
3.由两根实心圆杆组成对称的两杆桁架,其顶点承受负载2p=500000N,两支座之间的水平距离2L=160cm,杆的密度ρ=7800kg/m3,弹性模量为E=2.1×
105MPa,许用压应力σy=420MPa。
求在桁架压应力不超过许用压应力和失稳临界应力的条件下,使桁架重量最轻的桁架高度h及圆杆直径d。
令d=x
(1),h=
(2)
桁架杆的截面积:
;
桁架杆的总质量为:
负载2P作用在每根杆上的分力为:
==;
∴杆截面的应力为==;
此应力要求小于材料的屈服强度,即同时,由材料力学知:
杆中的应力应小于等于压杆稳定的临界应力。
杆的压杆稳定的临界应力==
其中惯性矩,A=
∴
∴压杆稳定约束-≥0
综上得:
建立桁架杆质量最轻的最优设计问题的数学问题
minf=xπρx
≤0
-≤0
d≥0
h≥0
①建立目标函数,编写M文件:
liu01
functionf=liu01(x)
f=0.5*pi*7800*x
(1)^2*sqrt(0.64+x
(2)^2);
②建立约束条件,编写M文件:
liu02
function[c,ceq]=liu02(x)
c=[4*250000*sqrt(x
(2)^2+0.64)/(pi*x
(2)*x
(1)^2*420*10^6)-1;
4*250000*sqrt(x
(2)^2+0.64)/(pi*x
(2)*x
(1)^2)-pi^2*220.5*10^6*x
(1)^2/(8*(x
(2)^2+0.64))];
ceq=[];
③编写运行程序M文件:
liu03
x0=[0.01;
0.01];
A=[];
b=[];
VLB=[00];
VUB=[];
[x,fval]=fmincon('
liu01'
x0,[],[],[],[],VLB,VUB,'
liu02'
)
x
(1)=0.2139
x
(2)=0.4000
fval=501.3752
∴当桁架杆直径d=0.2139m,桁架杆高度h=0.4000m时,桁架杆的总质量最轻,且最轻的质量为501.3752Kg。
注意:
此题数学式子较长,在编写文件时要仔细校对保证输入的式子正确。
因在此题中h和d均在分母上,故初始迭代点X0不能为[0;
0],不然会出现dividebyzero的错误。
4.已知:
制造一体积为100m3,长度不小于5m,不带上盖的箱盒,试确定箱盒的长x1,宽x2,高x3,使箱盒用料最省。
由题知:
x1x2x3=100
Ⅰ、以长x1、宽x2的长方形面为盖
建立目标函数:
minS=x1x2+2x2x3+2x1x3
x1≥5
x2,x3≥0
该题属于有约束非线性最优化问题
1建立目标函数,编写M文件:
liu04
functionf=liu04(x)
f=x1*x2+2*x2*x3+2*x1*x3
2建立约束条件,编写M文件:
liu05
function[c,ceq]=liu05(x)
c=[5-x1;
-x2;
-x3];
ceq=x1*x2*x3-100;
3编写运行程序M文件:
liu06
x0=[5;
1;
1];
VLB=[500];
[x,fval]=fmincon(‘liu04’,x0,A,b,Aeq,beq,VLB,VUB,’liu05’)
程序运行结果:
x1=5.8480
x2=5.8481
x3=2.9240
minS=102.5986
所以当长为5.8480m、宽为5.8481m、高为2.9240m时,箱盒用料最省,最少为102.5986m2。
Ⅱ、以宽x2高x3的长方形为盖,则:
建立目标函数minS=x2x3+2x1x2+2x1x3
编写M文件的具体步骤同上
x1=5.0000
x2=4.4721
x3=4.4721
minS=109.4427
所以当长为5.000m、宽为4.4721m、高为4.4721m时,箱盒用料最省,最少为109.4427m2。
综上知:
当以长x1、宽x2的长方形面为盖时,箱盒用料最省,最少为102.5986m2。
由于matlab是基于C语言的数学软件,故其要符合C语言的基本语法规则,在具体编写M文件过程中,要注意中英文输入法的切换。
M文件的标点符号必须是英文状态下输入的,这一点要引起足够重视,不然在编程过程中会遇到自己想不通的问题。
5、
①将目标函数写成符合C语言格式的表达式,编写M文件:
liu07
functionf=liu07(x)
f=exp(x
(1))*(4*x
(1)^2+2*x
(2)^2+4*x
(1)*x
(2)+2*x
(2)+1);
liu08
function[c,ceq]=liu08(x)
c=[x
(1)*x
(2)-x
(1)-x
(2)+1.5;
-x
(1)*x
(2)-10];
4编写运行程序M文件:
liu09
x0=[0;
0];
VLB=[];
liu07'
x0,A,b,Aeq,beq,VLB,VUB,'
liu08'
x1=1.1825
x2=-1.7398
minf=3.0608
心得体会
在这次课下做这些题目的过程中,遇到了许多困惑。
从最开始的熟悉matlab软件,直到完成本次作业,我收集了大量资料,去图书馆借了matlab的参考书。
渐渐的对matlab软件用来解决工程实际问题有了一个初步认识,因其具有强大的数学计算功能,所以该款软件对于我们以后从事机械设计工作而言具有举足轻重的作用。
在目前本科阶段,由于受到学时限制,所以学精通还具有较大的困难。
在具体的学习中,我逐渐了解到matlab这款数学软件加入了C,FORTRAN,C++,JAVA的支持。
因此,对于我们学习过C语言的工科学生来说,便于理解其函数调用规则和原理。
因为工程问题十分复杂,所以有些工程问题仅仅只用其系统自带的解析方法是不够的。
因此,在以后的深入学习过程中,还要求我们慢慢学会去针对具体复杂工程问题的二次开发,然而这要求我们对于C语言掌握较好。
在具体写word文档的过程中,因公式和上下标较多,故敲起来非常麻烦。
有时心烦的时候就曾想过放弃,觉得太麻烦了。
但尔后转念一想,这也不正是在学习word文档吗?
倘若这时放弃了,在以后工作中说不准就会遇到要敲大量数学公式的word文档。
因此,现在多付出一点也是为以后轻松一些。
当初选这门课程时,原以为是学习怎样优化设计机械零件。
真正走进课堂后,才知道其实质是学习数学中的优化算法来解决工程中的实际问题。
虽然上课的课时较少,但在课下做作业的过程中,我对于matlab的一些基本语法和数学函数有了一个大致认识。
在此次完成作业的过程中,我觉得最重要的是提高了自己的自学能力,虽然在这过程中很苦很累,但觉得很值!