智能 RGV 动态调度策略的研究math.tongji.edu.cn/model/docs/2018huash.pdf · 3. rgv...

22
1 智能 RGV 动态调度策略的研究 摘要 工厂的设备利用率,即设备的使用效率,是指设备的实际使用时间与设备的 计划使用时间的比值,是反映设备工作状态以及生产效率的重要指标。提高设备 的利用率,等于相对降低了产品的生产成本,直接关系到企业的经济效益。因此, 设备利用率在企业的生产决策中是一个重要的考量指标。 随着自动化行业的不断发展,智能化的设备逐步的渗入到我们的生产生活中。 轨道式自动引导车(RGV)就是其中之一。为了帮助工厂和企业更好的利用 RGV 进行工业生产,需要合理规划 RGV 的动态调度策略,以期在设备资源有限的条件 下发挥其最大的经济效益。 为了实现多阶段决策过程的最优化,本文在依据工业生产的一般规率对本问 题进行了不同情况的详细划分,并运用动态规划、贪心算法、剪枝算法以及遗传 算法等方法对本问题的一般性模型进行了求解。并对使用这几种方法求解出的模 型各有什么优缺点进行了探讨。 问题一:根据 RGV 智能加工系统的组成以及作业流程,可以看出此过程满足 多阶段决策问题的基本特征。因此采用动态规划的方法,将多阶段的过程,转化 为一系列单阶段问题,利用各阶段之间的关系进行求解。除此之外,我们还从计 算机编程的角度,利用贪心算法和剪枝算法进行了近似最优解的求解。 问题二:基于问题一所建的普适性模型,我们针对表二中的三组不同的系统 参数,分别给出了其最优的调度策略以及系统的作业效率,并讨论了模型的实用 性以及算法的有效性。经研究发现, 关键词:动态规划、贪心算法、剪枝算法、遗传算法

Transcript of 智能 RGV 动态调度策略的研究math.tongji.edu.cn/model/docs/2018huash.pdf · 3. rgv...

1

智能 RGV 动态调度策略的研究

摘要

工厂的设备利用率,即设备的使用效率,是指设备的实际使用时间与设备的

计划使用时间的比值,是反映设备工作状态以及生产效率的重要指标。提高设备

的利用率,等于相对降低了产品的生产成本,直接关系到企业的经济效益。因此,

设备利用率在企业的生产决策中是一个重要的考量指标。

随着自动化行业的不断发展,智能化的设备逐步的渗入到我们的生产生活中。

轨道式自动引导车(RGV)就是其中之一。为了帮助工厂和企业更好的利用 RGV

进行工业生产,需要合理规划 RGV 的动态调度策略,以期在设备资源有限的条件

下发挥其最大的经济效益。

为了实现多阶段决策过程的最优化,本文在依据工业生产的一般规率对本问

题进行了不同情况的详细划分,并运用动态规划、贪心算法、剪枝算法以及遗传

算法等方法对本问题的一般性模型进行了求解。并对使用这几种方法求解出的模

型各有什么优缺点进行了探讨。

问题一:根据 RGV 智能加工系统的组成以及作业流程,可以看出此过程满足

多阶段决策问题的基本特征。因此采用动态规划的方法,将多阶段的过程,转化

为一系列单阶段问题,利用各阶段之间的关系进行求解。除此之外,我们还从计

算机编程的角度,利用贪心算法和剪枝算法进行了近似最优解的求解。

问题二:基于问题一所建的普适性模型,我们针对表二中的三组不同的系统

参数,分别给出了其最优的调度策略以及系统的作业效率,并讨论了模型的实用

性以及算法的有效性。经研究发现,

关键词:动态规划、贪心算法、剪枝算法、遗传算法

2

一、问题重述

本题中所示的智能加工系统主要由 8 台计算机数控机床、1 量自动式导引车、

1 条 RGV 直线式轨道以及上下料传送带各一条组成。如下图所示:

工件加工过程由 4 部分组成:

1. RGV 在上了传送带中拿起工件上料到 CNC

2. CNC 对工件进行加工

3. RGV 将工件下料

4. RGV 清洗工件并将工件放置下料传送带

RGV 能完成下完成移动、上下料、清洗物料这三钟操作,并满足如下条件:

1. RGV 且在同一时间只能进行一种操作

2. 移动位移不同 RGV 所需时间不同

3. RGV 移动到相对位置的 CNC 时看作位移相同

4. 工件实际清洗时间是很短的,远小于机械手将成料放到下料传送带上的时

5. RGV 初始状态位于 CNC1 和 CNC2 的正中间

6. RGV 在执行完一项工作后立即执行下一项指令,若此时没有接收到任何信

号则 RGV 在原地等待

CNC 能完成零件的加工工作,并满足如下条件:

1. CNC 在加工过程中不得更换刀具,需要两道加工工序的物料不得在同一台

CNC 上加工完成,且两段工序的加工时间不同

2. 初始所有的 CNC 均处于闲置状态

3

3. 偶数编号的 CNC 的上下料时间要大于奇数编号的 CNC

4. CNC 在执行完一项加工任务之后,立即向 RGV 发出请求信号,若 RGV 不

能及时到达,则 CNC 出现等待

基于上述智能加工系统,研究以下问题:

问题(1):在物料加工过程中有三种具体情况:一道工序的物料加工作业情况、

亮道工序的物料加工作业情况、在加工中发生故障的情况(概率约为 1%)。针对

以上三种情况,对一般的物料加工问题进行研究,给出 RGV 的动态调度模型以及

求解算法。

问题(2):将示例中给出的三组作业参数带入问题一中求出的物料加工的一般

模型,检验模型的实用性和算法的有效性,并给出针对这三组作业参数的 RGV 的

调度策略和作业效率。

4

二、问题分析

问题一:

问题一:根据 RGV 智能加工系统的组成以及作业流程,可以看出此过程满足

多阶段决策问题的基本特征。因此采用动态规划的方法,将多阶段的过程,转化

为一系列单阶段问题,利用各阶段之间的关系进行求解。除此之外,我们还从计

算机编程的角度,利用贪心算法和剪枝算法进行了近似最优解的求解。

我们首先考虑一道工序的物料加工情况。在该种情况下,每个物料的加工可

以由任何一台 CNC 独立的完成。为使得加工一定数目的物料所用的总时间最短,

当 RNG 在同时收到多台 CNC 的请求时需要选择一台 CNC 作为新的决策点,并使得

从工作开始到第 k 个物料加工完成所用的总时间最短,即使得每一层子问题达到

最优。同理,第 k+1 个阶段的决策方法也是如此,以此类推直到完成规定数目的

产品加工。

其次,我们再考虑两道工序的物料加工情况。在此情况下,每个物料需要两

台装有不同刀具的 CNC 先后加工完成。基于实际的工厂生产情况的考虑,我们假

设在整个工作周期内,CNC 不得更换刀具类型。因此在整个工作周期开始之前,

每台 CNC 上所安装的刀具类型都已经固定。由于加工同一个物料的 CNC 有两台,

我们可以将此问题视为一个柔性作业车间调度问题 (FJSSP),即完成同一项工作的

机器可能有多台。FJSSP 由两个子问题组成,第一个子问题是将一系列可选的机器

分配给指定的工序,第二个子问题是计算分配给指定机器的工序序列的完工时间。

我们采用遗传算法进行 FJSSP 问题的求解。

最后,我们再考虑 CNC 出现故障的概率。在此种情况下,每台 CNC 发生故障

的概率为 0.01,且如果发生故障则该台 CNC 需要暂停当前的物料加工,进行 10-20

分钟的人工维修,同时正在加工工件无法继续加工。

问题二:

此问题主要用于验证问题一模型的实用性以及算法的合理性。

5

三、模型假设

1. 对于两道工序的物料加工作业情况,在 8 小时工作周期开始之前每台

CNC 上安装的刀片种类就固定了,且在整个工作周期内不允许更换刀

片。

2. RGV 在到达 CNC 处后依次进行下料、上料以及清洗操作。

3. 在 8 小时工作周期内,上下料传送带以及 RGV 能够保持正常工作不发

生故障。

4. RGV 的每次执行操作的用时与时间参数一致。

5. 每个 CNC 一旦加工完毕,会立即向 RGV 发出请求。

6. 假设 RGV 小车能立即对收到的指令作出相应,忽略 RGV 小车的反应

时间。

7. 人工修理 CNC 的时候,不会对其他 CNC 以及 RGV 的正常工作造成影

响。

8. 上下料传送带能够在整个工作周期内保证及时的传送,不会引起 RGV

的等待。

6

四、符号说明

符号 意义

K 阶段变量

𝒖𝒌 第 k 个阶段的决策响应 CNC 编号

𝒊 CNC 编号

𝒕上下料(𝒊) 第𝑖台 CNC 所需的上下料时间

𝒕清 清洗熟料时间

𝒕响 从第 k 阶段的决策时间点到第 k+1 阶段的决策

时间点中间经历的时间

𝒕移(𝒌) 阶段 k 中 RNG 的移动时间

𝒙𝒌(𝒊) 第𝑖台机器在第𝑘阶段开始时的剩余时间

𝒕加 单阶段生产过程中 CNC 的加工时间

𝒇𝐤(𝐱𝐤) 从工作周期开始到第 k 阶段的决策时间点的总

时间

𝒕移动(𝒊) 双阶段生产问题中 RGV 第一次移动到编号为𝒊

安装一阶段刀具的 CNC 面前的时间

𝒕加𝟏 双阶段生产过程中,工序 1 所用的加工时间

𝒕加𝟐 双阶段生产过程中,工序 2 所用的加工时间

𝒕移𝟏 RGV 移动 1 个单位所需时间

7

𝒕移𝟐 RGV 移动 2 个单位所需时间

𝒕移𝟑 RGV 移动 3 个单位所需时间

𝒕上下料奇 RGV 为奇数编号的 CNC 上下料的时间

𝒕上下料偶 RGV 为偶数编号的 CNC 上下料的时间

𝐧𝟏(𝒊) 双阶段生产过程中,第𝑖台 CNC 第一阶段

产品的生产个数理论值

𝒏𝟐(𝒊) 双阶段生产过程中,第𝑖台 CNC 第二阶段

产品的生产个数理论值

N 8 台 CNC 最终产品的生产个数理论值

num1 双阶段生产过程中,安装第一种刀具的

CNC 的数目

num2 双阶段生产过程中,安装第二种刀具的

CNC 的数目

𝒕移(𝐢, 𝐣) 从编号为𝐢的 CNC 移动到编号为𝐣的 CNC 所

用的时间

𝑵 表示遗传算法中编码的第

𝑁位

𝐂(𝐍) 表示遗传算法中编码的第

𝑁位的值

𝑰𝟏 表示用于第一阶段生产的CNC编号的集合

𝑰𝟐 表示用于第二阶段生产的CNC编号的集合

𝒕故 排除故障所用的时间

𝒕理(𝑵) 生产 N 各产品所需的理论时间

8

五、单阶段生产过程模型

5.1 问题分析及模型选取

问题一的目标是求得科学合理的 RGV 调度模型,使得 CNC 的设备利用率达到

最高,在有限的 8 小时工作周期内加工完的产品数目最多。在有限的时间内生产

产品的数目最多与生产一定数目的产品所消耗的时间最短互为对偶问题。根据对

偶理论中的最优准则定理,可知若原始问题和对偶问题均存在最优解,则原始问

题与对偶问题在取各自的最优解时,目标函数值相等。因此,我们可以将在有限

时间内使得生产的产品数目最多的问题转化为求解生产数目为 n 个产品所用的最

短时间以及相应的调度策略。

我们将 RGV 做出每一次调度决策的时刻作为时间节点,将整个工作过程划分

为 n 个阶段。因此,此问题可以看作是一个多阶段决策过程的优化问题,可以采

用动态规划的方法,寻找各个阶段之间的关系进行求解。

5.2 模型的建立及求解

5.2.1 参数的实际意义

状态变量 x:表示在每个阶段开始时,8 台 CNC 的剩余时间。

决策变量 u:表示 RGV 此次决策决定要响应的 CNC 的编号。

阶段变量 k:表示当前是第 k 个阶段,即完成此阶段后共生产了 k 个熟料。

5.2.2 状态转移方程的求解

在 RGV 和 CNC 工作的过程当中,RGV 和 CNC 的时间关系如下图所示:

图(1)RGV与 CNC 的时间关系

由 RGV 和 CNC 的时间关系可知,从第 k 阶段的决策时间点到第 k+1 阶段的决

策时间点中间经历的时间为:从第 k 阶段的决策时间点到第 k 阶段第 k 阶段决策机

9

器开始上料的时间点的时间差(记为𝑡响),加第 k 阶段决策机器上下料的时间𝑡上下料

以及 RGV 清洗熟料的时间𝑡清。

若 RGV 从第 k-1 阶段决策机器到第 k-1 阶段决策机器的移动时间(即第 k 阶段

的移动时间),大于第 k 阶段的决策机器的剩余时间,则 CNC 需在进行完上一阶段

的加工工作之后等待 RGV 的到来。反之,RGV 需要在移动到决策 CNC 之后等待该

CNC 上一个阶段的加工过程结束。因此,𝑡响取 RGV 从第 k-1 阶段决策机器到第 k-1

阶段决策机器的移动时间(即第 k 阶段的移动时间),以及第 k 阶段的决策机器的

剩余时间中较大的那一个。

状态转移方程反映的是第 k 个和第 k+1 个阶段状态的关系。被决策响应的机器

和未被决策的机器状态转移方程有所不同。经过上述分析,可以得到如下方程。

在阶段 k 中未被决策响应的机器的状态转移方程:

𝑥𝑘+1(𝑖) = 𝑚𝑎𝑥 {0, 𝑥𝑘(𝑖) − 𝑚𝑎𝑥 [𝑡移(𝑘), 𝑥𝑘(𝑢𝑘)] − 𝑡上下料(𝑢𝑘) − 𝑡清}

对于阶段 k 中被决策响应的 CNC,首先既然该 CNC 能够发出上下料请求,则

该 CNC 的上一加工过程一定已经完成。RGV 在到达该 CNC 处之后,依次执行下料、

上料、清洗、新一轮决策这四项操作。因此在第 k+1 个阶段的决策时间点上,该

台 CNC 的剩余时间应为𝑡加 − 𝑡清。

在阶段 k 中被决策响应的机器的状态转移方程:

𝑥𝑘+1(𝑢𝑘) = 𝑡加 − 𝑡清

5.2.3 目标函数的求解

动态规划的思想在于将生产指定数目的产品所用的总时间最小化这一总体目

标的求解,转化为求解子问题的最优解,并保存子问题的最优解。这些子问题往

往不是相互独立的,在求解下一层字问题的最优解时,可以使用之前求得并保存

的上一层子问题的最优解,从而避免了有些子问题的重复计算。

我们的目标函数是从整个工作周期的开始时刻到每一个阶段的决策时间点的

时间,均为在截止到上一阶段决策时间点所用时间最短的情况上所能做的所有决

策中,所能达到的最小值。

在 5.2.2 中已经得出从第 k 阶段的决策时间点到第 k+1 阶段的决策时间点中间

经历的时间为:𝑚𝑎𝑥 [𝑥𝑘(𝑖), 𝑡移(𝑘)] + 𝑡上下料 + 𝑡清。

所以可以得出从开始到第 k+1 阶段的决策时间点所经历的时间(记为

𝑓k+1(xk+1)),与从开始到第 k 阶段的决策时间点所经历的时间(记为𝑓k(xk))之间

的递推关系式:

10

𝑓k+1(𝑥) = 𝑚𝑖𝑛 { 𝑚𝑎𝑥 [𝑥𝑘(𝑖), 𝑡移(𝑘)] + 𝑡上下料 + 𝑡清 + 𝑓k(xk)}

即为目的函数。

六、双阶段生产过程模型

6.1 问题分析及模型选取

柔性车间调度问题,简称 FJSSP,是组合优化和生产管理领域内失分重要的研

究课题,它是经典的作业车间调度问题(JSSP)的延伸且被认为是强 NP-hard 问题。

它与传统的 JSSP 问题的区别在于,对于传统的 JSSP 问题,一项工作由特定的某台

机器完成。而 FJSSP 问题,完成一项工作的加工机器可能有多台。FTSSP 问题由两

个子问题组成,第一个问题是将一系列可选的机器分配给制定的工序,的二个子

问题是计算分配给指定机器的供需序列的完工时间。

FJSSP 问题还应当满足以下假设:每道工序每次只可以被一台机器加工;每道

工序的处理时间因机器而异,且不同的机器相互独立;每道加工工序不可中断;

加工某工件的机器准备时间已被考虑在相应的加工时间里;工件在不同机器间的

转移时间已被考虑在加工时间里。FJSSP 问题的目标函数是实现最大完工时间Cmax的最小化。

遗传算法是一种解决大规模计算问题的全局搜索方法,它是受自然界中生物

进化的启发而提出的。通常,被解决问题的一个解被称作一条染色体或一个个体,

每个个体都有自己的适应度值。通过全局搜索(GS)、局部搜索(LS)相结合的方式来

生成初始种群的大部分个体,再通过随机搜索(RS)来生成部分个体以增加种群的基

因多样性。遗传算法以迭代的方式运行,每迭代一次代表了种群的一代。通过交

叉、变异来搜索尽可能多的尽可能优秀的解,通过适应度计算和选择来选择更优

秀的个体,进而完成一代的进化。一直重复这种搜索过程,直到在时间或求解质

量方面满足给定条件为止。

在本题目中,每台 CNC 在整个生产周期开始之前所安装的刀片类型就已经固

定,所以工序一和工序二均可能由装有相应刀片的 CNC 加工完成。将上下料时间、

清洗时间、以及转移时间经过简化加到每道工序的加工时间中,不难看出本问题

满足 FJSSP 问题的结构组成以及基本假设,可以视为一个 FJSSP 问题。我们拟采用

遗传算法来解决此 FJSSP 问题。

6.2 模型建立及求解

6.2.1 两种 CNC 数目以及位置的确定

在采用遗传算法进行问题求解之前,我们首先需要确定两种 CNC 各自的数目,

以及安装的位置。确定数目以及位置的原则是,使得在理想情况下,这 8 台 CNC

11

在一个 8 小时的生产周期内所生产的产品总数最多。

理想情况的具体描述为:在这 8 小时的工作周期内,每台 CNC 均连续不间断

的工作;除了 RGV 第一次移动到安装一阶段刀具的 CNC 面前的时间外,不考虑其

他的 RGV 移动时间;不考虑一阶段产品的生产情况对于二阶段生产的影响。

因为安装第一种刀具的 CNC 与安装第二种刀具的 CNC 加工过程不同,所以它

们在理想情况下,一个工作周期内所能生产的产品数目的计算公式也有所不同。

对于安装了第一种道具的 CNC,加工一个一阶段产品所需要的总时间包括 RGV 上

料时间、第一道工序的加工时间、RGV 下料时间;对于安装了第二种道具的 CNC,

加工一个二阶段产品所需要的总时间包括 RGV 上料时间、第二道工序的加工时间、

RGV 下料时间以及物料清洗时间。

若编号为𝑖的 CNC 安装了第一种刀具,则在这 8 小时的生产周期内,理想情况

下共能够生产的一阶段产品的数目(记为n1(𝑖))为:

n1(𝑖) = (28800 − t移动(𝒊)) ÷ (𝒕上下料

(𝒊) × 2 + 𝒕加𝟏)

若编号为𝑖的 CNC 安装了第二种刀具,则在这 8 小时的生产周期内,理想情况

下共能够生产的二阶段产品的数目(记为n2(𝑖))为:

n2(𝑖) = 28800 ÷ (𝒕上下料(𝒊) × 2 + 𝒕加𝟐 + 𝒕清)

其中,𝒕移动(𝒊) = {

𝒕移𝟏 (𝑖 = 1,5)

𝒕移𝟐 (𝑖 = 2,6)

𝒕移𝟑 (𝑖 = 3,7)

𝒕上下料(𝒊) = {

𝒕上下料奇 (𝒊 = 𝟏, 𝟑, 𝟓, 𝟕)

𝒕上下料偶 (𝒊 = 𝟏, 𝟑, 𝟓, 𝟕)

由此可以得到,理想情况下双阶段生产过程中,8 台 CNC 最终产品的生产个

数理论值:

n = 𝑚𝑖𝑛( ∑ n1(𝑖)

𝑖=一类 CNC编号

, ∑ n2(𝑖)

𝑖=而类 CNC编号

)

经分析可知,8 台 CNC 所生产的最终产品的总数为两阶段产物理论数量较小

的那一个,因此要想使得最终产品的总数更多,需要合理的分配两种 CNC 的数目,

使得两阶段的产物数目近似相等,即∑ n1(𝑖)𝑖=一类 CNC编号 = ∑ n2(𝑖)𝑖=而类 CNC编号 。

经计算发现,由于 RNG 的移动时间与两阶段的产品加工时间相比过小,由

∑ n1(𝑖)𝑖=一类 CNC编号 = ∑ n2(𝑖)𝑖=而类 CNC编号 可以推出两种 CNC 的数目 num1 与

12

num2 的关系为:

𝑛𝑢𝑚1

𝑛𝑢𝑚2=𝒕上下料

(𝒊) × 2 + 𝒕加𝟐 + 𝒕清

𝒕上下料(𝒊) × 2 + 𝒕加𝟏

对于两种 CNC 的位置排布问题,我们有如下排布原则:

(1)使得每一个二道工序 CNC 移动到到每一个一道工序的距离之和最小。即

求得一种 CNC 排布使得∑ ∑ 𝒕移(𝐢, 𝐣)𝑖=而类 CNC编号𝑖=一类 CNC编号 取得最小值。

(2)由于一道工序CNC与二道工序CNC加工次数以及上下料次数的总和一致,

所以数目较少的那一种 CNC 平均上下料次数更多。因此需要将数目较少的那一种

CNC 排布在上下料时间较短的那一侧,即技术奇数编号。

(位置排布的 C 语言代码见附录。)

6.2.2 使用遗传算法进行模型的求解

选取迭代次数为 25,遗传算法的主要步骤如下图流程所示:

Step1:随机生成初始种群。

每条染色体通过编码来形成,具体的编码方式如下:

13

C(N) =

{

i(N) (N ≤ 𝑛𝑢𝑚1)

𝑟𝑎𝑛𝑑(𝐼1) ((𝑁 − 𝑛𝑢𝑚1)

2= 0)

𝑟𝑎𝑛𝑑(𝐼2) ((𝑁 − 𝑛𝑢𝑚1)

2= 1)

其中,i(N)表示安装第一道工序刀具的 CNC 的编号从小到大排列为第 N 位的

CNC 编号。𝑟𝑎𝑛𝑑(0,… , 𝑛𝑢𝑚1)表示从 0 到𝑛𝑢𝑚1组成的集合中随机挑选一个数。

以上编码方式的具体含义为:第 N 位的编码值表示当前正在执行的第 N 道工

序是在哪一台 CNC 上执行的。我们规定前𝑛𝑢𝑚1道工序的执行机器为安装了第一道

工序刀具的 CNC,并且按照编号从小到大的顺序执行。从第(𝑛𝑢𝑚1+1)位开始按

照一次第一道工序、一次第二道工序的顺序排列。(𝑁−𝑛𝑢𝑚1)

2= 0则表示第 N 位执行

的是第一道工序;(𝑁−𝑛𝑢𝑚1)

2= 1则表示第 N 位执行的是第二道工序。若第 N 位执行

的是第一道工序则其编码为从执行第一道工序的 CNC 编号的集合中任意选取一个

作为执行本次工序的 CNC 编号;同理,若第 N 位执行的是第二道工序则其编码为

从执行第二道工序的 CNC 编号的集合中任意选取一个作为执行本次工序的 CNC 编

号。

为使编码含义的描述更为清晰,在此以一段具体的编码为例(假设本次生产

过程共用到 4 台 CNC 用于第一道工序、4 台用于第二道工序。):

编码C(N):1 2 3 4 1 5 2 6 3 7 4 8 5 1 6 2 7 3 8 4

位数 N :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

(1)N=1~4:RGV 依次移动到 1、2、3、4 号 CNC 前为其进行上料操作并开始

第一道工序。

(2)N=5:RGV 移动到编号为 1 的 CNC 前,执行下料及上料操作并开始第一

道工序。

(3)N=6:RGV 移动到编号为 5 的 CNC 前,执行上料操作,并开始第二道工

序。N=7~12 与 N=5、6 的过程类似。

(4)N=13: RGV 移动到编号为 5 的 CNC 前,依次执行下料、上料及清洗操作,

此时第一个两阶段产品加工完成。此后,每执行一次第二道工序均有一个两阶段

产品加工完成。

具体过程如下图流程所示:

14

Step2:计算每条染色体的适应度值。

进化论中的适应度,是表示某一个体对环境的适应能力,也表示该个体繁殖

后代的能力。遗传算法的适应度函数也叫评价函数,是用来判断群体中的个体的

优劣程度的指标,它是根据所求问题的目标函数来进行评估的。

由 Step1 中的编码含义分析可知,对于有 4 台 CNC 用于第一道工序的问题而

言,从 N=13 开始,N 每增加 2 都有一个新的产品生产完成。由此,我们可以推出

生产完的产品个数 k 与位数 N 之间的关系:

N = 2 × (k + 𝑛𝑢𝑚1) + 𝑛𝑢𝑚1

染色体的适应度的评判标准是:生产完第 k 个工件时的完成时间,完成时间

越短说明个体的适应度越高。

适应度值的计算方法与单阶段的生产过程的目标函数类似。

Step3:根据每条染色体的适应度值挑选优秀的个体。

根据 Step2 中计算出的每个个体的适应度,采用冒泡排序的方法,按照完成第

k 个工件所用时间由短到长进行排序。选取时间最短的 5 个个体作为优秀个体,并

用它们作为新种群的母体进行繁衍。

Step4:经过交叉和变异得到新的个体。

1.交叉:

所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。

本问题中采用最常用的单点交叉的算法。即将染色体编码的中间点作为交叉点,

将该点前或后的两个个体的部分结构进行互换,并生成两个新个体。

交叉的具体过程如下图所示。即从 Step3 中挑选出的优秀个体中任意挑选两条

染色体(记为染色体 1 和染色体 2)。取染色体 1 编码的前半段与染色体 2 编码的

后半段,以及染色体 2 编码的前半段与染色体 1 编码的后半段进行组合,形成新

的个体。由于第三步中选出了 5 个优秀个体,因此经过染色体交叉后可以形成 25

条新的染色体。

2.变异:

变异算子的基本内容是对群体中的个体串的某些基因座上的基因值作变动。一

般来说,变异算子操作的基本步骤如下:

15

(1)对群中所有个体以事先设定的变异概率判断是否进行变异

(2)对进行变异的个体随机选择变异位进行变异。

在本问题中,我们选取变异概率为1

5。变异的方法为通过随机数,随机的产生

染色体号、变异位置以及目标值,从而决定了发生变异的是哪一个个体、是个体

编码的那一位以及变异为何值。

Step5:进行种群的更替并进入下一次迭代。

七、考虑机器故障模型

7.1 问题分析及模型选取

在系统的实际运作过程中,无法保证机器不出现故障。因此,合理的规划在

机器出现故障的情况下 RGV 的调度策略,可以是的模型更贴近于现实情况,将由

于机器故障造成的工厂经济损失降低到最小。

本问题在前两问模型的基础上,增加了 CNC 出现故障的可能性。且据统计,

CNC 出现的概率为 1%。若 CNC 在加工过程中出现故障,则需要人工排除故障,此

过程耗时 10~20 分钟。且未加工完成的物料报废。

7.2 模型的建立与求解

本问题中关于 RGV 的调度问题的思路与单阶段生产过程模型以及双阶段生产

过程模型一致。区别在于第 k 个阶段 RGV 作出决策时到第 k+1 个阶段 RGV 做出决

策的这一段时间内,有 1%的概率当前的决策响应 CNC 发生故障。我们用来判断此

过程中,决策响应 CNC 是否发生故障的方法是在决策做出之后,生成一个 1~100

的随机数(记为 rand),如果生成的随机数为 1,则在此过程中决策响应 CNC 发生

了故障。

若 CNC 发生故障,则有:

𝒙𝒌(𝒖𝒌) = 𝒕故

此时的 RGV 需要进行新一轮的决策。

16

八、问题二

本问题主要用于验证上述 3 种模型的实用性以及算法的有效性,并求出 RGV

的调度策略以及系统的工作效率。题目中给出了 3 组智能加工系统作业参数,如

下表所示:

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

系统作业参数 第

1 组

2 组

第 3

RGV 移动 1 个单位所需时间 20 23 18

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

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

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

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

400 280 455

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

378 500 182

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

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

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

8.1 单阶段生产过程模型验证

8.1.1 第一组参数

将第一组参数带入到单阶段生产过程模型中,求得在一个 8 小时的工作周期

内,可以生产的产品数最多为 383 件。(最佳调度策略见附表)。

工作效率的计算方法如下:

e =生产产品所需的理论时间𝒕理(𝑵)

8台 CNC所拥有的全部时间

17

其中,8台 CNC所拥有的全部时间为230400.

𝒕理(𝑵) = 𝑵 × (𝒕加 + (𝒕上下料奇 + 𝒕上下料偶) ÷ 2)

经计算,系统的工作效率为:98%

8.1.2 第二组参数

将第一组参数带入到单阶段生产过程模型中,求得在一个 8 小时的工作周期

内,可以生产的产品数最多为 360 件。(最佳调度策略见附表)。

经计算,系统的工作效率为:95.7%

8.1.3 第三组参数

将第一组参数带入到单阶段生产过程模型中,求得在一个 8 小时的工作周期

内,可以生产的产品数最多为 392 件。(最佳调度策略见附表)。

经计算,系统的工作效率为:97.7%

8.2 双阶段生产过程模型验证

8.2.1 第一组参数

将参数代入双阶段生产过程模型可得:

进行第一道工序的 CNC 的个数有 4 台、其编号分别为 1、3、5、7。

进行第二道工序的 CNC 的个数有 4 台、其编号分别为 2、4、6、8。

在一个 8 小时的工作周期内,可以生产的产品数最多为 253 件。

8.2.2 第三组参数

将参数代入双阶段生产过程模型可得:

进行第一道工序的 CNC 的个数有 4 台、其编号分别为 1、3、5、7。

进行第二道工序的 CNC 的个数有 4 台、其编号分别为 2、4、6、8。

在一个 8 小时的工作周期内,可以生产的产品数最多为 209 件。

8.2.3 第三组参数

将参数代入双阶段生产过程模型可得:

进行第一道工序的 CNC 的个数有 5 台、其编号分别为 2、3、4、6、8。

进行第二道工序的 CNC 的个数有 3 台、其编号分别为 1、5、7。

在一个 8 小时的工作周期内,可以生产的产品数最多为 241 件。

18

8.3 考虑故障情况的模型验证

8.3.1 第一组参数

1.单阶段生产过程中故障发生情况如下表所示:

故障时的物料

序号

2 15 135 139

发生故障的

CNC 编号

2 8 2 7

在一个 8 小时的工作周期内,可以生产的产品数最多为 356 件。

2.双阶段生产过程中故障发生情况如下表所示:

故障时的物料

序号

52 115 135 236

发生故障的

CNC 编号

7 1 3 8

在一个 8 小时的工作周期内,可以生产的产品数最多为 238 件。

8.3.2 第二组参数

1.单阶段故障发生情况如下表所示:

故障时的物料

序号

54 183 196 321

发生故障的

CNC 编号

6 6 7 5

在一个 8 小时的工作周期内,可以生产的产品数最多为 348 件。

2.双阶段生产过程中故障发生情况如下表所示:

故障时的物料

序号

20 59 116

发生故障的

CNC 编号

5 7 5

在一个 8 小时的工作周期内,可以生产的产品数最多为 199 件。

19

8.3.3 第三组参数

1.单阶段故障发生情况如下表所示:

故障时的物料

序号

10 120 241 364

发生故障的

CNC 编号

2 1 5 2

在一个 8 小时的工作周期内,可以生产的产品数最多为 382 件。

2.双阶段生产过程中故障发生情况如下表所示:

故障时

的物料

序号

65 104 109 137 148 157 205

发生故

障的CNC

编号

1 3 1 4 5 6 8

在一个 8 小时的工作周期内,可以生产的产品数最多为 232 件。

20

九、模型评价及改进

1.利用遗传算法进行模型的求解,对于一些参数的选择,例如交叉率、变异率

以及迭代次数有很强的依赖性。参数选取的合适与否,对于求出解的优劣有很大

的影响。而我们在选取这些参数的时候,仅仅是根据网上给出的一些经验值,以

及改变参数进行实验,看求出的结果有何变化来确定这些参数的取值。因此,无

法保证这些参数选取的科学合理性。

2.在进行单阶段生产过程求解的时候,我们采用动态规划的求解方法,本意是

通过求解每一个子问题的最优解,使每一层子问题均达到最优。并通过保存子问

题的最优解来避免子问题的重复计算,以达到简化计算的目的。但是后来研究发

现,本问题的决策树状图是一直发散的,使用动态规划的方法其实有一点类似于

穷举算法,实际上并没有达到简化计算的目的。

3.在建立考虑机器故障的模型时,我们仅仅考虑了本次决策响应 CNC 是否在

此阶段发生了故障,而没有考虑其他 CNC 是否发生故障的情况。

4.遗传算法以及动态规划只能通过固定工序的数量来求解加工的最短时间,而

无法求解固定时间内加工产品数目的最大化问题。因此,我们只能转而求解加工

的最短时间,并通过尝试找出在固定时间内加工产品数目的最大值。

21

十、参考资料

[1]张超勇,饶运清,李培根,邵新宇.柔性作业车间调度问题的两级遗传算法[J].机械工

程学报,2007(04):119-124.

[2] 杨 晓 梅 , 曾 建 潮 . 遗 传 算 法 求 解 柔 性 job shop 调 度 问 题 [J]. 控 制 与 决

策,2004(10):1197-1200.

[3]张超勇,饶运清,李培根,刘向军.求解作业车间调度问题的一种改进遗传算法[J].计算机

集成制造系统,2004(08):966-970.

[4]王万良,吴启迪,宋毅.求解作业车间调度问题的改进自适应遗传算法[J].系统工程理论与

实践,2004(02):58-62.

[5]谢胜利,董金祥,黄强.基于遗传算法的车间作业调度问题求解[J].计算机工程与应

用,2002(10):79-82.

[6]方红雨,崔逊学.基于遗传算法的调度问题研究[J].电脑与信息技术,2001(02):1-5.

1

附录

单阶段生产问题无故障

单道工序无损坏.cpp

单阶段生产问题有故障

单道工序有损坏.cpp

双阶段生产问题无故障

双道工序无损坏 3+5.cpp

双道工序无损坏 4+4.cpp

双阶段生产问题有故障

双道工序有损坏第一组.cpp

双道工序有损坏第二组.cpp

双道工序有损坏第三组.cpp