我在使用matlab的fminsearch时遇到了一些问题。我已将TolX和TolFun定义为以下
options = optimset('TolFun',1e-8, 'TolX', 1e-8)
然后我尝试使用
估算我的函数的参数[estimates val] = fminsearch(model, start_point,options)
但是,val大约是3.3032e-04。即使我将TolFun指定为1e-8,它仍然在此之前终止,其值大约为3.3032e-04。实际上,参数的期望值是在1.268e-04附近获得的。所以我试着设置TolFun。为什么它不起作用,它应该已经收敛到函数的最小值不是吗?
答案 0 :(得分:1)
终止搜索还有其他原因,例如,函数评估的最大数量,最大迭代次数等。fminsearch
提供了额外的输出参数,为您提供有关终止原因的信息。您尤其需要完整的OUTPUT
参数,该参数提供迭代次数,终止消息等。
[X,FVAL,EXITFLAG,OUTPUT] = fminsearch(...) returns a structure
OUTPUT with the number of iterations taken in OUTPUT.iterations, the
number of function evaluations in OUTPUT.funcCount, the algorithm name
in OUTPUT.algorithm, and the exit message in OUTPUT.message.
另一种可能性是你陷入了局部最低限度。除了选择不同的起点或不同的优化器之外,没有太多可以解决的问题。