--以下言论为个人见解,也有参考前人经验之处--
--若有不当之处,期待与您交流--
一、遗传算法从智能角度理解
智能优化算法是指受人类智能或生物智能启迪而设计的一类高效优化方法。
遗传算法借鉴了生物“适者生存”(出自达尔文的《进化论》)的道理,属于进化式算法的一种。
因此,我们可以举一个人类进化的例子:
在很久很久以前,在一个地方生活着一群人,我们把这群人称为“初始种群”,种群中的每个人称为“个体”,一个人的基因组由23对“染色体”组成。
由于自然环境影响,这群人中不能适应环境的人被淘汰掉了,因此,更适应生存的个体被保留。这就也就是下方所说的“复制”。
由于繁衍的本能,种群中的个体之间进行交叉,因此产生了新的个体。这就也就是下方所说的“交叉”。
此外,基因还有概率产生基因突变,或许在下一代中产生了能力更强的个体,也或者这种突变产生了残疾个体,这也就是下方所说的“变异”。
但即使变异出了差的基因,最终还是会回到“复制”,即:更适应生存的被保留。
从人类进化的角度,就是这样不断地复制、交叉、变异产生了一代又一代的后人,也是达尔文《进化论》中所说的“适者生存(相当于复制)”和“物竞天择(相当于变异)”的体现。
因此,优化算法借鉴了这种生物进化所体现出的智能,提出了“遗传算法”的概念。
--非生物学专业理解,如有不当之处,还望包涵--
二、遗传算法的计算实现过程
遗传算法的流程图如下所示:
遗传算法的手算过程演示:
①种群初始化(个体编码组合)
假设一个种群有6个个体,他们的基因组编码如下表所示。
个体编号 | 基因组 |
① | 0 0 0 1 0 |
② | 0 0 1 1 0 |
③ | 0 1 0 1 0 |
④ | 1 0 1 1 0 |
⑤ | 1 1 0 1 0 |
⑥ | 1 1 1 1 0 |
②计算个体适应度
在计算之前,你得明确什么样算是适应。其实就是对应你要求解的问题,越接近你要求解的问题的结果,越是适应。
以求解为例,那么函数的适应度值就是
的值,适应度越大越好。
个体编号 | 基因组 | 实值 | 适应度值( |
① | 0 0 0 1 0 | 2 | 4 |
② | 0 0 1 1 0 | 6 | 36 |
③ | 0 1 0 1 0 | 10 | 100 |
④ | 1 0 1 1 0 | 24 | 576 |
⑤ |