如何在爬山算法中生成邻居?

计算科学 算法 优化
2021-12-20 08:26:13

爬山似乎是一个非常强大的优化工具。然而,如何生成解决方案的“邻居”总是让我感到困惑。

例如,我正在优化一个解决方案(x1,x2,x3). 这里x1在范围内(0,0.1),x2在范围内(0,100),x3在范围内(0,1000000). 产生“邻居”的最佳方式是什么?我不能在这里真正选择“步长”,因为步长 1 对x1, 但对x3.

在爬山算法中生成“邻居”的最佳通用方法是什么?

2个回答

Vincent 的解决方案将帮助您克服第一个障碍。即使所有维度都具有相同的范围,您可能仍然想知道如何选择步长。在这种情况下,它有助于理解您的函数的行为,以便您可以选择适当的值。另一种方法是根据梯度自适应地设置步长(如果函数变化很大,请小心翼翼)。

本文可能也有一些有趣的想法:On a Hill-Climbing Algorithm with Adaptive Step Size: Towards a Control Parameter-Less Black-Box Optimization Algorithm

最简单(也是最安全)的方法是重新参数化您的问题,以便所有参数都具有可比较的范围,例如 [0,1]。

或者,您可以为每个参数使用不同的步长。