遗传算法原理与实现
来源:互联网 发布:看网络电视用什么软件 编辑:程序博客网 时间:2024/06/10 05:07
遗传算法形式化定义
遗传算法可定义为一个8元组:
SGA=(C , E , P0 ,M , O ,S ,R, T)
其中,C:个体的编码方法
E:个体适应度评价函数
P0:初始群体
M:群体大小
O:选择算子
S:交叉算子
R:变异算子
T:遗传算法终止条件
遗传算法伪代码:
begin initialize P(0) t=0; while (t<=T){ for( i= 1 to M ) Evaluate fitness of P(t); for( i=1 to M) Select operation to P(t); for( i=1 to M/2) Crossover operation to P(t); for(i=1 to M) Mutation operation to P(t); for(i=1 to M) P(t+1)=p(t) t=t+1;}end
遗传算法实现
1. 个体适应度评价
个体适应度的大小决定了该个体被遗传到下一代群体中的概率。要求所有个体的适应度必须为正数或者零,不能为负数。
2. 比例选择算子
选择算子的作用是从当前代群体中选择出一些比较优良的个体,并复制到下一代群体中。基本方法有赌盘选择方法,这种方法类似赌博中的赌盘操作。
执行过程:
1)先计算出群体中所有个体的适应度的总和
2)其次计算出每个个体的相对适应度的大小,它即为各个个体被遗传到下一代群体中的概率。
3)最后再使用赌盘操作(即0到1之间的随机数)来确定各个个体被选中的次数
3. 单点交叉算子
单点交叉算子的具体执行过程如下。
1)对群体中的个体进行两两随机匹配。
2)对每一对相互匹配的个体,随机设置某一基因位之后的位置为交叉点。若染色体的长度为n,则共有(n-1)个可能的交叉点位置。
3)对每一对相互配对的个体,依照设定的交叉概率p在其交叉点处相互交换两个个体的部分染色体,从而产生出两个新的个体。
4. 基本位变异算子
对于用二进制编码符号串所表示的个体,若需要进行变异操作,则将原有基因值0变1,1变0。
具体执行过程:
1)对个体的每一个基因位,依变异概率p指定其为变异点。
2)对每一个指定的变异点,对其基因值做取反运算,从而产生一个新的个体。
参考网上遗传算法Java实现源代码,我实现了一版scala的遗传算法,scala还在学习阶段,有误的地方请指教
阅读全文
0 0
- 遗传算法原理与实现
- 遗传算法与C++实现
- 遗传算法与C++实现
- 遗传算法理论与实现
- GA入门:遗传算法原理与应用
- 遗传算法原理与应用详解
- 遗传算法原理与应用详解
- 遗传算法原理与应用详解
- 遗传算法原理
- 遗传算法的原理
- 遗传算法原理部分
- 遗传算法原理
- 遗传算法与直接搜索工具箱学习笔记 十-----遗传算法的工作原理
- 遗传算法与直接搜索工具箱学习笔记 十-----遗传算法的工作原理
- 遗传算法与多目标遗传算法
- 遗传算法Python实现
- JAVA实现遗传算法
- C++遗传算法实现
- MyEclipse的自动补全
- USB工作原理
- NOIP2017提高组复赛总结
- leetcode-22-生成括号
- 二叉树的镜像
- 遗传算法原理与实现
- Memcached和PHP-Memcache扩展安装
- Mac下反编译Android apk
- 快速排序
- python print函数
- Activity带参返回要注意的点
- 微信小程序自动滚动加载数据之坑
- airflow添加新任务
- java结构型设计模式——适配器模式