24小时热门版块排行榜    

查看: 1873  |  回复: 7

CarrieQh

银虫 (正式写手)

[求助] MATLAB中fminsearch函数 已有2人参与

最近在进行MATLAB优化,用到了fminsearch函数,计算过后发现提示
Maximum number of function evaluations has been exceeded- increase MaxFunEvals option.
查了下书,发现这句话的含义是让我“提高最大的目标函数检查步数”

额。。其实我没明白这句话的含义。。。什么叫“目标函数检查步数”??

在这里求教了。。。。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Sibewolf

木虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
CarrieQh: 金币+3, ★★★很有帮助 2015-09-17 14:48:55
CarrieQh: 金币+4, ★★★很有帮助 2015-10-10 10:24:58
可以这么理解, matlab在求最小值时是不断找更小的值,总共的计算次数必须有个上限不然死循环了,如果达到了计算次数上限最后找到的两个值差别仍然很大或者没有达到预定的精度,就会强制停下来。这个问题在很多种优化算法中都有,一般有个默认的计算次数上限。

发自小木虫Android客户端
2楼2015-09-17 12:08:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
CarrieQh: 金币+3, ★★★很有帮助 2015-10-10 10:24:51
加上以下一句,提高默认设定数值
options=optimest('MaxFunEvals',10000);
...=fminsearch(...,options)
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
3楼2015-09-17 13:43:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

CarrieQh

银虫 (正式写手)

引用回帖:
2楼: Originally posted by Sibewolf at 2015-09-17 12:08:05
可以这么理解, matlab在求最小值时是不断找更小的值,总共的计算次数必须有个上限不然死循环了,如果达到了计算次数上限最后找到的两个值差别仍然很大或者没有达到预定的精度,就会强制停下来。这个问题在很多种优化 ...

那其实算出来的不代表不对,只是可能精度不够是吧?
4楼2015-09-17 14:48:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Sibewolf

木虫 (小有名气)

引用回帖:
4楼: Originally posted by CarrieQh at 2015-09-17 14:48:50
那其实算出来的不代表不对,只是可能精度不够是吧?...

这种情况下算出来的结果是不能保证最小,如果多算几次的结果相差很小,似乎能说明是精度不够

发自小木虫Android客户端
5楼2015-09-18 15:55:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

CarrieQh

银虫 (正式写手)

引用回帖:
5楼: Originally posted by Sibewolf at 2015-09-18 15:55:12
这种情况下算出来的结果是不能保证最小,如果多算几次的结果相差很小,似乎能说明是精度不够
...

这种情况下算出来的结果未必是最小,但是如果我对拟合精度的要求不高的话,其实也可以了,对吧?
6楼2015-09-18 16:38:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Sibewolf

木虫 (小有名气)

引用回帖:
6楼: Originally posted by CarrieQh at 2015-09-18 16:38:14
这种情况下算出来的结果未必是最小,但是如果我对拟合精度的要求不高的话,其实也可以了,对吧?...

我觉得最好还是照三楼说的把最大求解次数设大点试一下

发自小木虫Android客户端
7楼2015-09-19 12:39:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

CarrieQh

银虫 (正式写手)

引用回帖:
3楼: Originally posted by 月只蓝 at 2015-09-17 13:43:45
加上以下一句,提高默认设定数值
options=optimest('MaxFunEvals',10000);
...=fminsearch(...,options)

这个MaxFunEvals的意思是“最大目标函数检查步数”
和MaxIter“最大的迭代步数”有什么区别呢?
8楼2015-10-10 10:24:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 CarrieQh 的主题更新
信息提示
请填处理意见