最简单的遗传算法

来源:互联网 发布:suse12网络配置端口 编辑:程序博客网 时间:2024/05/29 18:58

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表示目前已找到的最优解*/begint=0;initialize(P(t));//初始化群体evaluate(P(t));//适应值评价keep_best(P(t));//保存最优染色体while(不满足终止条件)dobeginP(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 ifendend
0 0
原创粉丝点击