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

 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. 实现一个小目标,动动小指,分享可得iphone7/ipad/U盘|奥威软件

    为什么很多人喜欢冬天呢?是因为冬天有着“床边挂起长长棉袜,而你做着甜甜美梦”的平安夜?还是因为冬天有着“具有无法言述的浪漫情怀”的圣诞节? 是不是还沉浸在平安夜,圣诞节的双节狂欢中, 好像不管长到多大 ...

  2. Nexus安装及部署(含如何在Tomcat中部署)

    1. Nexus价值 1)方便-节约带宽-快 2)便于统一管理 3)持续集成需要 2.Nexus下载 http://www.sonatype.org/nexus/go 3.Nexus启动 解压后进入\ ...

  3. JSP 登录与注册的小案例之二(无验证码,前端拦截空参)

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...

  4. IIS/IIS Express/Asp.net配置片段记录

    事情的起因是,我们在项目中使用了URLRewriter.dll作为实现伪静态的工具,在VS2010及之前的开发环境中,该功能运行正常,但在VS Express 2012 for Web中就不起作用了, ...

  5. cygwin E437

    这个简单错误居然查到了 报错E437: terminal capability "cm" required 执行:# export TERM=xterm

  6. Ubuntu16.04配置phpmyadmin

    原文 如何安装phpmyadmin-Mysql 数据库管理 使用界面管理器:系统->系统管理->新立得软件包管理器->搜索 phpmyadmin->右键标记安装.或直接使用一条 ...

  7. [Core] .NET Core & VS Code 之路(2) Web API

    开发Core项目的条件 Visual Studio 2015 Update 3 .NET Core 1.0.0 - VS 2015 Tooling Preview 2 看到VS包的体积,以及不想往下走 ...

  8. c 头文件<ctype.h>(二)

    测试<ctype.h>函数 #include <stdio.h> #include <ctype.h> int main(){ ; ; i < ; ++i){ ...

  9. iptables四个表与五个链间的处理关系

    转载自:http://www.linuxidc.com/Linux/2012-08/67505.htm netfilter/iptables IP 信息包过滤系统是一种功能强大的工具,可用于添加.编辑 ...

  10. Python中的传值和引用

    我写这个主要是给自己看,内容也就是便于自己理解,可能会不正确,但目前来看代码测试的结果是对的. python中一切皆对象. 当我们赋值时: a = 1 其实是先创建了一个整数常量1(也是一个对象,且已 ...