遗传算法在JobShop中的应用研究(part 7:整体流程)
""" 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
shuffle(pop)"""把pop中各个个体的顺序打乱 """
hpop = len(pop) / 2""" hpop是种群的一半"""
for i in xrange(hpop):""" 遍历种群的前半部分份"""
if random() < pc:"""若[0,1]之间的随机数 < pc """
# Create two new elements
ch1 = Crossover(pop[i][1], pop[hpop + i][1], I)""" 通过交叉生成下一代"""
ch2 = Crossover(pop[hpop + i][1], pop[i][1], I)""" 通过交叉生成下一代"""
if random() < pm:"""若[0,1]之间的随机数 < pm """
ch1 = Mutation(ch1)""" 对ch1进行变异"""
if random() < pm:"""若[0,1]之间的随机数 < pm """
ch2 = Mutation(ch2)"""对ch2进行变异"""
pop.append((ComputeStartTimes(ch1, I)[-1], ch1))""" 将进化后的染色体放回种群"""
pop.append((ComputeStartTimes(ch2, I)[-1], ch2))
# Sort individuals in increasing timespan order and
# select only the best ones for the next iteration
pop.sort()""" 将pop中的染色体按makespan排序"""
pop = pop[:ps]""" 提取pop中的前ps个染色体"""
return pop[0]"""返回makespan最大的染色体 """
遗传算法在JobShop中的应用研究(part 7:整体流程)的更多相关文章
- 遗传算法在JobShop中的应用研究(part1: 绪论)
1. 什么是JobShop问题 Job,中文翻译成工件.一个工件又由若干道工序加工完成. resource, 资源.在本文的车间调度中资源指的是机器,每道工序要在某个特定机器上加工. Constrai ...
- 遗传算法在JobShop中的应用研究(part 5:解码)
解码操作是整个遗传算法最重要的一步,在这步里面我们利用配置文件中的信息将染色体解码成一个有向无环图. 在介绍解码操作之前我们先来看一下配置文件,在part1绪论中我们已经介绍了一个车间调度问题的基本信 ...
- 遗传算法在JobShop中的应用研究(part4:变异)
下面,我们以车间调度为例来谈谈遗传算法中的另一个重要操作变异.变异操作通常发生在交叉操作之后,它的操作对象是交叉得到的新染色体.在本文中我们通过随机交换染色体的两个位置上的值来得到变异后的染色体,变异 ...
- 遗传算法在JobShop中的应用研究(part3:交叉)
2.交叉 交叉是遗传算法中的一个重要操作,它的目的是从两条染色体中各自取出一部分来组合成一条新的染色体这里,在车间调度中一种常见的交叉方法叫Generalized Order Crossover方法( ...
- 遗传算法在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 ...
- 遗传算法在JobShop中的应用研究(part 2:编码)
编码 在上一篇博客中我们讨论了车间调度问题的编码,具体说就是根据工件的个数和每个工件的工序数来生成12122这样的数字排列,具体的说一个工件包含多少道工序,那么这个工件的编号就出现多少次.从12122 ...
- (转)RRU交织冗余在LTE-R组网中的应用研究
RRU交织冗余在LTE-R组网中的应用研究 王 芳1,2 庞萌萌1,2 (1.北京全路通信信号研究设计院集团有限公司,北京 100070; 2.北京市高速铁路运行控制系统工程技术研究中心,北京 100 ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-2.中大型公司里面项目开发流程讲解
笔记 2.中大型公司里面项目开发流程讲解 简介:讲解一个项目如何从零到上线,经历过怎样的步骤和流程 1.一个中大型项目的开发流程,从需求调研到项目上线 ...
- Pywinauto在Windows Twain Driver自动化测试中的应用研究
摘 要: 以Python为基础,结合对Twain Driver测试工具的具体需求,将Pywinauto引入到Twain Driver的自动化测试中.介绍了Pywinauto的基本概念,通过测试用例说 ...
随机推荐
- php类和对象
<?php 1. 类的简单格式: [修饰符] class 类名{ [成员属性] //成员属性,也叫成员变量 [成员方法] //成员方法:也叫成员函数 } 类的完整格式: [修饰符] class ...
- 分享 rabbitMQ入门详解
原文地址http://blog.csdn.net/cugb1004101218/article/details/21243927 目录(?)[-] rabbitMQ说明文档 rabbitMQ是什么 消 ...
- 解决:tomcat部署时deploy location不能显示加载后的路径
项目总是报错,添了删,删了又添了N次以后,发现添加部署的时候,Deploy Location 没有值了,Deploy Location 没有值在自带的Tomcat上就无法用浏览器浏览(Open in ...
- ndt histogram_direction
histogram_direction N_FLAT_BINS=40; dlong = pi*(3-sqrt(5.0)); % ~2.39996323 dz = 2.0/N_FLAT_BINS; lo ...
- I’m Sure It Will Only Take You A Few Days To Code
from:http://danshipper.com/non-technical-people-cant-estimate-developmen “So the site’s pretty simpl ...
- [Android Tips] 21. Regex Named Groups in Android
Android SDK 并没有包含 Java 7 新增加的命名捕获组功能,需要使用第三方库 https://github.com/tony19/named-regexp import com.goog ...
- iOS 版 MWeb 发布到自建 Wordpress 和 Metaweblog API 使用指南
MWeb 的发布服务的使用方法是先增加发布服务,再使用.在 iOS 中,要增加发布服务,可以在首页中,点左上角的 "设置" 按钮,进入设置界面,并滑动到底部,就会看到增加发布服务的 ...
- TIJ——Chapter Five:Initialization & Cleanup
Method overloading |_Distinguishing overloaded methods If the methods hava the same name, how can Ja ...
- Java类WebServer及中间件拿webshell方法总结
0.序 原文名称:Tomcat.Weblogic.JBoss.GlassFish.Resin.Websphere弱口令及拿webshell方法总结 原文from:http://www.hack80.c ...
- 想学习Android开发
最近被别人说知识面窄,心里受伤了.准备学学Android开发,如果能在手机里运行自己写的app,那是多么high ~~~ Android开发需要看什么资料呢? 说明:本人一直从事windows下的C+ ...