1

我在使用 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。为什么它不起作用,它应该收敛到函数的最小值,不是吗?

4

1 回答 1

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.

另一种可能性是您陷入了局部最小值。除了选择不同的起点或不同的优化器外,对于这个问题没有什么可做的。

于 2012-06-08T18:39:26.057 回答