声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2998|回复: 8

[共享资源] 【转】Matlab优化工具箱详解

[复制链接]
发表于 2009-10-11 23:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
Matlab优化工具箱详解
1.fminbnd
进行有约束的一元函数最小值求解。它的求解命令是:
X = FMINBND(FUN,x1,x2),FUN 是目标函数,可以为表达式字符串或MATLAB自定义函数的函数柄,要求解在约束 x1 <= X <= x2下的最优解X*。
还有其他一些求解命令是:
x = fminbnd(fun,x1,x2,options) % options为指定优化参数选项,由OPTIMSET设定
[x,fval] = fminbnd(…) % fval为目标函数的最小值
[x,fval,exitflag] = fminbnd(…) %exitflag为终止迭代的原因
[x,fval,exitflag,output] = fminbnd(…) % output为优化信息
说明:若参数exitflag>0,表示函数收敛于x,若exitflag=0,表示达到了最大迭代次数,exitflag<0表示函数不收敛于x;若参数output=iterations表示迭代次数,output=funccount表示函数赋值次数,output=algorithm表示所使用的算法。
例子:要求解f(x)=x3-2x-5在(0,2)之间最优解,求解命令如下:
f = @(x)x.^3-2*x-5;
x = fminbnd(f, 0, 2);

2.fminsearch
进行多变量函数的无约束优化。
格式主要有:
x = fminsearch(fun,x0);%对函数fun,从x0开始搜索最优值,返回最优变量x
x = fminsearch(fun,x0,options);%可以用optimset设置一些优化选项;
[x,fval] = fminsearch(...);%返回feval为最优函数值;
[x,fval,exitflag] = fminsearch(...);%exitflag与fminbnd类似;
[x,fval,exitflag,output] = fminsearch(...);%output与fminbnd类似;
例子:要求函数f (x)= 100*(x(2)-x(1)^2)^2+(1-x(1))^2的最小值,用fminsearch求解如下:
fun = @(x)100*(x(2)-x(1)^2)^2+(1-x(1))^2;
[x,fval] = fminsearch(fun,[-1.2, 1]);

3.fminunc
与fminsearch一样,也是对多变量无约束函数优化。
指令格式:
x = fminunc(fun,x0)
x = fminunc(fun,x0,options)
[x,fval] = fminunc(...)
[x,fval,exitflag] = fminunc(...)
[x,fval,exitflag,output] = fminunc(...)
[x,fval,exitflag,output,grad] = fminunc(...);%grad为解x处的梯度值;
[x,fval,exitflag,output,grad,hessian] = fminunc(...);% 目标函数在解x处的海赛(Hessian)值。
从算法上来讲,当函数的阶数大于2时,fminunc比fminsearch更有效,因为它采用了基于梯度的优化算法,而fminsearch采用的是Nelder-Mead型简单搜寻法,但是,正因为这样,当函数不连续时,fminsearch的效果反而更好。

4.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(...)
其中一些参数的定义见非线性有约束多变量函数的标准形式:
min f(x)
sub.to C(x)<=0
Ceq(x)=0
A*x<=b
Aeq*x=beq
lb<=x<=ub
其中非线性不等式C(x)和等式Ceq(x)定义在nonlcon中。通过指定函数柄来使用,如:>>x = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon),先建立非线性约束函数,并保存为mycon.m:function [C,Ceq] = mycon(x)
C = … % 计算x处的非线性不等约束 的函数值。
Ceq = … % 计算x处的非线性等式约束的函数值。
lambda是Lagrange乘子,它体现哪一个约束有效。
output为输出优化信息;
grad表示目标函数在x处的梯度;
hessian表示目标函数在x处的Hessiab值。
例如,目标函数为:
function f = myfun(x)
f = -x(1) * x(2) * x(3);
约束为:
0≤x(1)+2x(2)+2x(3) ≤72
那么我们可以将其写成Ax≤b的形式,则
A=[-1 -2 -2;1 2 2];b=[0;b];
求解命令为:
x0 = [10; 10; 10]; % 初始值
[x,fval] = fmincon(@myfun,x0,A,b)

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2009-10-12 09:07 | 显示全部楼层
基本上, 个人以为这些在Help文件里头都有, 可说是汉字版的小规模help!
若可以再加上LZ自己使用上的心得, 那才更好!
回复 支持 1 反对 0

使用道具 举报

发表于 2014-3-19 15:26 | 显示全部楼层
ChaChing 发表于 2009-10-12 09:07
基本上, 个人以为这些在Help文件里头都有, 可说是汉字版的小规模help!
若可以再加上LZ自己使用上的心得,  ...

你好,对于图片中的方程如何求解?用Nelder-Mead算法如何求解?C:\Documents and Settings\Administrator\桌面\QQ截图20140319152508.jpg
发表于 2014-3-19 15:32 | 显示全部楼层
本帖最后由 牛小贱 于 2014-3-19 15:36 编辑
ab77977 发表于 2014-3-19 15:26
你好,对于图片中的方程如何求解?用Nelder-Mead算法如何求解?

请重新编辑一下帖子,上传图片!难道不会上传图片?操作如图:回复他人帖子的时候,可以先点击“高级模式”——点击“图片”……
2.png
1.png

评分

1

查看全部评分

发表于 2014-3-19 15:37 | 显示全部楼层
牛小贱 发表于 2014-3-19 15:32
请重新编辑一下帖子,上传图片!难道不会上传图片?操作如图:回复他人帖子的时候,可以先点击“高级模式 ...

您好,不好意思,没有弄好,这个是关于基于威布尔分布的比例故障率模型,采用极大似然函数估计得到一个非线性方程组,需要求解这个方程组的待定参数,请问这样一个方程如何求解?如何采用Nelder-Mead方法求解?我用牛顿迭代得不到结果。
QQ截图20140319152508.jpg
发表于 2014-3-19 15:49 | 显示全部楼层
牛小贱 发表于 2014-3-19 15:32
请重新编辑一下帖子,上传图片!难道不会上传图片?操作如图:回复他人帖子的时候,可以先点击“高级模式 ...

您好,这个方程组中r、t以及Z都是已知的,Beta、Ita以及alpha就是要估计的待定参数,对于这样的方程组,常数项不能确定,方程组的表达式不能最终确定的非线性方程组如何求解?谢谢
发表于 2015-4-15 12:58 | 显示全部楼层
用fminsearch函数对初值的选择很敏感。
发表于 2015-4-23 15:20 | 显示全部楼层
不错,谢谢
发表于 2015-5-2 18:57 | 显示全部楼层
有用哦,学到了,顶一个
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-22 14:42 , Processed in 0.082039 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表