爬山似乎是一个非常强大的优化工具。然而,如何生成解决方案的“邻居”总是让我感到困惑。
例如,我正在优化一个解决方案. 这里在范围内,在范围内,在范围内. 产生“邻居”的最佳方式是什么?我不能在这里真正选择“步长”,因为步长 1 对, 但对.
在爬山算法中生成“邻居”的最佳通用方法是什么?
爬山似乎是一个非常强大的优化工具。然而,如何生成解决方案的“邻居”总是让我感到困惑。
例如,我正在优化一个解决方案. 这里在范围内,在范围内,在范围内. 产生“邻居”的最佳方式是什么?我不能在这里真正选择“步长”,因为步长 1 对, 但对.
在爬山算法中生成“邻居”的最佳通用方法是什么?
Vincent 的解决方案将帮助您克服第一个障碍。即使所有维度都具有相同的范围,您可能仍然想知道如何选择步长。在这种情况下,它有助于理解您的函数的行为,以便您可以选择适当的值。另一种方法是根据梯度自适应地设置步长(如果函数变化很大,请小心翼翼)。
本文可能也有一些有趣的想法:On a Hill-Climbing Algorithm with Adaptive Step Size: Towards a Control Parameter-Less Black-Box Optimization Algorithm
最简单(也是最安全)的方法是重新参数化您的问题,以便所有参数都具有可比较的范围,例如 [0,1]。
或者,您可以为每个参数使用不同的步长。