遗传算法中的变异和交叉
遗传算法中的变异和交叉
一、交叉方法
1.部分匹配交叉(PMX)
由于一次只能去一个城市,所以一条染色体中的编码是不能重复的
比如我们随机产生两个父代:A=762150483,B=416307582,
我们假设选中的交叉位为第四位和第七位,我们如果让交叉位里面的编码直接换,那对A来说,交叉位里面的3、7和交叉位外面的3、7重复了,则让交叉位外面的3和4去换,让交叉位外面的7和5去换,则成功产生两个子代A’=562307841,B’=436150782,可以看出,第一个子代的交叉位基因来自于第二个父代,第二个子代的交叉位基因来自于第一个父代。
2.顺序交叉(OX)
假设两个父代:A=764235801,B=073684152
查找交换基因,(交叉位同样选第四位和第七位)比如A当中235要用684去换,B中的684要用235换,那么将A中的684和B中的235都换成,得到A’=7HH235H01,B’=07H6841HH,然后将H都移到交叉位里面,将原来交叉位里面的数字都左移到最左边。再将H替换,上面的H用684换,下面的H用235换。最后顺序交叉的结果为A’’’=135|684|017,B’’’=684|235|107
二、变异方法
1.两点互换
假设染色体为:02134567,随机选择两个变异位,这里假设为第二位和第三位
这里将2和3互换一下,针对TSP(旅行商)问题互换以后城市的访问次序就变了,即旅行商问题的解就发生了变化
2.相邻互换:选择相邻的两个基因进行互换
初始染色体01234576
这里将12换成21
3.区间逆转
初始染色体:01234576
这里假设区间开始位为0,结束位为7,那么逆转之后得到
75432106(其实就是将区间翻一下)。
4.单点移动
初始染色体:02316745
选择移动的基因和移动的目的地,这里选择移动的基因为3,移动到第四位,移动之后为23416750
遗传算法中的变异和交叉相关推荐
- matlab——遗传算法中的选择,交叉,变异等一系列问题解析(一)
遗传算法作为一种古老的进化优化算法,现在一直还在使用和优化,也间接证明了其本身所具有的价值.虽然从原理上讲,很容易理解,主要包括:(1)三个基因操作:选择,变异,交叉:(2)适应度函数对个体优劣的评估 ...
- matlab遗传算法中的变异操作,遗传算法流程图?遗传算法的基本原理?遗传算法 交叉和变异?简单遗传算法MATLAB实现(4)...
对上一节中的函数进行优化,设置遗传算法相关参数,程序如下 function run_ga() elitism = true;%选择精英操作 pop_size = 20;%种群大小 chromo_siz ...
- 遗传算法中常见遗传算子
遗传算法中常见遗传算子 常见选择算子 轮盘选择(roulette wheel selection) 随机遍历抽样(Stochastic universal sampling,SUS) 排序选择(ran ...
- 遗传算法(进化类算法)中的选择,交叉,变异等一系列问题解析(二)
问题1--遗传算法中适应度函数如何确定 一般来说,遗传算法中的适应度函数是根据你想要得到的优化结果进行确定的.有的优化目的是要更小的适应度函数值,相反有的优化目的是要更大的适应度函数值. 这样说吧,例 ...
- 遗传算法中适值函数的标定与大变异算法
前言 本文尝试对遗传算法中不同适值函数的标定(Scaling)方法进行下总结,并针对常用的线性标定和动态线性标定进行了Python实现,以装饰器的形式添加到遗传算法框架GAFT中,这样在使用GAFT运 ...
- nsga 的java实现_Java – Scala遗传算法(GA)库中的模拟二进制交叉(SBX)交叉运算符
我在一个很小的研究团队工作,在 Scala中创建/改编遗传算法库,用于使用Scientific Worklow System进行分布式计算,在我们的例子中,我们使用开源OpenMole软件( http ...
- 遗传算法中交叉方法简介及基于适应度的启发式多点交叉
作者注:本文写于三年前,今天才转到这里来. 在生物的自然进化过程中,两个同源染色体通过交配而重组,生成新的染色体,从而产生新的个体或物种.交配重组是生物遗传和进化过程中的一个主要环节.遗传算法中的交叉 ...
- 遗传算法二进制编码c语言,遗传算法,实数编码的交叉操作之SBX(模拟二进制交叉)...
本文主要介绍遗传算法(实数编码)的交叉操作中的SBX,模拟二进制交叉. 首先,给出个人用python2.7实现的代码,具体模块已上传到: https://github.com/guojun007/sb ...
- 在遗传算法中出现等式约束_排序算法中的稳定性-等式的处理
在遗传算法中出现等式约束 by Onel Harrison 通过Onel Harrison 排序算法中的稳定性-等式的处理 (Stability in Sorting Algorithms - A T ...
最新文章
- 推荐系统技术演进趋势:召回-排序-重排
- eltable刷新整个表格方法_Word表格函数计算怎么做?都在这篇!
- 目标检测旋转增强源码
- javaweb-服务器输出字符数据到浏览器
- c++内存管理-内存顺序
- Java读取多层级xml文件
- 实现一个简单的模板引擎,输入模板和数据,输出html
- Hadoop入门(十四)Mapreduce的数据去重程序
- 搭建PC架构的ISCSI存储系统
- IDEA如何添加本地项目到git上
- 办公 自动化 录制行为_我们可以自动化开放行为吗?
- python函数降低编程复杂度_Python重构此函数,将其认知复杂度从19降低到允许的15...
- 怎样查看本机到一个网站经过多少路由节点?
- C# Maximum request length exceeded. 产生错误的原因,以及解决方法.
- N卡和A卡各型号参数对比收集
- 微信小程序幻灯片效果实现
- 华硕z170-p+英特尔i7-6700k+16GB黑苹果EFI引导文件
- Log4cplus编译
- 51单片机c语言直流电机廷迟启停,51单片机控制直流电机不会加定时器延时程序...
- MATLAB在动态经济学中的应用,MATLAB在动态经济学中的应用