谁养鱼(四):遗传算法的实现

1 简介根据达尔文的进化论,生物种群从低级、简单的类型逐渐发展成为高级、复杂的类型。各种生物要生存下去就必须进行生存斗争,具有较强生存能力的生物个体容易存活下来,并有较多的机会产生后代;具有较低生存能力的生物则被淘汰,或者产生后代的机会越来越少,直至消亡。遗传算法借鉴了生物界自然选择、遗传变异机制,将种群代表一组问题的解,通过对当前种群施加选择、交叉和变异等一系列遗传操作,从而产生新一
摘要由CSDN通过智能技术生成

1 简介

根据达尔文的进化论,生物种群从低级、简单的类型逐渐发展成为高级、复杂的类型。各种生物要生存下去就必须进行生存斗争,具有较强生存能力的生物个体容易存活下来,并有较多的机会产生后代;具有较低生存能力的生物则被淘汰,或者产生后代的机会越来越少,直至消亡。

遗传算法借鉴了生物界自然选择、遗传变异机制,将种群代表一组问题的解,通过对当前种群施加选择、交叉和变异等一系列遗传操作,从而产生新一代的种群,并逐渐使种群进化到包含近似最优解的状态。遗传算法能够解决传统方法感到困难的许多复杂优化问题。

遗传算法很有趣,上过生物课的人很容易理解它,但是要设计一个好的遗传算法却并不容易。当看到谁养鱼这个问题时,觉得可以用遗传算法来试一试,现在我已经用Java实现了遗传算法,但是实验结果并不是很理想,权当做了一次实验证明遗传算法并不适合这类问题吧(当然也有可能是我的遗传算法没有设计好)。尽管这次实验结果不甚理想,下面还是介绍一下如何实现遗传算法。

设计一个遗传算法主要有五大要素:编码方式、种群规模的设定、适应度函数的设计、遗传算子的设计和终止条件的设定。

2 编码

当用遗传算法解决问题时,必须在问题空间和遗传算法的个体基因结构之间建立联系,即编码和解码的方法。编码的策略对于遗传算子,尤其是交叉、变异算子的功能和设计有很大的影响。编码应满足三个原则:

  1. 完备性:原问题空间中的点都能成为编码后的点。
  2. 健全性:编码后的空间中的点能对应原问题空间所有的点。
  3. 非冗余性:编码前后空间的点一一对应。

我采用了谁养鱼(二)中介绍的方法进行编码。对于每一类属性(颜色、国籍、饮料、宠物和香烟),都先将其五种可能分别映射到1、2、3、4、5,如此一类属性的排列就映射成了1、2、3、4、5的排列,再使用谁养鱼(二)中的方法映射到[0,119]的整数域。每一个[0,119]的整数可以用1个字节表示,因此我们用5个字节就可以表示一个可能的解。在这里将解称为个体,将五个字节分别称为颜色染色体、国籍染色体、饮料染色体、宠物

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值