MATLAB辅助优化设计

上传人:xian****812 文档编号:219413854 上传时间:2021-12-07 格式:PPT 页数:32 大小:232.50KB
返回 下载 相关 举报
MATLAB辅助优化设计_第1页
第1页 / 共32页
MATLAB辅助优化设计_第2页
第2页 / 共32页
MATLAB辅助优化设计_第3页
第3页 / 共32页
MATLAB辅助优化设计_第4页
第4页 / 共32页
MATLAB辅助优化设计_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《MATLAB辅助优化设计》由会员分享,可在线阅读,更多相关《MATLAB辅助优化设计(32页珍藏版)》请在金锄头文库上搜索。

1、第7章 MATLAB辅助优化设计 7.1 辅助优化设计 7.2 线性规划 7.3 无约束非线性规划 7.4 约束最优化 7.5 多目标规划 7.6 最小二乘优化 7.7 方程求解7.1 辅助优化设计 设x=(x1,x2,xn)T为n维欧氏空间En的一点,f(x),gi(x)(i=1,2,m),hi (x)(i=m+1,p)为给定的n元函数,则一般最优化问题的提法是在约束条件: gi(x)=0,i=1m和hi (x)=0,i=m+1p之下,求向量x使函数f(x)取最小值(或极大值)。这里f(x)称为目标函数, gi(x)=0; 线性规划的标准形式要求目标函数最小化,不符合条件的线性模型首先转换成

2、标准形式。 在MATLAB工具箱中,可用linprog函数求解线性规划问题 数学建模如下 min f(x) A*x=b Aeq*x=beq lb=x=ub 函数格式:x=linprog(f,A,b) 求解问题min f(x),约束条件A*x=bx=linprog(f,A,b,Aeq,beq) 求解上面问题但增加了约束Aeq*x=beq,若无不等式存在则:A=,b=x=linprog(f,A,b,Aeq,beq,lb,ub)定义x的上下界若无等式存在则:Aeq=,beq=x=linprog(f,A,b,Aeq,beq,lb,ub,x0)设置初始值x0。该选项只适合中型问题,大型算法将忽略初值。x

3、=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)用options指定的优化参数进行最小化计算。x,fval=linprog()返回解x处的目标值x,lambda,exitflag=linprog()返回exitflag值,描述函数计算退出的条件x,lambda,exitflag,output=linprog()返回包含优化信息的输出变量outputx,fval,exitflag,lambda=linprog()将解x处的拉格郎日乘子返回到lambda参数中 例求使函数f(x)=-5x1-4x2-6x3取最小的x值,且满足: x1-x2-x3=203x1+2x2+

4、4x3=423x1+2x2=0f=-5,-4,-6;A=1,-1,1;3,2,4;3,2,0;b=20;42;30;lb=0,0,0;x,fval=linprog(f,A,b,lb) Optimization terminated successfully. x = fval = 某人要用一笔资金投资,现在有四个项目,各项目的净收益(占投入资金的百分比)如下所示:由于特殊原因用于A的投资不能大于其他各项投资之和,用于项目B和C的投资要大于项目D的投资。试确定该人收益的最大值。投资项目ABCD收益(%) 1510812设x1,x2,x3,x4分别代表用于A、B、C、D的投资百分数,则根据提议则可

5、建立如下数学模型f(xx1=x2+x3+x4x2+x3=x4x1+x2+x3+x4=1x1,x2,x3,x4=0f(x)=-(0.15x1+0.1x2-0.08x3+0.12x4)-x1+x2+x3+x4= 0-x2-x3+x4=0f= -0.15,-0.1,-0.08,-0.12;A=1,-1,-1,-1;0,-1,-1,1;b=0;0;Aeq=1 1 1 1;beq=1;lb =0,0,0,0;x,fval=linprog(f,A,b,Aeq,beq,lb)Optimization terminated successfully.x =fval =无约束非线性规划 目标函数或约束条件中包含

6、自变量的非线性函数,则这类问题属于非线性规划。 求解无约束非线性规划的常用方法为数值解法,数值解法中常用的是迭代法,它的基本思想是在给出极小点位置的一个初始估计x0后,计算一系列的xk(k=1,2,),希望点列xk的极限 x*就是f(x)的极小点。 迭代法一般用 xk+1-xk=ckdk其中dk为一个向量,ck为步长。由dk可以唯一确定dk+1。从而得到一个点列xk。如果这个点列逼近我们的极小点,便称他为极小化序列。各种迭代方法的区别在于ck和dk的选取不同,特别是方向的产生起着关键作用。选取的方法很多,但不是随机的,必须满足序列对应的函数值是逐渐减小的。其次算法应该收敛,即产生的序列具有收敛

7、性,或者序列中的某一点本身就是f(x)的极小点,或者极限点就是极小点。这个要求是必须的,因为极小化序列不能收敛到极小点,那么我们构造的序列与极小点无关也就失去了意义。 一般最优化算法的迭代过程分四步(1)选择初始点x0各种方法、各类函数对初始点的要求不尽相同,但越靠近最优解越好(2)如果得到的迭代点xk不是最优解则要建立一套以产生方向dk使目标函数f(x)从xk开始有所下降。(3)选取步长ck。在多数算法中, ck的选取使f(x)下降最多,即沿射线xk+ckdk求f(x)极小值,这是单变量c的函数极小点问题,称为一维搜索。(4)检验新的迭代点是否为最优解或其近似解,如果不是继续迭代。 一维搜索

8、方法试探法:通过一系列点的比较来确定极小点函数逼近法:用简单的曲线来代替原来的曲线,用近似曲线的极小点来代替原来曲线的极小点。常用方法:牛顿法、抛物线法、三次插值法。 函数格式:fminsearch函数x=fminsearch(fun,x0)x,fval=fminsearch()fun 目标函数fval 返回目标函数在最优解x点的函数值 例求函数f(x)=sin(x)+3f=inline(sin(x)+3);x0=2;x,fval=fminsearch(f,x0)x =fval = fminuncx=fminunc(fun,x0)x=fminunc(fun,x0,options)x,fval=

9、fminunc()x,fval,exitflag=fminunc()x,fval,exitflag,output=fminunc()x,fval,exitflag,output,grad=fminunc()x,fval,exitflag,output,grad,hessian=fminunc()fun 目标函数options 设置优化选项参数fval 返回目标函数在最优解x点的函数值exitflag 返回算法中止标志output 返回优化算法信息的一个数据结构grad 返回目标函数在最优解x点的梯度hessian返回目标函数在最优解x点的hessian矩阵值 例f(x)=3x(1)2+4x(1

10、)x(2)+x(2)2 f=inline(3*x(1)2+4*x(1)*x(2)+x(2)2);x0=1,1;x,val=fminunc(f,x0)x = 1.0e-008 *fval =约束最优化 约束最优化的数学模型 c(x),ceq(x)为函数,可以线性或非线性函数求解约束最优化的函数:fminbnd,fmincon,fseminf,quadprog,fminimax(1)fminbnd 已知函数f(x),fminbnd求解其在区间 内的最小值,即 。其中 , 均是标量,f(x)返回一个标量值。 x=fminbnd(fun,x1,x2)x=fminbnd(fun,x1,x2,option

11、s)x,val=fminbnd()fun 目标函数x1,x2 设置最优化变量给定区间的上下界options 设置优化选项参数 fval 返回目标函数在最优解x点的函数值 例求函数 在区间(0,5)的最小值f=inline(x-3)2-1);x,val=fminbnd(f,0,5)x = 3val = -1 fmincon函数格式:x=fmincon(f,x0,A,b) x=fmincon (f,x0,A,b,Aeq,beq) x= fmincon (f,x0,A,b,Aeq,beq,lb,ub) x,fval,exitflag=fmincon ()x,fval,exitflag,output=

12、 fmincon()x,fval,exitflag,output,grad= fmincon() 例: 取最小值的x值,设x0=10;10;10约束条件为 f=inline(-x(1)*x(2)*x(3);A=-1,-2,-2;1,2,2;b=0;72;x0=10;10;10;x,val=fmincon(f,x0,A,b);x =val = -3.4560e+003方程求解 线性方程和方程组 非线性方程 非线性方程组 非线性方程函数格式:fzero求单变量连续函数的零点。x=fzero(fun,x0) fun目标函数x,fval=fzero() fval返回目标函数在最优解x点的函数值x,fv

13、al,exitflag=fzero()x,fval,exitflag,output=fzero() 例求 在x=2附近的零点y=inline(x.3-2*x-5);z=fzero(y,2)z = 非线性方程组函数格式:x=fsolve(fun,x0);x=fsolve(fun,x0,options);x,fval=fsolve();x,fval,exitflag=fsolve();x,fval,exitflag,output=fsolve(); 求下面两个方程所表示的系统的零点function F=myfun(x)F=2*x(1)-x(2)-exp(-x(1); -x(1)+2*x(2)-exp(-x(2);x0=-5,-5;x,fval=fsolve(myfun,x0);x =fval = 1.0e-006 *

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号