什么是遗传算法?举两个例子。

分类:教育/科学> & gt科学与技术

问题描述:

不如再引入免疫算法。

分析:

Geic算法(GA)是近年来发展起来的一种全新的全局优化算法。

从生物遗传学的观点来看,每个个体的适应性是通过自然选择、遗传和变异的机制来实现的。

的改进。这反映了自然界“物竞天择,适者生存”的进化过程。1962荷兰教授第一次

遗传算法的思想提出后,吸引了大量的研究者,并迅速扩展到优化、搜索、机器学习等领域。

面,奠定了坚实的理论基础。用遗传算法解题时,首先要对待解题的模型结构。

而问题在这个过程中被符号化和离散化。也有连续的

空间定义的Ga(连续空间中的Geic算法,GACs)暂且不讨论。

串行操作的遗传算法(SGA)执行如下:

(1)编码要解决的问题;

(2)随机初始化群体x (0): = (x1,x2,…xn);

(3)计算当前种群X(t)中每个个体xi的适应度F(xi),适应度表示该个体有良好的表现。

不好;

(4)应用选择算子生成中间代xr(t);

(5)对Xr(t)应用其他算子,生成新一代种群X(t+1),这些算子的目的是有限扩张。

对个体的覆盖体现了全局搜索的思想;

(6)t:= t+1;如果不满足终止条件,继续(3)。

GA中最常用的运算符如下:

(1)选择/繁殖:选择算子按照一定的概率从群体中成对选择一个。

个体xi被选择的概率Pi与其适应值成正比。最常见的实现方法是roulett。

e轮)车型。

(2)交叉算子:交叉算子将按照概率pc交叉两个被选择个体的基因链。

,产生两个新个体,交叉位置随机。其中Pc是系统参数。

(3)变异:变异算子按照概率pm对新个体基因链的每一位进行变异,这是对的。

二元基因链(0,1码)则相反。

上述操作符的实现是多种多样的,许多新的操作符被提出来改进GA。

某些属性。系统参数(个体数量N,基因链长度L,交叉概率Pc,变异概率Pm等)的收敛速度。)到算法。

并且要根据具体问题选择不同的值。

遗传算法的编程要考虑通用性,要有很强的适应新算子的能力。面向对象程序设计中的类继承

承诺为我们提供了这种可能性。

定义两个基本结构:等位基因和个体,以个体的* * *为种群类TP。

人口的数据成员,而TSGA类派生自人口,并定义了遗传算法的基本操作。对于任何真实的应用

例如,你可以从TSGA类派生并定义新的操作。

TPopulation类包含两个重要的过程:

FillFitness:评估函数,解码每个个体并计算其适应值。具体操作如下

在用户类中实现。

统计:当前人群的统计,比如sumfitness,average fitness,best fitness。

个体fmax、最差个体fmin等。

TSGA类是从TPopulation类派生的,它将GA的系统参数作为构造函数的参数。有四个TSGA类。

重要的成员功能:

选择:选择运算符。基本的选择策略是轮盘赌模型(如图2)。轮盘赌轮盘通过任意旋转而停止。

反向指针指向的区域被选中,所以fi值大的被选中的概率高。

交叉:交叉算子,在两条基因链上概率Pc的随机位置交换子串。

变异:变异算子,以概率Pm随机干扰(否定)基因链中的每个基因。

生成:生成下一代,包括评估、统计、选择、交叉、变异等全过程。,每次运行时。

第二,产生新一代。

SGA的结构和类定义如下(用C++编写):

typedef char等位基因;

基因类型

typedef结构

{ ...

等位基因* chrom

漂浮健身;

染色体的适合度

}个人;

个人定义

类别填充

{ ...

组类定义

public:int size;

人口规模:n

int lchrom

染色体长度:l

浮点sumfitness,平均值;

个人*fmin,* fmax

个人* pop

TPopulation (int popsize,int strlength);

~ t population();

在线个人&。个人(int i)

{ ...

return pop[I];

}

void fill fitness();

评价函数

虚拟void统计();

统计函数

};

TSGA级:公共人口

{ ...

TSGA阶级是从人口阶级派生出来的。

public:float pcross;

交叉概率

浮点运算;

突变概率

int gen

世代计数器

TSGA (int size,int strlength,float pm =0.03,float pc =0.6 ): TPopulation (size,strlength)

{ ...

gen = 0;

pcross = pc

pmutation = pm

} ;

虚拟个人& ampselect();

虚拟空交叉(个人& ampparent1,个人& amp父母2,个人和。儿童1,个人& ampchild 2);

& amp儿童1,个人& ampchild 2);

虚拟等位基因突变(等位基因等位变异);

虚拟void Generate();

产生新一代

};

用户GA类定义如下:类TSGAfit:公共TSGA。

{ ...

public : TSGAfit (int size,float pm =0.0333,float pc =0.6 ) :TSGA (size,24,pm,pc)

{ ...

}

void打印();

};

因为GA是一个概率过程,每次迭代的情况都不一样。不同的系统参数,迭代情况

也是不一样的。在实验中,参数一般选择如下:个体数n=50-200,变异概率Pm=0.03,交叉概率Pc=

0.6。突变的概率太大,会导致不稳定。

参考

●搜索、优化和机器中的Goldberg D E. Geic算法

学习。马萨诸塞州雷丁市埃迪森-韦斯利公司,邮编:1989

陈根社,陈新海,“遗传算法的研究与进展”,信息与控制,第23卷,

4号,1994,PP215-222

● Vittorio Maniezzo,“拓扑和重量分布的Geic演变”

神经网络的分布。《神经病学》,第五卷,第一期

. 1,1994,PP39-53

●齐晓峰、弗朗西斯科·帕尔米里,“进化的理论分析

连续空间中种群规模无限的算法。第一部分

l Neorks,第5卷,编号1,1994,PP102-119

●齐晓峰、弗朗西斯科·帕尔米里,“进化的理论分析

连续空间中种群规模无限的算法。第二部分

al Neorks,第5卷,编号1,1994,PP102-119

冈特·鲁道夫,规范Geic算法的收敛性分析,I

EEE,Trans。《神经病学研究》,第5卷,第1号,第1994页,第96-101页

●本,阿尔特,范希。geic算法的全局收敛性

算法:马尔可夫链分析。从Nat解决并行问题

是的。H.-P.Schwefel,R.Manner,编辑柏林和海德堡:施普林格,1991

,PP4-12

● Wirt Atmar,“进化模拟笔记”,IEEE,Trans。在东北大学

ral Neorks,第5卷,编号1,1994,PP130-147

● Anthony V. Sebald,Jennifer Schlenzig,“神经网络公司的Minimax设计

高度不确定性设备的控制器。关于神经网络,V

ol.5,编号1,1994,PP73-81

方建安、邵世煌,“用遗传算法自学习模型控制规则”,自动化理论、技术及应用。

使用,中国自动化学会第九届青年学术年会论文集,1993,PP233-238。

方建安,邵世煌,“遗传算法学习的神经网络控制器”,控制与决策,199。

3,8(3),PP208-212

苏和筑谷,“利用遗传算法进行迷宫学习”,机器人,第16卷,第5期,199。

4、第286-289页

● M.Srinivas,L.M.Patnaik,“交叉和变异的适应性概率

离子”,IEEE Trans。论S.M.C,第24卷第4期,1994的交叉与突变”,

IEEE Trans。《斯德哥尔摩公约》,第24卷,第4号,1994

●戴熙公园、亚伯拉罕·坎德尔、吉迪恩·朗霍尔茨,“基于Geic的新模糊

推理模型及其在模糊控制中的应用。sm C,

第24卷,第1号,第39-47页,1994

●阿廉·瓦塞克、塔尼亚·乌尔班奇、博德根·菲利皮奇,“会议中的Geic算法”

控制器设计和调谐”,IEEE Trans。《斯德哥尔摩公约》,第23卷,第5号,第1330-13页

39, 1993