我正在尝试用 Java 实现随机爬山。我知道这个算法会生成一个随机选择的新解决方案,然后根据它的好坏程度接受该解决方案。例如,如果它非常糟糕,那么它就会有很小的机会,如果它很糟糕,那么它就会有更多的机会被选中,但我不确定如何在 java 中实现这个概率。
在浏览 Google 时,我遇到了这个等式,其中;
- f代表老健身
- f'代表新适应度
- T是一个参数
我不太确定如何解释这个等式。
有人可以帮助我如何在 Java 中实现它吗?
最佳答案
等式 p
的左边将是介于 0 和 1 之间的 double ,包括 0 和 1。 oldFitness
、newFitness
和 T
也可以是 double 。
您的代码中将包含类似的内容:
double p = 1 / (1 + Math.exp((oldFitness - newFitness) / T));
if (Math.random() < p) {
// accept the new solution
关于java - 随机爬山法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28840452/