随机爬山法

Stochastic Hill Climbing

我正在尝试在 Java 中实施随机爬山法。我知道这个算法会生成一个随机选择的新解决方案,然后根据 bad/good 的情况接受该解决方案。例如,如果它非常糟糕,那么它就会有很小的机会,如果它非常糟糕,那么它就会有更多的机会被选中,但我不确定如何在 java.[=11= 中实现这个概率。 ]

浏览 Google 时,我偶然发现了这个等式,其中;

我不太确定如何解释这个等式。

有人可以帮助我如何在 Java 中实现它吗?

你可以在这本书中找到关于爬山算法的很好的理解Artificial Intelligence a Modern Approach. This book also have a code repository, here你可以找到这个。

这里是 java 中 HillClimbing (HillclimbingSearch.java) 的实现。但是这个 java 文件需要导入一些其他源文件。 最好看看代码库。在这个 class 中你有一个 public 方法 search() -

public List<Action> search(Problem p){}  

从方法签名可以看出此方法需要 Problem p 和 returns List of Action。要获得这些 ProblemAction,您必须使用 aima 框架。

您可能会找到更多关于随机爬山的解释 here

希望对您有所帮助。
非常感谢。

等式的左边 p 是介于 0 和 1 之间的双精度数,包括 0 和 1。 oldFitnessnewFitnessT 也可以是双打。

您的代码中将包含与此类似的内容:

double p = 1 / (1 + Math.exp((oldFitness - newFitness) / T));
if (Math.random() < p) {
    // accept the new solution