遗传算法的基本原理

基因与染色体

染色体为基因的组合,把染色体看作一串数值,每个位置上为1或0,1表示该位置基因存在,0表示不存在。如两条染色体:

A1:        1 0 0 1 0 1

A2:        0 0 1 1 1 0

根据每个位置上的基因的权重,把数值为1的位置上的基因各自的权重相加,能计算出该条染色体的总权重。若假设权重更高的染色体更容易生存,权重较低的染色体被淘汰。进行n轮的“进化”后,留下来的染色体就是我们想要的结果。

选择

我们需要在许多条染色体中,选择两条染色体进行“交配”,产生下一代。那么,该如何选出这两条染色体呢?

轮盘赌选择法(Roulette Wheel Selection method)

在一个圆盘上,分割出大小相同或不同的扇形区域表示各个染色体,旋转指针,指针停留的区域对应的染色体作为选择的结果,指针停留两次,选出两个染色体作为亲本。

可以指定一个或两个固定指针,在第一轮选择亲本时使用。

交叉

使用选择的两个染色体,对其每个位置上的基因进行混合,得到新的子代染色体。

单点交叉

随机选择一个交叉点,将两条染色体在交叉点后的部分进行对调。如选取上面A1和A2两条染色体作为亲本,把[2]位置后作为交叉点,将其后部分进行对调,产生两条新染色体A3和A4。

A3:        1 0 0 1 1 0

A4:        0 0 1 1 0 1

多点交叉

和单点交叉同理。只不过设置多个交叉点,进行间隔交换。如把[1]、[3]位置后作为交叉点,产生两条新染色体A5和A6.

A5:        1 0 1 1 0 1

A6:        0 0 0 1 1 0

变异

某个位置的基因进行突变。如在A6的[1]位置的基因发生突变,从0变为1。

A6:        0 1 0 1 1 0

终止条件

进行一轮遗传变异后,对染色体的权重进行比较,权重低的被淘汰,这一轮“进化”完成。

进行多轮“进化”后,若出现下面的情况,则终止进化。

1. 连续n次进化,染色体的总体情况没有发生改变。

2. 达到预先设定的进化次数。

3. 达到预先设定的权重结果。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值