2018年度数学建模国赛B题

2018年度数学建模国赛B题
2018年度数学建模国赛B题

RGV动态调度模型

摘要:RGV是智能加工系统的中间环节,控制RGV的动态调度也就是控制了智能加工系统的工作流程。需要在四种不同的情况下对RGV进行调度分析:单工序、单工序有故障、双工序、双工序无故障。

单工序的情况下建立了三个模型:数学规划模型、单工序分层预测模型、单工序局部最优模型。数学规划模型将第i件物料的上料时间、下料时间、CNC编号等设为自变量,以RGV的15个初始状态、一台CNC上相邻处理的两件物料的上料时间关系等因素作为约束条件,以最后一件物料的上料时间最小为目标函数。但因为求解这种模型的程序时间复杂度较高,准确度较低,又建立了单工序分层预测模型和单工序局部最优模型,用算法模拟该智能加工系统的工作流程。单工序分层预测模型中,RGV每次判断执行请求的次序时,都会预先模拟系统向下选择两次,找到效率最高的一种方案。单工序局部最优模型是以发出请求的CNC与RGV之间的距离为衡量指标,优先选择距离最近的请求,如果距离一样,优先选择CNC编号为奇数的请求。三种模型的运行结果表明:系统工作效率由高到低依次是数学规划模型、单工序分层预测模型、单工序局部最优模型。但是数学规划模型只能算出前88件物料所用时间,8个小时内可以加工的总物料数目只能推测出来,准确度有待验证。因此判定单工序分层预测模型是三个模型中最优的模型,该模型下得到的第1组、第2组、第3组在8小时内分别可以完成的物料数目为357件、364件、344件。

单工序有故障的情况下,我们在单工序分层预测模型的基础上进行修改。将1%的故障率转化为每秒钟CNC发生故障的概率,然后产生一个[10,20]间的随机数作为CNC的维修时间,其他算法步骤与无故障的相同。得到的第1组、第2组、第3组在8小时内分别可以完成的物料数目为307件、336件、319件。

双工序的情况下,我们依然采用局部最优模型。与单工序不同的是,双工序模型中,当一个物料加工完第一道工序时,发出的请求不是下料而是加工第二道工序。我们假定在CNC加工的8小时不可以更改刀具,为了找到将CNC分配给第一道工序和第二道工序最合理的方案,我们遍历了所有可能的情况,从中选出系统工作效率最大的一种方案作为最优方案。每组的CNC最优安排方案都不止1种,为了更好的描述这些方案,我们引入了最优方案矩阵,第i行表示第i种方案,第j列表示CNC的编号为j。最后得到的第1组、第2组、第3组在8小时内分别可以完成的物料数目为251件、198件、244件。

双工序有故障的情况下,每一组从双工序模型中任意挑选一种CNC最优安排方案。然后将1%的故障转化为每件物料在加工过程中产生故障的概率,提前判定是哪些物料在加工过程中会发生故障。在会发生故障的物料的加工时间段里,随机选取一个时间点作为故障开始的时间,然后随机产生一个[10,20]间的数字作为设备维修时间。得到的第1组、第2组、第3组在8小时内分别可以完成的物料数目为220件、191件、225件。

关键字:数学规划,分层预测,局部最优,最优方案矩阵

RGV动态调度模型

一、问题重述

一套智能加工系统由8台CNC、一辆RGV、一条上料传送带和一条下料传送带组成。其中,RGV是一种在固定轨道上按照指令移动的智能车,它在这个系统中的功能有:将上料传送带上的生料放置到对应的CNC上,将CNC已加工好的熟料放入清洗槽中,将清洗好的成料放到下料传送带上。

图1 智能加工系统示意图

设定以下三种不同情况:

情况1:每种物料都只需要一道工序加工完成,每台CNC安装刀具相同,物料可以在任意一台CNC上完成加工。

情况2:物料需要两道工序加工完成。每台CNC在同一时间只能安装一种刀具且只能加工一个物料,每个物料的第一道和第二道工艺不能在相同的CNC上完成。

情况3:考虑CNC在加工过程中可能会发生故障的情况(故障概率约为1%),排除故障包括人工处理和未完成的物料报废两部分,排除故障时间介于10~20分钟之间,故障排除后CNC可立即开始工作。分别考虑一道工序和两道工序发生故障的情况。

根据以上三种情况,解决下面两个任务:

任务一:建立RGV动态调度模型,并给出相应的算法。

任务二:根据表1中的三组数据,检验任务一建立的模型的实用性和算法的有效性,并依此给出合理的RGV调度策略,并计算出这种策略下智能加工系统的工作效率,将具体结果分别填入附件二的Excel中。

表1:智能加工系统作业参数的3组数据表时间单位:秒

系统作业参数第1组第2组第3组RGV移动1个单位所需时间20 2318

RGV移动2个单位所需时间33 4132

RGV移动3个单位所需时间46 5946

CNC加工完成一个一道工序的物料所需时间560 580545

CNC加工完成一个两道工序物料的第一道工序所需时间400 280455

CNC加工完成一个两道工序物料的第二道工序所需时间378 500182

RGV为CNC1#,3#,5#,7#一次上下料所需时间28 3027

RGV为CNC2#,4#,6#,8#一次上下料所需时间31 3532

RGV完成一个物料的清洗作业所需时间25 3025

二、模型假设与符号说明

2.1 模型假设

1. 假设传送带运输生料和熟料的时间比RGV上下料的时间短,即每台CNC前面的传送带上一直保持有生料;

2. 假设初始状态下CNC都是空闲的;

3. 假设CNC更换刀具的时间可忽略不计;

4. 假设CNC设备故障发生的概率为1%;

5. 假设RGV在工作过程中不会发生故障;

6. 假设每一组工作的8小时内CNC不能更换刀具。

2.2 符号说明

符号含义

RGV移动1个单位所需时间

RGV移动2个单位所需时间

RGV移动3个单位所需时间

CNC加工完成一道工序所需时间

CNC加工两道工序物料时第一道工序所需时间

CNC加工两道工序物料时第二道工序所需时间

RGV为CNC1#,3#,5#,7#一次上下料所需时间

RGV为CNC2#,4#,6#,8#一次上下料所需时间

RGV完成一个物料的清洗作业时间

第i件物料的上料时间

编号为的CNC

z 判断CNC编号奇偶的0-1变量

时间效率

所有CNC工作的时间总和

三、问题分析

3.1单工序RNG调度分析

智能加工系统的工作主要是依靠RGV来协调。因此控制RGV执行请求的顺序就可以控制系统的工作流程。单工序物料的处理流程为:

上料→加工→从CNC下料→清洗作业→放至下料传送带这一件物料从CNC下料时间恰好为下一件物料的上料时间。

对于此类离散问题,首先考虑数学规划模型。该问题是希望智能加工系统的工作效率最大,即8小时内加工完成尽量多的物料。为了使数学规划模型便于求解,我们将求解目标转换为该系统完成n件物料加工所用时间最短(n为定值)。在完成根据附件Excel中给出的上料时间、CNC机器编号等要求解的问题,设未知量;再根据RGV初始的几个状态、第件物料的上料时间与第i+1件物料上料时间的关系、在同一台CNC上相邻加工的两件物料之间的时间关系建立约束条件。规划模型问题可以用Lingo求解,但是我们分析这种模型的时间复杂度会较高,因此n的值不能太大。但是我们了解到8小时内系统大约可以加工400件左右物料[1],因此n的值也不能太小,否则不能代表系统工作8小时的整体效率。

鉴于数学规划模型的时间复杂度较高,该模型并不能得到8小时内可加工的所有物料的件数和信息。因此我们希望可以用算法模拟该系统的工作流程。在RGV 选择执行哪一条请求时,可以根据发出请求的CNC与RGV的距离以及CNC编号的奇偶来判定,也可以通过预测系统的工作效率来判定。为此可以分别建立局部最优模型和分层预测模型。然后将表1中的数据代入到这两个模型中,根据每个模型所得出的8个小时内可加工的物料件数来判断模型的优劣。

3.2单工序有故障情况下的RGV调度分析

如果CNC以1%的概率出现故障,也就是说8小时内每台设备发生故障的概率为1%。在CNC发生故障的时候,正在这台CNC上加工的物料报废,而且需要维修10-20分钟。维修好之后CNC立即恢复工作。

单工序无故障情况下建立了3个模型,根据运行结果的比较可以比较出性能较好的模型——单工序分层预测模型,单工序有故障模型就在这个模型上进行改动。

与无故障模型相比,单工序有故障模型每秒都会判断有没有设备发生故障,这就需要将1%这个概率转化为每秒设备发生故障的概率[2]。如果判断到有设备会发生故障,接下来产生一个[10,20]间的随机数,这个数值作为故障设备的维修时间。

3.3 双工序RGV调度分析

双工序物料的处理流程为:

上料→第一道工序→下料→第二道工序→下料→清洗作业→放至下料传输带

与单工序相比,物料在加工第一道工序后,不需要RGV的清洗作业时间,而物料加

工第二道工序的过程与单工序物料加工过程一样。

当一件物料需要经过两道工序时,需要在不同的CNC上进行加工。我们假定一组工作的8小时内CNC不会更换刀具,也就是说每一组的物料在加工时,能完成第一道工序和第二道工序的CNC都是固定的。那么如何分配CNC将是我们面临的新的问题。

其实在用算法模拟双工序系统流程时,可以遍历CNC的所有可能情况(共种),输出每一种情况对应的加工的物料数目,数目最多的一组便是分配CNC的最佳方案。

3.4 双工序有故障情况下的RGV调度分析

这种模型下,故障发生概率为1%,设定为每件物料加工时会有1%的概率发生故障。当第i件物料进行加工时,会产生一个[0,99]的随机数,如果产生的数为0就认为现在会发生故障。而且物料在加工过程中的哪个时间点发生故障、维修故障需要的时间都是随机的。

四、模型建立与求解

4.1 单工序模型

4.1.1单工序规划模型

对于此类离散问题,首先考虑数学规划模型求解。

1 单工序规划模型的建立

假设表示第件物料的上料时间,表示编号为的CNC。

此题是希望智能加工系统的作业效率越高越好,即在8小时内加工完成的物料数目越多越好。但是由于规划模型的复杂度较高,不能处理较多数据,于是我们把衡量指标改为“加工完成n件物料所用的时间越短越好”,也就是“第件物料的上料时间越早越好”。

因此目标函数可以设为:

下面是对约束条件的求解。

①初始条件约束:不妨假设第1件物料在CNC1#工作台上加工,上料时间记为0,即:

那么为了使效率最大,第2件物料应该在CNC2#工作台上加工,且当第1件物料完成上料后,RGV可立即为第2件物料上料。则它的上料时间可以记为:

第三件物料应该在CNC3#工作台上进行加工,待RGV完成第2件物料的上料且移动1个单位后,可为第3件物料上料:

依次类推可以得到:

且为奇数

且为偶数

根据表1中第1组的数据,在第1件物料加工完成之前,至多可以完成15件物料的上料任务因此需要.

②第件物料的上料时间一定大于第件物料的上料时间+上料所用时间,用表示上料所用时间,即:

其中,在奇数编号和偶数编号的CNC上加工,上料所用时间不同。为了解决这个问题,引入0-1变量.

即为奇数时,,即上料所用时间为;为偶数时,,上料所用时间为,则可表示为:

③如果第件物料在编号为的CNC上加工,且下一个在上加工的是第件物料,那么:

2单工序规划模型的求解与检验

根据模型中的目标函数和3个约束条件,利用Lingo软件求解。在求解过程中我们发现,这种求解思路得到的时间复杂度为,非常高。当=20,即求解该智能加工系统加工完成20件物料时所需的时间时,可以运行出结果,但是=20这个样本太小,不能代表整体。然后我们增加的值,但是当增加时,程序的时间复杂度以指数形式上升,当=89时程序已经运行的非常慢难以得到结果。下面是单工序规划模型在给定的不同时计算出的时间(依据表1中的第1组数据)。

加工完成物料件数系统所用时间t(单位:s)

20 1596

50 3921

75 5893

80 6349

88 6917

根据以上所推算的时间,我们可以估算八小时内完成的物料件数N:

根据估算,8个小时内系统大约可以加工366个物料左右,而这个模型只能求解n=88的情况。我们认为,这个样本太小不能有效地代表整体,也就是说根据这个模型求解出的366这个数字是不准确的。因此这个模型的求解达不到要求。所以我们判定,单工序规划模型虽然提供了一种有效的求解思路,但是这个模型实用性较差。

因此,我们转换了一种思路,利用算法模拟[3]8小时内该智能加工系统的工作状况,建立了分层预测模型和局部最优模型。

4.1.2单工序分层预测模型

1单工序分层预测模型的建立

单工序分层预测模型以时间效率为衡量指标,我们将时间效率定义为:

其中,为[0,t]时间内8台CNC工作的时间总和。

如果RGV在时刻有个CNC的请求等待处理,RGV会考虑到所有的情况向下预测两层,即:在时刻RGV选择执行第个请求,假设完成这个请求用时,第个CNC完成物料加工用时。那么在时刻又会有个CNC的请求等待处理,接着RGV选择执行第个请求,假设RGV执行请求用时,第个CNC完成物料加工用时。计算这种情况下的时间效率:

其中,

计算出分别取不同的值时的种不同的情况,对所得的时间效率进行比较,目标函数设为:

然后找出对应的的取值,那么RGV在时刻应该执行第个请求。

RGV执行完时刻的请求后,下次选择请求的时候,重复此计算过程。

2 单工序分层预测模型的求解[4]

解决这个模型的核心思想如下图所示。即当有未完成的指令时,预测下面两层的时间效率,选取时间效率最大的一组,完成第一层的指令。

图2 单工序分层预测的算法流程

采用贪心算法解决这个模型,以8小时为限定时间,分别将表1中第1组、第2组、第3组的数据代入到程序中,可以分别得到三种RGV调度方案,三组8小时内分别可以加工的物料为:357件、344件、364件。

4.1.3单工序局部最优模型

1 单工序局部最优模型的建立

单工序局部最优模型中RGV在选择请求执行的时候有两个衡量指标:

①CNC与RGV的距离;

②CNC编号的奇偶。

当RGV进行选择的时候,指标①的优先级高于指标②。也就是当两个请求的指标①相同时,才考虑指标②,优先考虑CNC编号为奇数的请求。

假设RGV在t时刻处于空闲状态,且这一时刻有m个CNC发出的待处理的请求,这些CNC与RGV的距离分别为。此时目标函数为:

这时RGV会选择执行第个请求。

但是当存在时,RGV会首先选择编号为偶数的CNC发出的请求去执行。

2 单工序局部最优模型的求解[5]

单工序局部最优模型与单工序分层预测模型最大的不同在于RGV执行请求顺序所遵循的衡量指标不同。将这个模型用Java程序求解,具体流程如下图所示。

图3 单工序局部最优模型的算法求解流程

4.1.4 三种单工序模型的比较与总结

表3 单工序三种模型的比较

系统的作业效率可以用每小时加工的物料数目来衡量,单位:件数/小时。

表4 单工序三种模型系统效率对比

通过对已经建立的三种单工序模型的比较,我们发现单工序规划模型的系统作业效率是最高的,但是这个结果是根据前88件物料加工的情况推算得到的,其准确性仍有待考察。

单工序分层预测模型与单工序局部最优模型二者相比较,它们都是通过算法来模拟该智能加工系统的工作流程,因此准确性都比较高。而且,从系统作业效率来看,单工序分层预测模型的性能要更好一些。这是因为单工序局部最优模型仅仅是以当前时刻CNC与RGV的距离和CNC编号的奇偶为衡量指标,而单工序分层预测模型是预测了RGV之后两步的所有情况,从中取一个最优方案。

综合准确性和完成的物料数目两个因素考虑,判定单工序分层预测模型是建立的三个模型中的最优模型。因此我们将单工序分层预测模型所得到的具体结果填入Case_1_result.xls中。

在接下来将要分析的单工序有故障模型中,我们选择在最优的单工序分层预测模型上进行修改。

4.2 单工序有故障模型

4.2.1 单工序有故障模型的建立

与单工序分层预测模型相比,单工序有故障模型只是加了一步“判断这一时刻是否有CNC设备发生故障”。如果有设备发生故障,那么在这台设备上加工的物料报废,且这台CNC暂停工作10~20分钟。具体判断流程如下所示。

Step1:每秒生成一个范围在内的随机数。解释:8h内设备产生的故障为1%,那么1s设备产生故障的概率为

Step2: 将该随机数与CNC编号对比,如果产生的随机数恰好为某个CNC的编号,且这台CNC当前不处于维修状态,那么该CNC发生故障。

Step3:产生一个[10,20]之间的随机数,作为发生故障的CNC的停止工作时间。

4.2.2 单工序有故障模型的求解

在单工序分层预测模型求解的算法基础上进行修改,增加了“判断CNC是否会发生故障”的步骤,修改部分的流程图如下所示。

图4 单工序有故障模型算法的部分处理流程

根据算法模拟该智能加工系统,可以得到设备会发生故障的情况下的物料加工数目,故障率可表示为:

结果如下表所示。

表5 单工序有故障模型的求解结果

由表格可以看出,这些设备的故障率都在1%左右,这也验证了模型中对故障描述的正确性。

4.3 双工序局部最优模型

4.3.1 双工序局部最优模型的建立

在单工序局部最优模型的基础上,对模型进行些许改进。

双工序模型与单工序模型不同的地方在于:第一道工序完成后不需要经过RGV 的清洗作业时间,而且只有当第一道工序完成后才能执行第二道工序。

已经设定CNC在加工的8小时中不能更换刀具,也就是说8小时内每台CNC的功能是固定的。那么如何分配这8台CNC是影响结果的关键因素之一。

对于双工序模型来说,如果依然建立数学规划模型,约束条件会变得比较复杂,而且规划模型的程序时间复杂度很高,整体数据只能根据部分数据推测得来,所以数学规划模型的准确度也有待考察。因此在双工序模型中,我们舍弃了数学规划这个思路,只通过算法模拟的方式来找到最优解。

通过遍历所有的CNC分配方案,从中选取系统效率最高的结果。

4.3.2 双工序局部最优模型的求解与检验

运用Java程序求解这个模型,与单工序局部最优模型求解的不同之处在于:双工序模型需要建立两个队列,把不同的工序请求放在不同的队列中。双工序局部最优模型与单工序求解流程不同的地方如下图所示。

图5 双工序局部最优模型算法的部分处理流程

其实根据表1中3组数据里第一道工序和第二道工序的时间比值,可以大致推测出每一组CNC分配在第一道工序和第二道工序的数目,来检验模型结果的正确性。

加工第一道工序的时间(秒)加工第二道工

序的时间(秒)

/

预测第1道工序

与第2道工序的

CNC数目之比

第1组400 378 1.06 4:4

第2组280 500 0.56 3:5 / 4:4 第3组455 182 2.5 5:3

表6 第一道工序与第二道工序的CNC数目预测

通过Java程序求解得到的最优结果如下表所示。

第一道工序的CNC数目第二道工序

的CNC数目

8小时加工

的物料数目

系统工作效率

(件数/小时)

最优CNC

安排方案

数目

第1组 4 4 251 31.375 8 第2组 4 4 198 24.75 2 第3组 5 3 244 30.5 2

表7 双工序局部最优模型求解结果

实际求解结果与预测的结果相吻合,因此判断双工序局部最优模型是符合要求的。

为了表示每一组的NCN最优安排方案,引入方案矩阵的概念,将所有最优方案用一个矩阵表示,第i行表示第i种方案,第j列表示CNC的编号为j。矩阵中的值表示该CNC是执行第几道工序的。

例如:[1 1 2 2 1 2 2 2]表示这一组的最优CNC安排方案只有一种,且执行第一道工序的有CNC1#、CNC2#、CNC5#,其余的执行第二道工序。

第1组有8种CNC的分配方案都可以得到最优结果,将这8种最优的分配方案用方案矩阵表示如下所示:

第2组的CNC分配方案矩阵如下所示。

第3组的CNC分配方案矩阵如下所示。

4.4 双工序故障模型

4.4.1 双工序故障模型的建立

双工序故障模型可以在双工序模型求出的多种CNC最优方案中,挑选一种作为固定的CNC安排方案。

第1组的CNC安排方案:[1 2 2 1 2 1 1 2]

第2组的CNC安排方案:[1 2 1 2 1 1 2 2]

第3组的CNC安排方案:[2 1 1 1 2 1 1 2]

双工序故障模型与双工序模型的不同之处在于需要考虑哪件物料在加工过程中会发生故障、故障产生的具体时间、故障需要维修的时间。

时间轴如下图所示。

图6 双工序故障模型的时间轴

故障开始时刻是CNC加工时间段中的任意一个时间点(随机产生),故障持续时间是[10,20]间的一个随机数。

4.4.2 双工序故障模型的求解

双工序故障模型的算法求解中,与无故障的算法相比,只是增加了故障的产生时间、维修时间以及发生故障时的物料编号。增加的算法步骤流程图如下所示。

图7 双工序故障算法部分流程图求解得到的结果如下表所示。

加工完成的物

料数目系统工作效率

(件数/小时)

发生故障的

CNC数目

发生故障的概

第1组220 27.5 4 0.90% 第2组191 23.875 4 1.05% 第3组225 28.125 4 0.89%

表8 双工序故障模型得到的结果

五、模型评价

5.1模型优缺点

5.1.1模型优点

(1) 单工序无故障的情况下建立了3个模型,通过系统工作效率、结果准确性两个指标来比较,得到最优的单工序模型。

(2)用算法模拟智能加工系统整体工作流程,由下而上的解决问题,使建模问题更加清晰直观。

(3) 单工序分层预测模型向下预测了两步,从多种方案中选取一个效率最高的,最终选择的方案更具有说服力。

(4) 物料需要两道工序加工的情况下,CNC的安排方案我们考虑了所有的情况,每一种情况都运行出了结果,系统工作效率最高的情况对应的CNC安排方案一定是最优的安排方案。

(5) 除了数学规划模型外,所有的模型都是基于单工序分层预测模型和单工序局部最优模型建立的,都只是在基本模型上加了一些必要的步骤。而这两个基本模型都是经过数据检验的,是符合要求的。因此模型都比较稳定。

(6) 引入了最优方案矩阵来描述双工序模型中的多种最优CNC安排方案,使安排方案更加清晰、具有可读性。

5.1.2模型缺点

(1) 没有考虑CNC在工作的8小时中会更换刀具的复杂情况。

(2) 用算法模拟系统工作流程虽然清晰直观,但是从单工序数学规划模型可以看出,算法模拟得到的结果并不是最优的。

(3) 只考虑了物料正在加工时设备发生故障的状况,没有考虑设备处于空闲状态时发生故障的情况。

5.2 模型改进

虽然求解数学规划模型的程序的复杂度较高,我们难以得到准确的结果,但根据单工序三种模型的比较可以得知,单工序规划模型的求解结果要优于算法模拟系统工作所得到的结果。因此如果研究如何改进求解规划模型的算法、如何降低其时间复杂度,意义会更加重大。

在双工序规划模型中,我们没有考虑CNC随时更换刀具的情况。虽然现在工厂中随时更换刀具的情况并不常见,但是在建模中可以建立出CNC随时更换刀具的情况,将其与CNC不能更换刀具的最优情况进行对比,如果更换道具的模型求解得到的结果更优,那么“CNC如何更换刀具”可以使未来的研究方向之一;如果CNC随时更换刀具模型得到的结果还没有不能更换刀具的结果优,那日后就无需在CNC更换道具这个问题上下功夫研究。

参考文献

[1]丁伟.立体物料存储RGV控制系统的设计[J].电工技术,2018,(06):15-17+20.

[2]刘俏.RGV系统设计与应用[J].物流科技,2016,(05):51-54.

[3]陈华,孙启元.基于TS算法的直线往复2-RGV系统调度研究[J].工业工程与管理,2015,(05):80-88.

[4]陈华.基于分区法的2-RGV调度问题的模型和算法[J].工业工程与管

理,2014,(06):70-77.

[5]张应强,魏镜弢,王庭有.RGV控制系统设计研究[J].河南科学,2012,(01):94-96.

附录

相关主题
相关文档
最新文档