之前我们介绍过一些求最优解的常用算法模式,比如贪心算法、动态规划算法、穷举算法,都是采用一种确定或几乎确定的方式来寻找最优解。所谓的确定性是指以上这些算法都是建立在确定性基础上的搜索算法,在搜索过程中遇到一个决策点时,对于选 a 还是选 b,其结果是确定的。比如贪婪法,就是按照贪婪策略选择,同样的条件下,每个决策选 1000 次结果都是一样的。
这一课我们要介绍的是随机化算法,该算法并不是闭着眼睛掷骰子,它是一种带启发式的随机搜索,各种随机化算法都有与之对应的理论基础。随机化算法常见的有模拟退火算法、禁忌搜索、蚁群算法、神经网络,当然也包括本课要介绍的遗传算法(Genetic Algorithm)。这些模拟、演化(进化)式的启发式搜索算法的搜索过程不依赖目标函数的信息,非常适合一些传统最优化方法难以解决的复杂问题或非线性问题,在人工智能、自适应控制、机器学习等领域得到了广泛的应用。
遗传算法原理
达尔文(Darwin)的进化论讲述的是物竞天择、适者生存的自然原理,生物体通过自然选择、基因突变和遗传等规律进化出适应环境变化的优良品种。遗传算法就是这样一种借鉴生物体自然选择和自然遗传机制的随机搜索算法,其搜索过程就是“种群”一代一代“进化”的过程,通过评估函数进行优胜劣汰的选择,通过交叉和变异来模拟生物的进化。