Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 随机爬山_Java_Algorithm_Simulated Annealing_Stochastic_Hill Climbing - Fatal编程技术网

Java 随机爬山

Java 随机爬山,java,algorithm,simulated-annealing,stochastic,hill-climbing,Java,Algorithm,Simulated Annealing,Stochastic,Hill Climbing,我试图在Java中实现无畏的爬山。我知道这个算法会生成一个随机选取的新解,然后根据该解的好坏接受该解。例如,如果它非常糟糕,那么它将有一个很小的机会,如果它非常糟糕,那么它将有更多的机会被选中,但我不确定如何在java中实现这种可能性 在谷歌上浏览时,我遇到了这个等式,在哪里 代表旧的健康 代表新的健康 T是一个参数 我真的不知道如何解释这个等式 有人能帮助我如何在Java中实现这一点吗?你可以在这本书中找到关于爬山算法的详细介绍。这本书也有一个代码库,你可以找到这个 下面是(Hillcl

我试图在Java中实现无畏的爬山。我知道这个算法会生成一个随机选取的新解,然后根据该解的好坏接受该解。例如,如果它非常糟糕,那么它将有一个很小的机会,如果它非常糟糕,那么它将有更多的机会被选中,但我不确定如何在java中实现这种可能性

在谷歌上浏览时,我遇到了这个等式,在哪里

  • 代表旧的健康
  • 代表新的健康
  • T是一个参数

我真的不知道如何解释这个等式


有人能帮助我如何在Java中实现这一点吗?

你可以在这本书中找到关于爬山算法的详细介绍。这本书也有一个代码库,你可以找到这个

下面是(HillclimbingSearch.java)在java中的一个实现。但是这个java文件需要导入其他一些源文件。 如果您查看一下代码存储库就更好了。在这个类中有一个公共方法search()

公共列表框架

你可以找到更多关于随机爬山的解释

希望能有所帮助。

非常感谢

等式的左侧
p
将是一个介于0和1之间的双精度,包括0和1
oldFitness
newFitness
T
也可以是双倍的

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

double p = 1 / (1 + Math.exp((oldFitness - newFitness) / T));
if (Math.random() < p) {
    // accept the new solution
double p=1/(1+Math.exp((oldFitness-newFitness)/T));
if(Math.random()
Pr()
是概率。所以
Pr(接受)
是接受给定
f
f'
T
的解决方案的概率。为了帮助您,我们需要更多关于您尝试过的代码以及为什么它不适合您的需要的信息。请举个例子。嗨,Alex,我正在尝试理解这个算法。我不确定如何使用im用Java实现它。
double p = 1 / (1 + Math.exp((oldFitness - newFitness) / T));
if (Math.random() < p) {
    // accept the new solution