Java 随机爬山
我试图在Java中实现无畏的爬山。我知道这个算法会生成一个随机选取的新解,然后根据该解的好坏接受该解。例如,如果它非常糟糕,那么它将有一个很小的机会,如果它非常糟糕,那么它将有更多的机会被选中,但我不确定如何在java中实现这种可能性 在谷歌上浏览时,我遇到了这个等式,在哪里Java 随机爬山,java,algorithm,simulated-annealing,stochastic,hill-climbing,Java,Algorithm,Simulated Annealing,Stochastic,Hill Climbing,我试图在Java中实现无畏的爬山。我知道这个算法会生成一个随机选取的新解,然后根据该解的好坏接受该解。例如,如果它非常糟糕,那么它将有一个很小的机会,如果它非常糟糕,那么它将有更多的机会被选中,但我不确定如何在java中实现这种可能性 在谷歌上浏览时,我遇到了这个等式,在哪里 代表旧的健康 代表新的健康 T是一个参数 我真的不知道如何解释这个等式 有人能帮助我如何在Java中实现这一点吗?你可以在这本书中找到关于爬山算法的详细介绍。这本书也有一个代码库,你可以找到这个 下面是(Hillcl
- 代表旧的健康
- 代表新的健康
- T是一个参数
有人能帮助我如何在Java中实现这一点吗?你可以在这本书中找到关于爬山算法的详细介绍。这本书也有一个代码库,你可以找到这个 下面是(HillclimbingSearch.java)在java中的一个实现。但是这个java文件需要导入其他一些源文件。 如果您查看一下代码存储库就更好了。在这个类中有一个公共方法search()
公共列表框架
你可以找到更多关于随机爬山的解释
希望能有所帮助。
非常感谢 等式的左侧p
将是一个介于0和1之间的双精度,包括0和1oldFitness
、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