遗传算法


1、遗传算法的作用

遗传算法主要思想就是利用达尔文优胜劣汰的原则,选择好的保留,不好的淘汰,最终目的找到最优解。

2、遗传算法的求解

因为是利用达尔文的思想来解题,顺着遗传规律,设定一个有20头猪的自然环境(有公有母),在一个规定的环境中生存、进化。

生物在不断的繁衍进化,这20头猪都会繁衍进化吗?不一定吧,总会有特别绅士的,所以假设80%的猪释放了天性,繁衍了另外一代的猪。此时猪就会发生进化,进化的过程是基因变异的过程,但也不是每头猪都会变异,变异的概率是很小的,假设为0.01。这个环境中只能容纳20头猪,注定要淘汰一批猪,淘汰有淘汰的规则,不能揪几头猪就说是笨猪,不要了,要设定淘汰的机制。这个机制就与我们求解的方程、问题有关,通过计算得到他们的适应值,谁适应谁存活。依次不断繁衍,最终就会得到会飞的猪。

说明:20代表种群大小,80%代表交叉概率,1%代表突变概率,迭代次数,结果精确度为初始变量,其数值大小视情而定,完全依赖于经验。

根据上面的分析了解了遗传算法的流程,但是具体要怎么做呢?怎么模仿这个过程呢?举例说明,求解方程f(x)=-2x2+5x-10,0<x<4最大值。

1)20头猪怎么表示?用一串二进制数表示基因(个体)

以题为例,确定基因长度(二进制串长度),设精确度为10-3,则有211<(4-0)103<212,则需要12位二进制数表示,随机产生20个12位的二进制数。

2)交配的过程怎么表示?单点交叉

交配过程就是基因重组的过程,方法有很多,以单点交叉法为例,随机选择两条基因交配,然后随机产生交叉位置,在交叉点以后所有二进制数交换,得到新的基因。

父母基因

交叉位置

子代基因

101110010111

010010010110

6

101110010110

010010010111

3)变异的过程怎么表示?

繁衍产生的新个体,新个体的基因会以一定的概率发生基因变异。

变异基因

变异位置

新基因

101110010110

010010010111

4

6

101010010110

010011010111

4)淘汰的过程怎么表示?轮盘赌

首先要建立淘汰个体的标准,也就是这些个体的对环境的适应情况,那么就要创建适应度函数,一般适应度函数根据目标函数而来,此例中可以直接使用目标函数作为适应度函数。

在进行计算之前,要将二进制串转换为在取值范围内的十进制数,然后根据适应度函数计算适应值。个体被选中的概率与适应值成正比。其中适应值计算公式为:


个体被选中的概率:


累计概率为:


接下来开始优胜劣汰,淘汰不好的个体。

首先产生[0,1]之间的随机数,并对应累计概率的取值范围找到选择的个体,举例说明。

个体

1

2

3

4

5

6

7

选中概率

0.13

0.25

0.09

0.21

0.11

0.15

0.06

累计概率

0.13

0.38

0.47

0.68

0.79

0.94

1

随机数为0.52,在累计概率的3-4之间则,选择4号个体

5)什么时候终止?

终止条件一般采用繁衍次数的计算方式,繁衍50代,到第50代停止繁衍,并在此时的种群中计算最优适应值即可,得到最优解和相应的未知值。

3、遗传算法的特点

1)与问题领域无关切快速随机的搜索能力;

2)搜索从群体出发,具有潜在的并行性,可以进行多个个体的同时比较;

3)搜索使用评价函数启发,过程简单 ;

4)使用概率机制进行迭代,具有随机性;

5)具有可扩展性,容易与其他算法结合。

4、遗传算法的不足

1)遗传算法的编程实现比较复杂,首先需要对问题进行编码,找到最优解之后还需要对问题进行解码;

2)另外三个算子的实现也有许多参数,如交叉率和变异率,并且这些参数的选择严重影响解的品质,而目前这些参数的选择大部分是依靠经验;

3)没有能够及时利用网络的反馈信息,故算法的搜索速度比较慢,要得要较精确的解需要较多的训练时间; 

4)算法对初始种群的选择有一定的依赖性,能够结合一些启发算法进行改进; 

5)算法的并行机制的潜在能力没有得到充分的利用,这也是当前遗传算法的一个研究热点方向。

遗传算法的衍生算法,混合遗传算法(传统梯度类算法、单纯形法及模拟退火),合作型协同进化算法。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值