云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 第九章 最优化方法要点

第九章 最优化方法要点

  • 62 次阅读
  • 3 次下载
  • 2025/5/26 6:30:46

或迭代的最大数字,exitflag<0表示函数不收敛于x;若参数output=iterations表示迭代次数,output=funccount表示函数赋值次数,output=algorithm表示所使用的算法。

x3+cosx+xlogx例6 计算函数f(x)=在区间(0,1)内的最小值。 xe在命令窗口输入:

>> [x,fval,exitflag,output]=fminbnd('(x^3+cos(x)+x*log(x))/exp(x)',0,1) 输出结果为:

x = 0.5223 fval = 0.3974 exitflag = 1 output = iterations: 8 funcCount: 9

algorithm: 'golden section search, parabolic interpolation' message: [1x112 char]

表明该函数在x =0.5223时取最小值0.3974。 ezplot('(x^3+cos(x)+x*log(x))/exp(x)',0,1) 为简化输出结果,可输入:

>> [x,fval]=fminbnd('(x^3+cos(x)+x*log(x))/exp(x)',0,1) 9.3.2 无约束多元函数极(最)小值

在MATLAB中使用fminsearch函数和fminunc函数求无约束多元函数的极(最)小值。

(1)fminsearch函数 该函数的调用格式为:

[x,fval,exitflag,output]= fminsearch(fun,x0,options)

其中输入参数fun为目标函数的表达式字符串或MATLAB自定义的M函数,x0为初始点,options为指定优化参数选项;输出参数x为多元函数的最小值点,fval为最小值,exitflag和output与单变量情形一致。

332例7 求y=2x1的最小值点。 +4x1x2-10x1x2+x2在命令窗口输入:

>> [x,fval]=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 fval = -3.3241

表明当x1=1.0016,x2=0.8335时函数的最小值为-3.3241。

(2)fminunc函数 该函数的调用格式为:

[x,fval,exitflag,output,grad,hessian] = fminunc (fun,x0,options)

其中输入参数fun为目标函数的表达式字符串或MATLAB自定义的M函数,x0为初始点,options为指定优化参数选项;输出参数x为多元函数的最小值点,fval为最小值,exitflag和output与单变量情形一致,grad为函数在解x处的梯度值,hessian为目标函数在解x处的海赛(Hessian)值。

fminsearch利用了单纯形法的原理,fminunc利用了拟牛顿法的原理。当函数的阶数大于2时,使用fminunc比fminsearch更有效,但当所选函数高度不连续时,使用fminsearch效果较好,这两个函数都容易陷入局部优化,并且结果的正确与否还要取决于初值点x0的选取。

利用fiminunc求例7的最小值。 在名利窗口输入:

>>[x,fval]=fminunc('2*x(1)^3+4*x(1)*x(2)^3-10*x(1)*x(2)+x(2)^2',[0.5,0.5]) 输出结果为:

x =

1.0016 0.8335

fval = -3.3241

此结果和fminsearch函数的求解结果一样。 9.3.3有约束的多元函数最小值

非线性有约束的多元函数的标准形式为:

minxf(x)

ìC(x)£0????Ceq(x)=0??s.t ?xb íA祝??Aeq?xbeq??????lb#xub其中:x,b,beq,lb,ub是向量,A,Aeq为矩阵,C(x)、Ceq(x)是返回向量的函数,f(x)为目标函数,f(x)、C(x)、Ceq(x)可以是非线性函数。

在MATLAB用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) 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为目标函数,它可用前面的方法定义;x0为初始值;A、b满足线

xb,若没有不等式约束,则取A=[],b=[];Aeq、beq满足等性不等式约束A祝式约束Aeq?xbeq,若没有,则取Aeq=[],beq=[];lb、ub满足lb#xub,

若没有界,可设lb=[],ub=[];nonlcon的作用是通过接受的向量x来计算非线性不等约束C(x)£0和等式约束Ceq(x)=0分别在x处的估计C和Ceq,通过M文件建立,如:

>>x = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon),先建立非线性约束函数,并保存为mycon.m:function [C,Ceq] = mycon(x)

C = … % 计算x处的非线性不等约束C(x)£0的函数值。 Ceq = … % 计算x处的非线性等式约束Ceq(x)=0的函数值。 输出参数x为多元函数的最小值点,fval为最小值,exitflag和output与单变量情形一致,lambda是Lagrange乘子,它体现哪一个约束有效,grad为函数在解x处的梯度值,hessian为目标函数在解x处的海赛(Hessian)值。

例8 求下面问题在初始点x=(10, 10, 10)处的最优解。 min f(x)=-x1x2x3 sub.to 0?x12x2+2x3?72

解:约束条件的标准形式为 sub.to -x1-2x2-2x3?0

x1+2x2+2x3?72

在命令窗口输入: >> fun= '-x(1)*x(2)*x(3)'; x0=[10,10,10]; A=[-1 -2 -2;1 2 2]; b=[0;72];

[x,fval]=fmincon(fun,x0,A,b) 输出结果为:

Optimization terminated: magnitude of directional derivative in search direction less than 2*options.TolFun and maximum constraint violation is less than options.TolCon.

Active inequalities (to within options.TolCon = 1e-006):

搜索更多关于: 第九章 最优化方法要点 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

或迭代的最大数字,exitflag<0表示函数不收敛于x;若参数output=iterations表示迭代次数,output=funccount表示函数赋值次数,output=algorithm表示所使用的算法。 x3+cosx+xlogx例6 计算函数f(x)=在区间(0,1)内的最小值。 xe在命令窗口输入: >> [x,fval,exitflag,output]=fminbnd('(x^3+cos(x)+x*log(x))/exp(x)',0,1) 输出结果为: x = 0.5223 fval = 0.3974 exitflag = 1 output = iterations: 8 funcCount: 9 algorithm: 'golden section sear

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com