遗传算法
遗传算法已用于求解带有应用前景的一些问题,例如遗传程序设计、函数优化、排序问题、人工神经网络、分类系统、计算机图像处理和机器人运动规划等。
术语说明
由于遗传算法是由进化论和遗传学机理而产生的搜索算法,所以在这个算法中会用到很多生物遗传学知识,下面是我们将会用来的一些术语说明:
一、染色体(Chronmosome)
二、基因(Gene)
三、基因地点(Locus)
四、基因特征值(Gene Feature)
五、适应度(Fitness)
操作算法
图1. 轮盘赌模型
Fitness 值: 2200 1800 1200 950 400 100
选择概率: 3331 0.271 0.18 0.143 0.06 0.015
2.交叉(Crossover)
交叉算子将被选中的两个个体的基因链按一定概率pc进行交叉,从而生成两个新的个体,交叉位置pc是随机的。其中Pc是一个系统参数。根据问题的不同,交叉又为了单点交叉算子(Single Point Crossover)、双点交叉算子(Two Point Crossover)、均匀交叉算子 (Uniform Crossover),在此我们只讨论单点交叉的情况。
单点交叉操作的简单方式是将被选择出的两个个体S1和S2作为父母个体,将两者的部分基因码值进行交换。假设如下两个8位的个体:
S1 1000 1111 S2 1110 1100
产生一个在1到7之间的随机数c,假如现在产生的是2,将S1和S2的低二位交换:S1的高六位与S2的低六位组成数串10001100,这就是S1和S2的一个后代P1个体;S2的高六位与S1的低二位组成数串11101111,这就是S1和S2的一个后代P2个体。其交换过程如下图所示:
Crossover 11110000 Crossover 11110000
S1 1000 1111 S2 1110 1100
P1 1000 1100 P2 1110 1111
3.变异(Mutation)
这是在选中的个体中,将新个体的基因链的各位按概率pm进行异向转化,最简单方式是改变串上某个位置数值。对二进制编码来说将0与1互换:0变异为1,1变异为0。
如下8位二进制编码:
1 1 1 0 1 1 0 0
随机产生一个1至8之间的数i,假如现在k=6,对从右往左的第6位进行变异操作,将原来的1变为0,得到如下串:
1 1 0 0 1 1 0 0
整个交叉变异过程如下图:
图2. 交叉变异过程
遗传算法的所需参数
遗传步骤
了解了上面的基本参数,下面我们来看看遗传算法的基本步骤。
基本过程为:
计算群体上每个个体的适应度值(Fitness)
按由个体适应度值所决定的某个规则应用选择算子产生中间代Pr(t)
输出种群中适应度值最优的个体
程序的停止条件最简单的有如下二种:完成了预先给定的进化代数则停止;种群中的最优个体在连续若干代没有改进或平均适应度在连续若干代基本没有改进时停止。
根据遗传算法思想可以画出如右图所示的简单遗传算法框图:
图3. 简单遗传算法框图
下面伪代码简单说明了遗传算法操作过程:
choose an intial population
For each h in population,compute Fitness(h)
While(max Fitness(h) < Fitnessthreshold)
do selection
do crossover
do mutation
update population
For each h in population,compute Fitness(h)
Return best Fitness
Robocode”;
MS BPS RS TS
random distance-based always-turn HeadOn
Linear light-fast target-focus Linear
circular Powerful-slow target-scope-focus Circular
Perpendicular Medium nearest robot
arbitary hit-rate based Log
anti gravity Statistic
Stop Angular
Bullet avoid wave
wall avoid
track
Oscillators
下面是基本移动策略的说明:
瞄准策略说明如下:
共4页 [1] [2] [3] [4] 下一页