算法 - GA中的交叉算子
发布日期:2021-07-01 03:59:46
浏览次数:2
分类:技术文章
本文共 1082 字,大约阅读时间需要 3 分钟。
基因交叉,或者基因重组,就是把两个父体部分结构加以替换,生成新的个体的操作,习惯上对实数编码的操作叫做重组(Recombination),对二进制编码的操作称为交叉(crossover)。
-
重组算法(Recombination)
实值重组产生子个体一般是用下边这个算法: 子个体=父个体1 + a × ( 父个体2 - 父个体1 ) 这里a是一个比例因子,可以由[ -d, 1+d] 上边服从均匀分布的随机数产生。 不同的重组算法,a的取值是不同的,一般来讲,d=0.25是一个比较好的选择。 -
交叉算子
如上文遗传算法中的数据结构中所讲,基因的二进制编码有直接编码(Normal)和Gray编码之分,以下所说算法,均适用于这两种算法。
假设基因的二进制编码长度为N,那么这些编码之间有N-1个空隙,可供交叉使用。二进制交叉算法就是如何选择空隙,选择多少个空隙。
以下将各走极端的选择一个空隙交叉的单点交叉算法,和选择N-1个空隙进行交叉的洗牌交叉算子大致说一下。(1) 单点交叉
在二进制编码中,随机选择一个点,以这个点为界限,相互交换变量。 如 父个体1 011111110000000000 父个体2 000000001111111111 如粗体前边位置为所选择的交叉点,那么生成的子个体为: 子个体1 011111111111111111 子个体2 000000000000000000(2)洗牌交叉
洗牌交叉就是,将一个父基因取一半,再上来自另外一个父基因的一半,构成一个新的子基因。(3)模拟二进制交叉(SBX)
(4)Partial-Mapped Crossover (PMX)
(5)Order Crossover (OX)
(6)Position-based Crossover (PBX)
(7)Order-Based Crossover (OBX)
(8)Cycle Crossover (CX)
(9)Subtour Exchange Crossover
(10)轮盘赌
(11)DE
- 另外的 (1)群体中的交叉算法 将经过选择考验的个体放入一个群体,当放入的个体数量达到要求后,对里边的个体进行两两交叉。
(2) 交叉函数定义
种群的交叉只涉及一个交叉主体,而基因/个体的交叉涉及两个交叉主体。参考:
https://blog.csdn.net/u012750702/article/details/54563515
https://blog.csdn.net/u013555719/article/details/97395038
转载地址:https://miracle.blog.csdn.net/article/details/101389414 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年05月04日 07时02分28秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
C++中两个类交叉定义或递归定义的解决办法
2019-05-01
ECharts is not Loaded解决方案
2019-05-01
ECharts地图显示不完整,只显示南海诸岛问题
2019-05-01
echarts切换tab时,第一个图表显示,第二个图表不显示的解决办法
2019-05-01
记一次Hive 行转列 引起的GC overhead limit exceeded
2019-05-01
OpenGL ES八 - 交叉存取顶点数据
2019-05-01
crontab定时任务写法
2019-05-01
nginx: [emerg] unknown directive "if($remote_addr" in /usr/local/tools/nginx/conf/nginx.conf:57
2019-05-01
module pip has no attribute main问题解决
2019-05-01
LeetCode 134.Gas Station (加油站)
2019-05-01
Python之命名元组 (namedtuple)
2019-05-01
使用libpcap过滤arp
2019-05-01
在VC环境中调试跟踪变量
2019-05-01
[转帖]Robots.txt指南
2019-05-01
Eclipse + MyEclipse下配置J2EE工程(英文界面)
2019-05-01
Eclipse及其插件下载网址大全
2019-05-01
正则表达式简介(微软)--6.优先权顺序
2019-05-01
多用户与多租户的区别
2019-05-01
Python自动化运维 - day14 - JavaScript基础
2019-05-02