什么是遗传算法?举两个例子。
问题描述:
不如再引入免疫算法。
分析:
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