您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > 机械优化设计的MATLAB实现
MATLAB在机械优化设计中的应用湖南农业大学工学院2007年9月主讲:*******绪论1.1MATLAB系统简介MATLAB名字由MATrix和LABoratory两词的前三个字母组合而成。那是20世纪七十年代后期的事:时任美国新墨西哥大学计算机科学系主任的CleveMoler教授出于减轻学生编程负担的动机,为学生设计了一组调用LINPACK和EISPACK库程序的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB。经几年的校际流传,在Little的推动下,由Little、Moler、SteveBangert合作,于1984年成立了MathWorks公司,并把MATLAB正式推向市场。从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。MATLAB以商品形式出现后,仅短短几年,就以其良好的开放性和运行的可靠性,使原先控制领域里的封闭式软件包(如英国的UMIST,瑞典的LUND和SIMNON,德国的KEDDC)纷纷淘汰,而改以MATLAB为平台加以重建。在时间进入20世纪九十年代的时候,MATLAB已经成为国际控制界公认的标准计算软件。到九十年代初期,在国际上30几个数学类科技应用软件中,MATLAB在数值计算方面独占鳌头,而Mathematica和Maple则分居符号计算软件的前两名。Mathcad因其提供计算、图形、文字处理的统一环境而深受中学生欢迎。在欧美大学里,诸如应用代数、数理统计、自动控制、数字信号处理、模拟与数字通信、时间序列分析、动态系统仿真等课程的教科书都把MATLAB作为内容。这几乎成了九十年代教科书与旧版书籍的区别性标志。在那里,MATLAB是攻读学位的大学生、硕士生、博士生必须掌握的基本工具。在国际学术界,MATLAB已经被确认为准确、可靠的科学计算标准软件。在许多国际一流学术刊物上,(尤其是信息科学刊物),都可以看到MATLAB的应用。在设计研究单位和工业部门,MATLAB被认作进行高效研究、开发的首选软件工具。如美国NationalInstruments公司信号测量、分析软件LabVIEW,Cadence公司信号和通信分析设计软件SPW等,或者直接建筑在MATLAB之上,或者以MATLAB为主要支撑。又如HP公司的VXI硬件,TM公司的DSP,Gage公司的各种硬卡、仪器等都接受MATLAB的支持。MATLAB具有以下几个特点:功能强大的数值运算功能强大的图形处理能力高级但简单的程序环境丰富的工具箱优化工具箱中的所有函数都对应一个MATLAB6.5的.M文件(关于.M文件请查阅相关MATLAB6.5文献),这些.M通过使用MATLAB6.5基本语句实现了具体的优化算法.可以在MATLAB6.5命令窗口键入命令:typefunction_name,来查看相应函数的代码.1.2优化工具箱的工程应用步骤当量化地求解一个实际的最优化问题时,首先要把这个问题转化为一个数学问题.建立数学模型:然后对建立的数学模型进行具体分析.选择合适的优化算法:最后根据选定的优化算法,编写计算程序进行求解.用MATLAB6.5优化工具箱解决实际应用问题可以概括为以下三个步骤:(1)根据所提出的最优化问题,建立最优化问题的数学模型.确定变量,列出约束条件和目标函数.(2)对所建立的模型进行具体分析和研究.选择合适的最优化求解方法.(3)根据最优化方法的算法,列出程序框图,选择优化函数和编写语言程序,用计算机求出最优解.利用MATLAB的优化工具箱,可以求解线性规划,非线性规划和多目标规划问题。具体而言,包括线性,非线性最小化,最大最小化,二次规划,半无限问题,线性,非线性方程化,方程求解,曲线拟合,二次规划等问题中大型课题的求解方法,为优化方法在工程中的实际应用提供了更方便,快捷的途径。1.3优化问题的工程背景随着生产,经济,技术的发展,工程技术,管理人才在实际工作中常常会面临这类问题:在工程设计中,怎样的分配方案既能满足各方面的基本要求,又能降低成本;在资源配中,怎样的分配既能满足各方面的基本要求,又能获得好的经济效益;在生产计划安排中,选择怎样的计划才能提高产值和利润;在原料配比问题中,怎样确定各种万分的比例才能提高质量,降低成本;在城建规划中,怎样安排工厂,机关,学校,商店,医院,住宅和其它单位的合理布置,才能方面群众,有利于城市各行各行的发展.这一类问题的共同点就是迁出最合理,达到事先预定的最优目标的方案,这就是工程问题最优化问题.最优化方法发展很快,包含多个分支,如线性规划,整数规划,非线性规划,动态规划,多目标规划等。2.1线性规划问题与MATLAB实现线性规划问题是目标函数和约束条件均为线性函数的问题,MATLAB解决的线性规划问题的标准形式为:minf(x)x∈Rs.t.A.x≤bAeq.x=beqlb≤x≤ub其中f、x、b、beq、lb、ub为向量,A、Aeq为矩阵。其它形式的线性规划问题都可经过适当变换化为此标准形式。在MATLAB6.5版中,线性规划问题(LinearProgramming)已用函数linprog取其它形式的线性规划问题都可经过适当变换化为此标准形式。函数linprog调用格式x=linprog(f,A,b)%求minf=f(x)x∈Rs.t.A.x≤b线性规划的最优解。x=linprog(f,A,b,Aeq,beq)%等式约束Aeq.x=beq,若没有不等式约束,则A=[],b=[]。x=linprog(f,A,b,Aeq,beq,lb,ub)%指定x的范围lb≤x≤ub,若没有等式约束Aeq.x=beq,则Aeq=[],beq=[]x=linprog(f,A,b,Aeq,beq,lb,ub,x0)%设置初值x0x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)%options为指定的优化参数[x,fval]=linprog(…)%返回目标函数最优值,即fval=f(x)。[x,fval,lambda,exitflag]=linprog(…)%lambda为解x的Lagrange乘子。[x,favl,lambda,fval,exitflag]=linprog(…)%exitflag为终止迭代的错误条件。[x,fval,lambda,exitflag,output]=linprog(…)%output为关于优化的一些信息说明若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迭代次数。例求下面的优化问题(P95)121112113124152min60120..943603103004520000fxxxstgxxxgxxxgxxxgxxgxxMATLAB求解程序清单为:首先输入下列系数f=[-60;-120];A=[9,4;3,10;4,5];b=[360,300,200];lb=zeros(2,1);ub=[];然后调用linprog函数:[x,fval,exitflag,output,lambda]=linprog(f,A,b,[],[],lb,ub)计算结果为:x=20.0000%最优解24.0000fval=-4.0800e+003%最优值exitflag=1%收敛output=iterations:5%迭代次数algorithm:'large-scale:interiorpoint‘%所使用规则cgiterations:0message:'Optimizationterminated.'lambda=ineqlin:[3x1double]eqlin:[0x1double]upper:[2x1double]lower:[2x1double]121112113124152min60120..943603103004520000fxxxstgxxxgxxxgxxxgxxgxx作业1:求下面的优化问题首先输入下列系数f=[-0.1,-0.12,-0.15,-0.12,-0.08];A=[1,-1,-1,-1,-1;0,-1,1,-1,1];b=[0,0];Aeq=[1,1,1,1,1];beq=[1];lb=zeros(5,1);ub=[];[x,fval,exitflag,output]=linprog(f,A,b,Aeq,beq,lb,ub)结果为:x=0.00000.25000.50000.25000.0000%最优解fval=-0.1350%最优值exitflag=1%收敛output=iterations:6algorithm:'large-scale:interiorpoint'cgiterations:0message:'Optimizationterminated.'min0.10.120.150.1200.812345..01123450223451312345041052063074085fxxxxxxstgxxxxxxgxxxxxgxxxxxxgxxgxxgxxgxxgxx作业2:求下面的优化问题首先输入下列系数f=[-5,4,2];A=[6,-1,1;1,2,4];b=[8,10];lb=[-1,0,0];ub=[3,2,inf];[x,fval,exitflag,output]=linprog(f,A,b,[],[],lb,ub)结果为:x=1.33330.00000.0000%最优解fval=-6.6667%最优值exitflag=1%收敛output=iterations:7algorithm:'large-scale:interiorpointcgiterations:0message:'Optimizationterminated.'min542123..66113224102132131022fxxxxstgxxxxgxxxxxx3非线性无约束优化问题与MATLAB实现3.1单变量最小化问题本节讨论只有一个变量时的无约束最优化问题,即一维搜索问题.该问题是多变量最优化问题的基础.利用MATLAB解决非线性无约束优化问题的标准形式为:minf(x)s.t.x1≤x≤x2其中x、x1、x2为标量,f(x)为函数,返回标量.在MATLAB中,单变量非线性无约束优化问题调用函数fminbnd.fminbnd函数是一个M文件,其算法基于黄金分割法和抛物线插值.函数fminbnd调用格式:x=fminbnd(fun,x1,x2)%返回区间{x1,x2}上fun参数指定的优化参数进行求解.x=fminbnd(fun,x1,x2,,options)%用options参数指定的优化参数进行求解.x=fminbnd(fun,x1,x2,,options,P1,P2,…)%提供另外的参数P1,P2等,传输给目标函数fun.如果没有设置options选项,则令options=[].[x,fval]=fminbnd(…)%返回x处目标函数的值.[x,fval,exitflag]=fminbnd(…)%返回exitflag值描述fminbnd函数的退出条件.[x,fval,exitflag,output]=fminbnd(…)%返回包含优化信息的结构输出.注:目标函数须是连续
本文标题:机械优化设计的MATLAB实现
链接地址:https://www.777doc.com/doc-126826 .html