优化模型与MATLAB优化工具箱

上传人:876****10 文档编号:147299161 上传时间:2020-10-08 格式:PPT 页数:68 大小:1.97MB
返回 下载 相关 举报
优化模型与MATLAB优化工具箱_第1页
第1页 / 共68页
优化模型与MATLAB优化工具箱_第2页
第2页 / 共68页
优化模型与MATLAB优化工具箱_第3页
第3页 / 共68页
优化模型与MATLAB优化工具箱_第4页
第4页 / 共68页
优化模型与MATLAB优化工具箱_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《优化模型与MATLAB优化工具箱》由会员分享,可在线阅读,更多相关《优化模型与MATLAB优化工具箱(68页珍藏版)》请在金锄头文库上搜索。

1、数学建模讲座(2004年7月8月江西) 优化模型与MATLAB优化工具箱,谢金星 清华大学数学科学系 Tel: 010-62787812 Email:jxiemath.tsinghua.edu. ,简要提纲,MATLAB优化工具箱简介 控制参数 主要功能的使用 解非线性方程(组):特殊的优化问题 最小二乘法:特殊的优化问题 LP ; QP; NLP 建模与求解实例(结合软件使用),优化模型,实际问题中 的优化模型,x决策变量,f(x)目标函数,gi(x)0约束条件,数学规划,线性规划(LP) 二次规划(QP) 非线性规划(NLP),纯整数规划(PIP) 混合整数规划(MIP),整数规划(IP)

2、,0-1整数规划 一般整数规划,连续规划,MATLAB优化工具箱能求解的优化模型,优化工具箱3.0 (MATLAB 7.0 R14),连续优化,离散优化,无约束优化,非线性 极小 fminunc,非光滑(不可 微)优化 fminsearch,非线性 方程(组) fzero fsolve,全局 优化 暂缺,非线性 最小二乘 lsqnonlin lsqcurvefit,线性规划 linprog,纯0-1规划 bintprog 一般IP(暂缺),非线性规划 fmincon fminimax fgoalattain fseminf,上下界约束 fminbnd fmincon lsqnonlin lsq

3、curvefit,约束线性 最小二乘 lsqnonneg lsqlin,约束优化,二次规划 quadprog,MATLAB优化工具箱能求解的优化模型,xi=0,1,MATLAB优化工具箱能求解的优化模型,MATLAB优化工具箱能求解的优化模型,MATLAB优化工具箱能求解的优化模型,需要掌握的几个重要方面,问题模型及其输入格式 输出格式及其含义 选项(OPTIONS)函数 选项的含义 optimset函数 optimget函数,fzero: 单变量方程 f(x)=0 求根(变号点),最简形式 x= fzero(f, x0 ),可选输入: “P1,P2,.”是传给f.m的参数(如果需要的话) o

4、pt是一个结构变量,控制参数(如精度TolX ),输出: fv是函数值; ef是停止原因(1,0,-1); out是一个结构变量,包含: iterations(迭代次数), funcCount (函数调用次数), algorithm(所用算法),一般形式 x, fv, ef, out = fzero(f, x0, opt, P1, P2, . ),必须输入: f为f.m的函数名,x0是迭代初值(或有根区间) 输出: x是近似变号点(函数不连续时不一定是根),演示: exampleFzero.m,fsolve: 多变量方程组F(x)=0求解,输出 - 与fzero类似, 但out中输出更多:还输

5、出firstorderopt, 即结果(x点)处梯度向量的范数(实际上是1-范数,即分量按绝对值取最大的值); jac 输出x点所对应的雅可比矩阵,输入 - 与fzero类似, 但 opt中控制参数更多 (如MaxFunEvals, MaxIter等),最简形式 x= fsolve(f, x0 ),一般形式 x, fv, ef, out, jac =fsolve(f, x0, opt, P1, P2, . ),注: solve函数也可求解(符号工具箱),演示: exampleFsolve.m; exampleSolve.m,fminunc: 无约束优化,基本用法: x=fminunc(fun,

6、x0) x=fminunc(fun,x0,options,P1,P2,.),fun.m f(x)的m文件名 x0 初始点; x 最优解 P1,P2, 传给fun的参数 中间输入项缺省用 占据位置,function y=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),examp071.m,控制参数设定/获取: optimset; optimget,Optimset /显示控制参数 opt=optimset /控制参数设为(即缺省值) optimset optfun /显示optfun的控制参数 o

7、pt=optimset(optfun)/optfun控制参数缺省值 Opt=optimset(par1,val1,par2,val2,.) Opt=optimset(oldopts,par1,val1,.) opt=optimset(oldopts,newopts),val=optimget(opt,par1,par2,) val=optimget(opt,par1,par2, default),Diagnostics on | off /是否显示诊断信息 Display off | iter | final | notify /显示信息的级别 GradObj on | off/是否采用分析梯

8、度 Jacobian on | off /采用分析Jacob阵(用于约束优化中) LargeScale on | off/是否采用大规模算法 MaxFunEvals 最大函数调用次数 MaxIter 最大迭代次数 TolCon 约束的控制精度(用于约束优化中) TolFun 函数值的控制精度 TolX 解的控制精度,主要控制参数(对大/中规模算法均有效),最一般的输出形式 x,f,exitflag,out,grad,hess=fminunc(.),f 目标函数值 exitflag 0收敛,0达到函数或迭代次数, 0不收敛 Output iterations 实际迭代次数 funcCount 实

9、际函数调用次数 algorithm 实际采用的算法 cgiterations 实际PCG迭代次数(大规模算法用) stepsize 最后迭代步长(中等规模算法用) firstorderopt 一阶最优条件(梯度的范数) grad 目标函数的梯度 hess 目标函数的Hessian矩阵,x0=1,1;a=10;b=1; format short e fopt1=optimset(Display,iter); x,f,exitf=fminunc(fun071,x0,fopt1,a,b); x,f,exitf pause fopt2=optimset(TolFun,1e-8,TolX,1e-8);

10、x,f,exitf,output,grad=fminunc(fun071,x0,fopt2,a,b); x,f,exitf,output,grad pause fopt3=optimset(TolFun,1e-1,TolX,1e-1); x,f,exitf,output,grad=fminunc(fun071,x0,fopt3,a,b); x,f,exitf,output,grad,examp072.m,算法选择:LargeScale on|off(on为缺省),搜索步长的算法选择,系统缺省采用大规模算法(如果可能) 当设为off时缺省:BFGS、混合2, 3次多项式插值,LineSearch

11、Type=quadcubic 混合2, 3次多项式插值 LineSearchType=cubicpoly 3次多项式插值,HessUpdate = dfp (DFP算法) HessUpdate = gillmurray(gill-murray算法) HessUpdate = steepdesc(最速下降算法),搜索方向的算法选择,计算结果,examp073.m,精确解:x=y=1, f(x,y)=0,采用分析梯度,GradObj=on x=fminunc(fun,x0,fopt) fun.m中还要有 一般形式 function f,g=fun(x),examp074.m,计算结果,与不用分析梯

12、度的结果比较,rosen073.m,算法选择:BFGS公式,混合2,3次插值,一般较好。,无约束优化: 几个值得注意的问题,精度控制:对迭代次数有重大影响,应适当选择。,梯度函数:利用分析梯度可能改进算法的性能,改变初始值 由一个初值出发通常得到局部最优解,如果函数存在多个局部最优,只有改变初值,对局部最优进行比较,才有可能得到全局最优解。,其他算法选择: (详细用法请查阅help文档) 高度非线性、不连续时可用程序 fminsearch(fun,x0) 单变量时可用程序 fminbnd(fun,v1,v2),约束线性最小二乘,x,resnorm,res,exitflag,output,lam

13、bda = lsqlin(C,d,A1,b1,A2,b2,lb,ub,x0,options),非负最小二乘,x,resnorm,res,exitf,out,lambda = lsqnonneg(C,d,x0,options),非线性最小二乘方法,x,resnorm,res,exitf,out,lambda,jacob= lsqnonlin(fun,x0,lb,ub,options,P1,P2,),输入的用法与fminunc类似,但注意:fun.m r(x) 的m文件名,Jacobian=on时含有导数信息 function r,J = fun(x),输出 resnom=r(x)T*r(x),

14、res=r(x)(误差向量),算法选择: 缺省:大规模算法(LargeScale = on ),当LargeScale = off : 缺省: Levenberg-Marquardt算法; LevenbergMarquardt=off:Gauss-Newton法,一维搜索(线搜索)步长选择与fminunc中类似,非线性最小二乘方法,x,fval,exitflag,output,lambda = linprog(c,A1,b1,A2,b2,v1,v2,x0,options),线性规划,输入: x0初始解(缺省时为0) options 控制参数 中间所缺参数项补,输出:lambda Lagrang

15、e乘子(对偶变量,影子价格),维数等于约束个数,非零分量对应于起作用约束: lambda.ineqlin lambda. eqlin lambda. upper lambda. lower,Examp081.m; examp082.m,二次规划,x,fval,exitflag,output,lambda = quadprog(H,c,A1,b1,A2,b2,v1,v2,x0,options),注意H的2倍关系,非线性规划,x,fval,exitflag,output,lambda,grad,hessian = fmincon(fun,x0,A1,b1,A2,b2,v1,v2,nlcon,opt

16、ions,P1,P2, .),fun.m给出函数f,当GradObj=on时必须给出f的梯度, Hessian=on时还必须给出其Jacobi矩阵,形式为,function f,g,H = fun(x) f = . % objective function value if nargout 1 g = . % gradient of the function if nargout 2 H = . % Hessian end,nlcon.m给出约束,GradConstr=on时还给出梯度,形式为,例:求min (Rosenbrock),s.t.,Examp084.m,function c1,c2,GC1,GC2 = nlcon(x) c1 = . % nonlinear inequalities at x c2 = . % nonlinear equalities at x if

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

当前位置:首页 > 行业资料 > 其它行业文档

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