遗传算法Python代码实现

1. 遗传算法的科学定义

​ 遗传算法(Genetic Algorithm, GA)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。

​ 其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,不需要确定的规则就能自动获取和指导优化的搜索空间,自适应地调整搜索方向。

​ 遗传算法以一种群体中的所有个体为对象,并利用随机化技术指导对一个被编码的参数空间进行高效搜索。其中,选择、交叉和变异构成了遗传算法的遗传操作;参数编码、初始群体的设定、适应度函数的设计、遗传操作设计、控制参数设定五个要素组成了遗传算法的核心内容。

​ 遗传算法起源于对生物系统所进行的计算机模拟研究,它是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,借鉴了达尔文的进化论和孟德尔的遗传学说,其本质是一种高效、并行、全局搜索的方法,能在搜索过程中自动获取和积累有关搜索空间的知识,并自适应地控制搜索过程以求得最佳解。遗传算法寻优迭代流程如下图所示:

2.进化论知识及遗传算法思想

2.1专业术语

遗传算法 ( GA , Genetic Algorithm ) ,也称进化算法 。 遗传算法是受达尔文的进化论的启发,借鉴生物进化过程而提出的一种启发式搜索算法。因此在介绍遗传算法前有必要简单的介绍生物进化知识,对专业的术语的理解也是必不可少的:

种群 (Population) :生物的进化以群体的形式进行,这样的一个群体称为种群。

个体(individual):组成种群的单个生物,算法里指染色体带有特征的实体,也可以理解为染色体。

基因型(genotype):性状染色体的内部表现;在遗传算法中,由于编码方式不同,进化过程中解的形式和实际问题的形式会有所不同。如原始问题的一个解为 x i = ( − 3 , 2 ) x_i=(-3,2) xi=(3,2) ,而二进制染色体的形式为 x i ′ = 00110010100 x_i'=00110010100 xi=00110010100 (注意这里的二进制编码不是简单地把 x i x_i xi 转化为二进制拼在一起,具体往下看),即染色体只能由0和1组成,所以需要一个映射函数和反映射函数,使问题的解和染色体表达形式能够进行编码(encoding)解码(decoding),即:

encoding decoding
x i ′ = 00110010100 x_i'=00110010100 xi=00110010100 x i = ( − 3 , 2 ) x_i=(-3,2) xi=(3,2)
= f ( x i ) f(x_i) f(xi) = f − 1 ( x i ) f^{-1}(x_i) f1(xi)
= f ( − 3 , 2 ) f(-3,2) f(3,2) = f − 1 ( 00110010100 ) f^{-1}(00110010100) f1(00110010100)

表现型(phenotype): 染色体决定的性状的外部表现;在遗传算法中,表现型和基因型是一一对应的,如 x i ′ = 00110010100 x_i'=00110010100 xi=00110010100 是基因型, x i = ( − 3 , 2 ) x_i=(-3,2) xi=

  • 25
    点赞
  • 217
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值