柔性作业车间调度问题(flexiblejobshopschedulingproblem,FJSP)的描述如下:n个工件(J1,J2,…,Jn)要在m台机器(M1,M2,…,Mm)上加工;每个工件包含一道或多道工序;工序顺序是预先确定的;每道工序可以在多台不同加工机器上进行加工;工序的加工时间随加工机器的不同而不同;调度目标是为每道工序选择最合适的机器,确定每台机器上各道工序的最佳加工顺序及开工时间,使整个系统的某些性能指标达到最优。因此,柔性作业车间调度问题包含两个子问题:确定各工件的加工机器(机器选择子问题)和确定各个机器上的加工先后顺序(工序排序子问题)。此外,在加工过程中还需要满足下面的约束条件。
(1)同一台机器在某一时刻只能加工一个工件。
(2)同一工件的同一道工序在同一时刻只能被一台机器加工。
(3)每个工件的每道工序一旦开始,加工便不能中断。
(4)不同工件之间具有相同的优先级。
(5)不同工件的工序之间没有先后约束,同一工件的工序之间有先后约束。
(6)所有工件在零时刻都可以被加工

柔性作业车间调度问题根据资源选择限制条件和柔性程度,可以分为完全柔性作业车间调度问题(totalFJSP,T-FJSP)和部分柔性作业车间调度问题(partialFJSP,P-FJSP),分别如表2.1、表2.2所示。在T-FJSP中,所有工件的每一道工序都可以在可选择的机器中选择任何一台进行加工;而在P-FJSP中,至少存在一道工序的加工机器只能是可选择的机器中的部分机器,即机器集的真子集来进行加工。也可以说,T-FJSP只是P-FJSP的一个特例。P-FJSP更加符合实际生产系统中的调度问题,研究P-FJSP比T-FJSP更具有实际意义,P-FJSP要比T-FJSP更加复杂。

在FJSP中,还存在循环排列的特性(circularpermutation)与传统经典JSP问题不同,即在FJSP中,存在同一个工件的多道工序可以被同一台机器进行加工,而不是每一道工序只能被同一台机器加工一次。这也增加了求解FJSP的难度。传统经典JSP的解空间巨大,包含(n!)m种排列,已经证明是NP-hard问题。FJSP的解空间更是巨大,包含mn×(n!)m种排列,计算复杂性可想而知。

用python实现柔性作业车间调度基础数据 柔性作业车间调度问题_调度

FJSP的数学模型

用python实现柔性作业车间调度基础数据 柔性作业车间调度问题_计算复杂性_02


用python实现柔性作业车间调度基础数据 柔性作业车间调度问题_评价指标_03


用python实现柔性作业车间调度基础数据 柔性作业车间调度问题_调度_04


式(2.1)和式(2.2)表示每一个工件的工序先后顺序约束;式(2.3)表示工件的完工时间的约束,即每一个工件的完工时间不可能超过总的完工时间;式(2.4)和式(2.5)表示同一时刻同一台机器只能加工一道工序;式(2.6)表示机器约束,即同一时刻同一道工序只能且仅能被一台机器加工;式(2.7)和式(2.8)表示每一台机器存在循环操作;式(2.9)表示各个参数变量必须是正数。

FJSP评价指标

在FJSP的求解过程中,调度方案优劣的评价需要通过一定的目标函数来判断,目标函数也就是常用的评价指标。FJSP中不仅包括了经典JSP常用的评价指标,而且还有其他的评价指标。下面列出文献中较为常用的几个评价指标。

(1)最大完工时间最小完工时间是每个工件最后一道工序完成的时间,其中最大的那个时间就是最大完工时间(makespan)。它是衡量调度方案的最根本指标,主要体现车间的生产效率,也是FJSP研究中应用最广泛的评价指标之一,可表示为(2.10)所示。

用python实现柔性作业车间调度基础数据 柔性作业车间调度问题_评价指标_05


(2)机器最大负荷最小在FJSP求解中,存在选择机器的过程,各台机器的负荷随着不同的调度方案而不同。负荷最大的机器就是瓶颈设备。要提高每台机器的利用率,必须使得各台机器的负荷尽量小且平衡,可表示为

用python实现柔性作业车间调度基础数据 柔性作业车间调度问题_调度问题_06


(3)总机器负荷最小工序在不同机器上的加工时间是不同的,那么总的机器负荷随着不同的调度方案而不同。尽量使最大完工时间一样的情况下,减少所有机器的总消耗,可表示为

用python实现柔性作业车间调度基础数据 柔性作业车间调度问题_计算复杂性_07


(4)提前/拖期最小准时制的生产必须考虑交货期问题,工件完工时间越接近交货期,表明其交货期性能越好。一般用最大提前时间指标Ej表示工件Jj的交货期dj与其完成时间Cj的非负差值,即

用python实现柔性作业车间调度基础数据 柔性作业车间调度问题_调度_08


用最大拖期时间指标Tj表示工件Jj的完成时间Cj与交货期时间dj的非负差值,即

用python实现柔性作业车间调度基础数据 柔性作业车间调度问题_调度问题_09


最大提前时间最小和最大拖期时间最小分别可表示为

用python实现柔性作业车间调度基础数据 柔性作业车间调度问题_计算复杂性_10


以上几种性能评价指标较为常用。还有其他如考虑工件安装时间的性能评价指标或更加贴近生产成本的一些成本指标等。其中如果性能评价指标函数是完工时间的非减函数,则称为正规性能指标(regularmeasure),如f1、f2、f3、f4、f5;否则称为非正规性能指标,如E/T惩罚代价最小等

调度问题的解决算法

用python实现柔性作业车间调度基础数据 柔性作业车间调度问题_调度_11