遗传算法 基本思想

“适者生存”是自然界的一大规律,优胜劣汰,顾名思义,遗传算法可用来解决最优的问题。

遗传算法就是一个优胜劣汰的过程,最终选择出最好的群体。它的大致过程可以用下图表示:

对于我们待求解的问题,首先确定解空间,然后根据我们要求解的问题确定适应度函数。最终是选取适应度值大的留下来。适应度函数的选取是根据原问题来的,一种简单的方法,比如是要求f = x^2 在[0,31]上的最大值,那么适应度函数可以选择f = x^2 本身,但如果待求解的问题是求最小的一个最优问题,则适应度函数的选取应该针对原问题重新设置,因为适应度函数每次都是淘汰最小的,适应度值是我们的一个判断。

然后进行初始化,随机得到一个初始的种群,对整个种群进行计算,得到相应的各自的适应度值,判断此时是否达到最优,如果在解空间上达到最优了,则停止算法,输出结果。否则,要根据选择算子(比如轮盘赌方法、锦标赛方法等)去选择留下来的种群,对留下来的种群进行交叉或者变异,产生新的群体,计算新群体的适应度值,重新进行判断。如此迭代,直到在解空间中得到最优值。

以上是遗传算法的一个基本的思路,在选择初始的一个种群时,种群规模的大小会影响最终结果,种群规模大,计算量大,种群规模小,很难得到最优值。基本遗传算法有一个缺陷,就是“早熟”,即容易局部收敛,算法停止,得到的结果是错误的。因此选取哪种选择算子判断哪些群体留下来也是一个很重要的问题。迭代的过程有可能很漫长,那该如何去判断每次迭代是否达到最优,一种方法是设置迭代的次数,因为遗传算法是优胜劣汰,达到一定的迭代次数可以停止;另一种方法是,通过设置目标值,比较当前得到的结果与目标值之间的差距,设定一个阈值,小于这个阈值则表明已经达到想要的最优值,此时可以停止算法。当然,还有其他更好的判断算法,就不在这里再做描述,有兴趣的可以自行查阅下文献。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法,它最初由美国Michigan大学J.Holland教授于1975年首先提出来的,并出版了颇有影响的专著《Adaptation in Natural and Artificial Systems》,GA这个名称才逐渐为人所知,J.Holland教授所提出的GA通常为简单遗传算法(SGA)。   遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。每个个体实际上是染色体(chromosome)带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体控制这一特征的某种基因组合决定的。因此,在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域个体的适应度(fitness)大小选择(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群的最优个体经过解码(decoding),可以作为问题近似最优解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值