柔性作业车间调度算法
  • 问题介绍
  • 应用场景
  • 算法特点
  • 在线测试
  • 商品评价


现实中,工厂为了满足定制化产品的需求,会采用作业车间的制造模式。这种制造模式采用小批量的生产加工方式,通过不同的工艺路线来生产不同的定制化产品,实现最大化的灵活性。作业车间调度问题(Job-shop Scheduling Problem, JSP)由此而来。这个问题是制造业领域中最重要也是最复杂的调度问题之一。它在诸多的制造流程中都有所体现,直接影响着工厂的生产时间以及生产成本。

在这个场景中,有一个代加工的工作集合J={Ji|i=1,2,3,...,n},每一个工件 需要按照预先设定的工艺路线进行加工Oi={Oij|j=1,2,...,ni},工艺路线由多道工序按顺序组合而成。加工工序的设备集合为M={Mi|i=1,2,...,m}。工序Oij可以被加工的设备集合为Mij,加工时间为ptij。这个场景要解决的问题是如何调度设备资源在实现工件加工需求的前提下满足相应的调度目标。本文考虑的调度目标为最小化生产周期(Makespan),即所有机器中最晚的完工时间。因为它是相关研究中最常被考虑的目标,直接反应了工厂生产时间的长短。柔性作业车间调度问题(Flexible Job-shop Scheduling Problem, FJSP)是JSP的拓展,与JSP不同的是工序在不同设备上的加工时间是不同的,Oij在设备Mk上的加工时间为ptijkFJSPJSP的一般形式,更加考验算法对设备资源的利用。




我们使用如上图所示的析取图和表格信息对FJSP进行说明。析取图用来刻画问题结构,表格信息用来展示问题信息。析取图中的节点代表着工序,有向边表示工序加工的前后顺序关系。如工件J1,它的工艺路线为O11,O12。表格中的信息表示工件在不同设备上的加工时间。为了方便理解,其中每种工序的可加工设备数量都为1。最终的调度结果我们使用下图的甘特图表示,其中横轴代表时间,纵轴代表机器编号,每个工序的开始时间和结束时间用条形块展示。

FJSP有大量的标准测试数据,以Brandimarte系列标准算例中的MK01为例


10 6 2
6 2 1 5 3 4 3 5 3 3 5 2 1 2 3 4 6 2 3 6 5 2 6 1 1 1 3 1 3 6 6 3 6 4 3
5 1 2 6 1 3 1 1 1 2 2 2 6 4 6 3 6 5 2 6 1 1
5 1 2 6 2 3 4 6 2 3 6 5 2 6 1 1 3 3 4 2 6 6 6 2 1 1 5 5
5 3 6 5 2 6 1 1 1 2 6 1 3 1 3 5 3 3 5 2 1 2 3 4 6 2
6 3 5 3 3 5 2 1 3 6 5 2 6 1 1 1 2 6 2 1 5 3 4 2 2 6 4 6 3 3 4 2 6 6 6
6 2 3 4 6 2 1 1 2 3 3 4 2 6 6 6 1 2 6 3 6 5 2 6 1 1 2 1 3 4 2
5 1 6 1 2 1 3 4 2 3 3 4 2 6 6 6 3 2 6 5 1 1 6 1 3 1
5 2 3 4 6 2 3 3 4 2 6 6 6 3 6 5 2 6 1 1 1 2 6 2 2 6 4 6
6 1 6 1 2 1 1 5 5 3 6 6 3 6 4 3 1 1 2 3 3 4 2 6 6 6 2 2 6 4 6
6 2 3 4 6 2 3 3 4 2 6 6 6 3 5 3 3 5 2 1 1 6 1 2 2 6 4 6 2 1 3 4 2


第一行表示数据集的总览信息,10 6 2分别表示共有10个工件,6个设备,平均每个工序有2个设备可以加工。

第二行至第十一行表示第一个工件至第十个工件的工艺路线,以第二行为例。第一个数字6表示工艺路线中包含6道工序。接下来2 1 5 3 4分别表示第一个工序可以被两台设备加工,第一台设备编号为1,加工时间为5,第二台设备编号为3,加工时间为4。依次类推下一组数据3 5 3 3 5 2 1表示的是第二个工序的加工信息,它可以被三台设备加工,第一台设备编号为5,加工时间为3,第二台设备为3,加工时间为5,第三台设备为2,加工时间为1









FJSP的实际应用场景覆盖十几个行业,比如汽车零部件的生产会经过多个作业车间进行不同工序的加工,芯片的制造流程也会经过几百道工序的处理,其他领域如工程机械,电子电器、包装印刷,军工等也有广泛的应用。