基因与染色体
染色体为基因的组合,把染色体看作一串数值,每个位置上为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. 达到预先设定的权重结果。