生产调度系统算法模型简要设计

生产调度系统算法模型简要设计

我们公司是典型的离散型生产系统,产品品种繁多,工艺流程长,且交互复杂。这一类型的生产系统具有很强的典型性,如何对这类生产系统进行建模并求解,我花费了很长的时间学习。在东南大学李宵峰博士后和上海交通大学潘常春博士的指导下,我初步了解了我公司的模型算法,下面简述如下。
一、模型建立
生产模型主要是建立每个产品的每个工序和设备之间的关系。这种关系可以通过数学公式建立,例如线性规划、整数规划、动态规划等;也可以通过自然语言的规则建立,有限的不相互矛盾的几条规则的集合就是该模型的结果域;还有用模糊数学的方法建立模糊集,一般情况下这种集合不会很大。但这些方法运用在建立我们公司的模型上均不能很好的表达现状。这些方法均需要对生产现场进行很多的近似,这些近似使模型和生产现场实际和理论严重不符,因为少数被近似掉的内容可能恰恰是最重要的。因此我们公司生产模型的一个重要的特点就是不能近似,但同时也不能太复杂,太复杂了根本无法求解。
根据上述分析,我们决定采用表格建模,将所有生产中的要素用表格描述出来,在需要的时候进行查表。这种模型的设计思路得益于四班的设计,四班建立的就是表格模型。BOM是四班建立的模型,用表格的形式将产品物料之间的层次和数量关系表述得一清二楚,我们这个系统也将用表格的形式将每个物料的工序、工序间的先后关系、每个工序的可用设备、 可用设备间的优先级关系、设备的能力、效率表述出来。这种模型结构原理简单清楚,维护方便,在更改模型时不需要修改程序的设计,缺点是维护的工作量大,但可以通过将来结合工艺设计系统来得到弥补,使模型维护的时间按现在的标准减少到零。
表格模型也叫关系型模型,表格模型的最大优点在于可以做到和工艺系统的无缝连接,使公司的生产技术结合成为一个有机的整体,能够从整体上提高公司的管理效率,是今后管理的一个比较好的发展方向。缺点是数据量特别大,对于比较大的公司来讲,就需要避免将不相关的部门和车间放在同一个模型里,在能分开做的时候还是尽量分开做。同时表格模型存在反复查表的缺陷,程序运行时间可能会比较长。
二、订单预处理优化规则的设计
订单预处理优化规则着重于解决在所有设备上,调度开始第一个生产的产品是什么,以后的生产顺序是什么?在这一阶段的优化上,没有精确的方法,只有一些近似的方法和一些人为的规则。我们初步分析认为,通过订单的优先级、剩余加工时间、剩余加工时间冗余度等确定哪个订单先加工,哪个订单后加工?在预处理的时候应该能够预先知道这些产品能否按期完成。对于明显不能按期完成的订单如何进行处理,以及预测和后面的仿真的结果的差异性是评价预处理优化规则设计优劣的最重要的指标。
还有一个要求就是对这些规则的设计必须进行逻辑分析,避免规则的对立和不相容,根据规则之间的关系确定规则的运算方法。
三、离散事件调度法
在确定了第一道工序的加工顺序后,通过离散事件调度法确定每道工序的生产先后顺序。可以认为每个设备的生产时间就是有离散事件调度法确定的。在对订单生产安排结果的影响上,订单预处理优化从大的方面确定了订单的完成优先顺序,离散事件调度法从细节方面确定订单的具体完成时间。可以认为订单预处理优化是订单的初调度,离散事件调度法是在粗调度基础上的详细调度。下面将详细介绍离散事件调度法的设计思路。
1、程序设计
首先设计一个设备类。设备类有“事件缓冲器”一个、 “下一事件状态器”一个,“下一事件计算器”一只。
“事件缓冲器”是一个具有二级缓冲能力的容器,所有的订单进入二级缓冲器,其中总是保持下一时刻最小的订单在一级缓冲器中。只有一级缓冲器中的订单才能被触发。
事件有两种类型,一是“开始加工”类型,二是“结束加工”类型。
然后将设备类实例化成设备对象,实际上有多少设备参加调度就需要实例化多少个设备对象,设备的对象名可以用设备编号表示。
2、程序运行准备
先用订单预处理优化规则确定进入每个设备的“事件缓冲器”的产品的先后顺序,并将所有已经确定了先后顺序的订单的传给第一道工序的相应设备对象的“事件缓冲器”中,其中“事件缓冲器”中时间最小的事件进入一级缓冲器。
3、开始仿真
1)、所有设备对象中一级缓冲器中的事件按时间进行排序,找出时间最小的事件,并执行触发。如果所有设备对象的一级缓冲器中均没有事件,则调度结束。
2)事件触发后,首先判断事件是“开始加工”类型,还是“结束加工”类型,如果是“开始加工”类型,则调用加工时间计算类,计算加工时间,将当前时间加上加工时间作为该事件的“结束加工”事件的触发时间,将该事件的名称、“结束加工”类型、触发时间、数量等参数传入该对象的“事件缓冲器”,同时,将该物料的开始加工时间、加工设备名称写入调度表。然后屏蔽所有其它事件,不让其触发,只允许该物料的“结束加工”事件触发。
如果事件类型是“结束加工”类型,则调用下道工序计算类,找出下道工序极其设备对象的名称,并将该物料在设备上的结束加工时间、设备名称、物料标识等写入调度表,同时将该事件名称、当前时间作为该事件在下道工序上的触发时间、数量、事件类型传入下一道设备的缓冲器,打开对该设备对象的事件屏蔽。
一个循环结束,进入下一个循环(1)。
4、设备的一些属性
1)、单位加工数量属性。
为了表述设备的实际生产情况,我们需要知道仿真的数量,由于每台设备的具体情况不一样,仿真数量也不一样。例如仿形车间和铣开口之间肯定是一棒一棒的传递,也可以说线内设备与设备之间是一棒一棒的传递,而线与线之间是一车一车的传递,但是,在氮化、热处理等工序之间却是一炉一炉的传递。因此设备的属性应该能够处理这些不同点,并让其按实际运行情况进行模拟。
2)、加工节拍和加工周期属性
离散型企业的一个最大的特点是产品不是均衡的流动,一批一批的流,这个批量有大有小,大的大到数万片(如氮化炉一炉要两万片),小的仅有一棒(如车床),这种大批量的间隙流动严重影响了生产的均衡性,如果调度系统能够预测并模拟这种不均衡性,并合理安排生产,能够极大缓解生产管理的压力,提高生产管理的效率。
对于这种批量,需要有三个参数来描述:单位批量片数、加工节拍和生产周期。加工节拍是每两个批量之间的间隔时间,加工周期是某一个批量从开始加工到加工结束需要花费的时间。
3)、作息时间
不是所有的设备都是24小时可以工作的,不同的设备作息时间不同,作息时间是设备的基本属性,调度安排必须在设备的生产时间内。如何计算两个时刻之间的有效时间间隔,以及已知开始时间和有效时间间隔,如何计算结束时间,等等,均是本系统需要考虑的内容。
4)、设备类型
从上面的分析,我们认为公司的设备类型十分复杂,在设计设备类并进行实例化时如何才能兼顾系统的灵活性和与实际的符合性?如何将一个统一的类和多样化的设备类型对应起来?怎么样既减少数据工作量又将设备类型统一起来?统一在什么设备上,或者说什么样的设备才更具有代表性?
初步考虑将所有的设备均统一到炉子类设备上,这类设备的特点是加工过程是离散的,一次加工一批,但批量大小不定,需要计算,然后在时间上存在加工节拍和加工周期数据。对于加工节拍和加工周期数据,在车床等设备上,可以认为他们(默认值)是相等的,但可以设置。现在的问题是生产节拍到底是以设备为主,还是以产品为主?
能否将设备对象全部简化成能类似炉子的类型?其特点是有加工节拍、加工周期和单次加工容量。单次加工容量分为一维尺度(长度,例如“棒”)、二维尺度(面积)和三维尺度(体积,例如“炉”)。单次加工容量是设备对象的固有特征,加工节拍和加工周期与产品相关。能力计算方法、工作日历、出勤模式也是设备的基础特征。能力计算方式分有限能力和无限能力;工作日历是指设备在一天中什么时间可以加工,什么时间不能用于加工?出勤模式是指设备可以工作的日期和不可以工作的日期。
这样设备表中需要的基础字段包括:设备编号、单次加工容量类型(一维尺度、二维尺度和三维尺度)、长、宽、高、工作日历、出勤模式。为了便于设备的修改,还需要设备类型、设备名称、设备所在车间等字段,便于提高将来数据维护的效率。但这些字段不一定放在同一张表中,可以分别放在不同的表中,后者在设备卡片中已经有了,前者是系统需要单独建的。关键是如何保持这些数据的统一和同步。
5、产品对象
需要研究的是根据我们的系统的需求,我们是否需要建立一个产品对象,产品对象将包括产品代号、产品名称、材质、结构、工序名称、工序代号、工序次序、设备名称、设备代号、设备优先级、生产周期、生产节拍、父项产品、子项产品、数量、产出率、对应的销售订单号、对应的销售行号、订单号、行号、交货期冗余度、交货期,等。在进行反向仿真计算加工剩余时间时,铸造按四班的提前期确定时间;如果是正向仿真,可以先将铸造仿真完成后,在开始逐步往后仿真。

你可能感兴趣的:(数据结构与算法)