matlab在优化设计中的应用.pptx
- 格式:pptx
- 大小:66.86 KB
- 文档页数:11
优化原理①绘图判断优化结果的正误:fplot(fun,[-1,2]);(fun为函数句柄)1、MATLAB优化概述:(1)目标函数的极值条件:①多维函数的极值条件:令梯度=0---如果该点二阶偏导数矩阵正定---改点为极小值;必要条件:目标函数在改点梯度为0;充分条件:在改点的hession矩阵正定,极小值点;负定,极大值点;2、MATLAB线性规划:见XianXing_GuiHua.m(1)线性规划matlab步骤:提取数学模型---化为matlab标准型---调用函数linprof进行优化;①matlab标准型:min f=c’x;Ax<=b,A eq x=b eq,l b<=x<=u b;<1 如果对目标函数求最大值,应添加负号转化求最小值,约束条件也应化为matlab标准型;<2 c,x,b eq,l b,u b均为列阵;(2)matlab函数调用:x=linprog(c,A,b,Aeq,beq,lb,ub);x为最优解对应x的值,其他各项对应上述标准型;[x,fval,exitflag,output]=linprog(c,A,b,Aeq,beq,lb,ub):fval为目标函数最优解,exitflag为终止迭代的条件信息,output输出有关信息变量;<1 exitflag为1,表示函数收敛到解x;<2 如果没有Ax<=b,只需令A=[],b=[],对应等式约束也可如此;<3 lb,ub中可以出现无穷inf;例:c=[-1 -1]';A=[1 -2;1 2];b=[4 8]';lb=[0 0]';ub=[infinf]';[x,fval,exitflag,output]=linprog(c,A,b,[],[],lb,ub);(3)绝对值问题:出现绝对值如min f=|x|+|y|+|z|;可设计非负变量x1,x2作如下替换:x1=(x+|x|)/2, x2=(|x|-x)/2;将目标函数和约束条件全部进行转化;3、MATLAB非线性规划:(约束或目标函数之一为非线性);(1)一维最优化方法:①一维搜索法的matlab求解---fminbnd:[x,fval,exitflag,output]=fminbnd(fun,x1,x2,options);(fun为函数句柄)适用:min f(x) s.t.x1<x<x2;<1 如果函数的最小值恰好在边界取得,fminbnd将返回该区间的一个内点,且与其端点的距离不超过2TolX;<2 有时只能搜索到极小值,并非最小值,可绘图判断正误;<3 标记最值点:plot(x,fval,'r*');例:[x,fvla]=fminbnd(@fun,lb,ub);(2)matlab求解无约束优化:①无约束非线性优化函数fminunc:[x,fval,exitflag,output,grad,hessian]=fminunc(fun,x0,options);<1 x0为搜寻初值,可以为向量、标量、矩阵;grad为解在x处的梯度值;hessian为解在x处的hessian矩阵;<2 fminunc可以设置options使用不同的算法对非线性规划问题进行求解;(3)fminsearch:[x,fval,exitflag,output]=fminsearch(fun,x0,options);①fminunc最小化问题求解时,要求判断目标函数在优化变量处的梯度和hessian矩阵,仅适用目标函数连续的情况;②fminsearch函数可以用来求解目标函数不可导问题,包括不连续、在最优解附近出现奇异等问题;(4)求解多维约束优化fmincon:①问题格式:min f(x);c(x)<=0,ceq(x)=0;(非线性约束)Ax<=b,A eq x=b eq,l b<=x<=u b;(线性约束)②[x,fval,exitflag,output,lambda,grad,hessian]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)<1 lambda为各个约束所对应的拉格朗日乘子;<2 nonlcon中定义了非线性约束c(x),ceq(x):function [c,ceq]=fun2(x) c=…;ceq=…;例:[x,fval,exitflag]=fmincon(@fun,x0,A,b,[],[],[],[],@fun2)4、MATLAB其他规划:(1)二次规划问题quadprog:该问题也可用fmincon函数解决(其更简单);①数学模型:min f(x)=1/2*x’*H*x+f’*x;(第一部分为二次型)Ax<=b,A eq x=b eq,l b<=x<=u b;(线性约束)②[x,fval,exitflag,output]=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)(2)多目标规划问题:①数学模型:min f1(x);min f2(x);c(x)<=0,ceq(x)=0;(非线性约束)Ax<=b,A eq x=b eq,l b<=x<=u b;(线性约束)②[x,fval,attainfactor,exitflag,output,lambda]=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)<1 attainflag为解x处的目标规划因子;<2 nolcon函数为编写的非线性约束函数:function [c,ceq]=mycon(x) c=…;ceq=…;<3 goal为想要达到的目标函数值向量;weight为权重向量,一般取weight=abs(goal);。
第三节Matlab在优化设计中的应用1.3.1 Matlab简介目前,Matlab已经成为国际上最流行的科学与工程计算的软件工具,现在的Matlab 已经不仅仅是一个“矩阵实验室”了,它已经成为了一种具有广泛应用前景的、全新的计算机高级编程语言了,有人称它为“第四代”计算机语言,它在国内外高校和科研部门正扮演着重要的角色。
Matlab语言的功能也越来越强大,不断适应新的要求并提出新的解决方案。
另外,很多长期以来对Matlab 有一定竞争能力的软件(如Matrix-X)已经被The MathWords公司吞并,所以可以预见,在科学运算与系统仿真领域Matlab语言将长期保持其独一无二的地位。
Matlab语言的特色除了Matlab 语言的强大数值计算和图形功能外,它还有其他语言难以比拟的功能。
它和其他语言的接口能够保证它可以和各种各样的强大计算机软件相结合,发挥更大的作用。
Matlab目前可以在各种类型的常用计算机上运行,如在PC兼容微型机、SunSparc工作站、Silicon Graphics工作站、惠普工作站、Solaris、Dec Alpha工作站、VAX/VMS系统机、苹果Macintosh微型机和其他一些机器上完全兼容。
如果单纯地使用Matlab语言进行编程而不采用其他外部语言,则用Matlab语言编写出来的程序不做丝毫的修改便可以直接移植到其它机型上使用,所以说与其他语言不同,Matlab是和机器特性和操作系统基本上无关的。
Matlab和其他高级语言之间的关系仿佛高级语言和汇编语言的关系一样,因为虽然高级语言的执行效率要低于汇编语言,但其编程效率与可读性、可移植性要远远优于汇编语言。
但Matlab比一般高级语言的执行效率要低。
所以对初学者在优化设计中较适合于从Matlab这样的专用高级语言入手,这不但可以大大地提高编程的效率,而且可以大大地提高编程的质量与可靠性。
且开发周期会大大地缩短,可靠性与可信度大大提高。
MATLAB软件在优化设计中的应用首先,MATLAB在工程设计中的应用非常广泛。
例如,在机械工程中,MATLAB可以用于优化零件的尺寸、形状和结构,以提高其性能和可靠性。
通过使用MATLAB的优化算法,工程师可以确定最佳设计,同时考虑多个约束条件,例如材料成本、制造工艺等。
此外,MATLAB还可以用于优化流体力学问题,例如优化船舶的阻力和航速,优化管道的流量和压力损失等。
其次,MATLAB在金融风险计算中的应用也非常重要。
金融市场是一个高度不确定和复杂的系统,需要在投资决策中考虑多个因素和风险。
MATLAB中的金融工具箱提供了一系列用于风险建模和优化的功能,例如投资组合的风险和回报分析、风险价值和条件风险测量等。
金融机构和投资公司可以使用MATLAB进行投资组合优化,以确定最佳的资产配置,以最大化回报或最小化风险。
另外,MATLAB在电力系统优化中也有广泛应用。
电力系统是一个复杂的网络系统,其中包括发电机、变压器、输电线路等。
优化电力系统可以提高能源利用率,减少能源浪费和环境影响。
MATLAB可以用于电力系统的规划和操作优化,例如确定最佳发电机组合、优化输电线路配置、最小化电网损耗等。
此外,MATLAB还可以应用于电力市场设计和电力系统稳定性分析等方面。
除了上述几个领域,MATLAB还可以在许多其他优化设计问题中应用。
例如,在交通规划中,MATLAB可以用于优化交通信号时间表,以最大化交通流量和减少拥堵。
在医学影像处理中,MATLAB可以优化图像重建算法,以提高对图像中细微结构的分辨能力。
在化工厂的过程优化中,MATLAB可以用于寻找最佳操作条件,以提高生产效率和产品质量。
总之,MATLAB在优化设计中具有广泛的应用。
其强大的数学计算能力和灵活的编程环境使其成为解决各种优化问题的理想工具。
不仅可以用于工程设计、金融风险计算和电力系统优化等领域,还可以在交通规划、医学影像处理和化工过程优化等领域中发挥重要作用。