第二次培训之遗传算法

声明:由于本人目前对于该算法的认识较浅且本文只用来学习记录,所以如果想更全面的了解该算法,可以移步至以下链接~
超详细的遗传算法解析
遗传算法介绍并附上Matlab代码
此外,文章部分图片来自于第一个链接。

第二次课主要学习了3种非常经典的优化算法:遗传算法、蚁群算法、粒子群算法。这篇文章先总结遗传算法。

一、遗传算法概述

  遗传算法主要用于求解最优化问题,即优化一个目标函数。它主要运用了生物界种群进化、繁衍的过程中“优胜劣汰、适者生存”的规则,将生存概率较小的个体淘汰,留下优势个体,从而使整个种群最终趋于最优状态。其本质还是一种随机的搜索算法。

二、算法步骤流程图

  假设目前有一个种群,我们希望它们可以往更好的方向发展,从而更好地适应环境。在一次更新换代中,应该有以下步骤:
第二次培训之遗传算法_第1张图片

三、步骤详解

1. 初始化种群

为了保证后续交叉、变异操作的简便性以及随机性,最常用的方法就是:生成一个每个个体都由一个二进制串表示的种群。

  • 二进制串的每一位反映了这个个体的基因,而这个串则反映了这个个体的染色体
  • 二进制对应的十进制表示一个个体
2. 计算个体适应度

如何去反映这个个体在环境中的适应度呢?通常会有一个映射或者是函数,通过表示这个个体的十进制数计算出一个函数值,即为适应度。
第二次培训之遗传算法_第2张图片

3. 选择

计算出个体适应度之后,按照一定的规则,根据“适者生存”的原则对个体进行淘汰。比如说适应度较小的个体淘汰,适应度较大的个体保留下来,从而使种群个体数保持不变。比较常用的方法是“轮盘选择法”。每个个体进入下一代的概率等于它的适应度值与整个种群中个体适应度值和的比例。 第二次培训之遗传算法_第3张图片

4. 交叉

将种群中的所有个体两两分组,进行交叉变换,即染色对应的某一块区域交换,从而产生新的个体。
第二次培训之遗传算法_第4张图片

5. 变异

种群中的所有个体进行变异,即将各种中变异的基因进行0与1的互换:0变成1,1变成0。
第二次培训之遗传算法_第5张图片

6. 更新种群

将执行完上述操作的种群作为新的种群,为下一次迭代做准备。

7. 在所有个体中找到最优解

进行了淘汰之后,这一个种群会是更优势的一个种群,此时可以再其中找到一个最优的个体以及其对应最优适应度,即最优的和,作为待定的最终最优解。

四、说明

该算法的核心是遵循了自然界的这样一种规律,但是其实还是会有很多随机的量,是我们自己需要设定或者是随机生成的。比如:

  • 种群个体数,染色体长度,以及最初的二进制个体种群
  • 适应度较小的个体淘汰,多少算小呢?这个也是随机的
  • 在交叉变换的时候,两个个体交叉变换的概率是多少,到底是染色体哪一块区域进行交换
  • 变异的时候,某个个体变异的概率是多少,到底是染色体的哪一位进行变异

你可能感兴趣的:(数学建模)