1定义:
基于自然界“自然选择”和“优胜劣汰”的进化规律,通过模拟生物进化中的自然选择和交配变异寻找问题的全局最优解。
2类比对应:
群体:搜索空间的一组有效解
种群:选择得到的新群体
染色体:可行解的编码串
基因:染色体的一个编码单元
适应能力:染色体的适应值
交配:染色体交换部分基因得到新染色体
变异:染色体某些基因值改变
算法流程:
1染色体编码:二进制编码以及浮点数编码
2群体初始化:一般是随机数初始化
3适应值评价:用于评估各个染色体适应值,适应值越大的染色体越优。
4选择算子:
轮盘赌选择算法:
//输出选中的染色体
m=0;
r=random(0,1);
for (i=1;i<=n;i++)
{
m=m+Pi;
if(r<=m)return i;
}
5交配算子
交配概率Pc;
对于每一个染色体,如果random(0,1)小于Pc则表示该染色体可进行交配操作。
交配方法:
随机产生一个有效交配位置,染色体交换位于该交配位置后的所有基因。
6变异算子:
变异概率Pm;
交配后,对于染色体中的每一位基因,如果random(0,1)小于Pm,则改变基因取值。
伪代码:
/*
P(t)表示某一代的群体,t为当前进化代数。
Best表示目前已找到的最优解
*/
begin
t=0;
initialize(P(t));//初始化群体
evaluate(P(t));//适应值评价
keep_best(P(t));//保存最优染色体
while(不满足终止条件)do
begin
P(t)=selection(P(t));//选择算子
P(t)=crossover(P(t));//交配算子
P(t)=mutation(P(t));//变异算子
t=t+1;
P(t)=P(t+1);
evaluate(P(t));
if(P(t)的最优适应值优于Best)replace(Best);
end if
end
end