1. 随机搜索(random searching)
随机搜索不是一种非常好的优化算法,但是它却使我们很容易领会其他算法的意图,并且它也是我们评估其他算法优劣的基准(baseline)。
随机尝试各种解是非常低效的,因为这种方法没有充分利用已经发现的优解。直觉上,最优解总是接近于其他较优解。因为随机优化是盲目的、是跳跃的(jumps around),所以它不会自动去寻找与已经发现的优解相接近的题解。
(1)随机搜索迭代退出的条件一般是,达到最大迭代次数
for i in range(max_iters):
2. 爬山算法(Hill Climbing)
随机搜索的一个替代方案叫做爬山法,
- (1)爬山法以一个随机解开始
- (2)在其临近解中寻找更好的解,
(3)爬山算法的迭代结束的条件是,当前认为的最优和上一次保持一致;
while True: ... ... if current == best: break
爬山算法的一个致命缺陷是,容易陷入局部最小值,它比临近解的表现都好,但却不是全局最优的。解决这一缺陷的一种方法称为随机重复爬山法(random-restart hill climbing)。