2014-10-09 126 views

回答

2

最简单,最明显的解决方案是使用随机游走算法算法。它的工作原理是从搜索空间内的一个随机点开始,然后访问它的随机邻居。

类似但更合理的算法是爬山。再次,你从一个随机点开始,但这次你选择了最好的邻居。

另一种技术上的启发式算法是随机抽样,这只意味着从搜索空间中选取任意一点并记住找到的最佳点。

对随机采样的改进是模拟退火算法。这是一种随机抽样和爬山的融合:你首先在搜索空间中选取随机点,但随着时间的推移,你倾向于坚持更高质量的点。

您可以在维基百科上找到更多关于以上所有信息和伪代码的示例。

一整套不同的解决方案是遗传算法。你可以通过阅读http://www.obitko.com/tutorials/genetic-algorithms/index.php开始了解他们。不幸的是,它似乎没有任何代码示例。

1

您参考的维基百科文章提到adaptive coordinate descent,这是一种最先进的演化算法,作为最小化Rosenbrock函数的技术。用谷歌搜索找到了几个包含伪代码和算法的论文,其中包括this one。该论文甚至包含对actual code in Matlab的引用。

您也可以使用随机重启期望最大化,尽管这可能比自适应坐标下降效率低得多。