混批装配线的集成优化控制方法

文档序号:6289052阅读:305来源:国知局
专利名称:混批装配线的集成优化控制方法
技术领域
本发明涉及混批装配线(即一条装配线上可同时装配多种产品)的生产计划、调度与仿真的集成优化控制方法,并可依此安排生产和控制混批装配线的运行。属于生产线优化控制方法技术领域。
背景技术
现有混批装配线的生产计划、调度与优化文献的绝大多数仅仅涉及生产调度[1-8],很少涉及生产计划[9]。在实际生产中,往往先单独优化生产计划,然后在被优化的计划基础上优化生产调度,其结果是计划与调度不能达到整体优化,甚至出现生产计划导致调度不可行或性能很差的情况[10,11]。禁忌搜索(Tabu Search)是由Glover[12,13]提出的用于获取组合最优化难题近似解的一种高级启发式方法。目前,禁忌搜索法主要用于Flow shop调度,Job shop调度和制造单元形成等方面[14,15],而在混批装配线生产计划、调度方面的应用则非常少见。有关混批装配线的Petri网建模方面的文献非常少见,目前仅发现Kuo等人用有色定时Petri网(Colored Timed Petri Net)建立了汽车混批装配系统的模型,并据此开发了一个具有不同分派规则的实时仿真器[16]。但是该模型缺少决策点,不便将调度规则等融入其中。相比之下,扩展随机高级判断Petri网(ESHLEP-N)包含了决策点,更易将调度规则等融入其中,因而更适合建立混批装配线的调度仿真模型。
Agnetis A,Pacifici A,Rossi F,Lucertini M,Nicoletti S,Nicolo F,Oriolo G,Pacciarelli D,Pesaro E.Scheduling of flexible flow lines in an automobile assembly plant. European Journal ofOperational Research,1997,97(2),348-362. Karabati S,Tan B.Stochastic cyclic scheduling problem in synchronous assembly and productionlines.Journal of the Operational Research Society,1998,49(11),1173-1187. Bolat A.Stochastic procedures for scheduling minimum job sets on mixed model assembly lines.Journal of the Operational Research Society,1997,48(5),490-501. Hyun C J,Kim Y,Kim Y K.A genetic algorithm for multiple objective sequencing problems inmixed model assembly lines. Computers and Operations Research,1998,25(7/8),675-690. Xiaobo Z,Ohno K. Algorithms for sequencing mixed models on an assembly line in a JITproduction system.Computers and Industrial Engineering,1997,32(1),47-56. Zhang Y,Luh P B,Yoneda K,Kano T,Kyoya Y.Mixed-model assembly line scheduling using theLagrangian relaxation technique.IIE Transactions,2000,32(2),125-134. Korkmazel T,Meral S.Bicriteria sequencing methods for the mixed-model assembly line injust-in-time production systems. European Journal of Operational Research,2001,131(1),188-207. Ventura J A,Radhakrishnan S.Sequencing mixed model assembly lines for a just-in-timeproduction system. Production Planning and Control,2002,13(2),199-210. Balakrishnan A,Vanderbeck F.Tactical planning model for mixed-model electronics assemblyoperations.Operations Research,1999,47(3),395-409. Lasserre J B.An integrated model for job-shop planning and scheduling. Management Science,1992,38(8),1201-1211. Caridi M,Sianesi A. Multi-agent systems in production planning and controlan application to thescheduling of mixed-model assembly lines. International Journal of Production Economics,2000,68(1),29-42. Glover F.Tabu search-part I.ORSA Journal on Computing,1989,1(3),190-206. Glover F.Tabu search-part II.ORSA Journal on Computing,1990,2(1),4-32. Nowicki E.The permutation flow shop with buffersa tabu search approach. European Journal ofOperational Research,1999,116(1),205-219[15]Armentano V A,Ronconi D P.Tabu search for total tardiness minimization in flowshopscheduling problems.Computers and Operations Research,1999,26(3),219-235. Kuo C H,Huang H P,Wei K C,Tang S S H.System modeling and real-time simulator for highlymodel-mixed assembly systems.Journal of Manufacturing Science and Engineering,Transactionsof the ASME,1999,121(2),282-289.

发明内容
技术问题本发明的目的是提供一种在一条装配线上可同时装配多种产品,并使产品的超产、欠产与准备成本,各装配工位的空闲时间,调度跨度和各装配工位之间的负荷偏差达到最小化的混批装配线的集成优化控制方法。
技术方案本发明建立了混批装配线的混合整数规划模型,以用分枝定界算法求得使各装配工位的准备成本和空闲时间尽可能少并尽可能满足产品需求的粗生产计划。然后在考虑装配线细节的基础上建立了混批装配线的生产计划与调度的集成优化模型,并分别提出嵌入式禁忌搜索仿真法、交替式禁忌搜索仿真法、和串行式禁忌搜索仿真法等三种不同方法来解决以粗生产计划作为初始解的混批装配线的生产计划、调度与仿真的集成优化问题,同时给出了这三种方法的计算复杂性。本发明的混批装配线的集成优化控制方法,其特征在于该方法包括以下步骤(见图3)(1)平滑客户的产品需求;(2)根据平滑后的产品需求,用分枝定界算法求解混批装配线的混合整数规划模型,以获得使各装配工位的准备成本和空闲时间尽可能少并尽可能满足产品需求的粗生产计划;(3)在混批装配线的生产计划与调度的集成优化模型的基础上,针对产品种类和数量的少、中、多等三个不同程度,分别用嵌入式禁忌搜索仿真法、交替式禁忌搜索仿真法、和串行式禁忌搜索仿真法来获得以粗生产计划作为初始解的混批装配线的最好生产计划即产品种类与数量,和调度即装配顺序;(4)通过动画调度仿真观察混批装配线的最优调度过程;(5)判断是否满足客户的产品需求;(6)如果经过动画仿真,认为不满足需求,则可对最好计划与调度作适当修改后再仿真;(7)如果经过动画仿真,认为满足需求,则可将其作为准备下达执行的正式计划与调度;(8)根据正式计划与调度,安排生产和控制待装品的上线,并根据动画仿真时确定的装配线移动速度控制混批装配线的运行。
由于客户的产品需求(订单)是随机的并具有突发性,而产品生产需要均匀和平稳进行,因此需要把客户的随机和突发性需求平滑成能够使生产平稳、连续进行的需求。需求平滑的方法是根据产品订单要求的交付期和重要性及生产能力,按照交付期最早优先和重要性最重优先的原则,将产品订货平滑分配到每个计划区间。
嵌入式禁忌搜索仿真法的基本思想是以粗生产计划作为初始生产计划寻找一个可行计划与调度,然后在计划层用禁忌搜索寻找最好的计划,并对计划层生成的每个相邻计划用另一个禁忌搜索寻找经过快速仿真计算具有最好性能指标的调度,直至使生产计划与调度同时达到优化。因一个禁忌搜索嵌套着另一禁忌搜索并用快速仿真计算调度指标,故取名为嵌入式禁忌搜索仿真法。交替式禁忌搜索仿真法的基本思想是(1)以粗生产计划作为初始生产计划寻找一个可行计划与调度;(2)给定调度,用禁忌搜索寻找经过快速仿真计算具有最好性能指标的计划;(3)反过来给定计划,又用另一禁忌搜索寻找经过快速仿真计算具有最好性能指标的调度;(4)交替使用(2)、(3)两步直至找到最好的计划与调度。由于分别对计划与调度交替使用两个禁忌搜索并用快速仿真计算其性能指标,故称为交替式禁忌搜索仿真法。串行式禁忌搜索仿真法的基本思想是(1)以粗生产计划作为初始生产计划寻找一个可行计划与调度;(2)从可行计划开始,用禁忌搜索寻找基于规则调度并经过快速仿真计算具有最好性能指标的计划;(3)对于最好的计划,使用另一禁忌搜索寻找经过快速仿真计算具有最好性能指标的调度。由于对计划和调度依次使用禁忌搜索并用快速仿真计算其性能指标,故称为串行式禁忌搜索仿真法。这三种方法的快速仿真均通过用扩展随机高级判断Petri网建立调度仿真模型和面向对象的技术米实现,并用可变时间流来控制仿真进程。此处快速的含义是无文字和图形的动态显示,仅仅通过快速仿真计算给定调度的性能指标。上述方法和仿真均用Microsoft VisualC++5.0编成软件。在用上述方法获得性能指标最好的生产计划与调度后,就可依此安排生产并控制混批装配线的运行。与传统方法相比,本发明的优点是将解析方法、禁忌搜索和快速调度仿真有机地结合在一起,有效解决了混批装配线的生产计划、调度与仿真的集成优化问题,并保证至少有一个可行解。嵌入式禁忌搜索仿真法的问题求解速度最慢,但获得的性能指标往往最好;串行式禁忌搜索仿真法的问题求解速度和获得的性能指标正好与嵌入式禁忌搜索仿真法相反;而交替式禁忌搜索仿真法则介于嵌入式禁忌搜索仿真法和串行式禁忌搜索仿真法之间。嵌入式禁忌搜索仿真法适合求解小问题,交替式禁忌搜索仿真法适合求解中规模问题,串行式禁忌搜索仿真法适合求解大规模问题。
有益效果本发明解决了混批装配线生产计划、调度与仿真的集成优化控制问题,给出了粗生产计划的生成方法,提出了嵌入式禁忌搜索仿真法、交替式禁忌搜索仿真法和串行式禁忌搜索仿真法并给出了它们的计算复杂性和实现方法,为实现调度仿真建立了混批装配线的ESHLEP-N模型并给出了面向对象的实现方法。在此基础上,采用Microsoft Visual C++5.0开发了混批装配线的生产计划、调度与仿真的集成优化软件。借助这些软件,用大量算例进行了比较研究,结果表明(1)与传统方法相比,本发明的优点是将解析方法、禁忌搜索和快速调度仿真有机地结合在一起,有效解决了混批装配线生产计划与调度的集成优化问题,并保证至少有一个可行解。
(2)嵌入式禁忌搜索仿真法和交替式禁忌搜索仿真法的问题求解时间平均比串行式禁忌搜索仿真法分别长38.69和1.73倍,但嵌入式禁忌搜索仿真法和交替式禁忌搜索仿真法的最好性能指标且平均比串行式禁忌搜索仿真法分别少7.78%和5.16%。
(3)嵌入式禁忌搜索仿真法适合求解小问题,交替式禁忌搜索仿真法适合求解中规模问题,串行式禁忌搜索仿真法适合求解大规模问题。如果问题非常大,则建议使用算法4的Step 1-2求出可行计划与调度作为问题的解。
(4)嵌入式禁忌搜索仿真法、交替式禁忌搜索仿真法和串行式禁忌搜索仿真法的自可行计划与调度开始到最好计划与调度为止的平均性能指标改善率分别为18.87%、22.05%和25.49%。
(5)具有随机特性的混批装配线的生产计划与调度的集成优化问题可用嵌入式禁忌搜索仿真法、交替式禁忌搜索仿真法和串行式禁忌搜索仿真法的蒙特卡罗运行来求解。
(6)ESHLEP-N具有形象直观,结构简单,节点少,描述性好,决策能力强,双重令牌和双重标识等优点,非常适合混批装配线的建模和调度仿真。
此外,本发明的嵌入式禁忌搜索仿真法、交替式禁忌搜索仿真法和串行式禁忌搜索仿真法也可用于求解其目标函数和约束不同于式(9)-(11)的模型。
采用嵌入式禁忌搜索仿真法、交替式禁忌搜索仿真法和串行式禁忌搜索仿真法获得最好计划与调度后,可通过动画调度仿真观察混批装配线的最优调度过程,判断是否满足客户的产品需求。如果经过动画仿真,认为不满足需求,则可对最好计划与调度作适当修改后再仿真。如果经过动画仿真,认为满足需求,则可将其作为准备下达执行的正式计划与调度。然后,就可以根据上述混批装配线的正式计划(产品种类与数量)与调度(装配顺序)安排生产,并根据动画仿真时确定的装配线移动速度控制混批装配线的运行。


图1是线型装配线示意图。
图2是U型装配线示意图。
图3是混批装配线的计划、调度与仿真的集成优化控制方法总流程示意图。
图4是嵌入式禁忌搜索仿真法流程图。
图5是基于禁忌搜索的调度优化流程图。
图6是交替式禁忌搜索仿真法流程图。
图7是串行式禁忌搜索仿真法流程图。
图8是相应于给定计划的调度确定算法流程图。
图9是混批装配线的ESHLEP-N图模型。
图10是系统变迁处理的主流程图。
图11是“待装品上装配线”变迁t1的处理流程图。
图12是“开始装配”变迁t2的处理流程图。
图13是“完成装配”变迁t3的处理流程图。
图14是“故障发生”变迁t4的处理流程图。
图15是变迁“故障结束”t5的处理流程图。
图16是阻塞状态下变迁的处理流程图。
图17是混批装配线的生产计划、调度与仿真的集成优化软件结构图。
具体实施例方式
本发明解决其技术问题所采用的技术方案和具体实施方式
如下1、混批装配线本发明涉及的混批装配线有两种,即线型装配线(见图1)和U型装配线(见图2)。图中,工位1和m(1<k<m)分别表示产品的上线装配工位和下线装配工位,箭头表示产品在装配过程中的移动方向。每个装配工位可以分布在装配线的两侧,也可以在单侧,并有缓冲区。每一个工位在任何时候至多只能装一个产品。线上的产品总数在任何时候至多等于线上的工位数m,也就是,如果在某一时刻每一个工位都有一个产品,则只有等一个产品在最后一个工位m装好并下线后,才能在工位1上线一个待装品(即等待装配的产品)。装配线的同步移动速度是可变的并在线上无满缓冲区时由其最后一个工位m的装配速度确定,而在有满缓冲区时由其瓶颈工位的装配速度确定。由于每一个工位装配不同的产品可能需要不同的时间,所以当产品种类、混批发生变化时瓶颈工位可能发生转移。这里的缓冲区是一个逻辑上的和虚拟的概念。事实上,并无真正缓冲区,只是允许装配工人超越自己的工作区并在其它工位的工作区完成装配任务而在逻辑上形成虚拟缓冲区。
2、粗生产计划正如前面所述,一条混批装配线共有m个装配工位。现设计划区间内依据装配订单共需装n种产品且第i种产品需di个。再将装配线简化为一个Flow shop问题,且最优计划的目标是最大限度地满足产品需求并使各装配工位的准备成本和空闲时间尽可能少,则可建立求解最优粗生产计划的混合整数规划模型如下minJ=Σi=1n[ai+(xi-di)++ai-(di-xi)+]+Σj=1mΣi=1nbijsgn(xi)+Σj=1mcjτj......(1)]]>s.t.Σi=1ntijxi+Σi=1nΔtijsgn(xi)+τj=βj.......(2)]]>xi≥0且为整数,τj≥0,j=1,2,…,m(3)式中n为计划区间内需装配的产品种类数;m为混批装配线上的装配工位数;xi为计划区间内装配第i种产品的产量,是整数;sgn(xi)为符号函数,当xi>0时,sgn(xi)取1,否则取0;di为计划区间内对第i种产品的需求,是整数;τj为计划区间内第j个装配工位的空闲时间;βj为计划区间内第j个装配工位的可用时间,是从计划区间内的生产总时间中扣除设备故障维修时间等所剩的时间;ai+为超产一个第i种产品的存储及占用流动资金的成本;ai-为欠产一个第i种产品而违约受罚的成本;bij为第i种产品在第j个装配工位上的准备成本;cj为与第j个装配工位资源闲置有关的成本系数;tij为第j个装配工位装配第i种产品所需要的时间;Δtij为第i种产品在第j个装配工位上的准备时间;(c)+为max(0,c)。
式(1)-(3)的混合整数非线性规划模型可转化为混合整数线性规划模型如下
minJ=Σi=1n(ai+Δ+xi+ai-Δ-xi)+Σj=1mΣi=1nbijyi+Σj=1mcjτj......(4)]]>s.t.Σi=1ntijxi+Σi=1nΔtijyi+τj=βj---(5)]]>xi-Δ+xi+Δ-xi=di(6)Byi≥xi(7)xi≥0且为整数,yi∈(0,1),τj≥0,Δ+xi≥0,Δ-xi≥0,j=1,2,…,m(8)式中yi是布尔变量,当xi>0时为1,否则为0;B是一个大的正数。
到此,就可用分枝定界法求解式(4)-(8)的混合整数线性规划模型,以获取使各装配工位的准备成本和空闲时间尽可能少并尽可能满足产品需求的粗生产计划。
3、生产计划、调度与仿真的集成优化方法及其实现为加快问题求解速度,在式(4)-(8)的模型中忽略了装配线的细节,并由此求出粗生产计划作为后续生产计划、调度与仿真的集成优化问题迭代求解的初始计划。另一方面,考虑细节的同步装配线调度往往是一个非结构化问题,很难用解析的方法来求解,较为可行的办法是使用基于可变时间流的快速调度仿真。此处快速的含义是无文字和图形的动态显示,仅仅通过快速仿真计算给定调度的性能指标。至于最优计划与调度的迭代选择问题则由嵌入式禁忌搜索仿真法、交替式禁忌搜索仿真法、和串行式禁忌搜索仿真法等三种不同方法来解决。
3.1嵌入式禁忌搜索仿真法及其实现为节省产品装配准备时间,同种产品集中装配,不分割成多个装配任务,并在调度时仅占用一个排序位置。参照式(1)-(3),则求解混批装配线生产计划、调度与仿真的集成优化问题的数学模型可描述如下Minx,SG(x,S)=Minx,S{Σi=1N[aμ(S,i)+(xμ(S,i)-dμ(S,i))++aμ(S,i)-(dμ(S,i)-xμ(S,i))+]]]>+Σj=1mΣi=1nbμ(S,i)jsgn(xμ(S,i))+Σj=1mcjτj+rf(x,S)]]>+qΣj=1m[(βj-τj)-1mΣj=1m(βj-τj)]2}......(9)]]>s.t.Σi=1ntμ(S,i)jxμ(S,i)+Σi=1nΔtμ(S,i)jsgn(xμ(S,i))+τj=βj......(10)]]>xμ(S,i)≥0且为整数,τj≥0,j=1,2,…,m (11)
式中μ(S,i)为n种产品或其中部分通过装配线的顺序(调度)S中的第i个位置所对应的产品种类,如果对于h≤i≤n有μ(S,i)=0,则表示调度S中最多只包含h-1种产品;bμ(S,i)j为第μ(S,i)种产品在第j个装配工位上的准备成本;Δtμ(S,i)j为第μ(S,i)种产品在第j个装配工位上的准备时间;x=(xμ(S,1),xμ(S,2),…,xμ(S,n))T为生产计划向量;f(x,S)为产品装配任务全部完成的时间(调度跨度),由相应计划和调度共同决定;r为任务完成时间权系数;q为各装配工位负荷均衡权系数。
禁忌搜索是由Glover提出的用于获取组合最优化难题近似解的一种高级启发式方法。在应用禁忌搜索法求解生产计划、调度与仿真的集成优化问题(9)-(11)之前,首先介绍两个概念,即相邻计划和相邻调度。设计划p**=(x1,x2,…,xn)T且对某些i有τj>tij>0,对j=1,2,…,m,则定义p=(x1,x2,…,xi-1,xi+1,xi+1,…,xn)T,p=(x1,x2,…,xi±1,…,xl1,…,xn)T和p=(x1,x2,…,xi-1,xi-1,xi+1,…,xn)T为p**的相邻计划。否则定义p=(x1,x2,…,xi±1,…,xl1,…,xn)T和p=(x1,x2,…,xi-1,xi-1,xi+1,…,xn)T为p**的相邻计划。可见p**的相邻计划最多可能有n2+n个。
对于调度S**,我们定义仅交换S**中的两个元素而形成的调度为相邻于S**的调度。不失一般性,设初始调度S0中共包含三种产品,即S0={a,b,c},则依定义,相邻于S0的调度共有三种S1={b,a,c},S2={c,b,a},S3={a,c,b}。注意相邻调度仅交换初始调度S0中的两个元素而得。如S1是仅交换S0中的a,b两个元素而得到的,是相邻于S0的调度;但{c,a,b}是交换S3中的a,c两个元素而得到的,不能直接交换S0中的两个元素而得,所以{c,a,b}不是相邻于S0的调度。一般地,对于包含n种产品的调度S**,则相邻调度共有n(n-1)/2种。
目前,禁忌搜索法主要用于Flow shop调度,Job shop调度和制造单元形成等方面,而在混批装配线生产计划、调度方面的应用则非常少见。又本发明要解决的是计划、调度与仿真的集成优化问题,所以需要提出一种新的嵌入式禁忌搜索仿真法来解决。其基本思想是以粗生产计划作为初始解并用简化的禁忌搜索仿真法寻找一个可行计划与调度,然后在计划层用禁忌搜索寻找最好的计划,并对计划层生成的每个相邻计划用另一个禁忌搜索寻找经过快速仿真计算具有最好性能指标的调度,直至使生产计划与调度同时达到优化。因一个禁忌搜索嵌套着另一禁忌搜索并用快速仿真计算调度指标,故取名为嵌入式禁忌搜索仿真法。
算法1生产计划、调度与仿真的集成优化问题(9)-(11)的嵌入式禁忌搜索仿真法Step 1初始化(1)读取式(9)-(10)中的各种数据和参数。
(2)读取算法参数,包括生产计划禁忌表长度PT_size,给定的计划移动次数PM-max,调度禁忌表长度ST_size和给定的调度移动次数SM_max。
(3)设置G_best=M_big,PM_ctr=0,PT_list={φ},P_best=φ,S_best={φ}。
Step 2搜索初始可行计划与调度(1)设置初始生产计划p0=x。
(2)设置当前计划p=p0,并调用算法2以搜索给定计划p的可行调度。
(3)如果SC_flag=1且G(p,S***)<G_best,则设置p**←p,P_best←p,S_best←S***,G_best←G(p,S***)。然后转Step 3。
(4)生成p0的一个相邻计划p,设置p0=p。然后转Step 2的(2)。
Step 3搜索最好计划与调度(1)生成一个相邻于p**的所有可能计划集,并置G(p*,S***)=M_big。
(2)对于该集合中的一个计划p,如果p不在PT_list中,则调用算法2以搜索对于给定计划p的最好调度,并更新当前相邻集中的最好计划p*←p,G(p*,S***)←G(p,S***),如果SC_flag=1且G(p,S***)<G(p*,S***);否则丢弃p。如果计划禁忌表PT_list中的计划个数少于PT_size,将p加到PT_list的顶部。如此重复,直至做完p**的所有相邻计划。
(3)作一次计划移动设置p**←p*,G(p**,S***)←G(p*,S***)且如果p**不在PT_list中则将p**加到PT_list的顶部;如果PT_list中的计划个数>PT_size,则从PT_list的底部删除一个最老的计划。
(4)如果计划有改善,即如果G(p**,S***)<G_best,则更新最好解P_best←p**,S_best←S***,G_best←G(p**,S***)。
(5)更新到目前为止所作的计划移动次数PM_ctr←PM_ctr+1。如果PM_ctr>PM_max,则停止迭代并转Step 4,否则转Step 3的(1)。
Step 4输出结果输出P_best,S_best和G_best。
这里M_big为一个很大的数;SC_flag为对于给定计划p是否存在满足约束(10)-(11)的调度的标志,SC_flag=1表示存在,SC_flag=0表示不存在;p*为在当前相邻计划集中的最好计划;p**为在紧前相邻计划集中的最好计划P_best为到目前为止找到的最好生产计划;S***为相应计划的最好调度;S_best为针对到目前为止找到的最好生产计划,所找到的最好调度;G(p,S)为与生产计划p和调度S相对应的性能指标G_best为到目前为止所达到的最好指标。
算法2基于禁忌搜索的调度优化Step 1初始化设置SM_ctr=0,调度禁忌表ST_list={φ}。
Step 2寻找初始调度(1)对给定的当前生产计划p,依次按最早交付期和最小批量等优先规则,确定初始调度S0,并置S**=S0,S***=S0,SC_flag=0。
(2)通过快速调度仿真,计算相应于p和S0的性能指标G(p,S0),并置G(p,S***)=G(p,S0)。
如果S0可行(即满足约束(10)-(11)),置SC_flag=1。
Step 3调度搜索(1)生成一个相邻于紧前相邻调度集中的最好调度S**的所有可能调度集,并置G(p,S*)=M_big。
(2)对于该集合中的一个调度S,如果S不在ST_list中,则通过快速调度仿真,计算调度性能指标G(p,S),并更新当前相邻集中的最好调度S*←S,G(p,S*)←G(p,S),SC_flag=1如果S可行且G(p,S)<G(p,S*);S*←S,G(p,S*)←G(p,S)如果S和S*都不可行且G(p,S)<G(p,S*);否则丢弃S。如此重复,直至做完S**的所有相邻调度。
(3)作一次调度移动;设置S**←S*,G(p,S**)←G(p,S*),并将S**加到ST_list的顶部;如果ST_list中的调度个数>ST_size,则从ST_list的底部删除一个最老的调度。
(4)如果调度有改善,即S**可行且G(p,S**)<G(p,S***)或S**和S***都不可行且G(p,S**)<G(p,S***),则更新最好解S***←S**,G(p,S***)←G(p,S**)。
(5)更新对当前计划所作的调度移动次数SM_ctr←SM_ctr+1。如果SM_ctr>SM_max,则停止迭代并转Step 4;否则转Step 3的(1)。
Step 4返回算法1 Step 2中的x是由求解式(4)-(8)所获得的粗生产计划并被当作算法的初始解以加快问题的求解速度,因为粗生产计划往往比随机选择的初始解更接近式(9)-(11)的真实解。尽管如此,由于式(4)-(8)忽略了装配线调度等方面的细节,由此获得的粗生产计划对式(9)-(11)来讲往往还是不可行。此外,从粗生产计划演变成可行计划的有效方法无疑是减少装配线的负荷,所以算法1 Step 2中的相邻计划可只定义为p=(x1,x2,…,xi-1,xi-1,xi+1,…,xn)T以加快获得初始可行解的速度。
如果混批装配线具有随机特性(如设备故障,装配时间发生变化等),可通过算法1的蒙特卡罗运行来求解其集成优化问题。具体做法是(1)在每次蒙特卡罗运行之前,先按照各随机变量的分布函数计算各自的样本值并用这些样本值代替式(9)-(10)中的相应值,然后调用算法1;(2)在第一次蒙特卡罗运行时,算法1 Step 2中的x为粗生产计划,但第二次及以后的蒙特卡罗运行时,x则为前次蒙特卡罗运行后所获得的最好生产计划以加快其求解速度。因为尽管当前蒙特卡罗运行的样本值很可能同前次蒙特卡罗运行的不一样,但前次最好生产计划往往还是比粗生产计划更接近本次最优解;(3)所有蒙特卡罗运行结束后,需计算除最好调度以外的所有结果平均值,并用圆整后的最好计划平均值及随机参数平均值作为输入再一次调用算法2以获取相应的最好调度,最后将其和圆整的最好计划平均值及其它结果的平均值一起作为具有随机特性的混批装配线生产计划与调度集成优化问题的解。
算法1和算法2的程序流程图分别如图4和5所示。这样,根据算法1和算法2及其程序流程图,本发明者已采用Microsoft Visual C++5.0编程实现了求解上述混批装配线生产计划与调度集成优化问题的嵌入式禁忌搜索仿真法。
算法1的计算复杂性是o(0.5n2(n2-1)×SM_max×PM_max)次仿真。如果n比较大,用算法1求解式(9)-(11)会需要太多的时间以致无法在可接受的时间内获得最优解。为此我们将提出另一种求解式(9)-(11)的算法,即交替式禁忌搜索仿真法。
3.2交替式禁忌搜索仿真法及其实现交替式禁忌搜索仿真法的基本思想是(1)以粗生产计划作为初始生产计划并用简化的禁忌搜索仿真法寻找一个可行计划与调度;(2)给定调度,用禁忌搜索寻找经过快速仿真计算具有最好性能指标的计划;(3)反过来给定计划,又用另一禁忌搜索寻找经过快速仿真计算具有最好性能指标的调度;(4)交替使用(2)、(3)两步直至找到最好的计划与调度。由于分别对计划与调度交替使用两个禁忌搜索并用快速仿真计算其性能指标,故称为交替式禁忌搜索仿真法。
算法3生产计划、调度与仿真的集成优化问题的交替式禁忌搜索仿真法Step 1初始化(1)读取式(9)-(10)中的各种数据和参数。
(2)读取算法参数,包括生产计划禁忌表长度PT_size,给定的计划移动次数PM-max,调度禁忌表长度ST_size和给定的调度移动次数SM_max。
(3)设置G_best=M_big,PM_ctr=0,PT_list={φ},P_best=φ,S_best={φ}。
Step 2搜索初始可行计划与调度(1)设置初始生产计划p0=x。
(2)设置当前计划p=p0,并调用算法2以搜索给定计划p的可行调度。
(3)如果SC_flag=1且G(p,S***)<G_best,则设置p**←p,P_best←p,S_best←S***,G_best←G(p,S***)。然后转Step 3。
(4)生成p0的一个相邻计划p,设置p0=p。然后转Step 2的(2)。
Step 3搜索最好计划与调度(1)生成一个相邻于p**的所有可能计划集,并置G(p*,S***)=M_big。
(2)对于该集合中的一个计划p,如果p不在PT_list中,则通过快速调度仿真计算相应p和S***的性能指标G(p,S***),并更新当前相邻集中的最好计划p*←p,G(p*,S***)←G(p,S***),如果SC_flag=1且G(p,S***)<G(p*,S***);否则丢弃p。如果计划禁忌表PT_list中的计划个数少于PT_size,将p加到PT_list的顶部。如此重复,直至做完p**的所有相邻计划。
(3)调用算法2以搜索对于给定p*的最好调度S***。
(4)作一次计划移动设置p**←p*,G(p**,S***)←G(p*,S***)且如果p**不在PT_list中则将p**加到PT_list的顶部;如果PT_list中的计划个数>PT_size,则从PT_list的底部删除一个最老的计划。
(5)如果计划有改善,即如果G(p**,S***)<G_best,则更新最好解P_best←p**,S_best←S***,G_best←G(p**,S***)。
(6)更新到目前为止所作的计划移动次数PM_ctr←PM_ctr+1。如果PM_ctr>PM_max,则停止迭代并转Step 4,否则转Step 3的(1)。
Step 4 输出结果输出P_best,S_best和G_best。
算法3的程序流程图如图6所示。这样,根据算法3及其程序流程图,本发明者已采用MicrosoftVisual C++5.0编程实现了求解上述混批装配线生产计划与调度集成优化问题的交替式禁忌搜索仿真法。
算法3的计算复杂性是o((n2+n+0.5n(n-1)SM_max)PM_max)次仿真。如果n足够大,则算法1的复杂性是o(n4),而算法3是o(n2)。所以算法3比算法1快得多,但后者往往比前者获得更好解。如果n非常大,即使算法3也无法在可接受的时间内获得最优或次优解。为此,我们将提出串行式禁忌搜索仿真法来求解式(9)-(11)。
3.3串行式禁忌搜索仿真法及其实现无疑,加速求解过程的一种有效方法是减少算法的计算复杂性,也就是减少为获取最好调度所做的仿真总次数。为此,串行式禁忌搜索仿真法的基本思想是(1)以粗生产计划作为初始计划并用规则调度仿真法寻找一个可行计划与调度;(2)从可行计划开始,用禁忌搜索寻找基于规则调度并经过快速仿真计算具有最好性能指标的计划;(3)对于最好的计划,使用另一禁忌搜索寻找经过快速仿真计算具有最好性能指标的调度。由于对计划和调度依次使用禁忌搜索并用快速仿真计算其性能指标,故称为串行式禁忌搜索仿真法。
算法4生产计划、调度与仿真的集成优化问题的串行式禁忌搜索仿真法Step 1初始化(1)读取式(9)-(10)中的各种数据和参数。
(2)读取算法参数,包括生产计划禁忌表长度PT_size,给定的计划移动次数PM-max,调度禁忌表长度ST_size和给定的调度移动次数SM_max。
(3)设置G_best=M_big,PM_ctr=0,PT_list={φ},P_best=φ,S_best={φ}。
Step 2搜索可行计划(1)设置初始生产计划p0=x。
(2)设置当前计划p=p0,并调用算法5以确定相应于p的调度。
(3)如果SC_flag=1且G(p,S)<G_best,则设置p**←p,P_best←p,S_best←S,G_best←G(p,S)。然后转Step 3。
(4)生成p0的一个相邻计划p,设置p0=p。然后转Step2的(2)。
Step 3搜索最好计划(1)生成一个相邻于p**的所有可能计划集,并置G(p*,S)=M_big。
(2)对于该集合中的一个计划p,如果p不在PT_list中,则调用算法5以确定相应于p的调度,并更新当前相邻集中的最好计划P*←p,G(p*,S)←G(p,S),如果SC_flag=1且G(p,S)<G(p*,S);否则丢弃p。如果计划禁忌表PT_list中的计划个数少于PT_size,将p加到PT_list的顶部。如此重复,直至做完p**的所有相邻计划。
(3)作一次计划移动设置p**←p*,G(p**,S)←G(p*,S)且如果p**不在PT_list中则将p**加到PT_list的顶部;如果PT_list中的计划个数>PT_size,则从PT_list的底部删除一个最老的计划。
(4)如果计划有改善,即如果G(p**,S)<G_best,则更新最好解P_best←p**,S_best←S,G_best←G(p**,S)。
(5)更新到目前为止所作的计划移动次数PM_ctr←PM_ctr+1。如果PM_ctr>PM_max,则转Step 4,否则转Step 3的(1)。
Step 4搜索最好调度(1)设置p=P_best,并调用算法2以搜索相应于p的最好调度。
(2)如果调度有改善,即G(p,S***)<G_best,则更新最好解S_best←S***,G_best←G(p,S***)。
Step 5 输出结果输出P_best,S_best和G_best。
这里,S是由算法5确定的一个调度。
算法5 相应于给定计划的调度确定算法Step 1确定调度(1)对于给定计划p,依次按照最早交付期、最小批量等优先规则,确定调度S。
(2)通过快速调度仿真,计算相应于p和S的G(p,S)。
(3)如果S不可行,则置SC_flag=0,否则置SC_flag=1。
Step 2返回算法4的计算复杂性是o((n2+n)PM_max+0.5n(n-1)SM_max)次仿真。如果n足够大,算法4的复杂性同算法3一样都是o(n2)。但是使用算法4从初始可行计划开始搜索到最好计划与调度要比使用算法3少做[1+0.5n(n-1)SM_max](PM_max-1)次仿真。因此,算法4要比算法3快,但后者往往比前者获得更好解。
算法4和算法5的程序流程图分别如图7和8所示。这样,根据算法4和算法5及其程序流程图,本发明者已采用Microsoft Visual C++5.0编程实现了求解上述混批装配线生产计划与调度集成优化问题的串行式禁忌搜索仿真法。
在生产计划、调度与仿真的集成优化中,计划的职能是确定每种产品的装配批量,调度的职能是确定每种产品按什么样的顺序上线装配,仿真的职能是计算给定调度的性能指标。
4、生产调度的快速仿真方法及其实现上述嵌入式禁忌搜索仿真法、交替式禁忌搜索仿真法、和串行式禁忌搜索仿真法的快速调度仿真均通过用扩展随机高级判断Petri网建立调度仿真模型和面向对象的技术来实现,并用可变时间流来控制仿真进程。此处快速的含义是无文字和图形的动态显示,仅仅通过快速仿真计算给定调度的性能指标。
4.1扩展随机高级判断Petri网由于市场需求的瞬息万变要求能在一条混批装配线上及时完成品种、批量时刻发生变化的订单,因此如何编制和优化混批装配线的生产计划与调度是很重要的。为了得到集成优化的计划与调度必须计算每一可行计划的每一种调度的性能指标,然而由于混批装配线调度的复杂性,很难用解析的办法考虑装配线的各种因素,较为可行的方法是仿真。为此,需要建立仿真模型,即需要一种能够描述混批装配线结构和运行状态的建模工具。本发明采用本发明者提出的并在柔性制造系统(FMS)建模、调度、仿真中获得成功应用的扩展随机高级判断Petri网(ESHLEP-N)对混批装配线进行建模,以解决混批装配线的调度仿真问题。
ESHLEP-N的主要优点是(1)为使库所中的令牌既便于用户观察和性能分析,又便于FMS调度仿真,在ESHLEP-N中定义了双重令牌和双重标识;(2)将调度等规则引入到ESHLEP-N中,以提高它的推理和决策能力。但ESHLEP-N的原来定义是针对FMS建模的,因而需要对此进行修改和完善,使其适合混批装配线的建模。修改后的Petri网仍称为ESHLEP-N,其定义如下定义1 ESHLEP-N可定义为一个16元组ESHLEP-N={P,T(R),F,Ap,C,I-,I+,Ia,Is,Ir,DIa,DIs,DIr,K,M0,CM0}其中P={Pg,R}={p1,p2,…,ph,r1,r2,…,rk}是一个有限库所集,pi∈Pg,rj∈R,Pg是普通库所集,R是决策点集。
T(R)={t1(r1),t2(r2),…,tk(rk)}是一个有限变迁集T(R)∩P=φ,φ是空集。
FP×T(R)∪T(R)×P是流关系。
Ap∶Pg→Ap(Pg),R→Ap(R)。Ap(Pg)是Pg上的参数表集。Ap(R)=S={S1,S2,…,Sk}表示R上的规则(决策逻辑)集。Sj是控制变迁tj(rj)使能和触发的规则集。Ap(Pg)∪Ap(R)是ESHLEP-N的令牌集。
C∶Ap(P)∪T(R)→已知颜色的幂集合,使得p∈P,C(Ap(p))是一个p上所有可能的令牌色的集合t(r)∈T(R),C(t(r))是一个t(r)上所有可能出现色的集合。
I-是一个负函数,使得(p,t(r))∈Pg×T(R)I-(p,t(r))∈[C(t(r))MS→C(Ap(p))MS]L且I-(p,t(r))=0的充分条件是(p,t(r))∉F.]]>这里,C(...)MS是多重集,C(Ap(p))MS是p上的有色令牌集,[...]L是线性函数集。
I+是一个正函数,使得(t(r),p)∈T(R)×PgI+(p,t(r))∈[C(t(r))MS→C(Ap(p))MS]L且I+(p,t(r))=O的充分条件是(t(r),p)∉F.]]>Ia∶Ap(Pg)→φ∪Ra+,Ra+是非负实数集,表示所有产品在各装配工位的装配时间集。若r∈Ra+,则r表示某一产品在某一装配工位的装配时间。
Is∶Ap(Pg)→φ∪Rs+。Rs+是非负实数集,表示服务台(装配工位、装配机器人、设备、工具等)的无故障服务时间集。
Ir∶Ap(Pg)→φ∪Rr+。Rr+是非负实数集,表示服务台的维修时间集。
DIa∶Ap(Pg)→φ∪{N(μ11,σ112),N(μ12,σ122),…,N(μ21,σ212),…}。其中N(μij,σij2)是产品i在第j个装配工位的装配时间所服从的正态分布函数,μij是均值,σij2是方差。
DIs∶Ap(Pg)→φ∪{exp(λ1),exp(λ2),…,exp(λm)}。其中,exp(λj)是服务台j的故障间隔所服从的负指数分布函数,λj是故障率。
DIr∶Ap(Pg)→φ∪{exp(θ1),exp(θ2),…,exp(θm)}。其中,exp(θj)是服务台j的维修时间所服从的负指数分布函数,θj是维修率。
K∶Pg→N+∪{ω},这里N+为正整数集,ω表示正无穷大,K为正容量函数。p∈Pg,K(p)是N+∪{ω}的子集,它的每一元素都表示p中相应的有色令牌数的上界。显然,K(p)的维数与C(Ap(p))的相同。如果K(p)的某一元素为ω,则p中与该元素相对应的有色令牌的数目不受限制。
M0是ESHLEP-N的初始令牌所构成的初始标识,满足p∈P∶M0∈Ap(p)。
CM0是用于用户观察有色令牌分布和性能统计的ESHLEP-N的初始有色标识,满足p∈Pg∶M0(p)∈Ap(p)→CM0(p)∈C(Ap(p))MS需要指出的一点是,一个变迁的触发就是根据与该变迁有关的决策点中的规则从某一库所子集中取出某些令牌和同等数量的相应有色令牌,将其加到其它库所子集。无论何时,只要一个变迁的某一输入库所子集及某一输出库所子集中的令牌与其决策点中的某些规则相匹配时,该变迁就被使能。这意味着(1)这些输入库所持有足够的合适令牌;(2)这些输出库所中某种令牌(可以映射成同种颜色的有色令牌)数的上界不会因为该变迁触发后这种令牌的增加而被超过;(3)这些令牌在输入库所中要停留足够的时间。变迁一经使能就被触发。
4.2基于ESHLEP-N的混批装配线建模一条混批装配线共有m(=33)个装配工位。由于装配一个产品需要许多装配件(零件、部件和组件等),因此为简化建模,我们用产品在每个装配工位的装配时间来表示每个装配工位的装配件装配过程,而不对每个具体装配件进行建模。由于产品在各装配工位的装配时间可以不等,对于个别产品甚至在某些装配工位的装配时间可以为零,即只通过这些装配工位而不进行具体装配。产品按照预先给定的调度(顺序)依次通过各装配工位,上一工位装配完后,依次送到下一工位继续装配。由于产品装配由工人完成,所以如果上一工位的装配任务已经完成,且在本工位的装配任务也已完成,则工人可以自由跨越装配工位的区间限制,直接装配下一个产品。同样,如果在某个工位上的产品未完成装配,而该产品已随装配线移到了该工位的界限之外,则允许这一工位的工人把任务顺延到下一工位继续完成,从而在逻辑上形成虚拟缓冲区。但应注意到工人不能无限制地跨越工位,各装配工位也可能发生故障。每一工位在任何时候至多只能装一个产品。线上的产品总数在任何时候至多等于线上的工位数m,也就是,如果在某一时刻每一工位都有一个产品,则只有等一个产品在最后一个工位m装好并下线后,才能在工位1上线一个待装品。装配线的同步移动速度是可变的,在线上无满缓冲区时由其最后一个工位的装配速度确定,而在有满缓冲区时由其瓶颈工位的装配速度确定。由于每一工位装配不同的产品可能需要不同的时间,所以当产品种类、混批发生变化时瓶颈工位可能发生转移。
根据前面对混批装配线的描述和ESHLEP-N的定义,我们首先确定ESHLEP-N普通库所的个数、位置和含义。然后依次画出变迁、决策点和节点之间的弧。最后得到如图9所示的混批装配线的ESHLEP-N图形模型。图9中,普通库所、决策点和变迁的含义解释如下p1是“装配工位空闲”库所。当库所p1只持有有色令牌时,相应的装配工位处于空闲状态。
p2是“待装品库”库所。当库所p2持有有色令牌时,待装品库中有等待上线装配的待装品。
p3是“排队”库所。当库所p3持有有色令牌时,相应装配工位的缓冲区中有相应的产品正在等待装配。
p4是“装配”库所。当库所p4持有有色令牌时,相应的装配工位正在装配(含准备)相应的产品。
p5是“故障”库所。当库所p5持有有色令牌时,相应的装配工位正处于故障状态,正在维修。
p6是“成品库”库所。当库所p6持有有色令牌时,成品库中存有装配好的成品。
r1-5是决策点。这些节点规定了ESHLEP-N图中需引入决策的位置。决策点rj(j=1-5)中的规则集Sj是控制变迁tj(rj)使能和触发的规则集。
t1即t1(r1),是“待装品上装配线”变迁。它的触发表示待装品库中有一个待装品进入第一个工位的缓冲区等待装配。
t2即t2(r2),是“开始装配”变迁。它的触发表示相应的装配工位开始对相应产品进行指定装配(含准备)。
t3即t3(r3),是“完成装配”变迁。它的触发表示相应装配工位完成相应产品的指定装配。
t4即t4(r4),是“故障发生”变迁。它的触发表示处于装配状态或空闲状态的相应工位出故障。
t5即t5(r5),是“故障结束”变迁。它的触发意味着相应装配工位或空闲工位结束故障状态。
为使ESHLEP-N更能反映由工人完成装配的特点,下面对以上ESHLEP-N图模型作必要的说明(1)p3是“排队”库所,为实现工人跨工位装配产品,并且不使跨越的工位数量超过一定范围,我们在数据库中设置每个工位允许的最多的排队数量,即每个工位的虚拟缓冲区。如果某工位上的工人前移或者后移的工位数超过这一限制,则说明在此时刻装配线发生阻塞。
(2)p2是“待装品库”库所。在混批装配线中,待装品的上线由成品下线控制。在程序中反映为每一成品离开装配线最后一个工位后,要求在“排队”库所中的第一个工位队列中加入一待装品,即触发t1变迁。因此,在计划中要求的所有待装品上线后,为了保证所有线上产品都能够完成剩下的装配,可在“待装品库”库所中加入虚拟的待装品来保证仿真顺利进行。
由于ESHLEP-N图是面向用户的,主要用于分析混批装配线的性能,所以在图9的普通库所中只显示有色令牌。这是因为通过有色令牌表示ESHLEP-N图模型的状态可以减少状态数。例如,图9库所p1的有色令牌5w表示有5个装配工位处于空闲状态。但是,这5个装配工位分别可以是m(=33)个装配工位中的任何一个,也就是对应Cm5=237336]]>种工位组合。如果每个装配工位都用一个令牌表示,则这5个有色令牌对应着237336种令牌组合(即从33个相异令牌取出5个的组合数)。尽管图9普通库所中的令牌没有显示,但的确存在,只是隐含而已。当一个有色令牌移动时,用户应该想象到有一个令牌随之移动。这样,就可以根据普通库所中有色令牌的分布大致确定相应令牌的分布。下面主要讨论与有色令牌相关的问题。
根据定义1对ESHLEP-N的定义,如果用w表示一个装配工位,b表示一个产品(待装品,正装产品或成品),qi(i=1,2,…,m)表示一个等待第i号工位装配的产品,<·>表示复合色,图9普通库所中所有可能的有色令牌的颜色集可表示如下C(Ap(p1))={w},表示有工位处于空闲状态。
C(Ap(p2))={b}。表示待装品库中有待装品。
C(Ap(p3))={q1,q2,…,qm},表示有产品在第i(i=1,2,…,m)个工位上排队等待装配。
C(Ap(p4))={<w,b>},表示有产品在装配。
C(Ap(p5))={w,<w,b>},w表示有一处于空闲状态的工位出现故障。<w,b>表示有一处于装配状态的工位出现故障。
c(Ap(p6))={b},表示成品库中存有装配好的成品。
决策点中的令牌比较特殊,它们可以重复使用却不能移到其它库所,也就是说,与某一决策点相关的变迁的触发将使令牌从该决策点移出并重又移入该决策点。
ESHLEP-N的变迁触发同普通的Petri网不一样,它不是从所有输入库所中移出令牌,然后将其加到所有输出库所,而是根据决策点中的规则,从部分或全部输入库所中移山令牌和相应的有色令牌,将其加入到部分和全部输出库所。例如,变迁t2触发时一种可能的有色令牌移动是从输入库所p1,p3中分别移出一个有色令牌w,qj,(j=1,2,…,m),合并成一个复合有色令牌<w,b>,将其加到输出库所p4。
一旦确定了图9中所有变迁触发与其相应的有色令牌的移动关系,就可据此确定该模型的动态过程。
图9中所有变迁的所有可能的出现色如下C(t1)={q1), C(t2)={<w,b>},
C(t3)={w,b,q2,q3,…,qm},C(t4)={w,<w,b>}C(t5)={w,<w,b>}下面对照图9的ESHLEP-N图模型进行动态描述。设(q1←b)表示一种线性映射,即从b映射到q1,表示待装品到工位1的队列。
pr1,pr2是投影,即取复合色<·>中的第一种色或第二种色的映射。
ID是恒等映射。
X(t2)表示由于变迁t2的触发而引起的有色令牌的移动,且满足X(t2)∈C(t2)MS这样,ESHLEP-N模型的动态描述举例如下1)初始状态图9普通库所中的初始有色标识可表示如下CM0(p1)=5w,表示有5个装配工位空闲。
CM0(p2)=10b,表示待装品库中有10个待装品。
CM0(p3)=q1+q5+2q10+2q25,表示1号和5号工位各有一个、10号和25号工位各有二个产品等待装配,其余工位无产品等待装配。
CM0(p4)=26<w,b>,表示有26个工位正在装配产品。
CM0(P5)=w+<w,b>,表示各有一个处于空闲和装配状态的工位出故障。
CM0(p6)=20b,表示成品库中有20个装配好的成品。
如用向量表示则CM0=(5w,10b,q1+q5+2q10+2q25,26<w,b>,w+<w,b>,20b)2)设CM0(p1)=5w中的空闲工位之一为1号。这样,由决策点r2中的规则,t2可以触发,也即各有一个有色令牌从p1和p3中移出,合并成一个复合有色令牌<w,b>移入p4中(设此时无故障发生)。
再设I-(p1,t2)=pr1;I_(p3,t2)=(q1←Lb)(P,2);]]>I+(p4,t2)=ID;X(t2)=<w,b>
这样CM1(p1)=CM0(p1)-I-(p1,t2)X(t2)=5w-(Pr1)<w,b>=5w-w=4wCM1(p3)=CM0(p3)-I_(p3,t2)X(t2)]]>=q1+q5+2q10+2q25-(q1←Lb)(pr2)<w,b>]]>=q1+q5+2q10+2q25-q1=q5+2q10+2q25]]>
CM1(p4)=CM0(p4)+I+(p4,t2)<w,b>=26<w,b>+<w,b>
=27<w,b>
即CM1=(4w,10b,q5+2q10+2q25,27<w,b>,w+<w,b>,20b)3)再设工位33完成装配任务,则根据决策点r3中的规则,变迁t3触发。为此将一个复合有色令牌<w,b>从p4中移出,并分解成有色令牌w和b分别移入p1和p6。这时,有色标识变成CM2=(5w,10b,q5+2q10+2q25,26<w,b>,w+<w,b>,21b)。
4)对于其它变迁也一样,只要其输入/输出库所中的令牌和有色令牌与相应决策点中的规则相匹配就触发。因此,混批装配线虽然复杂,但用ESHLEP-N图可以清晰地对其动态过程加以描述。
4.3混批装配线的ESHLEP-N模型的面向对象的实现面向对象(Object-Oriented)一词来自60年代推出的Simula语言,面向对象技术的基本思想是构造对象,通过建模的方法,将数据结构和行为都合并到单一的实体中。它围绕着客观现实的事物来组织模型,将某些对象和模型的共同方法和行为抽取出来进行封装形成类,类中的对象具有相同的属性和行为模式,再由类的实例化产生对象,这组对象还具有一般关系,一般行为及一般语义。当然,不同类的对象也可能具有相同的属性值和关系。
面向对象方法强调对象属性只能由对象自己的行为改变,对象之间通过消息传递进行交互,通过继承机制可以实现对象类的细化,通过对对象行为的重置则诱发对象的多态性概念。封装、继承、多态性是面向对象的重要特征。
本发明采用Microsoft公司的Visual C++5.0作为开发工具来实现混批装配线的ESHELP-N模型。Visual C++5.0自诞生以来,一直是Windows环境下最主要的应用开发系统。它提供了方便的classwizard使开发者能够方便地处理自己设计的类,并且提供已经封装好的MFC使开发者能够方便地实现各种操作。在本发明中,也主要用它的classwizard来设计用于实现仿真的类,利用MFC来实现数据库中基本仿真数据的提取,变迁链表的构建等操作。下面讨论ESHELP-N模型的面向对象的实现。
4.3.1库所和变迁表示在ESHLEP-N的实现过程中,我们用基本类来实现普通库所中的令牌,用其中的属性来表示具体的令牌处于哪个库所,为此,在Microsoft Visual C++5.0中,利用Microsoft MFC设计如下的类<pre listing-type="program-listing">class CWorkstationpublic CObject{publicstationstate priorstate;∥在发生故障的时候记录故障以前状态double surplus_needtime;∥用于记录相应装配工位在装配相应产品的过程中碰 ∥到故障时该产品的剩余装配时间long buffer;∥相应装配工位缓冲区的大小,即存放位置数&lt;!-- SIPO &lt;DP n="18"&gt; --&gt;&lt;dp n="d18"/&gt;Cprodnode waitingprod;∥在相应工位缓冲区中排队等待装配的产品,p3库所double needtime; ∥该产品在该共位上需要的装配时间stationstate state; ∥工位状态double sum_emptytime,sum_processtime,sum_readytime; ∥累计空闲时间,累计工位处理(装配)时间,累计准备时间int current_prodno,current-prodtype; ∥相应工位正在装配的产品的编号和种类double begintime,planfinishtime; ∥该产品在该工位上的开始装配时间和计划完成时间int GetProdNumber(); ∥取得相应工位正在装配的产品的编号double getplanfinishtime(); ∥取得该产品在该工位上的计划完成时间int getcurrentprodtype();∥取得相应工位正在装配的产品的种类CWorkstation();virtual~CWorkstation();void init();};</pre>在该类中封装的属性记录了相应工位在整条装配线工作过程中的状态,而该类中的方法则实现对该工位属性的操作。属性state属于typedef enum{empty=1,wrong,working,waiting,ready,sleep}stationstate,其值empty,ready和sleep(表示该相应工位还没有开始工作)表示相应工位处于库所p1,working表示相应工位处于库所p4,wrong表示相应工位处于库所p5。
对于ESHLEP-N中的“待装品库”库所p2,我们在程序中设计了待装品库所类<pre listing-type="program-listing">class Cbodysimu∥建立初始待装品链表的类{publicCbodysimu();virtual~Cbodysimu();public int prodnum; ∥待装品编号int prodtype; ∥待装品种类Cbodysimu *next; ∥指向下一待装品的指针};</pre>并用下面的类实现p2中的令牌(待装品)按调度顺序进行排序<pre listing-type="program-listing">class Cprodnode∥初始待装品的链表,也作为在相应工位缓冲区 ∥中排队等待装配的产品的链表{public&lt;!-- SIPO &lt;DP n="19"&gt; --&gt;&lt;dp n="d19"/&gt;Cprodnode();virtual~Cprodnode();publicvoid delhead();Cbodysimu *GetPointNow();Cbodysimu *head,*now,*end;int count;void add(int prodnum,int prodtype); ∥加入新节点void deleteall(); ∥删除全部链表};</pre>在ESHLEP-N启动的时候,可用上述数据结构来实现“待装品库”库所p2的初始化。同样,对于每个工位上的“排队”库所p3,也可用上述数据结构来实现。
对于ESHLEP-N中的“成品库”库所p6,在仿真中用一个变量overprods来记录在装配线上已经装配完成的成品,overprods的值代表p6中令牌数量。
由于有色令牌和令牌之间存在一对多的映射关系,可将有色令牌看成令牌的“视图”,所以在ESHLEP-N模型的实现过程中,并不设计专门的数据结构来保存有色令牌,只是在性能统计和ESHLEP-N图模型显示的时候,根据有色令牌和令牌之间一对多的映射关系由令牌确定有色令牌的数目、显示和分布。
至于,变迁类可定义如下<pre listing-type="program-listing">class CTransitionpublic CObject∥ESHLEP-N中的变迁类{publicCTransition();CTransition(int transition,double begin,int sta){transitiontype=transition;begintime=begin;station=sta;}∥变迁构造函数publicint transitiontype; ∥变迁种类,1t1,2t2,3t3,4t4,5t5double begintime; ∥该变迁触发的时间int station; ∥变迁触发的工位0-m};</pre>CTransition类中定义了变迁属性transitiontype,其值为1,2,3,4,5时分别代表ESHLEP-N中的变迁t1,t2,t3,t4,t5。transitiontype=1表示待装品库中有一个待装品或虚拟的待装品进入第一个工位的缓冲区等待装配。
CTransition类中定义了变迁属性begin和属性sta,分别代表该变迁发生的时间和发生该变迁的工位。
在程序的实现中,利用MFC封装的CtypedPtrArray&lt;CObArray,CTransition*&gt;transitions来实现变迁的链表结构(队列)。在MFC中封装的CTypedPtrArray提供了Add(),Remove(),InsertInto()等方法,可以将CTransition*插入指针阵列transitions中,并且维护方便。所以,在程序的执行过程中,每次只要取出按时间排序最先发生的变迁,执行相关的函数,然后在指针阵列中删除就可以了。
此外,在面向对象的仿真中,还必须解决仿真时间问题。在离散事件仿真中,仿真时间是一个与真实时间尺度不同的逻辑时钟,它与所有实体的活动和所有的调度都有关。仿真时间的尺度是任意选的,且独立于真实时间。每一事件通过被调度的事件时间与逻辑时钟相关联,当对应的物理事件发生时,这个事件时间就对应于物理系统的真实时间。在程序的设计中,我们在主程序的CsimulationDocpublic CDocument类中定义了属性simulationclock,用来记录仿真时间。
4.3.2变迁触发规则变迁触发规则共有5类12条,每一类规则对应一种变迁的触发。具体如下,其中R加数字表示规则号,R后的第一个数字表示变迁的种类。
R101;如果(1)装配线未阻塞,(2)装配线上的最后一个工位有一个产品完成装配,(3)库所p2中有令牌b;则变迁t1触发,即从p2中移出一个令牌b,并在p3中增加一个令牌q1。
R201如果(1)装配线未阻塞,(2)p1中有表示工位i空闲的令牌w,(3)p3中有令牌qi(表示正在等待工位i装配的在装品),则变迁t2触发,即从p1中移出一个令牌w,从p3中移出一个令牌qi,合并成一个复合令牌&lt;w,b&gt;加到p4中。
R202如果(1)装配线阻塞,(2)p1中有表示工位i空闲的令牌w,(3)p3中有令牌qi,(4)现在阻塞的是工位i;则变迁t2触发,即从p1中移出一个令牌w,从p3中移出一个令牌qi,合并成一个复合令牌&lt;w,b&gt;加到p4中。如果工位i的缓冲区及工位i+1的缓冲区中的在装品总数不超过额定数量,则清除装配线和工位i的阻塞状态。
R301如果(1)装配线未阻塞,(2)p4中有一个表示工位i刚完成装配一个在装品b的复合令牌&lt;w,b&gt;,(3)工位i不是装配线上的最后一个工位;则变迁t3触发,即从p4中移出一个复合令牌&lt;w,b&gt;,分解成一个令牌w和一个令牌qi+1分别加到p1和p3中。
R302如果(1)装配线未阻塞,(2)p4中有一个表示工位i刚完成装配一个在装品b的复合令牌&lt;w,b&gt;,(3)工位i是装配线上的最后一个工位;则变迁t3触发,即从p4中移出一个复合令牌&lt;w,b&gt;,分解成一个令牌w和一个令牌b分别加到p1和p6中。
R303如果p3中令牌q的个数超限(即表示工位i的缓冲区及工位i+1的缓冲区中的在装品总数超过额定数量,工位i的缓冲区已满);则整条装配线进入阻塞状态。
R304如果(1)装配线阻塞,(2)p4中有一个表示工位i刚完成装配一个在装品b的复合令牌&lt;w,b&gt;,(3)工位i不是装配线上的最后一个工位,(4)工位i是目前的阻塞工位;则变迁t3触发,即从p4中移出一个复合令牌&lt;w,b&gt;,分解成一个令牌w和一个令牌qi+1分别加到p1和p3中。
R305如果(1)装配线阻塞,(2)p4中有一个表示工位i刚完成装配一个在装品b的复合令牌&lt;w,b&gt;,(3)工位i是装配线上的最后一个工位,(4)工位i是目前的阻塞工位;则变迁t3触发,即从p4中移出一个复合令牌&lt;w,b&gt;,分解成一个令牌w和一个令牌b分别加到p1和p6中。
R401如果p1中有一个令牌w所表示的空闲工位发生故障;则变迁t4触发,即从p1中移出一个令牌w加到p5中。
R402如果p4中有一个复合令牌&lt;w,b&gt;所表示的正在进行装配的工位i发生故障;则变迁t4触发,即从p4中移出一个复合令牌&lt;w,b&gt;加到p5中。
R501如果p5中有一个令牌w所表示的工位i的故障状态消除;则变迁t5触发,即从p5中移出一个令牌w加到p1中。
R502如果p5中有一个复合令牌&lt;w,b&gt;所表示的工位i的故障状态消除;则变迁t5触发,即从p5中移出一个复合令牌&lt;w,b&gt;加到p4中。
4.3.3变迁处理流程在基于ESHLEP-N模型的仿真实现中,我们首先从变迁队列中取一个最先发生的变迁事件来处理,步骤是先判断装配线是否阻塞,如果阻塞就进入阻塞处理程序,如果不阻塞,就读取变迁的种类和变迁触发的工位,进入相应的变迁处理程序。变迁的触发要遵循上述变迁触发规则,下面用流程图描述其实现过程。
(1)系统变迁处理的主流程设一条混批装配线上共有33个装配工位,且一批生产计划要求装配20个产品,则ESHLEP-N模型的初始有色标识可表示成CM0(p1)=33w,表示所有装配工位都空闲。
CM0(p2)=20b,表示待装品库中有20个待装品。
CM0(p3)=φ,表示所有工位都无产品等待装配。
CM0(p4)=φ,表示没有工位正在装配产品。
CM0(p5)=φ,表示没有工位出故障。
CM0(p6)=φ,表示成品库中没有装配好的成品。
根据上面的初始有色标识,可得系统变迁处理的主流程(即仿真软件的主程序框图)如图10所示。
(2)变迁t1的处理流程变迁t1的作用是使“待装品库”库所中的待装品进入装配线。该变迁发生的工位一定是装配线的最小工位,即上线工位。在处理变迁t1的时候,先判断待装品库所中是否还有令牌;如果有,则在最小工位的排队库所中加入待装品;如果没有,则在该工位的“排队”库所中加入类型为-1的虚拟待装品。其处理流程如图11所示。
(3)变迁t2的处理流程变迁t2是“开始装配”变迁,即从变迁发生工位的排队库所中取一个产品,如不为虚拟待装品则将该工位状态置成working并产生该工位的变迁t3置入变迁队列,然后完成阻塞判断等任务,其处理流程如图12所示。值得一提的是,在该处理流程中产生变迁t3时,要考虑该产品在该工位是否需要装配准备的情况,如果需要准备,则须将产品的准备时间加上其装配时间作为变迁t3的触发时间,否则将产品的装配时间作为变迁t3的触发时间。由于人工处理装配作业而使装配线具有柔性,允许在每个工位的虚拟缓冲区中设置一定数量的在装品(正在装配过程中的产品)存放位置,即允许工人在任务完成的情况下适当向前移动装配位置,在任务来不及完成的情况下适当向后移动装配位置,但受装配件所在位置的制约,工人前后移动的位置不能超过规定界限,这可通过规定每一个工位的缓冲区及其下一个工位的缓冲区中的在装品总数不超过额定数量来限制。因此,根据数据库中的工位参数设置,在仿真开始的时候就确定每个工位的缓冲区额定数量,当本工位缓冲区及其下一个工位缓冲区中的在装品总数超过额定数量时,定义本工位的缓冲区已满,且装配线发生阻塞。
(4)变迁t3的处理流程变迁t3是“完成装配”变迁,即某一工位相应产品的装配任务完成变迁,主要处理本工位和下一工位的状态,其处理流程如图13所示。图中,工位的ready状态表示相应工位已经就绪,可以开始装配(含准备)。
(5)变迁t4的处理流程变迁t4是“故障发生”变迁,其处理流程相对简单,如图14所示。在该处理流程中,首先需要判断在故障发生的时候工位是否在工作,即工位上是否有在装品,如果有,则需在变迁队列中删除本工位的变迁t3。然后保存故障发生前本工位的状态信息并置本工位的状态为wrong。
(6)变迁t5的处理流程变迁t5是“故障结束”变迁,其处理流程如图15所示。在该处理流程中,首先需要判断本工位上是否有在装品,如果没有,则只需简单地将本工位的状态置为empty。否则需要进一步判断在故障发生前本工位是否在装配产品,如果是,则需恢复在此前触发的变迁t4的处理流程中删除的本工位的变迁t3并将t3原来的触发时间加上本故障的持续时间作为t3新的触发时间,如果不是,则生成本工位的变迁t2。
(7)阻塞处理流程上面的变迁t1-5处理流程是在装配线正常情况下发生的。在阻塞情况下,总的处理原则与在正常情况下大致相同,略有区别,如图16所示当在阻塞状态下变迁t2触发时,首先需要判断变迁触发的工位是不是处于阻塞状态的工位,如果是,则清除装配线及该工位的阻塞标志,并按正常情况处理该变迁;否则不处理该变迁。同样,在处理变迁t3的时候,也要先判断变迁触发的工位是不是当前的阻塞工位,如果是,则按正常情况处理该变迁,否则不处理该变迁。所以通过处理这些在阻塞工位上触发的变迁,就可以消除装配线的阻塞。在阻塞消除之后,再处理变迁队列中所有变迁触发时间小于当前仿真时间(当前仿真时间是消除装配线阻塞的变迁触发时间)的变迁。这样做相当于在装配线阻塞的时候,其余工位上的“开始装配”及“完成装配”事件和“待装品上装配线”事件都不能发生,只有在装配线阻塞消除之后,这些事件才能发生。
4.4混批装配线生产调度仿真的实现混批装配线生产调度仿真的实现是以扩展随机高级判断Petri网(ESHLEP-N)模型的实现为基础的。在前面,我们已经建立了混批装配线的ESHLEP-N的模型,并介绍了其面向对象的实现,包括库所、令牌与变迁的基于Microsoft MFC的类(class)表示,变迁队列,变迁触发规则和变迁处理流程。在此基础上,我们采用Microsoft Visual C++5.0编写了混批装配线的生产调度仿真软件。
仿真过程如下首先,根据上述嵌入式禁忌搜索仿真法、交替式禁忌搜索仿真法、或串行式禁忌搜索仿真法中给定的计划(产品种类与数量)与调度(装配顺序)来初始化“待装品库”库所,即确定待装品的种类、数量和上线装配的顺序,然后根据先到先服务规则和上述变迁触发规则,依次将在“待装品库”库所中的待装品送上装配线进行装配;待装品经上线工位装配后成为在装品,并沿着装配线依次在每个工位进行装配;在装品在每个工位完成装配后,进入下一工位的“排队”库所;每个工位的“排队”库所有一定容量,当某个工位“排队”库所中的在装品数量超过这一容量时,装配线进入阻塞状态;在装品经最后一个工位(下线工位)装配后成为成品并进入“成品库”库所;在整个仿真过程中,允许工位发生故障;当所有汽车下线后,仿真结束。为缩短仿真时间,采用可变时间流来控制仿真进程并在仿真过程中无文字和图形的动态显示,仅仅通过快速仿真计算给定调度的性能指标。
由于在仿真中需要很多参数,为了软件的通用性,将参数放在数据库中,并在启动仿真的时候读取这些参数。这样,在装配线的情况改变之后,只需根据提供的数据库接口修改参数,而无需修改调度仿真软件就可适应新的情况。由于使用Microsoft Visual C++5.0作为调度仿真软件的开发工具,所以可以方便地利用Microsoft提供的MFC类库来完成数据库中数据的读取。同时,我们也在VC中提供了数据库的修改接口,主要用Activex控件DBGrid和RemoteDataControl来实现数据的读取和修改。
综上所述,ESHLEP-N具有形象直观,结构简单,节点少,描述性好,决策能力强,双重令牌和双重标识等优点,非常适合混批装配线的建模和调度仿真。该调度仿真软件有两个主要用途其一,作为快速调度仿真器(即无文字和图形的动态显示),用以计算给定调度的性能指标;其二,在获得最优生产计划和调度后,将调度仿真软件设置成动画显示(或ESHLEP-N图形显示)方式,用以观察混批装配线的最优调度过程,获取最优调度性能指标。
5、混批装配线的生产计划、调度与仿真的集成优化软件根据上述算法1-5及其程序流程图,和混批装配线的ESHLEP-N的模型及其面向对象的实现方法,本发明者已采用Microsoft Visual C++5.0编程实现了求解上述混批装配线生产计划与调度集成优化问题的嵌入式禁忌搜索仿真法、交替式禁忌搜索仿真法、和串行式禁忌搜索仿真法,开发了混批装配线的生产计划、调度与仿真的集成优化软件,其软件结构如图17所示。该软件由订单平滑、粗生产计划、嵌入式禁忌搜索、交替式禁忌搜索、串行式禁忌搜索、动画调度仿真、参数管理和优化结果查询等8个模块组成,其中嵌入式禁忌搜索、交替式禁忌搜索和串行式禁忌搜索模块又共同调用快速调度仿真模块。图中,订单平滑模块用于平滑客户的需求;粗生产计划模块采用分枝定界法求解式(4)-(8)的混合整数线性规划模型以获取使各装配工位的准备成本和空闲时间尽可能少并尽可能满足产品需求的粗生产计划;动画调度仿真模块与快速调度仿真模块的主要区别在于仿真过程中有无动画显示;参数管理模块管理混合整数线性规划模型中的产品成本系数,产品在各工位的装配时间、准备时间和准备成本,工位空闲及故障,和算法参数;优化结果查询模块用于查询生产计划与调度集成优化的结果。
权利要求
1.一种混批装配线的集成优化控制方法,其特征在于该方法包括以下步骤(1)平滑客户的产品需求;(2)根据平滑后的产品需求,用分枝定界算法求解混批装配线的混合整数规划模型,以获得使各装配工位的准备成本和空闲时间尽可能少并尽可能满足产品需求的粗生产计划;(3)在混批装配线的生产计划与调度的集成优化模型的基础上,针对产品种类和数量的少、中、多等三个不同程度,分别用嵌入式禁忌搜索仿真法、交替式禁忌搜索仿真法、和串行式禁忌搜索仿真法来获得以粗生产计划作为初始解的混批装配线的最好生产计划即产品种类与数量,和调度即装配顺序;(4)通过动画调度仿真观察混批装配线的最优调度过程;(5)判断是否满足客户的产品需求;(6)如果经过动画调度仿真,认为不满足产品需求,则可对最好计划与调度作适当修改后再仿真;(7)如果经过动画调度仿真,认为满足产品需求,则可将其作为准备下达执行的正式计划与调度;(8)根据正式计划与调度,安排生产和控制待装品的上线,并根据动画调度仿真时确定的装配线移动速度控制混批装配线的运行。
2.根据权利要求1所述的混批装配线的集成优化控制方法,其特征在于嵌入式禁忌搜索仿真法的主要步骤是(1)以粗生产计划作为初始生产计划寻找一个可行计划与调度,(2)然后在计划层用禁忌搜索寻找最好的计划,(3)并对计划层生成的每个相邻计划用另一个禁忌搜索寻找经过快速仿真计算具有最好性能指标的调度,直至使生产计划与调度同时达到优化。
3.根据权利要求1所述的混批装配线的集成优化控制方法,其特征在于交替式禁忌搜索仿真法的主要步骤是(1)以粗生产计划作为初始生产计划寻找一个可行计划与调度;(2)给定调度,用禁忌搜索寻找经过快速仿真计算具有最好性能指标的计划;(3)反过来给定计划,又用另一禁忌搜索寻找经过快速仿真计算具有最好性能指标的调度;(4)交替使用(2)、(3)两步直至找到最好的计划与调度。
4.根据权利要求1所述的混批装配线的集成优化控制方法,其特征在于串行式禁忌搜索仿真法的主要步骤是(1)以粗生产计划作为初始生产计划并用规则调度仿真法寻找一个可行计划与调度;(2)从可行计划开始,用禁忌搜索寻找基于规则调度并经过快速仿真计算具有最好性能指标的计划;(3)对于最好的计划,使用另一禁忌搜索寻找经过快速仿真计算具有最好性能指标的调度。
全文摘要
混批装配线的集成优化控制方法涉及混批装配线(即一条装配线上可同时装配多种产品)的生产计划、调度与仿真的集成优化控制方法,该方法为平滑客户的产品需求;根据平滑后的产品需求,用分枝定界算法求解混批装配线的混合整数规划模型;分别获得以粗生产计划作为初始解的混批装配线的最好生产计划即产品种类与数量,和调度即装配顺序;通过动画调度仿真观察混批装配线的最优调度过程;判断是否满足客户的产品需求;如果经过动画调度仿真;认为满足产品需求,则可将其作为准备下达执行的正式计划与调度;根据正式计划与调度,安排生产和控制待装品的上线,并根据动画调度仿真时确定的装配线移动速度控制混批装配线的运行。
文档编号G05B13/00GK1529209SQ20031010600
公开日2004年9月15日 申请日期2003年10月8日 优先权日2003年10月8日
发明者严洪森, 夏琦峰, 朱旻如, 刘霞玲, 郭智敏 申请人:东南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1