1. 什么是JobShop问题

  1. Job,中文翻译成工件。一个工件又由若干道工序加工完成。
  2. resource, 资源。在本文的车间调度中资源指的是机器,每道工序要在某个特定机器上加工。
  3. Constraint, 约束。在车间调度中约束主要有以下两种:
    1. 同一个工件包含的工序有先后顺序。
    2. 每个机器不能同时处理两道工序,因此这台机器上完成工序时要串行,不能并行。
  4. Objective,目标。JobShop问题的一个常见目标是使所有工件完成的总时间最小,这个总时间英语叫做Makespan。

一个JobShop问题可以用一个表格来刻画,例如下面的表格:

   θ(1,1) θ(1,2)  θ(2,1)   θ(2,2)
 r (i,j)  1  2  2  1
 D (i,j)  3  2  5  1

θ表示工序,例如, θ(1,1)就表示第1个工件的第1道工序。

r (i,j)表示机器编号,例如,r(1,1)=1,表示第一个工件的第一道工序的加工机器号为1。

D (i,j) 表示加工时间,例如,D(1,1)=3,表示第一个工件的第一道工序的加工需要3个单位的时间。

JobShop问题的一个解可以用一个加权有向无环图来表示,请看下面的一个有向无环图:

这个加权有向无环图就代表上述JobShop问题的一个解,我们可以看到每个工序作为图中的一个节点出现,权重就是这个节点对应的加工时间。工序之间的先后顺序用箭头表示,在这里需要注意的是:除了同一个工件下面的工序之间有先后顺序外,同一台机器上加工的工序也要串行。另外,我们增加了两个虚节点,分别为 θI 和 θF,表示开始和结束。从θI有箭头指向每个工件的第一道工序,从每个工件的最后一道工序出发用箭头指向 θF。虚节点的加工时间为0。

一个有向无环图中有若干条从θI到θF的路径,在这些路径中我们找出那条路径上所有节点的权重相加最大的那一条,这个最大的权重和就是这个解对应的makespan,即所有工件加工完毕所需的时间。

注意:所有工件都完成的总时间(Makespan)不是3+2+5+1=11,而是上面那个有向完全图中所有能从开始节点到达结束节点的全体路径中那条所需时间最长的路径花费的时间,即7.下面是另外两个有向图,即另外两个解的例子:

2. 遗传算法与JobShop

遗传算法是一种随机搜索算法,它主要分为六大功能模块:编码、交叉、变异、解码、评价、选择。整个算法的流程如下:

  1. 编码:

我们利用工件号的排列来表示工序的先后顺序,例如:1212这个排列中第一个1代表第一个工件的第一道工序,第二个1代表第一个工件的第二道工序,第一个2代表第二个工件的第一道工序,第二个2代表第2个工件的第二道工序。可见,1212这个排列可以完全体现出上面的有向无环图中体现的节点先后顺序。

需要说明的是一个有向无环图可能对应多个工件号的排列方式,例如,1212,2121,1221,2112都对应上面的有向无环图。

在遗传算法中首先做的就是编码,即随机生成若干个工件号的排列,这些个随机生成的排列构成的集合被称为种群,每个排列被称为染色体。

如图所示,种群大小为4,该种群中包含4条染色体,分别为2211,1212,1122,2121。请思考为什么1111为非法染色体?

遗传算法在JobShop中的应用研究(part1: 绪论)的更多相关文章

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

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

  2. 遗传算法在JobShop中的应用研究(part4:变异)

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

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

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

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

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

  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. Java Web(转)

    struts2+spring+hibernate 上传文件 关 键字: s2sh 上传文件 struts2 spring hibernate 前段时间,我用struts2.1.6.spring2.5. ...

  2. 【iCore3 双核心板_FPGA】实验二十二:Niosii——固化程序到 EPCS 里

    实验指导书及代码包下载: http://pan.baidu.com/s/1c2lyNQS iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  3. 新广告法,极限词剔除,替换掉的mysql语句

    国家级,世界级,最高级, 最佳,最大,第一, 唯一,首个,首选, 最好,最大,精确, 顶级,最高,最低, 最,最具,最便宜, 最新,最先进,最大程度, 最新技术,最先进科学,国家级产品, 填补国内空白 ...

  4. 滚动固定TAB在顶部显示

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  5. MVC4脚本压缩 BundleTable bundles 404错误

    在发布网站的时候,因为使用了MVC4的新特性BundleTable,造成访问的时候js和css报了404错误, google了以后, 有朋友说是因为要在webservice添加 <modules ...

  6. 一些IT中的工具介绍【转】

      1. 史上最全github使用方法:github入门到精通 2. Git教程 3. GIT与GitHub使用简介 简单来说,git是一种版本控制系统.跟svn.cvs是同级的概念.github是一 ...

  7. sqlserver临时表操作

    创建临时表        方法一:      create table #临时表名(字段1 约束条件,                       字段2 约束条件,                  ...

  8. php 关于stripslashes 和 addslashes的使用

    一.首先要先说到 php magic_quotes_gpc  .(get_magic_quotes_gpc()可以检测是否开启) PHP magic_quotes_gpc作用范围是:WEB客户服务端: ...

  9. centos7 开机画面定制

    安装包 yum install plymouth-plugin-script 设置开机启动画面 mkdir /usr/share/plymouth/themes/tup 创建主题目录 cp /root ...

  10. LUA语言注意点归集

    统计元素个数接口--只计算以整数为下标的 第一段连续元素的数目 #tab 和 table.getn() http://ju.outofmemory.cn/entry/29450 我们修改table: ...