8 ?9 P$ @. |' f
4 W) p9 _3 r6 W, i( i: }
遗传算法& g) [# ?% c/ W2 B B
遗传算法(Genetic Algorithm, GA)是近几年发展起来的一种崭新的全局优化算法。1962年霍兰德(Holland)教授首次提出了GA算法的思想,它借用了仿真生物遗传学和自然选择机理,通过自然选择、遗传、变异等作用机制,实现各个个体的适应性的提高。从某种程度上说遗传算法是对生物进化过程进行的数学方式仿真。9 A7 V0 j" L6 n/ P$ k2 A8 W
这一点体现了自然界中"物竞天择、适者生存"进化过程。与自然界相似,遗传算法对求解问题的本身一无所知,它所需要的仅是对算法所产生的每个染色体进行评价,把问题的解表示成染色体,并基于适应值来选择染色体,使适应性好的染色体有更多的繁殖机会。在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群染色体,也即是假设解。然后,把这些假设解置于问题的“环境”中,也即一个适应度函数中来评价。并按适者生存的原则,从中选择出较适应环境的染色体进行复制, 淘汰低适应度的个体,再通过交叉,变异过程产生更适应环境的新一代染色体群。对这个新种群进行下一轮进化,至到最适合环境的值。( x, ^# j( _. I3 C# \' O- L
遗传算法已用于求解带有应用前景的一些问题,例如遗传程序设计、函数优化、排序问题、人工神经网络、分类系统、计算机图像处理和机器人运动规划等。 2 c- j. Z: ?" E: o术语说明 N, q" y3 ^9 k( a由于遗传算法是由进化论和遗传学机理而产生的搜索算法,所以在这个算法中会用到很多生物遗传学知识,下面是我们将会用来的一些术语说明: : b# u" \ C* L( H2 _9 C一、染色体(Chronmosome) , v- ?" i8 q; K* u: d F G; N染色体又可以叫做基因型个体(individuals),一定数量的个体组成了群体(population),群体中个体的数量叫做群体大小。. w2 l( h( K- I) q, ` 二、基因(Gene) 3 n0 [, D# }0 R. N8 ^基因是串中的元素,基因用于表示个体的特征。例如有一个串S=1011,则其中的1,0,1,1这4个元素分别称为基因。它们的值称为等位基因(Alletes)。 k! d! R% f, Q% \3 P6 N3 S 三、基因地点(Locus) ) z: [0 h/ e$ p' h0 A! F. [( ^: [基因地点在算法中表示一个基因在串中的位置称为基因位置(Gene Position),有时也简称基因位。基因位置由串的左向右计算,例如在串 S=1101 中,0的基因位置是3。: l% C$ Y; M. T: H5 Y 四、基因特征值(Gene Feature) 4 D( z/ A1 U6 k1 W在用串表示整数时,基因的特征值与二进制数的权一致;例如在串 S=1011 中,基因位置3中的1,它的基因特征值为2;基因位置1中的1,它的基因特征值为8。 $ t) o) t# R" V$ b! ^' `五、适应度(Fitness)# ^# w. N$ ~/ ` v! U
各个个体对环境的适应程度叫做适应度(fitness)。为了体现染色体的适应能力,引入了对问题中的每一个染色体都能进行度量的函数,叫适应度函数. 这个函数是计算个体在群体中被使用的概率。' N1 ]: P- L7 v" W5 {$ G 操作算法; b3 j& V2 X/ M4 {0 u' D% N
霍兰德(Holland)教授最初提出的算法也叫简单遗传算法,简单遗传算法的遗传操作主要有三种:选择(selection)、交叉(crossover)、变异(mutation)这也是遗传算法中最常用的三种算法: - F7 ]' X* p3 O( l7 h1.选择(selection) ( v0 S4 ]% _" |5 s5 i$ C选择操作也叫复制操作,从群体中按个体的适应度函数值选择出较适应环境的个体。一般地说,选择将使适应度高的个体繁殖下一代的数目较多,而适应度较小的个体,繁殖下一代的数目较少,甚至被淘汰。最通常的实现方法是轮盘赌(roulette wheel)模型。令Σfi表示群体的适应度值之总和,fi表示种群中第i个染色体的适应度值,它被选择的概率正好为其适应度值所占份额fi/Σfi。如下图表中的数据适应值总和Σfi=6650,适应度为2200变选择的可能为fi/Σfi=2200/6650=0.394. 3 A6 h" `% o& n5 y- h8 Y+ B 9 P. j4 y, f7 U; Y5 ^8 R( G2 E[url=]图1. 轮盘赌模型[/url] # o* d0 A, m7 e , @+ ?$ Z6 x6 c: w, [5 `' \& \
Fitness 值:
2200
1800
1200
950
400
100
选择概率:
3331
0.271
0.18
0.143
0.06
0.015
2.交叉(Crossover)# n* I7 k/ @, n; }1 H" f
交叉算子将被选中的两个个体的基因链按一定概率pc进行交叉,从而生成两个新的个体,交叉位置pc是随机的。其中Pc是一个系统参数。根据问题的不同,交叉又为了单点交叉算子(Single Point Crossover)、双点交叉算子(Two Point Crossover)、均匀交叉算子 (Uniform Crossover),在此我们只讨论单点交叉的情况。. N* f& G- Q; Q. }: z+ L( o
单点交叉操作的简单方式是将被选择出的两个个体S1和S2作为父母个体,将两者的部分基因码值进行交换。假设如下两个8位的个体: 8 @9 B: E# z, @ G8 M: V( i
S1 1000 1111 S2 1110 1100
' x( E4 N6 o. F. K2 T9 C. }% O
产生一个在1到7之间的随机数c,假如现在产生的是2,将S1和S2的低二位交换:S1的高六位与S2的低六位组成数串10001100,这就是S1和S2 的一个后代P1个体;S2的高六位与S1的低二位组成数串11101111,这就是S1和S2的一个后代P2个体。其交换过程如下图所示:5 F9 @. @7 I) x
Crossover
11110000
Crossover
11110000
S1
1000 1111
S2
1110 1100
P1
1000 1100
P2
1110 1111
3.变异(Mutation) 6 N" W8 H* U! T6 A& t! v( g这是在选中的个体中,将新个体的基因链的各位按概率pm进行异向转化,最简单方式是改变串上某个位置数值。对二进制编码来说将0与1互换:0变异为1,1变异为0。+ L3 ?% }- U1 w) v, k, E' R
如下8位二进制编码:& ^( K) r) Z+ `! n# V
程序的停止条件最简单的有如下二种:完成了预先给定的进化代数则停止;种群中的最优个体在连续若干代没有改进或平均适应度在连续若干代基本没有改进时停止。% U% D8 H9 @! ^) \8 u9 p1 ~8 C1 A0 D
根据遗传算法思想可以画出如右图所示的简单遗传算法框图: 9 b) ^7 y' I- |; C2 C
- |! J, S6 R, K2 G h[url=]图3. 简单遗传算法框图[/url] 6 q3 d5 s4 J4 j6 E, M7 f5 {+ Y/ u/ i% q
下面伪代码简单说明了遗传算法操作过程:* J- P M; n* `0 A4 ^* o+ e, d
choose an intial population 2 C! f, B/ v1 N! H% EFor each h in population,compute Fitness(h): b7 E( c8 f! s) u( b2 [. r1 D
While(max Fitness(h) < Fitnessthreshold)9 x- C1 {: H( z8 L+ K' o$ J+ S$ C
do selection, x/ O; B: b) P' s+ X8 s: A, u2 u
do crossover, |$ N5 m0 g$ T% b/ P
do mutation - e0 J. ?2 I# a1 M. m( p update population 5 g7 w. W9 E: w" zFor each h in population,compute Fitness(h)' |+ Y/ I4 S* S" C, g
Return best Fitness) w5 r9 i8 N2 K6 C2 ?
- r! }5 ? L; C* tRobocode 说明) L. H& j5 G( v# S9 k( D
能有效实现遗传算法的应用例子有很多,像西洋双陆棋、国际名模等等都是遗传程序设计学习的工具,但是 Robocode 有着其他几个无可比拟的优势: 0 X, E5 n, F* v' H- g
适应度值在进行运算过程中由机器人程序不断调整,以找到最优适应度。 5 ~5 J; P/ X g) C6 B6 ?/ W' u限于篇副其他的一些策略本文不与详细说明,上面所有提到的策略和行为程序都可在网上或IBM的开发杂志上找到成熟的讲解和例子机器人。有兴趣的朋友可以把这些策略都加入到自己的遗传算法中来。我们取群体大小为50,选择概率为0.7,交叉概率为0.6,变异概率为0.3,与Robocode部分例子机器人测试,经过150代后你会发现系统产生了很多有趣的策略。比如撞击策略,这些策略都不在我们定义的策略之中。 8 A7 I3 [; w! y0 m0 f. d3 v- z 7 S O' u, d9 C9 R