最简单的遗传算法
来源:互联网 发布: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
- 最简单的遗传算法
- 遗传算法最简单的举例
- 简单的遗传算法
- 简单的遗传算法源代码
- 遗传算法的简单实现
- 简单的遗传算法实例
- 遗传算法最通俗的讲解案例
- 简单的遗传算法(Genetic Algorithm)源代码
- 用Python实现简单的遗传算法
- 简单遗传算法的小例子
- 用Java实现简单的遗传算法
- 用Java实现简单的遗传算法
- 用perl实现简单的遗传算法
- 用python实现简单的遗传算法
- c++ 简单的遗传算法实现
- 遗传算法简单例题的详解
- 用python实现简单的遗传算法
- 简单的遗传算法java实例
- iOS开发-模仿网易新闻首页联合滚动动画
- QT数据库--添加ODBC驱动插件(Windows、Linux、ARM篇)
- 381.Spiral Matrix II-螺旋矩阵 II(中等题)
- 【hdu2462】【数论】【欧拉函数+欧拉定理+大数快速幂】The Luckiest number
- C#WinForm中复制、粘贴文本到剪贴板
- 最简单的遗传算法
- c++初学之运算符重载
- 可调稳压芯片LM317
- map存储数据
- MYSQL5.5.21版本编译方法
- mysql5.5主从复制-半同步复制
- 常用的JS(Ajax)框架
- 关于JavaScript初学的一点主意的地方
- Android学习 (八) 把button设置成圆角出现的问题及解决