【发布时间】:2008-10-17 10:08:48
【问题描述】:
GNU Scientific 库有一个multi-dimensional function minimization 框架。但是,它的警告明确指出,当用于具有多个不同局部最小值的函数时,它只会返回一个任意解决方案。有谁知道您可能会如何调整它,以便它返回 all 局部最小值列表(受某些阈值标准限制)?
【问题讨论】:
GNU Scientific 库有一个multi-dimensional function minimization 框架。但是,它的警告明确指出,当用于具有多个不同局部最小值的函数时,它只会返回一个任意解决方案。有谁知道您可能会如何调整它,以便它返回 all 局部最小值列表(受某些阈值标准限制)?
【问题讨论】:
它不是基于 GNU Scientific,但我发现了这个算法来查找所有局部最小值:http://www.cs.uoi.gr/~lagaris/papers/MINF.pdf
【讨论】:
任何标准优化算法都会在“接近”起点的某个地方寻找一个局部最小值,要么由它自己选择,要么由你提供。找到所有局部最小值可能是一个不可计算的问题,因为即使在有限范围内,您也可以拥有无限数量的局部最小值(例如 f(x) = [ cos(1/x) ]^2 具有无限数量的局部最小值在 (0, 1] 范围内)。 假设你有有限数量的局部最小值,找到所有这些是比找到全局最小值更复杂的任务,而全局最小值又比在你附近的某个地方找到局部最小值要困难得多。没有简单的方法可以调整局部优化算法来找到全局最小值。即使是寻找全局最小值的流行算法,例如遗传算法/进化策略,也不能保证它们访问所有局部最小值。事实上,他们正试图避免这种情况。
在这种情况下使用 GSL 的最佳方法是查看最小化函数并尝试猜测最小值应该在哪里,然后使用 GSL 代码查找它们。
【讨论】:
事实证明,粒子群优化方法对于查找函数的所有局部最小值和全局最小值的任务来说并不是一个糟糕的选择。代码PSO to find local minimumPSO to find global minimum供您参考。
【讨论】: