如何确保我的优化算法找到了解决方案?
How to ensure my optimization algorithm has found the solution?
我正在执行数值优化,我试图找到与数据的某些时刻最匹配的统计模型参数。我总共需要找到 6 个参数。我写了一个 matlab 函数,它将参数作为输入,并给出与经验矩的偏差平方和作为输出。我使用 fminsearch 函数查找参数,它给了我一个解决方案。
但是,我不确定这是否真的是全局最小值。我可以做什么类型的检查来确保数值解是正确的?由于高维度,绘制函数具有挑战性。对于解决此类问题的任何一般性建议,我们也表示赞赏。
您描述的是 global optimization problem.
的困难
如其中一条评论所述,fminsearch()
和相关函数 fminunc()
将 return 一个 局部最小值 。 它不保证您将获得全局最小值。
检查您得到的答案是否真的是全局最小值的一种简单方法是从不同的起点多次 运行 该函数。如果答案都收敛到相同的值,它 可能 是全局最小值。如果您找到错误值较低的答案,则最后一个答案不是全局最小值。
完全确定您拥有全局最小值的唯一方法是 知道您的函数是否为 convex(即您的函数只有一个单个最小值。)这必须通过分析来完成。
如果无法通过分析完成,您可能需要考虑许多全局优化方法,包括一些可用的 MATLAB toolbox。
我正在执行数值优化,我试图找到与数据的某些时刻最匹配的统计模型参数。我总共需要找到 6 个参数。我写了一个 matlab 函数,它将参数作为输入,并给出与经验矩的偏差平方和作为输出。我使用 fminsearch 函数查找参数,它给了我一个解决方案。
但是,我不确定这是否真的是全局最小值。我可以做什么类型的检查来确保数值解是正确的?由于高维度,绘制函数具有挑战性。对于解决此类问题的任何一般性建议,我们也表示赞赏。
您描述的是 global optimization problem.
的困难如其中一条评论所述,fminsearch()
和相关函数 fminunc()
将 return 一个 局部最小值 。 它不保证您将获得全局最小值。
检查您得到的答案是否真的是全局最小值的一种简单方法是从不同的起点多次 运行 该函数。如果答案都收敛到相同的值,它 可能 是全局最小值。如果您找到错误值较低的答案,则最后一个答案不是全局最小值。
完全确定您拥有全局最小值的唯一方法是 知道您的函数是否为 convex(即您的函数只有一个单个最小值。)这必须通过分析来完成。
如果无法通过分析完成,您可能需要考虑许多全局优化方法,包括一些可用的 MATLAB toolbox。