摘 要
在传统的模具生产车间中,调度方案不明确、管理者对车间的实时生产信息不能及时掌握。因为模具车间的多品种小批量生产模式的特点,生产现场常常混杂了各种各样的待加工工件,现场的数据流和物料流十分混乱。这导致了在生产开始之前没有科学的调度方案,生产开始之后不能对生产过程进行控制。由于生产过程中的数据大多依靠人工记录,信息反馈存在很大的延迟,管理者不能及时获得数据。没有准确的数据支撑,在做决策时也就没有科学依据。
在本文中就实际案例,利用操作流程图和软件架构图进行了系统性的分析,设计出了整体的数据库模型,建立了各个模块数据存储方案,整合了案例中的数据。在此前提下利用遗传算法提出了一种基于FFSP的调度方案。基于调度方案阐述了此系统的整体开发流程,最后给了一个完整的车间调度管理系统并进行了实际的数据测试。该系统融合了从订单进入车间到货物立刻车间的数据,根据订单的信息自动的生成了调度方案,相比于手工输入数据,大大提高了效率,但是调度算法模块的复用性有待提高。

关键字:数据分析,遗传算法,系统分析,混流生产

Abstract

In traditional mould production workshop,The information flow of the workshop is confused with the material flow, and the managers can not grasp the real-time production information of the workshop in time. There is a great delay in the production information of the workshop when the manager makes decisions, which leads to scientific judgement based on real-time data. And because the transmission of information is not in a timely and complicated situation, it has caused the status of “the dominant position of experience scheduling” in the production scheduling of the traditional mold shop. Obviously, the ability to dispatch the site entirely based on experience is limited, and this method often appears to be at a loss when the order is increased.
In this paper, a systematic analysis is made on the actual case using the operation flow chart and the software architecture diagram. The whole database model is designed, the data storage scheme of each module is established, and the data in the case is integrated. In this case, a HFS based scheduling scheme is proposed by using the genetic algorithm. The overall development process of the system is described. Finally, a complete job shop scheduling management system is given and the actual data is tested. The system combines the data from the order into the workshop to the immediate shop of the goods. According to the information of the order, the scheduling scheme is automatically generated. Compared with the manual input data, the efficiency is greatly improved, but the reusability of the scheduling algorithm module needs to be improved.

Key words: DataAnaylyse, Genetic algorithm,System analysis,Mixed flow production


1 绪论

1.1 研究背景及意义

随着社会的不断进步,行业之间的竞争愈加激烈,产业升级势在必行。早些年我国大部分商品供不应求的情况已经转变为了现在的供大于求,各种处于价值链下游的低端制造业产能过剩,生存能力堪忧。就连曾红极一时的“世界工厂”也在降低低端制造业比例的同时积极的引进高端制造企业,不断的探索制造业未来的新道路。在此种情况下,2015中国政府顺势推出的中国制造2025计划让不少企业明确了工作目标。一是智能制造与绿色制造,二是走高精尖的制造道路,如高端装备制造。
但是许多中小企业在探索智能制造的路上困难重重,如履薄冰。因为要想实现工厂制造智能化,必须先实现信息化。要实现工厂内部的信息化必须先理清楚企业内部的业务流程与数据逻辑。面对如此复杂的系统工程,不少企业选择直接购买软件公司开发的商业软件,但是只是普通信息软件还远远达不到智能制造的水准。智能制造系统的区别传统企业系统的因素之一就是能对当前的数据进行自动的分析,辅助管理者进行决策。本文尝试就某一模具公司为实例,以遗传算法为基础建立生产调度模块的信息化系统。
传统的模具车间在调度的过程中存在着信息支持度不足的问题,此外由于人的计算能力的限制,在面对大数量的调度时会显得力不从心。此系统的实际意义之一是在生产效率的改善方面,据实际期间的考察,普通模具车间在传统的生产作业过程中纸质资料过多,生产计划部门的信息完全靠纸质档案和口头方式通知到现场,现场的加工结果靠生管现场巡查得知。此种方式存在信息的严重滞后,妨碍生管人员对现场的正确判断,该系统可以整合生管,现场,质检三方面的信息。做到信息的实时更新。
意义之二在于整合了车间的实时生产数据,例如工件的实际加工时间。我们知道,在FFSP或FJSP问题的讨论中都是假设工件的加工时间是已知的[2],而在实际的生产作业中,工件的实际加工时间是不可能固定不动的,随的设备的更新和操作人员的更换,工件的加工时间会存在变动的情况,因此在用算法解决问题的时候原始数据可以根据数据反馈系统实时更新,以此达到算法的数据要求。

1.2 文献综述

生产系统的设计主要包含两个方面,其一是设计核心算法,其二是确定软件开发技术体系,制定开发框架。算法的设计需要针对确定问题进行分析,将其进行转化与抽象。模具的生产过程是一个及其复杂的过程,不同传统的流水制造车间,每个工件的制造流程都是相同的,车间在指定SOP的时候也相对比较简单,模具车间属于小批量多品种生产模式,优点是可依据客户要求进行个性定制,缺点是品种繁多,调度困难。传统的模具车间是一个典型的作业车间,经过工艺改进和制造流程优化后接近FFSP问题,但是遇到具体问题还需具体分析。车间生产系统的开发属于软件开发范畴内,是一个系统工程。其开发需要的技术体系多种多样,其中javaweb技术体系因为开发迅速,扩展方便而被广泛选用。

1.2.1 模具车间调度算法

在国内,有很多关于该方面的论文,其中何法江,王明红,汤以范等人在他们的论文中并行多机调度问题和机器调度中的提前拖期调度问题,提出一种自己的遗传算法解决方案,其优化的目标是最小化加权绝对延迟时间,但是在论文中没有详细的介绍遗传算法中最重要的编解码方案,也没有详细介绍交叉算子,变异算子的实现方案。王金鹏、朱洪俊、周俊等人在他们的文章中采用的是最优子种群遗传算法,考虑到了传统编码方案容易陷入局部最优解的情况,提出了详细的编码方案,并且在结尾的试验对比中,较最优个体保护策略该中方案体现了其优势。周辉仁、唐万生、魏颖辉在其文章中采用的染色体编码方案是为矩阵编码,其适应度函数是构造的一个包含最大完工时间的函数,在算法的选择算子上,采用的是轮盘赌的方式进行选择。王克喜、单汨源等人在运用遗传算法的时候,提出了采用启发式算法和随机方法共同生成初始种群的方案。
以上的文章都只是在理论上进行了讨论,张洪亮,张鹏彬等人则把算法和流行的仿真软件(flexsim)结合了起来,把复杂的算法逻辑,转换成了操作工人的课理解的可视化窗口。魏文杲,蒋真真等人也尝试了结合flexsim更好的利用算法解决调度问题。在解决该类问题上除了选择遗传算法,也有很多人选择采用其他的智能算法,比如在陈乐庚 ,胡锐的文章采用的就是粒子群算法。韩忠华,朱伯秋,史海波等人在其文章中采用了蝙蝠算法。
国外在该问题的研究上也很深入。针对批量无等待柔性流水车间Kwanwoo Kim & In-Jae Jeong提出了一种自适应的遗传算法(算法目标是最大完工时间的最小化),在该文章中他们还使用了爬上算法来改善当前的种群。Yi Tan1. Lars Mönch1提出了一种混合规划公式和邻域搜索的方法,并且在文章中对编码的过程进行了细致的阐述。

1.2.2 模具车间系统设计

在车间的信息系统的设计上遵循常规的企业系统的设计方案,如利用UML建立信息模型。UML是在开发阶段,说明、可视化、构建和书写一个面向对象软件密集系统的制品的开放方法,此种分析方法在80年代90年代的时候达到高潮,但是UML建模方法太过复杂,非计算机专业人员很少能融汇贯通该方法。第二种建模方法是采用数据结构建模方式,如采用数据流动图(DFD)或者IDF0图的方式描述系统的数的控制流动。再者就是ER图数据建模,实体关系图(E-R)能很好的放映各个实体之间的联系,在数据库建立阶段可参考该中方法,但是对于系统中的控制流和事件,E-R图不能很好的放映。
从上面我我们也可以看出,相较于调度理论的算法设计,融合了算法的调度系统更加复杂,在此次的设计中采用的UML简化后的设计方法,结合E-R图,流程分析图来设计的。
总体来说国内外的研究集中在调度理论算法的研究上,在实践验证的时候也只是采用文献中的数据,但是真实的生产作业环境和理论分析中的假设是有偏差的,在怎么把理论算法真正的应用到实际的生产过程中的这个问题上还需要很多的努力,

1.3 案例分析与提出问题

1.3.1 问题的提出

H公司是一家传统的模具制造公司。公司的主要生产模式是按订单生产,但是公司对该订单的价格估计是凭生产管理者的经验决定的。这就导致了有时候生产一段时间后发现这个订单实际上是亏本的,但是苦于信息的整合不完整,一直以来都不能找到一个很好的方案来解决该问题。
由于公司的绝大部分的机器是CNC,可以代替传统的多种单功能机床(车洗刨等),即同一工艺可以在多个机器上加工,所以在接到订单进行生产时会有多种多样的调度方案。正因为如此,现阶段其实是没有一个明确的调度方案来指导生产的,在生产的过程中完全凭生产主管的直觉和客户的催单状况来安排生产的工件。
生产数据的反馈存在很大的时间延迟。现阶段所有的生产数据依靠人工记录,反馈,存在很大的误差,对决策没有实际的辅助意义(先阶段的数据反馈模式是生产主管开会安排工人生产某客户的工件,工人在一天结束后手工填写今天生产了哪些工件,再由专门的人汇总今日生产状况,有时候到了第三天才把第一天的所有数据统计完成,导致工人的工作进度不能实时的掌握)。
由于没有实时生产数据的支持,所以在判断订单完工日期的时候存在很大的误差,而且对现场的生产效率也没有很好的评价方案。
工厂内部纸质文件太多。工厂内部的信息工具是由Excel,任务的下达,工作状况的反馈,任务的统计全部依赖于纸质文件的记录,冗余繁杂。

1.3.2 解决方案设想

所有问题的根源是没有有效的收集工厂内部的生产信息,没有对这些信息进行系统的组织。所以第一步应分析工厂内部的各个模块,建立数据库,统一数据的记录方式,做到生产系统的的各个模块信息共享
在建立数据库的基础上对数据进行合理的分析,结合某种算法给出生产订单生产的参考调度方案。
在生成了调度方案后,设计报工模块,工人按该调度方案进行报工加工,工厂管理者可以实时的跟进生产的进度,据此判断是否进行重调度
分析,整合收集的数据对工人的效率进行分析,(加工的良品率,有效工作时长),机器的工作时间进行分析,通过程序调用共享数据,减少文员的工作量。

1.4 文章结构

文章的第一部分是关于该实例模具车间的现状,以及在模具车间的调度与信息的化方面前人所做的研究,总结其经验。文章第二部分就现有的实例做了简略的系统分析,在整体的模块上大体分为生产任务的生成,现场数据的反馈,系统数据汇总与交互,数据汇总与参考。第三部分为调度算法设计,其重点在于分析现有的生产情况,以设计符合实际的染色体编解码方案,在第三章的后部分,对染色的体和的编码做了详细的解释。第四部分为软件开发部分,在明确了系统的信息流,控制流,以及调度方案后,进行软件的整体设计与局部的人性化优化,(软件的基本开发体系为java+servlet)。在本文的第五部分,对开发后的整体结果,依据实际的订单信息进行了测试,并把调度后的结果与人工调度的结果进行对比,总结了现阶段的成果与问题。

基于遗传算法的调度系统设计与实现 - 图1
图 1.1 文章结构

2 模具车间生产系统模块分析

系统的总体逻辑分为四部分,第一部分为接受订单到联合数据库中的BOM生产加工总任务,分根据加工总任务中的加工时间是否为0件将加工总任务分为自加工任务和外包加工任务,自加工任务可以根据自定义的算法生产加工任务调度方案。
第二部分为把自加工任务传输到加工现场,现场工人根据调度方案进行加工报工,QC根据工人的报工内容进行质检,实时反馈工人的加工质量。工厂管理者根据加工报工情况实时跟进加工过程,以便于在合适的时候启用其他调度方案。
第三部分为收集现场的加工数据(包括QC的质检数据),对比该订单的总生产任务,我们可以得到该订单的完工期估计值,同时,在订单的全部任务完成后可以自动进行结案,生产管理者据此安排该订单的发货,系统辅助生成发货单。对于外包部分,系统辅助生成外包单和最终的对账单。
第四部分为分析收集到的现场加工数据和订单分解产生的数据,据此得到订单的大致生产成本。根据系统自动捕获的加工时间,工厂的管理者可以对现场的加工效率进行科学的分析,同时,机台的加工时间对机台的保养参考价值也是很大的。

2.1 生产任务与自制调度方案的生成

从以下的流程图可以看出,在功能实现方面需要实现订单的录入、订单详情的录入、BOM的录入(系统根据EXCEL导入)、订单到任务的展开、任务的分类、自制调度方案的生成。在数据表的建立方面需要建立 BOP表(应为该BOM表中包含了每个工件的具体制造工艺,改为BOP) 订单(ORDER)表 订单详情(OrderInfo)表 总生产任务(TotalTask),外包订单(WbOrder),外包订单详情(WbOrderInfo) 外包任务(WbTask)表。

基于遗传算法的调度系统设计与实现 - 图2
图 2.1 订单相关

BOP(BOPID ),Orders(OrdersID),
OrderInfo(OrderInfoID),TotalTask(TotalTaskID),
WbOrder(WbOrderId),WbOrderInfo(WbOrderInfoId),
WbTask(WbTaskId),
由于篇幅的限制,对于各个表的具体栏位不一一而述。在这里只给出各个表的主键外键,以及各个表之间的关系。通常来说每个表都已一个自增的int类型的主键。其中Orderinfo中的OrderNo参考Order中的OrderNo,WbOrderInfo中的WbOrderNo参考WbOrderInfo中的WbOrderNo。下图是以订单展开功能为核心分析所涉及到的数据库,在后续所需要编写的页面视图和这其中的逻辑。
基于遗传算法的调度系统设计与实现 - 图3
图 2.2 设计图

2.2 现场数据反馈

在外包任务,自制任务,调度方案明确后,生产现场的工人根据调度方案从自制任务中选择加工任务进行报工。现场报工终端自动记录加工时间和结束时间,在工人结束加工后在终端选择结束任务,此时工人的加工信息已经可以在质检终端进行查询,质检在检验加工工件的对应工序后只需要在系统内记录该工序的OK数目和NG数目即可,(此数据可用来统计工人的工作效率和加工的良品率,对工人绩效评价做出参考)。对于外包工件,类似自制加工任务,在外包商加工完成后进行检验记录统计数据。
在该工件的全部工序完成且检验合格后后自动结束任务,从工人的选项中消失。新涉及的数据表有。机器表Machine(MachineId),员工表Staff(StaffId),报工品检BGPJ(BGPJID),外包品检WBPJ(WBPJID),数据表之间的完整性用数据库内部触发器来实现。
大致的流程图如下:
基于遗传算法的调度系统设计与实现 - 图4
图 2.3 工作流程图

以下为该部分的系统实现逻辑。

基于遗传算法的调度系统设计与实现 - 图5
图 2.4 软件设计图

在系统的开发过程中页面需要显示来自SERVER端的数据,数据的传递是采用的ajax 技术,具体不详细解释。此外,在填写订单表和QC检测表的时候需要从Session中读取现有操作人员(登录人员)的基本信息,自动赋值给操作记录中对应的字段,减少了人工输入的步骤。

2.3 系统数据汇总与交互

在此生产系统中,涉及到的需要导出的数据有订单数据、外包订单数据、BOP数据的导入这部分的交互流程较为简单不一一叙述。列举一BOP导入和外包订单导出的例子予以说明。根据工业工程的基础知识中我们可以知道一套模具是有多个小工件组成的(BOM表),每个小工件又包含了很多的加工工艺,如果要人工把这些内容输入到系统是很费时间的,想到的是利用系统自动读入来自客户的BOM(BOP)表。实现逻辑如下,值得说明的是在这个阶段中使用了一个JXL.jar包,jxl是一个外部的包,封装了excel的大部分处理功能。
基于遗传算法的调度系统设计与实现 - 图6
图 2.5 软件设计图

在生成了总生产任务,自制生产任务后,外包的生产任务就自然而然的可以得到了,为了减轻操作人员的负担,自动列出了需要外包的任务,操作人员只需要勾选并选择外包数量系统即可根据之前的外包订单数据自动生成订单,并且生成电子档的外包订单。具体的逻辑实现如下
基于遗传算法的调度系统设计与实现 - 图7
图 2.6 软件设计图

2.4 数据汇总与参考信息

在所有的数据都已经收集完成后,可以在现有的数据上进行简单的分析和组织,生成对管理者有参考价值的信息,比如在统计了所有的工人的上班时间和报工所用的时间后可以得到工人上班期间的工作效率,在得到了机器的所有加工时间后可以得到该机器的稼动率,为机器的维修提供了参考基础。因为在数据库(报工品检)中数据是以类似以方式组织的
基于遗传算法的调度系统设计与实现 - 图8
图 2.7 数据实例

很容易想到的一个方式是通过sql语句查询出某一个人在某段时间的加工总时间,在通过循环来调用该模块可以得到任意时间段某一员工的加工情况,具体的实现逻辑如下(以员工效率统计为例),(K代表月份)
基于遗传算法的调度系统设计与实现 - 图9
图 2.8 查询逻辑

基于遗传算法的调度系统设计与实现 - 图10
图 2.9 查询逻辑

再执行了上述逻辑后返回一个LIST对象,客户端(BROWSE)对LIST进行解析后可以得到下面的结果,至此我们已经可以通过工厂内分散的数据得到实质性的信息了,其他的数据统计功能实现与此相似,不再赘述。
基于遗传算法的调度系统设计与实现 - 图11
图 2.10 结果图



3 模具车间调度算法设计

在客户要求变得越来越多样化的今天,多品种,小批量的生产方式已经逐步被传统的制造商所接受。与过去的大批量,少品种的生产模式式相比,小批量的生产方式因为对生产线柔性要求较高,其生产的成本也是较高的,尤其是在生产调度方面,因为产品的多种多样,不同的规格,颜色需要不同的工艺要求,依靠传统的人工调度所耗费的时间是很长,而且在加工工件变的越来越多的时候人工调度并不能给出一个很好的解决方案,这时候就要依靠计算机来辅助调度了。如本文开篇所说,这调度问题上已经有很多人进行了研究,为了得到最终的调度方案,所采用的方案也是多种多样,在这里我们采用的是遗传算法来解决实际案例问题。

3.1 算例说明

为了简要的说明该算法的逻辑,我举以下例子说明,在表中,有三个工件,总共的工序类型有6种。(表中每个工序对应的时间是加工时间)

Id Name Amount Mill NC1 NC2 NC3 NC4 Surface
1 P1 1 300 360 120 100 50 50
2 P3 1 258 420 150 200 50 20
3 P4 1 500 520 120 100 70 40

3.1 工序加工时间表 单位(min)

表3.2 机器表

Id Name
1 M1
2 M2
3 M3

3.2 基于HFS的模具生产调度问题阐述

在本案例中,一个订单包含多套模具。每个模具包含多个工件,每个工件又包含多个工序,不同的工序的加工的时间是不同,由于车间内的加工机器大多为CNC,所以可以担任多种工艺的加工机台。将上述问题总结可以归结为:有一系列的工件{P1,P2,P3,,,,,Pn}需要在m台机器{M1,M2,M3,,,Mn}上进行加工,每个工件包含有预定的工序中{O1,O2,O3,,,On}某几道工序,而且这些工序的先后顺序是不可以改变的。在明确这些问题,做出以下基本假设。

3.2.1 假设条件

1) 在本案例中所有的工序可以在任意一台CNC上加工。
2) 不考虑同一工件的同一工序在不同机器上加工时间差。
3) 所有的机器在开始时刻都是空闲的。
4) 订单的分解任务全部完成之后才可以进行加工。
5) 同一个机器在同一时刻不能同时加工多个工件/工序。
6) 一个工件一旦开始加工就不能被打断。
7) 工件的加工工序提前是设计好了的,并且后道工序只有等前道工序加工完成之后才能开始加工。
8) 规定所有的第一道工序加工完成后才可以进行第二道工序,后面的工序依次类推。

3.2.2 符号说明

i,j 通用下标索引,表示是第几个。
Mi 表示某一个机器。
Pi 表示某一个工件。
Oij 表示某一个工件的某一个工序。
M 表示所有的机器集合

3.3 遗传算法设计

遗传算法(Genetic Algorithm)是一种在计算机中模拟生物进化的过程。我们知道在自然界中存在着适者生存规则,自然界会选择出那些适合当下自然环境的特性,随着被选择生物的不断繁衍,最后的结果就是种群(population)中的所有个体(individual)的某一特定特性区域同一化,典型的例子就是在频繁使用抗生素后,体内的细菌会产生耐药性。在科学计算中,由于各种各样的限制,有时候并不能得到最优解,只能利用近似解来代替,怎么选择到一个更好的近似解成了许多数学家日思夜想的问题。在自然选择的启发下,人们在计算中模拟了该过程[2]。它的做法是从一个可能存在最优解的解集合(种群)开始的,在这个种群中,每一个个体都是经过特定编码的染色体(chromosome)组成的。类比自然界中染色体,解个体中的染色体上基因片段代表个该解的某个特性,特性的叠加早就了最后解的状态。在自然繁衍过程中,个体之间的染色体之间存在交叉变异的可能性,类比到遗传算法则是编码片段的交叉(crossover)和变异(mutation)。同时我们用某一函数来衡量个体解的特性值(fitness),根据该特性值的高低来模仿自然界中的选择(selection)过程[3]。不断地重复这些步骤即对应着自然界中的种群的繁衍(generation),最后再选择出末代种群中最好的个体作为对象,将其进行解码后,可以作为问题近似最优解。
基于遗传算法的调度系统设计与实现 - 图12
图 3.1 算法逻辑

3.3.1 染色体编码

在面对流水车间的调度问题时,若采用的是遗传算法,最重要的问题就是如何编码。编码的第一步是如何用一个合理的表达式来描述一个可行的解方案,编码的第二步是精益求精,减少后期解码时的不必要问题。在本案例中有多个工件需要加工,每一个的加工工件的工艺顺序流是确定的,并且每一道工序存在着多台并行机器。算法的目标是在最大流程时间最短时,如何确定并行机器的分配情况以及同一台机器上工件的加工排序。
为了使“后一道工序在前一道工序完成后再进行加工”这一约束实现和方便后期的交叉变异,我采用了矩阵格式的方式编码方案。现在假设有n个工件,总共的工序类型的种类m种,则解方案可以表示为一个m行n列的矩阵,为了方便,称之为解矩阵,具体如下
基于遗传算法的调度系统设计与实现 - 图13
在这个表达式中,每一行为一个1到n的任意排序序列。这一个行序列表示按照该顺序安排对应的工件进行加工。为了更好的解释上式,该算例的具体表达式为

基于遗传算法的调度系统设计与实现 - 图14

3.3.2 染色体解码

在完成了染色的编码后,需要对算法中产生的解方案进行解码,具体的步骤如下
步骤一:在开始安排加工时,每台机器的最早空闲时刻都为0.
步骤二:根据解矩阵生成对应的时间矩阵
步骤三:从解矩阵中取出第一行,依次从左往右读取到工件的索引号。
步骤四:找到对应的工件,安排到可以加工它的机器中最早空闲的那台机器,如果多台机器同时空闲,则随机选择一台安排加工。
步骤五:计算出该工序上一道工序的结束时间endtime1,与选定机器上的最后一道工序的开始时间starttime1,计算出有效空闲时间ideltime1,并将即将加工的该工件的加工耗费时间赋值给costtime1
步骤六:计算ideltime1-costtime1,如果该值大于0,侧即将被安排加工的这个工件放在选定机器的倒数第二个位置,即图中的2,如果上述式的值小于0,则将即将安排加工的这个工件放在选定机器的最后一个位置[14],即图中的2’。
基于遗传算法的调度系统设计与实现 - 图15
图 3.2 任务安排

步骤七:在这一行的数代表的机器全部被安排加工后,读取下一行,返回到步骤二。
步骤八:依次类推,当解矩阵中所有的行全部被安排加工后,结束解码,生成了一个可行的解方案。
同样的,为了方便理解,我以上述算例的解矩阵为例说明解码步骤。该解矩阵对应的时间矩阵为
基于遗传算法的调度系统设计与实现 - 图16
解矩阵的第一行为1,2,3,对应的时间为300,258,120.安排到最早空闲的机器,即机器1,2,3。解矩阵第二行的第一个值为1,当前最早空闲的机器为4号机器,该工件的上一道工序的结束时刻是endtime1=300,3号机器上的最后一道工序的开始时间starttime1=120,当前工序的耗费时间costtime1=360,ideltime1-costtime1<0,即该工序安排到该机器当前排序的最后位置,依次类推可以将解矩阵转化为以下安排

基于遗传算法的调度系统设计与实现 - 图17
图 3.3 安排结果

3.3.3 种群的初始化

种群的初始化是指在遗传算法开始之前生成一个一系列的个体组成的种群,种群的大小决定了算法每次迭代的时间。根据初始化方法的不同形式可以将其分成M类随机方法、定值设定法、两步式方法、混合方法和具体应用法,不同的初始化方法对后期的计算量的影响也是不同的[13]。在本案例中采用的初始化方法是随机生成方法,种群的大小为100(Group0)。

3.3.4 适应度函数

在遗传算法中,选择就是根据适应度来选择个体的过程,可以看出适应度函数是遗传算法的驱动力,算法通过适应度函数来判断不同个体之间的差别来进行个体的优胜劣汰操作,因此它的构造直接影响了算法的收敛速度及能否找到最优解,在本案例中采用的适应度函数是最后一个机器的结束加工时刻,即makespantime,该值越小说明越早完工,越大说明越晚完工。具体计算为
基于遗传算法的调度系统设计与实现 - 图18
在本算例中具体计算为
基于遗传算法的调度系统设计与实现 - 图19

3.3.5 交叉算子

遗传算法中的交叉操作是指在现有的染色体按照一定的规则选择两条染色体,通过交换亲本中的部分基因生成一个新的染色体,在本案例中我采用了相邻染色体之间的两两交叉方案,具体步骤如下。
步骤一:从现有的种群中选择出第一个和第二个个体
步骤二:选择出第一个个体(解矩阵)的第一行,计算出该行的长度,生成一个在该长度内的随机数。
步骤三:以该随机数为交叉点,交叉两个个体对应的行
步骤四:选择出第一个个体的第二行,重复步骤二到步骤三。
步骤五:依次类推,选择出第三个和第四个个体,重复步骤一道步骤四。
步骤六:当所有个体之前全部交叉完毕后生产一个交叉完成后的群体(Group1)。
步骤七:精英保护,计算出该群体中适应度最好的个体,独立存放。

3.3.6 变异算子

在遗传算法中,变异算子是通过计算机模拟生物进化过程中基因突变现象,通过变异算子不断的在交叉算子产生的个体中进行微调。变异的出现允许子代出现和亲本不一样的特性,增加了种群的多样性的同时,使遗传算法在局部搜索的过程中拥有跳出局部最优的可能性。在本案例中采用的是单点变异,具体步骤如下。
步骤一:根据变异的概率计算出交叉后的种群(Group1)中的变异个体数量N,从交叉后的种群(Group1)中选择出N个(选择方法为随机选择)
步骤二:对N个个体中的每一个个体(解矩阵),获得第一行,随机交叉两个工件索引的位置。
步骤三:重复,直至N个全部变异完成。

3.3.7 选择算子

选择是仿照自然界对群体进行优胜劣汰的过程,在选择的过程中适应度较高的个体被遗传到下一代群体中的概率较大,适应度较小的个体被遗传到下一代群体中的概率较小。在遗传算法中常见的选择方式有轮盘赌策略、锦标赛策略、适应度排序,在本案例中采用的是锦标赛的选择策略,具体的操作逻辑如下
第一步:在现有种群中任意的选择出两个个体
第二步:计算各自的适应度
第三步:将适应度大的个体放入下一轮中
第四步:从剩下的个体中再选择两个,重复第二步到第三步
第五步:当所有的都被选择出来后结束

4 软件开发

4.1 软件开发体系概述

软件结构:B/S结构
数据库:mysql-workbench-community-6.3.6-winx64-noinstall
数据库管理工具:NavicatforMySQL
开发平台:jdk-8u92-windows-x64
服务端开发语言:java
浏览器端开发语言:html javaSrcipt(参考JQuery库和easyui框架) Css
Tomcat服务器版本:apache-tomcat-8.5.28
开发工具:eclipse-oxygen

此次开发只涉及生产模块,数据逻辑大部分在数据库内部用触发器加数据库内部函数实现,少部分在服务端实现。服务端(java语言编写部分)采用基础三层结构,Model Dao Control,由于当前业务逻辑较少,基础三层结构可以达到使用目的,若今后想融合人事,财务,等其他模块,可考虑采用框架开发(例如Spring+SpringMVC+MyBatis。以降低各个模块的耦合性,改善后期的维护效果。Model层为数据库中的表的映射。Dao层采用JDBC对数据库进行操作,没有采用连接池,若融合其他模块可考虑使用连接池,降低数据库访问负担。Control层采用Servlet技术。VIEW层采用的EasyUI框架开发,各个功能页面的耦合性达到了理想的效果。

4.2 调度算法编码

java的设计初衷并没有考虑到科学计算的情况,在面对矩阵、张量计算的时候显得力不从心。在本案例中为了得到解矩阵使用list来代替,具体做法为,一个解矩阵用List>来代表,其中List是java中的一种数据格式,Part是自定义的一个类,用来描述工件的工序。对于一个种群来说,使用List>>来代替,它包含了(Group0)个解矩阵。主程序部分逻辑如下所述。
基于遗传算法的调度系统设计与实现 - 图20
图 4.1 主程序代码

4.3 系统分析及讨论

4.3.1 软件文件组织

在该生产系统的件的文件组织中,主要的文件夹有Connect,Control,ControlGant,Dao,Model,Service,Test,WebContent。在Connect包中包含了连接数据库的类,在Control包中,包含了服务端与客户端交互数据的类(Servlet)。在ControlGant包中,包含了与甘特图数据传输的相关类。在Dao包中,主要的是与数据库进行通信的类,例如在生成调度算法时需要查询数据库BOM里面所有的加工工序,每个加工工序类型所耗费的时间等。Model包中的是数据库中表的映射类,例如一个数据库中Bops表在该包中的映射文件为Bops.java。Service中是系统的一些辅助功能类,例如数据库数据向Excel装换,根据Excel文件生产数据数据等。Test包中是调度算法的主程序,WebContent文件夹中包含了所有的客户端页面文件。由于篇幅限制,不在此一一讨论各个类想具体实现。文件组织如下图

基于遗传算法的调度系统设计与实现 - 图21
图 4.2 软件组织
在WEB-Content中主要的文件是index.jsp,该文件是所有功能的汇总页。在页面上点击对应的功能页是配合javaScript的判断,动态的加载和删除功能tab

4.3.2 软件整体操作步骤

在本案例中,系统整合了生产过程中现有的数据,在生产调度上,做出了给出了辅助性的参考方案,大大减轻了文员和生产班组长的工作量,为了更好的了解系统的运作流程,参加下图
1.接到订单后录入系统
基于遗传算法的调度系统设计与实现 - 图22
图 4.3 订单录入

录入订单详情
基于遗传算法的调度系统设计与实现 - 图23
图 4.4订单详情录入

系统自动分解订单为自制任务,外包任务
基于遗传算法的调度系统设计与实现 - 图24
图 4.5 任务生成

对于自制任务,可以直接在现场终端调出
基于遗传算法的调度系统设计与实现 - 图25
图 4.6 报工页面

现场根据生成的调度方案进行加工
基于遗传算法的调度系统设计与实现 - 图26
图 4.7 调度甘特图


加工后质检进行质量检测,反馈工人加工的状况
基于遗传算法的调度系统设计与实现 - 图27
图 4.8 QC页面


系统根据数据统计,计算出工人的生产良率,加工工时等数据
基于遗传算法的调度系统设计与实现 - 图28
图 4.9 统计界面

最后当任务完成后生成出货单
基于遗传算法的调度系统设计与实现 - 图29
图 4.10 出货界面

4.3.3 软件云部署
本案例采用了阿里云服务器Elastic Compute Service(ECS)作为最终的载体,它是阿里云提供的一种基础云计算服务。云服务器ECS的出现让计算机资源变的像水、电、煤气等资源一样。像我们无需自己生产水、电一样,我们无需提前采购硬件设备,只用根据业务需要,随时购买所需数量的云服务器ECS实例。在使用过程中,随着计算机资源需求的不断扩大,我们可以随时扩容磁盘、增加带宽。如果某一天不再需要云服务器,也能随时释放资源,节省费用。这对于中小企业来说,在资金紧张的情况下,云服务器不乏为一种好的选择。
本案例选择了华南节点,在服务器上安装好基础软件后,从开发工具Eclipse中导出工程为WAR文件,放在服务器Tomcat的Myapp下后即可通过公网访问该程序。
基于遗传算法的调度系统设计与实现 - 图30
图 4.11 云服务器


5 总结与展望
IE-(工业信息化)的诞生就是为了解决生产现场问题,为了提高现场作业员工的工作效率,当时的管理者利用动作研究,作业分析和流程分析,通过模特法,秒表法等研究手法,制定了标准作业手册(SOP),这在当时显著的提高了生产效率,这一做法最为出色的就是福特汽车,他首创了流水式生产模式,开启了大规模制造时代,致使了生产效率的飞速提升。
在这之后,单纯的动作研究,作业分析等传统手法所带来的效益变得越来越小,IE引入了运筹学和系统工程学,这些学科的引入使IE的研究对象从作业现场扩展到整个企业系统。研究的目的也涉及到了系统整体的优化,比如降低整个企业的能源消耗,提高系统的整体生产效率等,同时人机工程、人因工程、设施规划、物料搬运、生产计划与控制、库存管理等手段被纳入IE技术体系,为企业的高效运行提供了全面系统的支持。
到了20世纪80年代,IE的研究对象从单个企业扩展到了产品生产过程中的这个链条,研究的目标也从降低成本,提高效率转变为针对时间、质量、成本、服务、环境等的全方位竞争。集成制造,协同制造,大规模定制等工业工程与信息技术的集成变成了大势所趋,这一过程是IE成为了面向企业经营与管理的全过程管理技术。
IE经过了不断的发展,已经在开始追求信息化,集成化,智能化。但是IE的本质没有改变,它依然是在做优化,在现有情况下寻找更好的答案,变化的是IE的研究目标变得越来越大,从刚开始的单个工位,到生产线,再到车间,直至整个生产系统。因此,作为IEer,在对系统进行优化时不能陷入局部的优化,要综合考虑各个子模块之间的约束,明确各个模块的优化代价。基于此,做出以下展望。
在系统设计层面上,随着项目的规模越来越大,项目的维护性可能会变得越来越差,有时可能会出现牵一发而动全身的情况。如果需要修改某个功能的代码,就会耗费大量的人力和时间。此时,高可扩展性、低耦合的应用程序就变得非常重要了,在本案例中所有的模块之间都是通过new关键字来结合的,这样的情况就会导致在修改某个位置的代码之后会影响到整体,在软件工程上这是很不科学的。特别是在算法的设计模块中,硬编码的情况经常出现,没有体现出面向对象的建模思想。在今后的设计中可考虑采用面向接口的开发方式开发,特别地应该规范算法的标准输入输出,增强不同算法之间的替换性。
在算法设计层面,当前的设计假设与真实的生产环境还是有差距的,比如在真实生产环境中物料并不是及时到达的,机器也可能会出现故障,在外包工件不能及时回仓库等各种情况,这就需要在算法中考虑到更多的变量。在今后的设计中可多引进约束,借助开源的矩阵处理包实现更复杂的逻辑。


参考文献
[1] 王金鹏,朱洪俊,周俊.最优子种群遗传算法求解柔性流水车间调度问题[J].计算机应用研究,2012,2(29):100-108
[2] 王克喜,单汨源,黄敏镁.基于改进遗传算法的流水车间调度求解方法[J].系统工程,2008,26(10):116-118
[3] 魏文杲,蒋真真,于翔等.基于改进遗传算法的流水车间调度研究与仿真[J].装备制造技术,2011,5(2):10-12
[4] 何法江,王明红,汤以范.遗传算法在车间流水作业调度中的应用[J].计算机应用,2010,30(2):282-284
[5] 陈乐庚,胡 锐.粒子群算法求解具有机器灵活性的FFSP[J].微型机与应用,2015,34(21):13-15
[6] 黎展滔.具有成组约束的柔性流水车间作业计划制定的启发式算法[D].广 东 工 业 大 学 ,2012.
[7] 周 辉 仁,唐 万 生, 魏 颖 辉.柔性Flow - shop调度的遗传算法优化[ J].计算机工程与应用,2009,4(30):224-226.
[8] 张其亮,陈永生.解决具有混合约束柔性流水车间调度问题的粒子群优化算法[J].计 算机应用研究,2013,3(11):3253-3256
[9] 兰月政,鲁建厦,孔令革.基于遗传算法的混流生产线产品分组指派问题研究[J].浙江工业大学学报,201,6(11):100-110
[10] Kwanwoo Kim ,In-Jae Jeong .Flow shop scheduling with no-wait flexible lot streaming using an adaptive genetic algorithm[J].Int J Adv Manuf Technol,2009,6(11):1181-1190
[11] 张峰.工件加工时间随工件开工时间线性增加的成组排序问题[J].上海第二工业大学 学报,2001,6(2):9-11
[12] ]孙金领,常桂娟,张好治.基于优先权值编码的3个体交叉的遗传算法[J].青岛农业大学学报,2008,6(01):77-80
[13] 姜思杰,徐晓飞,李全龙.基于遗传优化算法求解作业车间调度问题[J].计算机集成制 造系统,2008,3(8):15-20
[14] 张国辉,高 亮,李培根等.改进遗传算法求解柔性作业车间调度问题[J].机械工程学报,2009,45(7):145-160
[15] Zhang,H.P,Gen,M.Multistage-based genetic algorithm for flexible job shop scheduling problem[J].Journal of Complexity International,2005.48(5):409–425
[16] GuoYongShi.A geneticalgorithm applied to a classicjob-shop scheduling problem[J].International Journal of Systems Science,2014.11(28):25-32