随机优化算法特别适合用来解决受多个变量影响,存在很多可能的解,且结果因这些变量的组合而产生很大变化的问题。其典型的应用场景是,问题的解空间非常大,以至于我们无法对所有可能的解逐一尝试的情况。对于这类问题最简单低效的求解方法是尝试随机猜测成千上万个解,并从中找出最佳的解。更有效率的方法则是从随机解出发,朝着可能有改进的方向修正来逼近最优解。本文将从最低效的随机搜索算法出发,随后介绍更优的爬山法、模拟退火、遗传算法等随机优化算法。
成本函数(Cost Function)
成本函数是使用优化算法解决问题的关键。任何优化算法的目标,都是要寻找一组能够使得成本函数的结果最小化的解。因此,当我们给定一个解时,成本函数需要评估这个解的好坏,并返回一个值表示评估的结果,通常返回的值越大代表成本越高,即对应的解越差。
随机搜索(Random Searching)
随机搜索是一种简单低效的优化算法,虽然效果不是非常好,但是有助于我们理解其他的优化算法,也是我们评估其他算法的基线。
随机搜索会尝试 n 次的随机猜测,每次尝试的过程如下:
- 首先生成一个随机解;
- 随后使用成本函数评估成本;
- 与目前为止的最优解比较成本,如果成本更低则更新最优解及最优成本。
虽然 n 次的猜测在全部的可能性中只占非常小的一部分,得到最优解的几率很小,但我们仍然有机会得到还算不错的解。