《MATLAB优化设计实验ppt课件.ppt》由会员分享,可在线阅读,更多相关《MATLAB优化设计实验ppt课件.ppt(81页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、优化设计实验课件现代工程计算-MATLAB目录第1章MATLAB基础第2章优化计算第1 章 MATLAB 基础1.1MATLAB环境简介1.2数据表示1.3矩阵运算1.4MATLAB的图形系统简介1.5源文件(M文件)1.1 MATLAB窗口启动MATLAB其窗口如右1.1 MATLAB窗口1、CommandWindow(命令窗口)一行可写入一个或多个命令,命令之间用逗号或分号隔开,如果命令尾带分号将不显示该命令的执行结果;如果命令有返回结果,如果不赋给自定义变量,将默认赋给变量ans;变量还可有续行;最后用回车提交命令。命令窗口常用键键显示前个命令键显示后个命令Esc键取消输入Ctrl+x
2、剪切Ctrl+c 复制1.1 MATLAB窗口2、Workspace(工作区)程序运行中的自定义变量和默认变量都包含在工作区中。可通过工作区观察变量的大小、类型,双击变量名可查看数值大小。也可用who和whos命令查看3、CommandHistory(命令记录)记录了CommandWindow中的每一条命令,双击CommandHistory中的命令,即可重复那条命令。1.1MATLAB 的帮助系统 4.帮助命令:help文件名或函数名帮助菜单:演示命令:demo 总体看,matlab可以被视为一个计算工具、绘图工具、编程工具1.2 数据表示1.2.1数据类型有整型、实型、复型、字符串四种类型1
3、、常数1)整型常数:100102)实型常数:0.3.33.3914e-2(表示范围约10308)3)复型常数:12i3.56.18i13.2i4)字符串常数:MATLABIcantdo.(两个连写的单撇号表示一个单撇号)注意:没有逻辑型,但与C语言那样,非0为真,0为假 1.2.1 数据类型 2、变量变量用标识符表示(字母打头、字母、数字、下划线组成,长度19)。可以合法出现而定义。区分大小写字母,以当前值定义其类型。3、函数名函数名用标识符表示。4、特殊常数ANS、PI等。1.2.1 数据的输出格式 输出格式:SHORT按5位小数(含小数点、下同)输出LONG按15位小数(含小数点、下同)输
4、出SHORTe按5位小数、科学记数方式输出LONGe按15位小数、科学记数方式输出HEX按16进制输出1.2.1 数据的输出格式 在MATLAB中,数据的存储和运算都以双精度进行,但输出结果可指定格式。指定输出格式的方法有两种:1菜单命令法V6.1中,选择File中的Preferences命令,在General、CommandWindow等项目中设置。2使用Format命令法格式:Format格式串1.2.1 数据的输出格式 例如:formatlonge5/3ans=1.66666666666667e+000formatrat0.75ans=3/41.2.2 数组 1.2.2数组分为行向量、列
5、向量、矩阵。普通变量可看成11数组。1、创建数组的基本方法1)直接列表定义数组变量元素值1元素值2元素值n变量元素值1,元素值2,元素值n变量行1各元素;行2各元素;行n各元素例如:x=1234567890y=1,2,3,4,5,6,7,8,9,0z=1,2,3,4,5;2,3,4,5,6,71.2.2 数组 2)域表定义数组变量初值:增量:终值初值:终值变量(初值:增量:终值)常数例如:x=0:0.02:10y=1:80z=(1:0.1:7)*10e-51.2.2 数组 3)利用函数定义数组变量linspace(初值,终值,元素个数)如:x=linspace(0,pi,11)的结果为:x=C
6、olumns1through400.31420.62830.9425Columns5through81.25661.57081.88502.1991Columns9through112.51332.82743.14161.2.2 数组 2、数组的访问(一维)数组名表示全体元素数组名(k)表示第k元素数组名(k1:k2)表示第k1到k2元素数组名(k1:k2:k3)表示第k1、k1+k2、k1+2k2,到k3元素数组名(k1,k2,kn)表示第k1,k2,kn元素其中:kp也可为初值:终值或初值:增量:终值的形式。1.2.2 数组 例如:a=1:2:15则:13a(2)5a(3:5)7a(5:-
7、1:2)9a(2,6,8)111315a的值1.2.3 数组运算 1、数组的基本运算设有数组变量或常量1)一维数组拼接u=ax结果为a1anx1xm或u=ac1c2ck结果为a1anc1c2ck2)转置a.点转置a共轭转置1.2.3 数组运算2.纯量与数组的算术运算ac1或c1a其中可为、结果为a1c1 a2c1 anc1或c1a1 c1a2 c1an3.数组加(减)使两数组的对应各元素相加(减)a+b结果为a1+b1 a2+b2an+bnab结果为a1b1 a2b2anbn(a与b的维数必须相同)1.2.3 数组运算4.数组点乘使两数组的对应元素相乘a.*b 结果为a1b1 a2b2anbn
8、(a与b的维数必须相同)5.数组点正除(右除)使两数组的对应元素正除a./b结果为:(a、b维数必须相同)1.2.3 数组运算6.数组点反除(左除)a.b结果为:显然:a./b=b.a(a、b维数必须相同)7.数组的幂运算a.c1结果为a1c1 a2c1anc1c1.a结果为c1a1 c1a2c1ana.b结果为a1b1 a2b2anbn1.2.3 数组运算8、1数组和0数组1)1数组ones(n)建立nn全为1的数组ones(r,c)建立r行c列的1数组2)0数组zeros(n)建立nn全为0的数组zeros(r,c)建立r行c列的0数组1.2.3 数组运算9.用逻辑数组操作一个数组对数组的
9、逻辑运算产生逻辑数组,且结果中用1表示真,0表示假如:x=3:3x=3210123t=abs(x)1t为逻辑数组t=1100011y=x(t)提取t中为真对应的x元素y=32231.2.3 数组运算对数组有以下的逻辑运算:l比较运算符:=两数组对应元素相比较,或一个数组的各元素与一个纯量相比较,结果为逻辑数组。显然相比较的数组必须具有相同大小l逻辑运算符(与)(或)(非)XOR(异或)两相同大小的数组进行(与)、(或)、XOR(异或)运算是对应元素的运算(也允许一个数组与一纯量进行这些运算)。对任一数组都可以进行(非)运算如:A&BA|BXOR(A,B)AA&21.3 矩阵运算1.二维数组(矩
10、阵)的访问g(r,c)访问gr,c元素g(r,:)访问g中第r行各元素g(:,c)访问g中第r列各元素g(i)访问g按列排列后的第i个元素2.插入新元素而扩展如:A=1,2,3;4,5,6;7,8,9;插入:A(2,6)=10插入后,A变成3行6列矩阵,未定义的新元素值内定为0。即1.3 矩阵运算3.重排如对A=1,2,3;4,5,6;7,8,9;B=A(3:1:1,:)或B=A(3:1:1,1:3)将把A的各列元素倒排生成BB=7894561231.3 矩阵运算4.提取如:A(:,13)%提取A的第1、3列A(1:2,2:3)%提取A中前两行的后两列设C=13则:A(C,C)%提取A第1、3
11、行中第1、3列各元素,效果与A(13,13)相同.1.3 矩阵运算5.置空(删去某行或某列)如:A=1,2,3;4,5,6;7,8,9;B=A;B(:,2)=;将B的第2列删掉B=A;B(1,:)=;删去B的第1行1.3 矩阵运算6.置零如:A(2,:)=0,0,0将把A的第2行置零。注意:不能写成A(2,:)=07.数组的规模s=size(A)生成行向量s,值为A的行数,列数r,c=size(A)返回A的行数r,列数cr=size(A,1)返回A的行数rc=size(A,2)返回A的列数1.3 矩阵运算8.矩阵乘设gmn和hnm,则gh结果为mm矩阵hg结果为nn矩阵注意:矩阵乘()与数组乘
12、(.)的区别9.矩阵除矩阵正除(右除):A/B矩阵反除(左除):AB由于在MATLAB中是根据关系式:BA=(A/B)所以AB相当于A1B1.3 矩阵运算 10.矩阵乘方 矩阵的标量乘方Ap当p为整数时,A应为方阵:p0则Ap=AAAp次p=0则Ap=A0等于与A同维的单位矩阵p0则Ap=inv(Aabs(p)即求A自乘|p|次后的逆矩阵1.3 矩阵运算11.逆矩阵利用inv函数可以求得逆矩阵例:A=12;32x=inv(A)则x=-0.50.5;0.75-0.25若I=inv(A)*A则I=10;0112.特征向量利用eig函数可以求得矩阵的特征向量1.3 矩阵运算 练习输入数组计算2*a、
13、a+b、a-b、a.*b、a、a,b、a.2、a./b练习求解线性方程组提示:将方程组化为的矩阵形式,利用矩阵运算求解1.4MATLAB 图形系统简介1.PLOT命令PLOT命令用来绘制二维图形例:在命令窗口输入X=0:0.1:1Y=0:0.3:3Plot(x,y)2.LINE命令LINE命令用来根据点画线例:在命令窗口输入X=5,6,7;y=8,12,6Line(x,y)1.4MATLAB 图形系统简介3.GRIDON命令用来显示绘图网格4.编辑图形对象属性点击工具栏上的箭头按钮(editplot),选中绘制的图形,单击右键,选“properties”命令。linestyle linewid
14、thlinecolormarkerstylemarkersizemarkercolor5.添加辅助说明点击工具栏上的A(inserttext)和右箭头(insertarrow)按钮,在图形中添加辅助说明的箭头和文字1.4MATLAB 图形系统简介6.PATCH命令PATCH命令用来绘制二维面例:在命令窗口输入X=5,6,7;y=8,12,6;z=5,4,3Patch(y,z,4);patch(x,y,3)7.图表生成命令pie命令用来生成饼图;bar命令用来生成直方图例:在命令窗口输入X=5,6,7;y=8,12,6;z=5,4,3Pie(x);bar(x,z)1.5 源文件(M 文件)分为两
15、类:函数文件和非函数文件。都用扩展名.M1.5.1函数文件(相当于子程序)格式1(无返回值函数)Function函数名(输入表)%称为函数头函数体例如:functionbox(opt_box);格式2(有返回值函数)function输出表函数名(输入表)函数体1.5.1 函数文件其中:输出表是函数的返回值,若输出表中只有一项,则方括号可省略。例如:functionab=getobj(HG)注意:函数名必须与定义它的文件名主名相同 函数体是对各参数、局部变量和全局变量的操作。输入、输出变量间用逗号隔开。函数体内必须对输出表中的变量赋值。函数头与函数体之间可以有多个以符号“”开始的注释行,说明函数
16、的功能和使用方法。语句后加分号,则在命令窗口中显示其计算结果。1.5.2 非函数文件 实例:见例3.7.1文件objfun.m为函数文件;文件main.m为非函数文件1.5.2非函数文件是无函数头的M文件,由若干命令和注释构成。相当于批处理文件或主程序如:%Filenameisasine.mx=0:0.1:2*pi;y=sin(x);plot(x,y)%可包含汉字注释1.5.3 M-文件的操作 1、建立新M-文件 在命令窗中选File/New/M-file命令,打开编辑窗口可同时打开多个M文件2、保存M文件在文本编辑器中选File/SaveAs命令1.5.3 M-文件的操作3、编辑M文件在命令
17、窗口/文本编辑器中选File/Open命令4运行M文件在文本编辑器中选Debug/Run命令或按F5键或在命令窗口使用命令行调用,格式为:文件名第2 章优化计算2.1线性规划及其优化工具箱函数2.2无约束非线性及其优化函数2.3约束及其优化函数2.4综合应用2.1 线性规划及其优化函数线性规划问题是目标函数和约束条件均为线性函数的问题,MATLAB解决的线性规划问题的标准形式为:其中:。2.1 线性规划及其优化函数函数linprog格式x=linprog(f,A,b,Aeq,beq)x=linprog(f,A,b,Aeq,beq,lb,ub)x=linprog(f,A,b,Aeq,beq,lb
18、,ub,x0)x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)x,fval=linprog()x,fval,exitflag=linprog()x,fval,exitflag,output=linprog()x,fval,exitflag,output,lambda=linprog()2.1 线性规划及其优化函数说明f:是优化参数x的系数矩阵;lb,ub:设置优化参数x的上下界;fval:返回目标函数在最优解x点的函数值;exitflag:返回算法的终止标志;output:返回优化算法信息的一个数据结构。2.1 线性规划及其优化函数应用举例求使函数取最小值的x
19、值,且满足约束条件:2.1 线性规划及其优化函数代码f=-5;-4;-6;A=1-11;324;320;b=20;42;30;lb=zeros(3,1);x,fval=linprog(f,A,b,lb)结果x=0.000015.00003.0000fval=-78.0000练习解下面线性规划问题某车间生产甲、乙两种产品。生产甲种产品每件需要材料9Kg、3个工时、4KW电,可获利60元。生产乙种产品每件需要材料4Kg、10个工时、5KW电,可获利120元。若每天能供应材料360Kg,有300个工时,能供200KW电,问每天生产甲、乙两种产品各多少件,才能获得最大的利润。2.1 线性规划及其优化函
20、数提示:2.2 无约束非线性及其优化函数函数fminsearch格式x=fminsearch(fun,x0)x=fminsearch(fun,x0,options)x,fval=fminsearch()x,fval,exitflag=fminsearch()x,fval,exitflag,output=fminsearch()2.2 无约束非线性及其优化函数说明fun是目标函数options设置优化选项参数fval返回目标函数在最优解x点的函数值exitflag返回算法的终止标志output返回优化算法信息的一个数据结构2.2 无约束非线性及其优化函数应用举例求函数取最小值时的值。代码%首先编
21、写f(x)的.m文件functionf=myfun(x)f=sin(x)+3;%然后调用函数fminsearchx0=2;%起始点x,fval=fminsearch(myfun,x0)结果x=4.7124fval=2.0000练习的最小值提示:x,fval=fminsearch(fun,x0)的基本格式不能动。因此x和x0应为12向量,目标函数可写成2.2 无约束非线性及其优化函数或2.2 无约束非线性及其优化函数函数fminunc格式x=fminunc(fun,x0)x=fminunc(fun,x0,options)x,fval=fminunc()x,fval,exitflag=fminun
22、c()x,fval,exitflag,output=fminunc()x,fval,exitflag,output,grad=fminunc()x,fval,exitflag,output,grad,hessian=fminunc()2.2 无约束非线性及其优化函数说明fun是目标函数options设置优化选项参数fval返回目标函数在最优解x点的函数值exitflag返回算法的终止标志output返回优化算法信息的一个数据结构grad返回目标函数在最优解x点的梯度hessian返回目标函数在最优解x点的Hessian矩阵值2.2 无约束非线性及其优化函数应用举例的最小值代码%首先编写目标的.
23、m文件functionf=myfun(x)f=3*x(1)2+2*x(1)*x(2)+x(2)2%然后调用函数fminunc%起始点x0=1,1;x,fval=fminunc(myfun,x0)2.2 无约束非线性及其优化函数结果x=1.0e-008*-0.75120.2479fval=1.3818e-0162.3 约束及其优化函数函数fminbnd格式x=fminbnd(fun,x1,x2)x=fminbnd(fun,x1,x2,options)x,fval=fminbnd()x,fval,exitflag=fminbnd()x,fval,exitflag,output=fminbnd()应
24、用背景给定区间x1xx2,求函数f(x)的最小值。X可以是多元向量2.3 约束及其优化函数说明fun是目标函数x1,x2设置优化变量给定区间的上下界options设置优化选项参数fval返回目标函数在最优解x点的函数值exitflag返回算法的终止标志output是一个返回优化算法信息的结构2.3 约束及其优化函数应用举例求函数在区间(0,5)内的最小值代码%首先编写目标函数的.m文件functionf=myfun(x)f=(x-3).2-1;%调用函数fminbndx,fval=fminbnd(myfun,0,5)结果x=3fval=-12.3 约束及其优化函数函数fmincon格式x=fm
25、incon(fun,x0,A,b)x=fmincon(fun,x0,A,b,Aeq,beq)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)x,fval=fmincon()x,fval,exitflag=fmincon()x,fval,exitflag,output=fmincon()2.3 约束及其优化函数x,fval,exitflag,output,lambda=fmincon()x
26、,fval,exitflag,output,lambda,grad=fmincon()x,fval,exitflag,output,lambda,grad,hessian=fmincon()说明fun是目标函数options设置优化选项参数fval返回目标函数在最优解x点的函数值exitflag返回算法的终止标志output返回优化算法信息的一个数据结构grad返回目标函数在最优解x点的梯度hessian返回目标函数在最游解x点Hessian矩阵值nonlcon:函数由每一个输入变量x计算出c和ceq,用于估计给定x点的非线性不等式和非线性等式。和见综合应用例。应用背景约束条件如下,求解函数f
27、(x)的最小值其中A、Aeq是矩阵,b、x、beq、lb、ub均是向量2.3 约束及其优化函数应用举例计算使函数取最小值时的x值,,约束条件为分析:将约束条件化为两个不等式:从而可将它们写成矩阵不等式的形式:其中A=-1,-2,-2;1,2,2,b=0;272.3 约束及其优化函数代码:%首先编写目标函数的.m文件functionf=myfun(x)f=-x(1)*x(2)*x(3);x0=10;10;10%起始点A=-1,-2,-2;1,2,2;b=0;27;x,fval=fmincon(myfun,x0,A,b)2.3 约束及其优化函数解得x=1.0e+006*2.0057-0.5014-
28、0.5014fval=-5.0426e+0172.4 综合应用一、基础1、options:设置优化选项参数,它是一个结构参数,主要参数如下:Display设置显示算法返回值的类别,“off”表示不显示结果,“iter”表示每次迭代都显示返回值,“final”表示只显示最后返回值;MaxFunEval设置算法中函数估计的最大数目;MaxIter设置算法迭代的最大次数;Tolx设置使算法终止的x值。Tolfun设置使算法终止的f(x)值LargeScale是采用large-scale算法还是medium-scale算法2.4 综合应用2、optimget函数功能获取优化算法的特征参数值。工程应用背
29、景优化函数的语法中都带有一个参数options,它是一个结构参数,可以通过调用 optimget函数来获取指定的options结构成员参数的值。语法val=optimget(options,param);val=optimget(options,param,default);2.4 综合应用说明一般来说,调用optimget函数时指定的param参数应该在options中有定义;如果param参数在options中没有定义,则返回default指定的参数值。实例分析要返回某一优化函数的options的Display的值。分析:val=optimget(options,Display);2.4
30、综合应用3、optimset函数功能设置或编辑优化算法的特征参数值。工程应用背景在实际应用中,可能需要对优化算法的特征结构参数options的某些成员参数进行具体设置或编辑以达到预期的效果,这时可以应用optimset函数语法options=optimset(param1,value1,param2,value2,.)options=optimset(optimfun)options=optimset(oldoptions,param1,value1,.)2.4 综合应用options=optimset(oldoptions,newoptions)说明param是options的成员特征参数,
31、value是其所要设置的值,oldoptions代表以前的优化参数,newoptions代表另一个优化参数,从而用newoptions的非空参数值代替oldoptions中相应的参数的值。实例分析(1)设置options的Display属性为iter,TolFun的属性值为1e-8:options=optimset(Display,iter,TolFun,1e-8)2.4 综合应用(2)将oldoptions的值复制给newoptions:newoptions=optimset(oldoptions)(3)将oldoptions的值复制给newoptions,同时改变其中的TolX属性值为1e
32、-8:newoptions=optimset(oldoptions,TolX,1e-8)2.4 综合应用二、范例1、已知函数求且满足非线形约束:边界约束:2.4 综合应用分析这样的非线性约束优化问题可以用MATLAB优化工具箱中的fmincon函数来求解,因为约束为非线性约束,所以不能将约束条件信息直接包含在函数的输入中,必须编写函数返回在每一点x处的约束值,然后再调用优化函数fmincon;另一方面,fmincon函数要求的约束条件一般为c(x)0,所以将约束改为:2.4 综合应用程序清单%编写目标函数functiony=objfun(x)y=exp(x(1)*(4*x(1)2+2*x(2)
33、2+4*x(1)*x(2)+2*x(2)+1);%编写返回约束值的函数functionc,ceq=confun(x)%非线性不等式约束C=1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10;2.4 综合应用%线形等式约束ceq=;%初始点x0=-1,1;%设置下界lb=0,0;%无上界ub=;2.4 综合应用%采用标准算法options=optimset(largescale,off);x,fval=fmincon(objfun,x0,lb,ub,confun,options)c,ceq=confun(x);结果输出x=01.5000fval=8.50002.4 综合应
34、用2、传递转矩并承受弯矩的等截面轴的最优化设计具体见书P164分析1、数学模型已建见书2、选用fmincon函数3、参数选取:材料普通碳刚取7800扭转角许用值轴所传递的最大转短矩1000N*m许用扭转应力110Mpa材料的剪切弹性模数81Gpa2.4 综合应用%编写目标函数()functiony=objfun(x)y=7800*pi*x(1)2*x(2)/4;%编写返回约束值的函数functionc,ceq=confun(x)%不等式约束c=16*0.01/pi/(x(1)3)-110;32*0.01*x(2)/pi/81000/(x(1)4)-5/180*pi;%等式约束ceq=;2.4
35、综合应用%dmindmax-直径上下界lmax-传动元件间距上下界%初始点x0=-2,2;%设置下界lb=0.05,0.8;%s设置上界ub=0.2,1;%采用标准算法options=optimset(largescale,off);x,w,existflag,output=fmincon(objfun,x0,lb,ub,confun,options)c,ceq=confun(x);2.4 综合应用结果x=0.08710.8000w=37.2082即当轴的直径取87.1mm、传动元件间距取800mm时,轴的质量最小37.21kg。2.4 综合应用练习1、无约束优化问题 教材P146计算3-13至3-17题2、约束优化问题 教材P146、P147计算3-21至3-27题