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

1 def FormatSolution(s, C, I):
2     T = [0 for j in xrange(I.n)]
3     S = [[0 for t in I[j]] for j in xrange(I.n)]
4     for i in xrange(len(s)):"""遍历染色体"""
5         j = s[i]"""获得i的工件号j """
6         t = T[j]"""获得i是j的第几道工序t"""
7         S[j][t] = C[i]"""将i的加工时间存到S的相应位置中"""
8         T[j] = T[j] + 1"""工件j的工序累加器+1 """
9     return S

S中存放的是每道工序开始加工的时间,它的形式为:[[a,b,c],[d,e,f],[g,h,i]],每个子list代表一个工件的信息,子list中的字母代表这个工件下面每道工序开始加工的时间。

假设我们知道每道工序开始加工的时间,同时又知道每道工序所需要的机器号,我们就可以得到每台机器上工序的加工顺序,进而可以用软件画出调度的甘特图。

时间: 2024-08-09 10:32:22

遗传算法在JobShop中的应用研究(part 6:结果显示)的相关文章

遗传算法在JobShop中的应用研究(part 1)

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

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

2.交叉 交叉是遗传算法中的一个重要操作,它的目的是从两条染色体中各自取出一部分来组合成一条新的染色体这里,在车间调度中一种常见的交叉方法叫Generalized Order Crossover方法(GOX),假设有三个工件A,B,C, 每个工件下面包含三道工序,根据这一信息我们可以利用上一节介绍的编码技术随机生成两条染色体如下: 我们可以用一个list来存储一条染色体, 这个list中的每个元素是一个有序偶,有序偶的第一个元素是工件号,第二个元素是工序号. Parent1用list可以表示为[

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

编码 在上一篇博客中我们讨论了车间调度问题的编码,具体说就是根据工件的个数和每个工件的工序数来生成12122这样的数字排列,具体的说一个工件包含多少道工序,那么这个工件的编号就出现多少次.从12122中我们可以看出总共有两个工件1和2,工件1下面有两道工序,工件2下面有三道工序,所以1出现了2次,2出现了3次. 此外,我们还提到了种群的概念,种群就是指随机生成多个工件号排列的集合,集合中排列的个数就是种群的大小.大家思考一下如何编程实现初始种群的生成,大家看一下下面的python代码: 1 de

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

""" pop是种群,种群中的每个个体的形式是,(makespan, 染色体)""" pop = [(ComputeStartTimes(g, I)[-1], g) for g in InitPopulation(ps, I)] 2 for it in xrange(1, mit+1):""" mit是迭代次数""" 3 # Random ordering of the populati

人工智能深度学习神经网络在双色球彩票中的应用研究

人工神经网络(Neural Networks)在双色球彩票中的应用研究网上已经有比较多的研究论文和资料,最近比较火的AlphaGo中用到的深度学习在双色球预测上还没有相关论文,以后研究成果出来将逐步更新内容. 人工智能神经网络是什么? 神经网络的好处就是可以自己纠正,可以自己生成节点,错误的输入也可以给你输出接近正确的结果.这个就是为什么叫做智能,他会自动根据情况跟人脑思维一样进行学习,进化而不是单纯的执行命令了. 普通过滤算法就是单线的执行,根据我的输入根据写好的逻辑算法直接给出输出,没有自动

IVI 技术在自动测试系统中的应用研究

最近在做一个项目,关于TR组件自动测试系统,其中对测试系统仪器的设置,想底层用IVI 来实现,新的仪器大多支持lan口,厂家都自带IVI 驱动程序,只要按指定步骤就能实现多个厂家的IVI 仪器设置,实现同类仪器的可互换性. 本项目中用到示波器.频谱仪.宽带信号源.微波信号源等仪器.下面讲一下开发IVI 步骤: 1.首先要对IVI 有所了解,IVI 相关信息可从下面网址获得:http://www.ivifoundation.org/default.aspx overview 中大家可以学习IVI

GridView中如何在无数据时显示空行和表头

#region ---- 数据绑定 ----- private void bd(int pageindex) { int rowcount = 0; int pagesize = 0; int pagecount = 0; decimal cyfzhj = 0; string Slqstring = Base_Query_Sql; mta.DT(Slqstring); DataTable rs = mta.DT(Slqstring); this.GridView1.DataSource = rs

Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果

首先我们先看第一个界面吧,使用将手机中的图片扫描出来,然后根据图片的所在的文件夹将其分类出来,并显示所在文件夹里面的一张图片和文件夹中图片个数,我们根据界面元素(文件夹名, 文件夹图片个数,文件夹中的一张图片)使用一个实体对象ImageBean来封装这三个属性 package com.example.imagescan; /** * GridView的每个item的数据对象 * * @author len * */ public class ImageBean{ /** * 文件夹的第一张图片路

Myeclipse和 eclipse中的控制台汉字横着显示修改

Myeclipse和 eclipse中的控制台汉字横着显示问题的修改 如图: 同一种字体有两种显示方式,比如微软雅黑和@微软雅黑,前一种汉字是竖着显示,后一种汉字是横着显示. 修改方法: preferences->General->Appearance->Colors ang Fonts -> Basic ->Text Font中双击该字体,从中选择前面不带@的字体即可解决汉字横着的问题. 上面带@是横着显示的. 改成不带的是正常显示的: