使用GNU Scientific“multimin”查找所有本地最小值

时间:2008-10-17 10:08:48

标签: numerical minimization

GNU Scientific库有一个multi-dimensional function minimization框架。然而,它的警告明确地说,当在具有几个不同局部最小值的函数上使用时,它只返回一个任意解。有没有人知道如何调整它以便返回所有局部最小值列表(符合一些阈值标准)?

3 个答案:

答案 0 :(得分:3)

它不是基于GNU Scientific,但我发现这个算法可以找到所有本地最小值:http://www.cs.uoi.gr/~lagaris/papers/MINF.pdf

答案 1 :(得分:2)

任何标准优化算法都会在某个“接近”起点的位置查找本地最小值,可以由其自身选择或由您提供。找到所有局部最小值可能是一个不可计算的问题,因为即使在有限范围内(例如f(x)= [cos(1 / x)] ^ 2也有无限数量的局部最小值在(0,1)范围内)。 假设你有一个有限数量的局部最小值,找到所有这些是比找到全局最小值更复杂的任务,这反过来比在你附近找到局部最小值要​​困难得多。没有简单的方法来调整局部优化算法来找到全局最小值。即使是寻找全局最小值的流行算法,例如遗传算法/进化策略,也不能保证它们访问所有局部最小值。事实上,他们正试图避免它。

在这种情况下使用GSL的最佳方法是查看最小化函数并尝试猜测最小值应该在哪里,然后使用GSL代码查找它们。

答案 2 :(得分:0)

事实证明,对于寻找函数的所有局部最小值和全局最小值的任务,粒子群优化方法不是一个不错的选择。代码PSO to find local minimum PSO to find global minimum供您参考。