2022年MATLAB优化教程 .pdf
《2022年MATLAB优化教程 .pdf》由会员分享,可在线阅读,更多相关《2022年MATLAB优化教程 .pdf(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、MATLAB 6.0 数学手册176 第 5 章优化问题5.1 线性规划问题线性规划问题是目标函数和约束条件均为线性函数的问题,MATLAB6.0解决的线性规划问题的标准形式为:min nRxxfsub.to:bxAbeqxAequbxlb其中 f、x、b、beq、 lb、ub 为向量, A、 Aeq 为矩阵。其它形式的线性规划问题都可经过适当变换化为此标准形式。在 MA TLAB6.0版中,线性规划问题(Linear Programming)已用函数linprog 取代了MATLAB5.x版中的 lp 函数。当然,由于版本的向下兼容性,一般说来,低版本中的函数在6.0 版中仍可使用。函数li
2、nprog格式x = linprog(f,A,b) %求 min f *x sub.to bxA线性规划的最优解。x = linprog(f,A,b,Aeq,beq) %等式约束beqxAeq,若没有不等式约束bxA,则 A= ,b= 。x = linprog(f,A,b,Aeq,beq,lb,ub) %指定 x 的范围ubxlb,若没有等式约束beqxAeq,则 Aeq= , beq= x = linprog(f,A,b,Aeq,beq,lb,ub,x0) %设置初值x0 x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options) % options 为指定的优化
3、参数x,fval = linprog(,) % 返回目标函数最优值,即fval= f *x 。x,lambda,exitflag = linprog(, ) % lambda 为解 x 的 Lagrange 乘子。x, lambda,fval,exitflag = linprog(,) % exitflag 为终止迭代的错误条件。x,fval, lambda,exitflag,output = linprog(,) % output 为关于优化的一些信息说明若 exitflag0 表示函数收敛于解x,exitflag=0 表示超过函数估值或迭代的最大数字, exitflagf = -5; -4
4、; -6; A = 1 -1 1;3 2 4;3 2 0; b = 20; 42; 30; lb = zeros(3,1); x,fval,exitflag,output,lambda = linprog(f,A,b,lb) 结果为:x = %最优解0.0000 15.0000 3.0000 fval = %最优值-78.0000 exitflag = %收敛1 output = iterations: 6 %迭代次数cgiterations: 0 algorithm: lipsol %所使用规则lambda = ineqlin: 3x1 double eqlin: 0 x1 double u
5、pper: 3x1 double lower: 3x1 double lambda.ineqlin ans = 0.0000 1.5000 0.5000 lambda.lower ans = 1.0000 0.0000 0.0000 表明:不等约束条件2 和 3 以及第 1 个下界是有效的5.2 foptions函数对于优化控制,MA TLAB 提供了 18 个参数,这些参数的具体意义为:options(1)-参数显示控制(默认值为0) 。等于 1 时显示一些结果。options(2)- 优化点 x 的精度控制 (默认值为 1e-4)。options(3)- 优化函数 F 的精度控制 (默认值
6、为1e-4)。options(4)- 违反约束的结束标准(默认值为 1e-6)。options(5)- 算法选择,不常用。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 29 页 - - - - - - - - - MATLAB 6.0 数学手册178 options(6)- 优化程序方法选择,为0 则为 BFCG 算法,为1 则采用 DFP 算法。options(7)- 线性插值算法选择,为0 则为混合插值算法,为1 则采用立方插算法。options(8)- 函数值显示
7、(目标达到问题中的Lambda ) options(9)- 若需要检测用户提供的梯度,则设为1。options(10)-函数和约束估值的数目。options(11)-函数梯度估值的个数。options(12)-约束估值的数目。options(13)-等约束条件的个数。options(14)-函数估值的最大次数(默认值是100变量个数)options(15)-用于目标 达到问题中的特殊目标。options(16)-优化过程中变量的最小有限差分梯度值。options(17)- 优化过程中变量的最大有限差分梯度值。options(18)-步长设置(默认为 1 或更小 )。Foptions 已经被 o
8、ptimset 和 optimget 代替,详情请查函数optimset 和 optimget。5.3 非线性规划问题5.3.1 有约束的一元函数的最小值单变量函数求最小值的标准形式为)x( fminxsub.to 21xxx在 MATLAB5.x中使用 fmin 函数求其最小值。函数fminbnd格式x = fminbnd(fun,x1,x2) %返回自变量x 在区间21xxx上函数 fun 取最小值时 x 值,fun 为目标函数的表达式字符串或MATLAB自定义函数的函数柄。x = fminbnd(fun,x1,x2,options) % options 为指定优化参数选项x,fval =
9、 fminbnd(,) % fval 为目标函数的最小值x,fval,exitflag = fminbnd(,) %xitflag 为终止迭代的条件x,fval,exitflag,output = fminbnd(,) % output 为优化信息说明若参数 exitflag0 ,表示函数收敛于x,若 exitflag=0 ,表示超过函数估计值或迭代的最大数字,exitflag x,fval,exitflag,output=fminbnd(x3+cos(x)+x*log(x)/exp(x),0,1)x = 0.5223 名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
10、- - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 29 页 - - - - - - - - - 第 5 章优化问题179 fval = 0.3974 exitflag = 1 output = iterations: 9 funcCount: 9 algorithm: golden section search, parabolic interpolation 例 5-3 在0, 5上求下面函数的最小值1) 3x()x(f3解:先自定义函数:在MATLAB编辑器中建立M 文件为:function f = myfun(x) f = (x-3).2
11、- 1; 保存为 myfun.m ,然后在命令窗口键入命令: x=fminbnd(myfun,0,5) 则结果显示为:x = 3 5.3.2 无约束多元函数最小值多元函数最小值的标准形式为)x(fminx其中: x 为向量,如x,x,xxn21在 MATLAB5.x中使用 fmins 求其最小值。命令利用函数 fminsearch 求无约束多元函数最小值函数fminsearch 格式x = fminsearch(fun,x0) %x0 为初始点,fun 为目标函数的表达式字符串或MATLAB自定义函数的函数柄。x = fminsearch(fun,x0,options) % options 查
12、 optimset x,fval = fminsearch( ,) %最优点的函数值x,fval,exitflag = fminsearch(,) % exitflag 与单变量情形一致x,fval,exitflag,output = fminsearch(, ) %output 与单变量情形一致注意: fminsearch 采用了 Nelder-Mead 型简单搜寻法。例 5-4 求222132131xxx10 xx4x2y的最小值点解:X=fminsearch(2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2, 0,0)结果为X = 1.0016 0.8335
13、 或在 MATLAB编辑器中建立函数文件function f=myfun(x) f=2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2; 保存为 myfun.m ,在命令窗口键入 X=fminsearch (myfun, 0,0) 或 X=fminsearch(myfun, 0,0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 29 页 - - - - - - - - - MATLAB 6.0 数学手册180 结果为:X = 1.0016
14、0.8335 命令利用函数 fminunc 求多变量无约束函数最小值函数fminunc 格式x = fminunc(fun,x0) %返回给定初始点x0 的最小函数值点x = fminunc(fun,x0,options) % options 为指定优化参数x,fval = fminunc(,) %fval 最优点 x 处的函数值x,fval,exitflag = fminunc(,) % exitflag 为终止迭代的条件,与上同。x,fval,exitflag,output = fminunc(,) %output 为输出优化信息x,fval,exitflag,output,grad =
15、fminunc(,) % grad 为函数在解x 处的梯度值x,fval,exitflag,output,grad,hessian = fminunc( ,) %目标函数在解x 处的海赛(Hessian)值注意: 当函数的阶数大于2 时,使用 fminunc 比 fminsearch 更有效,但当所选函数高度不连续时,使用fminsearch 效果较好。例 5-5 求222121xxx2x3)x( f的最小值。 fun=3*x(1)2+2*x(1)*x(2)+x(2)2; x0=1 1; x,fval,exitflag,output,grad,hessian=fminunc(fun,x0) 结
16、果为:x = 1.0e-008 * -0.7591 0.2665 fval = 1.3953e-016 exitflag = 1 output = iterations: 3 funcCount: 16 stepsize: 1.2353 firstorderopt: 1.6772e-007 algorithm: medium-scale: Quasi-Newton line search grad = 1.0e-006 * -0.1677 0.0114 hessian = 6.0000 2.0000 2.0000 2.0000 或用下面方法: fun=inline(3*x(1)2+2*x(1)
17、*x(2)+x(2)2) fun = Inline function: fun(x) = 3*x(1)2+2*x(1)*x(2)+x(2)2 x0=1 1 ; x=fminunc(fun,x0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 29 页 - - - - - - - - - 第 5 章优化问题181 x = 1.0e-008 * -0.7591 0.2665 5.3.3 有约束的多元函数最小值非线性有约束的多元函数的标准形式为:)x(fminxsub.to
18、0)x(C0)x(CeqbxAbeqxAequbxlb其中: x、b、beq、lb、ub 是向量, A、Aeq 为矩阵, C(x)、Ceq(x)是返回向量的函数,f(x) 为目标函数, f(x)、C(x)、 Ceq(x)可以是非线性函数。在 MATLAB5.x中,它的求解由函数constr 实现。函数fmincon 格式x = fmincon(fun,x0,A,b) x = fmincon(fun,x0,A,b,Aeq,beq) x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub) x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
19、 x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) x,fval = fmincon(,) x,fval,exitflag = fmincon(,) x,fval,exitflag,output = fmincon(,) x,fval,exitflag,output,lambda = fmincon(,) x,fval,exitflag,output,lambda,grad = fmincon(,) x,fval,exitflag,output,lambda,grad,hessian = fmincon(, ) 参数说明: fun 为目
20、标函数,它可用前面的方法定义;x0 为初始值;A、b 满足线性不等式约束bxA,若没有不等式约束,则取 A= ,b= ;Aeq、beq 满足等式约束beqxAeq,若没有,则取Aeq= ,beq= ;lb、ub 满足ubxlb,若没有界,可设lb= ,ub= ;nonlcon 的作用是通过接受的向量x 来计算非线性不等约束0)x(C和等式约束0)x(Ceq分别在 x 处的估计 C 和 Ceq, 通过指定函数柄来使用,如:x = fmincon(myfun,x0,A,b,Aeq,beq,lb,ub,mycon),先建立非线性约束函数,并保存为mycon.m :function C,Ceq = m
21、ycon(x) C = ,% 计算 x 处的非线性不等约束0)x(C的函数值。Ceq = ,% 计算 x 处的非线性等式约束0)x(Ceq的函数值。lambda 是 Lagrange 乘子,它体现哪一个约束有效。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 29 页 - - - - - - - - - MATLAB 6.0 数学手册182 output 输出优化信息;grad 表示目标函数在x 处的梯度;hessian表示目标函数在x 处的 Hessiab 值。例 5-
22、6 求下面问题在初始点(0, 1)处的最优解min 21212221x5x2xxxxsub.to 0 x)1x(22106x3x221解:约束条件的标准形式为sub.to 0 x) 1x(2216x3x221先在 MATLAB编辑器中建立非线性约束函数文件:function c, ceq=mycon (x) c=(x(1)-1)2-x(2); ceq= ; %无等式约束然后,在命令窗口键入如下命令或建立M 文件:fun=x(1)2+x(2)2-x(1)*x(2)-2*x(1)-5*x(2); %目标函数x0=0 1; A=-2 3; %线性不等式约束b=6; Aeq= ; %无线性等式约束be
23、q= ; lb= ; %x 没有下、上界ub= ; x,fval,exitflag,output,lambda,grad,hessian =fmincon(fun,x0,A,b,Aeq,beq,lb,ub,mycon) 则结果为x = 3 4 fval = -13 exitflag = %解收敛1 output = iterations: 2 funcCount: 9 stepsize: 1 algorithm: medium-scale: SQP, Quasi-Newton, line-search firstorderopt: cgiterations: lambda = lower: 2
24、x1 double %x 下界有效情况,通过lambda.lower 可查看。upper: 2x1 double %x 上界有效情况,为0 表示约束无效。eqlin: 0 x1 double %线性等式约束有效情况,不为0 表示约束有效。eqnonlin: 0 x1 double %非线性等式约束有效情况。ineqlin: 2.5081e-008 %线性不等式约束有效情况。ineqnonlin: 6.1938e-008 %非线性不等式约束有效情况。grad = %目标函数在最小值点的梯度1.0e-006 * -0.1776 名师资料总结 - - -精品资料欢迎下载 - - - - - - -
25、- - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 29 页 - - - - - - - - - 第 5 章优化问题183 0 hessian = %目标函数在最小值点的Hessian 值1.0000 -0.0000 -0.0000 1.0000 例 5-7 求下面问题在初始点x=(10, 10, 10) 处的最优解。Min 321xxx)x( fSub.to 72x2x2x0321解:约束条件的标准形式为sub.to 0 x2x2x32172x2x2x321 fun= -x(1)*x(2)*x(3); x0=10,10,10; A=-1 -2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年MATLAB优化教程 2022 MATLAB 优化 教程
限制150内