2.交叉 交叉是遗传算法中的一个重要操作,它的目的是从两条染色体中各自取出一部分来组合成一条新的染色体这里,在车间调度中一种常见的交叉方法叫Generalized Order Crossover方法(GOX),假设有三个工件A,B,C, 每个工件下面包含三道工序,根据这一信息我们可以利用上一节介绍的编码技术随机生成两条染色体如下:…
1. 什么是JobShop问题 Job,中文翻译成工件.一个工件又由若干道工序加工完成. resource, 资源.在本文的车间调度中资源指的是机器,每道工序要在某个特定机器上加工. Constraint, 约束.在车间调度中约束主要有以下两种: 同一个工件包含的工序有先后顺序. 每个机器不能同时处理两道工序,因此这台机器上完成工序时要串行,不能并行. Objective,目标.JobShop问题的一个常见目标是使所有工件完成的总时间最小,这个总时间英语叫做Makespan. 一个JobShop…
解码操作是整个遗传算法最重要的一步,在这步里面我们利用配置文件中的信息将染色体解码成一个有向无环图. 在介绍解码操作之前我们先来看一下配置文件,在part1绪论中我们已经介绍了一个车间调度问题的基本信息可以用一个表格来表示:…
下面,我们以车间调度为例来谈谈遗传算法中的另一个重要操作变异.变异操作通常发生在交叉操作之后,它的操作对象是交叉得到的新染色体.在本文中我们通过随机交换染色体的两个位置上的值来得到变异后的染色体,变异操作的代码如下: 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 fo…
""" pop是种群,种群中的每个个体的形式是,(makespan, 染色体)""" pop = [(ComputeStartTimes(g, I)[-1], g) for g in InitPopulation(ps, I)] for it in xrange(1, mit+1):""" mit是迭代次数""" # Random ordering of the population s…
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)] for i in xrange(len(s)):"""遍历染色体""" j = s[i]"""获得i的工件号j """ t = T[j]"""获得i是j的…
编码 在上一篇博客中我们讨论了车间调度问题的编码,具体说就是根据工件的个数和每个工件的工序数来生成12122这样的数字排列,具体的说一个工件包含多少道工序,那么这个工件的编号就出现多少次.从12122中我们可以看出总共有两个工件1和2,工件1下面有两道工序,工件2下面有三道工序,所以1出现了2次,2出现了3次. 此外,我们还提到了种群的概念,种群就是指随机生成多个工件号排列的集合,集合中排列的个数就是种群的大小.大家思考一下如何编程实现初始种群的生成,大家看一下下面的python代码: def…
RRU交织冗余在LTE-R组网中的应用研究 王 芳1,2 庞萌萌1,2 (1.北京全路通信信号研究设计院集团有限公司,北京 100070; 2.北京市高速铁路运行控制系统工程技术研究中心,北京 100070) 摘要:深入研究LTE-R系统RRU交织冗余组网,包括频率配置与网络结构,以及工作方式.对LTE-R无线接入网冗余组网研究具有参考意义. 关键词:LTE-R;RRU;交织;冗余 Abstract: This paper studies RRU interleaved redundant ne…
摘  要: 以Python为基础,结合对Twain Driver测试工具的具体需求,将Pywinauto引入到Twain Driver的自动化测试中.介绍了Pywinauto的基本概念,通过测试用例说明Pywinauto在自动化测试中的具体实现.应用结果表明,该方法大大提高了测试的自动化程度,极大地减少了Twain Driver测试的工作量,同时也确保了测试质量.关键词: Python:Pywinauto:Twain Driver:自动化测试 Windows下扫描仪驱动程序主要使用Twain协议…
机器学习sklearn中的检查验证模块: 原版本导包: from sklearn.cross_validation import cross_val_score 导包报错: 模块继承在cross_validation中,但现在的cross_validation模块已经取消了,继承到了model_selection中 现版本的导包: from sklearn.cross_validation import cross_val_score…