1

我有一个浮点数x,它以某种概率[1, 500]生成一个二进制文件。而且我正在尝试找到可以产生最多或最高的那个。我假设只有一个最大值。y1px1p

是否有一种算法可以快速收敛到x最高值p,同时确保它在达到最优值的 0.1% 范围内后不会跳跃太多x?具体来说,如果它在接近 < 0.1% 的最佳值时稳定,那就太好了x

我知道我们可以通过模拟退火来做到这一点,但我认为我不应该对温度进行硬编码,因为当x可能来自[1, 3000]p分布不同时,我需要使用相同的算法。

4

1 回答 1

2

本文提供了一种智能爬山算法。这个想法基本上是你以 n 个样本作为起点。该算法如下(为您的问题简化为一维):

  1. n在搜索空间中取样本点。在论文中,他使用了线性超立方采样,因为假设论文中数据的维度很大。在您的情况下,由于它是一维的,您可以像往常一样使用随机树苗。
  2. 对于每个样本点,从其“局部邻域”收集点并找到最佳拟合二次曲线。从二次曲线中找到新的最大候选。如果新的最大候选的目标函数实际上高于前一个,则将样本点更新为新的最大候选。对每次迭代使用较小的“局部邻域”大小重复此步骤。
  3. 使用样本点中的最佳点
  4. 重新启动:重复第 2 步和第 3 步,然后比较最大值。如果没有改善,停止。如果有改善,再重复一次。
于 2017-12-08T01:22:37.170 回答