您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > Matlab机械优化设计实例教程
现代设计理论与方法浙师大工学院机械系1MATLAB机械优化设计实例指导教程现代设计理论与方法浙师大工学院机械系2利用Matlab的优化工具箱,可以求解线性规划、非线性规划和多目标规划问题。具体而言,包括线性、非线性最小化,最大最小化,二次规划,半无限问题,线性、非线性方程(组)的求解,线性、非线性的最小二乘问题。另外,该工具箱还提供了线性、非线性最小化,方程求解,曲线拟合,二次规划等问题中大型课题的求解方法,为优化方法在工程中的实际应用提供了更方便快捷的途径。概述现代设计理论与方法浙师大工学院机械系31.1优化工具箱中的函数优化工具箱中的函数包括下面几类:最小化函数函数描述fminbnd有边界的标量非线性最小化linprog线性规划fminsearch,fminunc无约束非线性最小化fminimax最大最小化fmincon有约束的非线性最小化quadprog二次规划fgoalattain多目标达到问题现代设计理论与方法浙师大工学院机械系41.2有边界非线性最小化[函数]fminbnd功能:找到固定区间内单变量函数的最小值。[格式]x=fminbnd(fun,x1,x2)x=fminbnd(fun,x1,x2,options)[x,fval]=fminbnd(…)[x,fval,exitflag]=fminbnd(…)[x,fval,exitflag,output]=fminbnd(…)[应用背景]给定区间x1xx2,求函数f(x)的最小值。X可以是多元向量现代设计理论与方法浙师大工学院机械系5[说明]fun是目标函数x1,x2设置优化变量给定区间的上下界options设置优化选项参数fval返回目标函数在最优解x点的函数值exitflag返回算法的终止标志output是一个返回优化算法信息的结构该参数包含下列优化信息:1.output.iterations–迭代次数。2.output.algorithm–所采用的算法。3.output.funcCount–函数评价次数。1.2有边界非线性最小化现代设计理论与方法浙师大工学院机械系6算法:fminbnd是一个M文件。其算法基于黄金分割法和二次插值法。局限性:1.目标函数必须是连续的。2.fminbnd函数可能只给出局部最优解。3.当问题的解位于区间边界上时,fminbnd函数的收敛速度常常很慢。此时,fmincon函数的计算速度更快,计算精度更高。4.fminbnd函数只用于实数变量。1.2有边界非线性最小化现代设计理论与方法浙师大工学院机械系71.2.1应用实例[例一]在区间(0,2π)上求函数sin(x)的最小值:x=fminbnd(@sin,0,2*pi)x=4.7124所以区间(0,2π)上函数sin(x)的最小值点位于x=4.7124处。最小值处的函数值为:y=sin(x)y=-1.00001.2有边界非线性最小化现代设计理论与方法浙师大工学院机械系8[例二]对边长为3m的正方形铁板,在四个角处剪去相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大?假设剪去的正方形的边长为x,则水槽的容积为现在要求在区间(0,1.5)上确定一个x,使最大化。首先编写M文件opt21_3o.m:functionf=myfun(x)f=-(3-2*x).^2*x;然后调用fminbnd函数(磁盘中M文件名为opt21_3.m):x=fminbnd(@opt21_3o,0,1.5)得到问题的解:x=0.5000即剪掉的正方形的边长为0.5m时水槽的容积最大。水槽的最大容积计算:y=-2.0000所以水槽的最大容积为2.0000m3。现代设计理论与方法浙师大工学院机械系91.3线性规划及其优化函数线性规划问题是目标函数和约束条件均为线性函数的问题,MATLAB解决的线性规划问题的标准形式为:minsub.to:其中:其中f、x、b、beq、lb、ub为向量,A、Aeq为矩阵。其它形式的线性规划问题都可经过适当变换化为此标准形式。nRxxfbxAbeqxAequbxlb现代设计理论与方法浙师大工学院机械系101.3线性规划及其优化函数[函数]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,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(…)现代设计理论与方法浙师大工学院机械系111.3线性规划及其优化函数[说明]f:是优化参数x的系数矩阵;lb,ub:设置优化参数x的上下界;fval:返回目标函数在最优解x点的函数值;exitflag:返回算法的终止标志;output:返回优化算法信息的一个数据结构。lambda:解x的Lagrange乘子现代设计理论与方法浙师大工学院机械系12说明:若exitflag0表示函数收敛于解x,exitflag=0表示超过函数估值或迭代的最大数字,exitflag0表示函数不收敛于解x;若lambda=lower表示下界lb,lambda=upper表示上界ub,lambda=ineqlin表示不等式约束,lambda=eqlin表示等式约束,lambda中的非0元素表示对应的约束是有效约束;output=iterations表示迭代次数,output=algorithm表示使用的运算规则,output=cgiterations表示PCG迭代次数。1.3线性规划及其优化函数现代设计理论与方法浙师大工学院机械系131.3线性规划及其优化函数[应用举例]求使函数取最小值的x值,且满足约束条件:321645)(xxxxf20321xxx302321xx0,0,0321xxx42423321xxx现代设计理论与方法浙师大工学院机械系141.3线性规划及其优化函数[代码]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现代设计理论与方法浙师大工学院机械系15应用实例[[例三]生产决策问题某厂生产甲乙两种产品,已知制成一吨产品甲需用资源A3吨,资源B4m3;制成一吨产品乙需用资源A2吨,资源B6m3,资源C7个单位。若一吨产品甲和乙的经济价值分别为7万元和5万元,三种资源的限制量分别为90吨、200m3和210个单位,试决定应生产这两种产品各多少吨才能使创造的总经济价值最高?令生产产品甲的数量为x1,生产产品乙的数量为x2。由题意可以建立下面的模型:该模型中要求目标函数最大化,需要按照Matlab的要求进行转换,即目标函数为首先输入下列系数:f=[-7;-5];A=[324607];1.3线性规划及其优化函数现代设计理论与方法浙师大工学院机械系16b=[90;200;210];lb=zeros(2,1);然后调用linprog函数:[x,fval,exitflag,output]=linprog(f,A,b,[],[],lb)x=14.000024.0000fval=-218.0000exitflag=1output=iterations:5cgiterations:0algorithm:'lipsol'由上可知,生产甲种产品14吨、乙种产品24吨可使创建的总经济价值最高。最高经济价值为218万元。exitflag=1表示过程正常收敛于解x处。1.3线性规划及其优化函数现代设计理论与方法浙师大工学院机械系17[例四]生产计划的最优化问题某工厂生产A和B两种产品,它们需要经过三种设备的加工,其工时如表9-16所示。设备一、二和三每天可使用的时间分别不超过12、10和8小时。产品A和B的利润随市场的需求有所波动,如果预测未来某个时期内A和B的利润分别为4和3千元/吨,问在那个时期内,每天应安排产品A、B各多少吨,才能使工厂获利最大?表1生产产品工时表产品设备一设备二设备三A(小时/吨)334B(小时/吨)432设备每天最多可工作时数(小时)12108设每天应安排生产产品A和B分别为x1吨和x2吨,由题意建立下面的数学模型:首先转换目标函数为标准形式:输入下列系数:1.3线性规划及其优化函数现代设计理论与方法浙师大工学院机械系18f=[-4;-3];A=[343342];b=[12;10;8];lb=zeros(2,1);然后调用linprog函数:[x,fval,exitflag,output,lambda]=linprog(f,A,b,[],[],lb);x=0.80002.4000fval=-10.4000所以,每天生产A产品0.80吨、B产品2.40吨可使工厂获得最大利润。1.3线性规划及其优化函数现代设计理论与方法浙师大工学院机械系19[例五]工件加工任务分配问题某车间有两台机床甲和乙,可用于加工三种工件。假定这两台机床的可用台时数分别为700和800,三种工件的数量分别为300、500和400,且已知用三种不同机床加工单位数量的不同工件所需的台时数和加工费用(如表2所示),问怎样分配机床的加工任务,才能既满足加工工件的要求,又使总加工费用最低?表2机床加工情况表机床类型单位工作所需加工台时数单位工件的加工费用可用台时数工件1工件2工件3工件1工件2工件3甲0.41.11.013910700乙0.51.21.311128800设在甲机床上加工工件1、2和3的数量分别为x1、x2和x3,在乙机床上加工工件1、2和3的数量分别为x4、x5和x6。根据三种工种的数量限制,有现代设计理论与方法浙师大工学院机械系20x1+x4=300(对工件1)x2+x5=500(对工件2)x3+x6=400(对工件3)再根据机床甲和乙的可用总台时限制,可以得到其它约束条件。以总加工费用最少为目标函数,组合约束条件,可以得到下面的数学模型:首先输入下列系数:f=[13;9;10;11;12;8];A=[0.41.110000000.51.21.3];b=[700;800];Aeq=[100100010010001001];beq=[300500400];lb=zeros(6,1);现代设计理论与方法浙师大工学院机械系21然后调用linprog函数:[x,fval,exitflag,output,lambda]=linprog(f,A,b,Aeq,beq,lb);x=0.0000500.00000.0000300.00000.0000400.0000fval=1.1000e+004exitflag=1可见,在甲机床上加工500个工件2,在乙机床上加工300个工件1、加工400个工件3可在满足条件的情况下使总加工费最小。最小费用为11000元。收敛正常。现代设计理论与方法浙师大工学院机械系22[例六]确定职工编制问题某厂每日八小时的产量不低于1800件。为了进行质量控制,计划聘请两种不同水平的检验员。一级检验员的标准为:速度25件/小时,正确率98%,计时工资4元/小时;二级检验员的标准为:速度15件/小时,正确率95%,计时工资3元/小时。检验员每错检一次,工厂要损失2元。现有可供厂方聘请的检验员人数为一级8人和二级10人。为使总检验费用最省,该工厂应聘一级、二级检验员各多少名?设需要一级和二级检验员的人数分别为x1名和x2名,由题意可以建立下面的模型:利用Matlab进行求解之前需要将第三个约束条件进行转换,两边取负以后得到首先输入下列系数:f=[40;36];A=[1001-5-3];b=[8;1
本文标题:Matlab机械优化设计实例教程
链接地址:https://www.777doc.com/doc-5991500 .html