最优化问题的matlab求解_精品文档.ppt

上传人:b****2 文档编号:2577125 上传时间:2022-11-02 格式:PPT 页数:46 大小:728KB
下载 相关 举报
最优化问题的matlab求解_精品文档.ppt_第1页
第1页 / 共46页
最优化问题的matlab求解_精品文档.ppt_第2页
第2页 / 共46页
最优化问题的matlab求解_精品文档.ppt_第3页
第3页 / 共46页
最优化问题的matlab求解_精品文档.ppt_第4页
第4页 / 共46页
最优化问题的matlab求解_精品文档.ppt_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

最优化问题的matlab求解_精品文档.ppt

《最优化问题的matlab求解_精品文档.ppt》由会员分享,可在线阅读,更多相关《最优化问题的matlab求解_精品文档.ppt(46页珍藏版)》请在冰豆网上搜索。

最优化问题的matlab求解_精品文档.ppt

最优化问题的Matlab求解,数学规划的一般模型,x决策变量,f(x)目标函数,gi(x)0约束条件,1、解析解法和图解法,无约束最优化,例:

用解析法求解以下函数的最小值,symst;y=exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5;ezplot(y,04)y1=diff(y);ezplot(y1,04)t0=solve(y1)y2=diff(y1);b=subs(y2,t,t0),2、数值解法,命令形式2:

x=fminunc(fun,x0)%简单形式x,f,flag,out=fminunc(fun,x0,opt,p1,p2,)%一般形式功能:

与fsolve()中的参数控制形式类似。

命令形式1:

x=fminsearch(fun,x0)%简单形式x,f,flag,out=fminsearch(fun,x0,opt,p1,p2,)%一般形式功能:

与fsolve()中的参数控制形式类似。

注:

若函数是多元的,要表达成向量的形式。

例:

f=inline(x

(1)2-2*x

(1)*exp(-x

(1)2-x

(2)2-

(1)*x

(2),x);x0=0,0;ff=optimset;ff.Display=iter;x=fminsearch(f,x0,ff)x=fminunc(f,x0,ff),基本用法:

x=fminunc(fun,x0)x=fminunc(fun,x0,options,P1,P2,.),fun.mf(x)的m文件名x0初始点;x最优解P1,P2,传给fun的参数中间输入项缺省用占据位置,functiony=fun071(x,a,b)y=x

(1)2/a+x

(2)2/b;,x0=1,1;a=2;b=2;x=fminunc(fun071,x0,a,b),3、全局最优解和局部最优解,例:

f=inline(exp(-2*t)*cos(10*t)+exp(-3*(t+2)*sin(2*t),t);t0=1;t1,f1=fminsearch(f,t0),t1=0.92275390625000,f1=-0.15473299821860,t0=0.1;t2,f2=fminsearch(f,t0),t2=0.29445312500000,f2=-0.54362463738706,目标函数:

约束条件:

约束最优化,1、线性规划,目标函数:

约束条件:

其中:

价值向量,资源向量,决策变量向量,目标函数:

约束条件:

命令形式2:

X,f,flag,c=linprog(C,A,b,Aeq,Beq,xm,xM,x0,opt)功能:

各个参数的解释如前,若各个约束条件不存在,则用空矩阵来代替。

例:

c=-2,-1,-4,-3,-1;A=02142;345-1-1;b=54;62;Ae=;Be=;xm=0,0,3.32,0.678,2.57;ff=optimset;ff.LargeScale=off;%是否采用大规模算法ff.TolX=1e-15;%解的控制精度ff.Display=iter;%显示信息的级别X,f,flag,c=linprog(c,A,b,Ae,Be,xm,ff),目标函数:

约束条件:

2、二次规划,命令形式:

X,f,flag,c=quadprog(H,C,A,b,Aeq,Beq,xm,xM,x0,opt)功能:

各个参数的解释如前,若各个约束条件不存在,则用空矩阵来代替。

例:

求解,H=4,-4;-4,8;C=-6,-3;A=1,1;4,1;b=3;9;Ae=;Be=;ff=optimset;ff.LargeScale=off;ff.TolX=1e-15;ff.Display=iter;X,f,flag,c=quadprog(H,C,A,b,Ae,Be,zeros(2,1),ff),定义如果目标函数或约束条件中至少有一个是非线性函数时的最优化问题就叫做非线性规划问题,一般形式:

(1)其中,是定义在En上的实值函数,简记:

其它情况:

求目标函数的最大值或约束条件为大于等于零的情况,都可通过取其相反数化为上述一般形式,非线性规划,其中X为n维变元向量,G(X)与Ceq(X)均为非线性函数组成的向量,其它变量的含义与线性规划、二次规划中相同.,

(1)间接法

(2)直接法,直接搜索法以梯度法为基础的间接法,非线性规划的求解算法,间接法,在非线性最优化问题当中,如果目标函数能以解析函数表示,可行域由不等式约束确定,则可以利用目标函数和可行域的已知性质,在理论上推导出目标函数为最优值的必要条件,这种方法就称为间接法(也称为解析法)。

一般要用到目标函数的导数。

直接法,直接法是一种数值方法。

这种方法的基本思想是迭代,通过迭代产生一个点序列X(k),使之逐步接近最优点。

只用到目标函数。

如黄金分割法、Fibonacci、随机搜索法。

迭代法一般步骤,注意:

数值求解最优化问题的计算效率取决于确定搜索方向P(k)和步长的效率。

最速下降法(steepestdescentmethod)由法国数学家Cauchy于1847年首先提出。

在每次迭代中,沿最速下降方向(负梯度方向)进行搜索,每步沿负梯度方向取最优步长,因此这种方法称为最优梯度法。

特点:

方法简单,只以一阶梯度的信息确定下一步的搜索方向,收敛速度慢;越是接近极值点,收敛越慢;它是其它许多无约束、有约束最优化方法的基础。

该法一般用于最优化开始的几步搜索。

最速下降法算法:

1.首先建立M文件fun.m,定义目标函数F(X):

functionf=fun(X);f=F(X);,用Matlab求解上述问题,基本步骤分三步:

Matlab求解步骤,3.建立主程序.非线性规划求解的函数是fmincon,命令的基本格式如下:

(1)x=fmincon(fun,X0,A,b)

(2)x=fmincon(fun,X0,A,b,Aeq,beq)(3)x=fmincon(fun,X0,A,b,Aeq,beq,VLB,VUB)(4)x=fmincon(fun,X0,A,b,Aeq,beq,VLB,VUB,nonlcon)(5)x=fmincon(fun,X0,A,b,Aeq,beq,VLB,VUB,nonlcon,options)(6)x,fval=fmincon(.)(7)x,fval,exitflag=fmincon(.)(8)x,fval,exitflag,output=fmincon(.),输出极值点,M文件,迭代的初值,参数说明,变量上下限,输入参数的几点说明,模型中如果没有A,b,Aeq,beq,VLB,VUB的限制,则以空矩阵作为参数传入;nonlcon:

如果包含非线性等式或不等式约束,则将这些函数编写一个Matlab函数,nonlcon就是定义这些函数的程序文件名;不等式约束G(x)=0等式约束Ceq(x)=0.如果nonlcon=mycon;则myfun.m定义如下functionG,Ceq=mycon(x)G=.%计算非线性不等式约束在点x处的函数值Ceq=.%计算非线性等式约束在点x处的函数值,对参数nonlcon的进一步示例,2个不等式约束,2个等式约束3个决策变量x1,x2,x3如果nonlcon以mycon1作为参数值,则程序mycon1.m如下,对照约束条件编写myfun1.m,functionG,Ceq=mycon1(x)G

(1)=x

(1)*x

(1)+x

(2)*x

(2)+x(3)*x(3)-100G

(2)=60-x

(1)*x

(1)+10*x(3)*x(3)Ceq

(1)=x

(1)+x

(2)*x

(2)+x(3)-80Ceq

(2)=x

(1)3+x

(2)*x

(2)+x(3)-80,注意:

1fmincon函数提供了大型优化算法和中型优化算法。

默认时,若在fun函数中提供了梯度(options参数的GradObj设置为on),并且只有上下界存在或只有等式约束,fmincon函数将选择大型算法。

当既有等式约束又有梯度约束时,使用中型算法。

2fmincon函数可能会给出局部最优解,这与初值X0的选取有关。

1、写成标准形式:

s.t.,2x1+3x26s.tx1+4x25x1,x20,例,2、先建立M-文件fun3.m:

functionf=fun3(x);f=-x

(1)-2*x

(2)+(1/2)*x

(1)2+(1/2)*x

(2)2,3、再建立主程序youh2.m:

x0=1;1;A=23;14;b=6;5;Aeq=;beq=;VLB=0;0;VUB=;x,fval=fmincon(fun3,x0,A,b,Aeq,beq,VLB,VUB),4、运算结果为:

x=0.76471.0588fval=-2.0294,1先建立M文件fun4.m,定义目标函数:

functionf=fun4(x);f=exp(x

(1)*(4*x

(1)2+2*x

(2)2+4*x

(1)*x

(2)+2*x

(2)+1);,x1+x2=0s.t.1.5+x1x2-x1-x20-x1x2100,例,2再建立M文件mycon.m定义非线性约束:

functiong,ceq=mycon(x)g=1.5+x

(1)*x

(2)-x

(1)-x

(2);-x

(1)*x

(2)-10;ceq=;,3主程序为:

x0=-1;1;A=;b=;Aeq=11;beq=0;vlb=;vub=;x,fval=fmincon(fun4,x0,A,b,Aeq,beq,vlb,vub,mycon),3.运算结果为:

x=-1.22501.2250fval=1.8951,非负条件下线性最小二乘lsqnonneg,适合如下模型:

注意:

约束只有非负约束,语法:

x=lsqnonneg(c,d)x=lsqnonneg(c,d,x0)x=lsqnonneg(c,d,x0,options),语法:

x=lsqlin(C,d,A,b)x=lsqlin(C,d,A,b,Aeq,beq)x=lsqlin(C,d,A,b,Aeq,beq,lb,ub)x=lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0)x=lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0,options)x,resnorm=lsqlin(.)x,resnorm,residual=lsqlin(.)x,resnorm,residual,exitflag=lsqlin(.)x,resnorm,residual,exitflag,output=lsqlin(.)x,resnorm,residual,exitflag,output,lambda=lsqlin(.),非线性最小二乘lsqnonlin,适合模型:

语法:

x=lsqnonlin(fun,x0)x=lsqnonlin(fun,x0,lb,ub)x=lsqnonlin(fun,x0,lb,ub,options)x=lsqnonlin(fun,x0,options,P1,P2,.)x,resnorm=lsqnonlin(.)x,resnorm,residual=lsqnonlin(.)x,resnorm,residual,exitflag=lsqnonlin(.)x,resnorm,residual,exitflag,output=lsqnonlin(.)x,resnorm,residual,exitflag,output,lambda=lsqnonlin(.)x,resnorm,residual,exitflag,output,lambda,jacobian=lsqnonlin(.),例:

求解x,使得下式最小,resnorm等于norm(C*x-d)2residual等于C*x-d,返回参数说明,编写M文件myfun.m计算向量F,functionF=myfun(x)k=1:

10;F=2+2*k-exp(k*x

(1)-exp(k*x

(2);,调用优化函数lsqnonlin,%给定搜索起点x0=0.3

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 笔试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1