java - 随机爬山法

标签 java algorithm simulated-annealing stochastic hill-climbing

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

在浏览 Google 时,我遇到了这个等式,其中;

  • f代表老健身
  • f'代表新适应度
  • T是一个参数

enter image description here

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

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

最佳答案

等式 p 的左边将是介于 0 和 1 之间的 double ,包括 0 和 1。 oldFitnessnewFitnessT 也可以是 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/

相关文章:

optimization - 目标函数(SA)和值(value)函数(RL)有什么区别

algorithm - 模拟退火 - 传感器网络中的传感器定位

optimization - 如何设计具有多个不同成本的模拟退火的验收概率函数?

java - Mockito 不是 stub 该方法,而是调用该方法

java - 在javascript中使用servlet

java - 在 Java 中创建异常安全执行包装器

algorithm - 7 张扑克牌手评估器

java - 比较基于字符串的 java 枚举

algorithm - 是否有任何地方列出的所有数据结构和算法的图表?

c++ - 实现合并排序代码时无法计算所有反转