下面,我们以车间调度为例来谈谈遗传算法中的另一个重要操作变异。变异操作通常发生在交叉操作之后,它的操作对象是交叉得到的新染色体。在本文中我们通过随机交换染色体的两个位置上的值来得到变异后的染色体,变异操作的代码如下:

 def Mutation(p)://p是染色体
nt = len(p)//nt存放染色体的长度
i = randint(0, nt - 1)//i是0到nt-1之间的一个随机数
j = randint(0, nt - 1)//j是0到nt-1之间的一个随机数
m = [job for job in p]//将染色体p复制到临时变量m中
m[i], m[j] = m[j], m[i]//交换m中i和j位置的值
return m//返回m

变异操作的图示如下:

变异前的染色体: ABCABCABC

随机选取两个位置:ABCABCABC

变异后的染色体:AACABCBBC

遗传算法在JobShop中的应用研究(part4:变异)的更多相关文章

  1. 遗传算法在JobShop中的应用研究(part1: 绪论)

    1. 什么是JobShop问题 Job,中文翻译成工件.一个工件又由若干道工序加工完成. resource, 资源.在本文的车间调度中资源指的是机器,每道工序要在某个特定机器上加工. Constrai ...

  2. 遗传算法在JobShop中的应用研究(part 5:解码)

    解码操作是整个遗传算法最重要的一步,在这步里面我们利用配置文件中的信息将染色体解码成一个有向无环图. 在介绍解码操作之前我们先来看一下配置文件,在part1绪论中我们已经介绍了一个车间调度问题的基本信 ...

  3. 遗传算法在JobShop中的应用研究(part 7:整体流程)

    """ pop是种群,种群中的每个个体的形式是,(makespan, 染色体)""" pop = [(ComputeStartTimes(g ...

  4. 遗传算法在JobShop中的应用研究(part3:交叉)

    2.交叉 交叉是遗传算法中的一个重要操作,它的目的是从两条染色体中各自取出一部分来组合成一条新的染色体这里,在车间调度中一种常见的交叉方法叫Generalized Order Crossover方法( ...

  5. 遗传算法在JobShop中的应用研究(part 6:结果显示)

    def FormatSolution(s, C, I): T = [0 for j in xrange(I.n)] S = [[0 for t in I[j]] for j in xrange(I.n ...

  6. 遗传算法在JobShop中的应用研究(part 2:编码)

    编码 在上一篇博客中我们讨论了车间调度问题的编码,具体说就是根据工件的个数和每个工件的工序数来生成12122这样的数字排列,具体的说一个工件包含多少道工序,那么这个工件的编号就出现多少次.从12122 ...

  7. (转)RRU交织冗余在LTE-R组网中的应用研究

    RRU交织冗余在LTE-R组网中的应用研究 王 芳1,2 庞萌萌1,2 (1.北京全路通信信号研究设计院集团有限公司,北京 100070; 2.北京市高速铁路运行控制系统工程技术研究中心,北京 100 ...

  8. Pywinauto在Windows Twain Driver自动化测试中的应用研究

    摘  要: 以Python为基础,结合对Twain Driver测试工具的具体需求,将Pywinauto引入到Twain Driver的自动化测试中.介绍了Pywinauto的基本概念,通过测试用例说 ...

  9. 遗传算法中几种不同选择算子及Python实现

    前言 本文对遗传算法中的几种选择策略进行了总结, 其中包括: Proportionate Roulette Wheel Selection Linear Ranking Selection Expon ...

随机推荐

  1. linux rhel7 dock6.7安装

    1. 下载dock6.7 先申请license 在这个网址下载http://dock.compbio.ucsf.edu/Online_Licensing/index.htm 2. tar zxvf * ...

  2. (转)Spring JdbcTemplate 方法详解

    Spring JdbcTemplate方法详解 文章来源:http://blog.csdn.net/dyllove98/article/details/7772463 JdbcTemplate主要提供 ...

  3. 关于sigwait

    刚开始看sigwait函数,只是知道它是用来解除阻塞的信号,可是使我疑惑的是那么解除了以后为什么线程收到终止信号SIGINT的时候还是没能终止呢?   于是网上找了一些资料,总的理解如下所示: sig ...

  4. HDU - 1875 畅通工程再续

    Problem Description 相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖,发展首先要解决的问 ...

  5. 关于eclipse的一些配置

    在linux中打开的一刹那,第一感觉就是这货怎么这么丑,用的时候还发现,这货怎么这么慢. 可以通过使用GTK2来让它的图标显示得合理一些,可以调整内存的限制来减少fullGC的次数. 配置文件的路径: ...

  6. 227 Entering Passive Mode (xxx,xxx,,xxx,xxx,x)

    登录ftp时显示227 Entering Passive Mode (xxx,xxx,,xxx,xxx,x) 因为FTP有两种工作模式,PORT方式和PASV方式,中文意思为主动式和被动式 ,详细介绍 ...

  7. Protocols

  8. Oracle 12c In Memory Option初探

    前情提要: Oracle OpenWorld 2013中Larry Ellison爆料的Oracle新特性:Oracle In Memory Database Option 1. 这个新特性将随着12 ...

  9. ThinkPHP 下如何隐藏index.php

    最近一直在做孕妈团的项目,因为部署到实际项目中出现了链接打不开的情况,要默认添加index.php才能正常访问. 当时忘了是Tinkphp的URL重写模式:以后遇到相同问题,首先要想到URL重写模式. ...

  10. Upnp资料整理

    系统,软件和路由器都要打开upnp功能. windows7下,分别启动 function discovery resources publication; Upnp device host; SSDp ...