第一范文网 - 专业文章范例文档资料分享平台

第九章 最优化方法要点

来源:用户分享 时间:2025/5/31 3:56:22 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

或迭代的最大数字,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):

搜索更多关于: 第九章 最优化方法要点 的文档
第九章 最优化方法要点.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c5adbf2cr9u38ccg96mxg8n6j4879hw00bys_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top