学习资料《智能优化算法及其Matlab实例》 包子阳 余继周 编著
第二章遗传算法:
1.遗传算法:就是借鉴达尔文以及孟德尔的进化理论,而创造的一种模拟自然生物进化的算法。它的本质是一种并行的,高效的,全局搜索的方法,他能够在搜索的构成中自动获取和积累有关搜索空间的知识,并自适应的控制搜索过程以求的最优解。
就是模仿自然,优胜劣汰的自然选择的原则。在生物的种群进化化中为了得到好的解,我们只需要不断的进行优化,产生新的个体,而个体的产生中,怎样进行“过滤”?在学习遗传算法的时候总是讲求“优胜劣汰”但是意义是什么?---为了在产生的新个体以及原来的旧个体之间进行下一代的选择。
2.生物遗传和进化的规律:
(1)生物的所有遗传信息都包含在其染色体上,染色体决定了生物性状,染色体是有基因以及其有规律的排列所构成的。
(2)生物的贩之爱过程就是尽心的复制,组合的过程。同源染色体的交叉或变异会产生新的物种
(3)适应能力强的基因或染色体会表现出优良的性状,这些优良的外部性状,有助于生物择偶,产生子代
3.遗传操作
(1)选择算子:根据个体的适应度,按照一定的规则和方法,从第t代群体P(t)中选择一些优良的个体遗传给下一代群体P(t+1)
轮盘赌是使用的最早的选择算法
2018-3-27 遗传算法中的轮盘赌 - CSDN博客
https://blog.csdn.net/luolang_103/article/details/79711974
问题: 通过轮盘赌的公式,感觉既然每一个的适应度都可以计算出来,然后就直接的通过计算出适应度的积累就和,然后就得到了概率啊,为什么还有那么复杂的轮盘模拟??
: 我想应该是模拟自然吧,就像都知道优胜劣汰,但是自然界还是存在智力缺损的孩子。就是模拟自然的这个特征并不知说就要从高的概率中直接的进行选择,而是通过rand的值的大小,然后再群姐进项选择。
(2)交叉算子
将群体P(t)中选择的个体随机搭配,每一对个体依仗Pc交叉概率,交换他们之间的部分染色体
交叉操作的步骤:
从交配池中随机取得要交配的一对个体
根据二进制的位数L,随机的额选取{【1,L-1】中的一个或多个交叉位置
根据交叉概率Pc实施交叉,配对个体在交换交叉位置的部分基因,形成新的个体
(3)变异算子
变异概率Pm
4.遗传算法的特点:
(1)遗传算法以决策变量的编码作为运算对象,使得其可以模仿生物的染色体,基因等的概念,方便与生物上的进行对照。方便下面的编码操作
(2)遗传算法直接以木变函数值最为搜索信息。不需要目标函数的导数等信息,减少计算的难度复杂度
(3)遗传算法同时使用多个搜索点的搜索信息-----也就是说在最初的搜索中,遗传算法从一个由多个个体组成的初始群体开始,而不是单一的个体
(4)遗传算法是基于概率的搜索技术。它属于自适应概率搜索技术,它的选择,交叉,变异的运算都是以一定的概率方式进行的
(5)遗传算法具有自组织,自适应,自学习的特性。
5.流程:
6.关键参数说明
(1)群体规模NP。NP太小的时候遗传的优化不会太好,采用较大的规模可以减少遗传算法陷入局部最优解,但是计算的复杂度增加,一般的选取是10~200
(2)交叉概率Pc
较大可以增加遗传算法开辟新的搜索区域,但是与利于局部的开发。太低的话遗传算法会陷入“局部”一般是0.25~1.00
(3)变异概率Pm
主要的目的是为了保证物种的多样性.低频的变异可以防止群体中重要基因的丢失,高频的则更类似于随机搜素。一般的范围:0.001~0.1
(4)终止代数G
一般在100~1000之间
伪代码:来源:
遗传算法入门 - 苍梧 - 博客园
http://www.cnblogs.com/heaad/archive/2010/12/23/1914725.html
基本遗传算法伪代码
/*
* Pc:交叉发生的概率
* Pm:变异发生的概率
* M:种群规模
* G:终止进化的代数
* Tf:进化产生的任何一个个体的适应度函数超过Tf,则可以终止进化过程
*/
初始化Pm,Pc,M,G,Tf等参数。随机产生第一代种群Pop
do
{
计算种群Pop中每一个体的适应度F(i)。
初始化空种群newPop
do
{
根据适应度以比例选择算法从种群Pop中选出2个个体
if ( random ( 0 , 1 ) < Pc )
{
对2个个体按交叉概率Pc执行交叉操作
}
if ( random ( 0 , 1 ) < Pm )
{
对2个个体按变异概率Pm执行变异操作
}
将2个新个体加入种群newPop中
} until ( M个子代被创建 )
用newPop取代Pop
}until ( 任何染色体得分超过Tf, 或繁殖代数超过G )