【问题标题】:How to ensure my optimization algorithm has found the solution?如何确保我的优化算法找到了解决方案?
【发布时间】:2020-07-21 00:48:42
【问题描述】:

我正在执行数值优化,试图找到与数据的某些时刻最匹配的统计模型的参数。我总共需要找到 6 个参数。我编写了一个 matlab 函数,它将参数作为输入,并给出与经验矩的偏差平方和作为输出。我使用 fminsearch 函数来查找参数,它给了我一个解决方案。

但是,我不确定这是否真的是全球最低限度。我可以做哪些类型的检查来确保数值解是正确的?由于高维,绘制函数具有挑战性。任何解决此类问题的一般性建议也值得赞赏。

【问题讨论】:

  • 你能发布一些你试过但没有用的代码吗?
  • 由于fminsearch 是一种数值方法,fminsearch 将返回一个局部最小值。

标签: matlab optimization mathematical-optimization numerical-methods numerical-computing


【解决方案1】:

您正在描述 global optimization problem 的困难。

正如其中一个 cmets 所述,fminsearch() 和相关函数 fminunc() 将返回一个局部最小值它不保证您将获得全局最小值。

检查您得到的答案是否真的是全局最小值的一种简单方法是从不同的起点多次运行该函数。如果答案都收敛到相同的值,它可能是全局最小值。如果您找到错误值较低的答案,则最后一个答案不是全局最小值。

完全确定你有全局最小值的唯一方法是知道你的函数是否是convex(即你的函数只有一个最小值。)这将有分析完成。

如果无法通过分析完成,您可能需要考虑许多全局优化方法,包括一些可用的 MATLAB toolbox

【讨论】:

  • 谢谢,我将尝试编写一个从多个起点开始的代码,并可能获得全局优化器。
猜你喜欢
  • 1970-01-01
  • 2021-04-28
  • 2022-01-01
  • 1970-01-01
  • 2018-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-08
相关资源
最近更新 更多