随着生产技术的发展与制造业内在需求的变化, 制造业正在向着智能制造的方式转变, 作为产品生产制造中重要一环, 车间调度问题得到了极大关注. 柔性作业车间调度问题(flexible job-shop scheduling problem, FJSP)作为经典作业车间调度问题(job-shop scheduling problem, JSP)的延伸被认为是NP-难问题, 相较于JSP具有更高灵活性与求解难度. 如今智能制造是制造业主要发展方向, 制造系统的高效运行是智能制造主要要求之一. FJSP具有工序排序与机器选择两个子问题, 其求解更具复杂性, 同时也更贴近实际车间生产制造情况, 为寻求高效求解方法, 对于FJSP的求解方法具有广泛的研究. 目前对FJSP的求解方法主要集中于元启发式算法. 张超勇等[1]对遗传算法进行改进, 改变了染色体的表示方式, 结合多种策略生产高质量初始种群等多种操作, 在基准问题上进行验证; Li等[2]将禁忌搜索算法策略嵌入到遗传算法中, 综合利用二者的寻优能力, 为更好平衡算法的勘探与开发, 通过与其他算法进行对比实验, 改进的混合算法具有显著改进; 仲于江等[3]利用改进的粒子群算法对多目标FJSP进行研究, 利用小生境技术更新解集避免算法陷入局部最优, 并改进最优解的选择方式, 在算例与车间仿真实验中验证改进算法可行性.
随着计算机科学技术发展, 新式元启发式算法不断涌现, 如灰狼优化算法[4], 人工蜂群算法[5]等, 学者利用新兴的元启发式算法对FJSP进行进一步研究, Lu等[6]设计了一种改进的多目标混合灰狼优化算法, 在算法中嵌入遗传算子增强全局搜索能力, 在多目标动态调度模型中与其他经典算法进行比较, 体现改进算法的优越性; Karthikeyan等[7]针对有限资源约束下的多目标FJSP, 考虑3个最小化目标, 结合邻域结构的局部搜索方法, 提出一种混合萤火虫算法并将其离散化应用于多目标FJSP; 姜天华[8]采用两段式编码方式将改进的灰狼优化算法应用于FJSP, 引入变邻域搜索方法与遗传算法中交叉和变异算子的方式提高算法勘探能力在基准与随机算例中与其他算法进行对比, 数据证明改进算法; 王玉芬等[9]针对FJSP, 对人工蜂群算法进行改进, 在搜索阶段利用IPOX与多点交叉方法避免产生非法解, 通过增加侦察蜂的数量保持全局搜索能力, 且用贪婪策略保留较优解, 在算例上验证改进算法的有效性与收敛性; Li等[10]针对FJSP, 提出了一种基于禁忌搜索的混合人工蜂群算法来求解, 并使用聚类分组轮盘赌的方式来初始化种群, 同时为提高种群质量, 在计算过程中引入交叉算子, 在基准算例上与其他算法进行比较并证明了算法有效性; 刘雪红等[11]对候鸟算法做出改进, 使用精英分批策略提高算法性能, 使其应用于FJSP, 解决最小完工时间与最小批次数目的多目标FJSP. 综上, 学者基于元启发式算法解决FJSP进行了广泛研究.
鲸鱼优化算法(whale optimization algorithm, WOA)[12]是一种基于种群的元启发式算法, 已应用于模型预测[13], 参数优化等方面[14], WOA具有独特的搜索机制, 其应用参数少, 算法整体稳定性高, 寻优能力较强[15], 元启发式算法在解决车间调度问题方面具有一定优势, WOA作为元启发式算法的一种, 同样应用于在车间调度应用的方面, 闫旭等[16]首先将WOA应用于车间调度问题, 利用量子计算方式改进的WOA求解JSP; 张斯琪等[17]提出一种改进的WOA优化单目标的FJSP. 为进一步丰富FJSP的求解算法, 对FJSP求解进行深入研究, 本文首先利用非线性收敛因子与正余弦算法对WOA进行改进, 提出一种混合正余弦鲸鱼优化算法(sine cosine whale optimization algorithm, SCWOA), 并应用SCWOA求解以最小化最大完工时间的FJSP.
1 问题描述FJSP是经典JSP的扩展, 其问题可以描述为: 假设在车间内n个工件
FJSP的目标是在一定的约束条件下对工件和机器按时间进行分配并安排加工次序, 使得加工性能指标达到最优.
本文评价目标是最大完工时间最小, 目标函数可表示为:
$ f=\min (\max (C)), \; 1 \leqslant j \leqslant n $ | (1) |
式中,
WOA的设计源于鲸鱼群的捕食行为. 在鲸鱼群体中, 其捕食行为常常伴随着个体之间的合作, 鲸鱼群捕食行为中最特别之处是气泡网捕食行为, 即鲸鱼群在发现猎物之后, 会以螺旋路径逐渐包围猎物, 将猎物活动范围逐渐缩小, 最终捕食猎物[12]. WOA从鲸鱼群独特的捕食行为中进行研究, 通过仿效鲸鱼群捕食的方式, 从搜索、包围、捕食猎物3个方面建立数学模型, 模拟算法寻优过程.
2.1.1 包围猎物阶段WOA模仿鲸鱼群协同捕食方式, 会有多个鲸鱼个体对猎物进行包围捕猎, 算法在开始时设置一组随机解并计算解的适应度, 同时将适应度最高的解视作目标, 其余鲸鱼个体会向目标靠拢接近, 其位置更新方式可以表示为:
$ X(t + 1) = {X^*}(t) - A \cdot D $ | (2) |
$ D = \left| {C \cdot {X^ * }(t) - {X^ * }(t)} \right| $ | (3) |
式中,
$ A = 2a \cdot r - a $ | (4) |
$ C = 2 \cdot r $ | (5) |
其中,
鲸鱼群在进行捕食时会沿着圆形或“9”形的路径捕食猎物, 为模仿这种捕食方式, WOA设置两种方法进行模仿, 第1种为个体收缩环绕机制, 这一机制通过
$ X(t + 1) = {D'} \cdot {e^{bl}} \cdot \cos (2\pi l) + {X^ * }(t) $ | (6) |
$ {D'} = \left| {{X^ * }(t) - X(t)} \right| $ | (7) |
式中,
$ X(t + 1) = \left\{\begin{split}&{{X^{ * (t) - A \cdot D}}},&{{{p}} < 0.5} \\ &{{{D'} \cdot {{\rm{e}}^{bl}} \cdot \cos (2\pi l) + {X^ * }(t)}},&{{{p}} \geqslant {\text{0}}{\text{.5}}}\end{split} \right. $ | (8) |
其中, p为[0, 1]之间的随机数.
2.1.3 寻找猎物阶段为进一步寻找猎物, WOA利用A的变化来进行探索, 即
$ X(t + 1) = {X_{\rm rand}} - A \cdot D $ | (9) |
$ D = \left| {C \cdot {X_{\rm rand}} - X} \right| $ | (10) |
其中,
WOA从一组随机解开始. 在每次迭代中, 鲸鱼个体会根据随机选择的鲸鱼个体位置或当前最优个体位置更新自身的位置, 当
正余弦算法(sine cosine algorithm, SCA)由Mirjalili在2016年提出[19], SCA算法的主要思想是在算法寻优过程中综合使用正弦函数与余弦函数来进行勘探与开发, 通过正余弦函数的周期性变化实现勘探与开发. SCA算法首先随机创建一组初始解, 然后根据正余弦函数进行迭代更新位置, 寻找最优解, 其位置更新公式可以表示为:
$ {X_{t + 1}} = \left\{ {\begin{array}{*{20}{c}} {{X_t} + {r_1} \cdot \sin \left( {{r_2}} \right) \cdot \left| {{r_3}{P_t} - {X_t}} \right|,\;\;{r_4} < 0.5} \\ {{X_t} + {r_1} \cdot \cos \left( {{r_2}} \right) \cdot \left| {{r_3}{P_t} - {X_t}} \right|,\;\;{r_4} \geqslant 0.5} \end{array}} \right. $ | (11) |
其中,
$ {r_1} = k - t\frac{k}{T} $ | (12) |
其中, k为常数, t为当前迭代次数, T为最大迭代次数;
基于FJSP的特性, 设置基于机器分配与工序排序的两段式向量进行编码, 分别对应FJSP的两个子问题, 对于一个鲸鱼个体向量
3.1.1 编码
首先对第一段机器分配向量进行编码, 参考文献[20]的编码方法, 通过式(13)将鲸鱼个体位置向量映射到当前可选机器集合的机器序号, 从而完成个体位置转换机器分配的过程.
$ u(j) = round\left(\frac{1}{{2\varepsilon }}(s(j) - 1) \cdot (x(j) + \varepsilon ) + 1\right) $ | (13) |
其中,
工序
工序排序向量的编码采用文献[21]的最大位置值规则(largest position value, LPV)来实现, 首先按照位置元素值的大小进行降序排列, 之后依照这一排列顺序实现工序顺序的排列, 最后确定工序顺序. 如图3所示为第2段向量的转换过程.
3.1.2 解码
解码也包括机器分配与工序排序两部分, 机器分配向量向个体位置向量的转换是公式的逆转换, 即:
$ x(j) = \frac{{2\varepsilon }}{{s(j) - 1}}(u(j) - 1) - \varepsilon , {\text{ 1}} \leqslant j \leqslant l $ | (14) |
若发生特殊情况, 在可选集合中仅存在唯一一台机器, 即当
工序排序向量的解码同样依据LPV规则, 工序排序向量
$ x(\pi (j) + l) = \varepsilon - \frac{{2\varepsilon }}{{l - 1}}(j - 1), {\text{ }}1 \leqslant j \leqslant l $ | (15) |
任何群智能优化算法在寻优的过程中都存在全局探索与局部开发两个阶段, 恰当平衡两个阶段, 可使算法在初期寻优中探索更大范围, 同时提升其后期对于局部范围的搜索精度, 提升算法求解的整体准确性. WOA的勘探与开发平衡主要由
然而无论是WOA收敛因子a还是SCA参数r1都根据迭代次数由2线性递减至0, 为适应WOA与SCA的优化过程, 因此本文提出一种非线性收敛因子调整策略, 对WOA的收敛因子
$ {a'} = 2 \times \sin \left(\frac{\pi }{2} \times {\left(\frac{t}{T}\right)^\lambda } + \mu \right) $ | (16) |
其中, t为当前迭代次数, T为最大迭代次数,
如图4所示为WOA收敛因子与非线性收敛引子在迭代过程中的变化对比. 非线性收敛因子相比标准WOA的收敛因子,
SCA利用正余弦函数的周期性变化实现寻优过程, 这种位置更新方式使得算法勘探时会探索更大区域, 局部开发时会在更小范围内进行精确搜索, 综合利用SCA的位置更新方式, 将其应用于WOA的位置更新与螺旋更新中, 对WOA进行改进, 提高WOA的整体寻优水平. 标准SCA参数
$ r_{1}^{\prime}=2 \times \sin \left(\frac{\pi}{2} \times\left(\frac{t}{T}\right)^{\lambda}+\mu\right) $ | (17) |
3.3.1 改进鲸鱼个体位置更新方式
WOA全局探索能力依靠式(9)来实现, 即通过随机选择鲸鱼个体来确保算法的全局探索, 这种随机产生鲸鱼个体的方法只有同时满足
$ {D_1} = \left\{ {\begin{array}{*{20}{c}} {r_1' \cdot \sin \left( {{r_2}} \right)\left| {C \cdot {X_{\rm rand}} - X} \right|, \;\;\;\theta < 0.5} \\ {r_1' \cdot \cos \left( {{r_2}} \right)\left| {C \cdot {X_{\rm rand}} - X} \right|, \;\;\;\theta \geqslant 0.5} \end{array}} \right. $ | (18) |
其中,
基于同样考虑, 把SCA策略引入WOA的局部开发过程中, 提升算法的局部开发能力, 对式(3)进行改进如下:
$ {D_2} = \left\{ {\begin{array}{*{20}{c}} {r_1' \cdot \sin \left( {{r_2}} \right)\left| {C \cdot {X^ * } - X} \right|, \;\;\;\theta < 0.5} \\ {r_1' \cdot \cos \left( {{r_2}} \right)\left| {C \cdot {X^ * } - X} \right|, \;\;\;\theta \geqslant 0.5} \end{array}} \right. $ | (19) |
其中,
由式(6)可知, 在WOA中个体会一直以对数螺旋的轨迹方式进行位置更新, 这种螺旋更新位置的方式虽然可以加快整体收敛速度, 但是会导致群体内个体以较快速度聚合在一起, 进而导致整个种群丧失多样性, 最终增大陷入局部最优的几率. 因此, 为增强整个种群多样性与跳出局部最优能力, 同样利用SCA策略对螺旋更新方式实行改进如下:
$ X(t + 1) = \left\{ {\begin{array}{*{20}{l}} {r_1^\prime \cdot {{\rm{e}}^{bl}} \cdot \sin (2\pi l) \cdot {D_3} + {X^*}(t),}\;\;\;{\theta < 0.5}\\ {r_1^\prime \cdot {{\rm{e}}^{bl}} \cdot \cos (2\pi l) \cdot {D_3} + {X^*}(t),}\;\;\;{\theta \geqslant 0.5} \end{array}} \right.$ | (20) |
$ {D_3} = \left| {{r_3}{X^ * }\left( t \right) - X\left( t \right)} \right| $ | (21) |
其中,
混合正余弦鲸鱼优化算法综合非线性收敛因子与SCA策略改进方式, 提高算法全局勘探能力与局部开发能力, SCWOA的框架如下:
(1) 定义目标函数, 设置算法参数, 包括种群规模N, 最大迭代次数T, 设置
(2) 进入主循环, 根据适应度记录最优个体位置, 定义并更新非线性收敛引子
(3) 定义并更新参数
(4) 判断
(5) 判断
(6) 判断
(7) 输出最优个体位置与目标函数最优解.
图5为SCWOA流程图.
4 实验分析
本文选取文献[23]中BRdata包含的10个FJSP标准调度实例(MK01-MK10), 与文献[24]中5个标准调度实例(kacem01-kacem05)对SCWOA实行实例验证, SCWOA由Python 3.7实现, 在Windows 10, Intel(R)Core(TM) i5-9300 CPU, 2.4 GHz主频, 16 GB内存的系统上运行. 算法参数设置种群为160, 最大迭代次数为300.
首先对基本WOA与SCWOA进行实验对比, 以验证非线性收敛因子与正余弦策略改进措施的有效性. 为避免随机性, 算法共运行10次, Time表示算法的平均运行时间, Best代表10次运行结果中最优结果, Avg代表10次实验的平均优化结果. 借鉴文献[17]的对比方法加入提升率, 其计算公式为
从表1对比结果可知, SCWOA相较WOA在最优寻优结果与平均寻优结果方面都获得了一定的提升, 在8个实例中优化结果得到了提升, 并且最大提升效果达到了0.1, 证明SCWOA的改进措施有效. 值得注意的是SCWOA的时间复杂度也较WOA有一定程度的提高. 如图6所示为SCWOA在MK04上的调度甘特图, MK04有8个加工机器与15个待加工工件, 求解结果C max为67, 虽未达到最优调度结果, 但调度结果仍优于大部分优化算法.
同时将SCWOA与其他元启发式算法进行实验对比, 对比算法包括基本遗传算法、文献[2]中的混合遗传算法、文献[8]的混合灰狼优化算法、文献[24]与文献[25], 最优结果以粗体表示, 对比结果如表2与表3所示.
表2对比结果表明文献[24]在缺失2个算例情况下获得最优解有1次, 文献[8]获得最优解有4次, 文献[25]获得最优解有3次, SCWOA获得最优解有4次. SCWOA表现较好. 表3对比结果表明GA获得最优解有1次, 文献[23]获得最优解1次, 文献[2]获得最优解有4次, 文献[8]获得最优解5次, SCWOA获得最优解次数最多, 并且SCWOA的寻优能力在问题规模较大时相较于其他算法表现也较好, 以上结果综合表明SCWOA应用于FJSP的有效性.
5 结束语
本文以FJSP的最大完工时间为优化目标, 对WOA进行设计改进, 提出了一种混合正余弦鲸鱼优化算法. 首先以两段式编码使鲸鱼优化算法离散化, 使其可应用于FJSP; 加入非线性收敛因子策略; 并加入SCA的优化策略, 改进鲸鱼优化算法的位置变动方式, 提高全局勘探与局部开发能力. 通过与其他算法在BRdata算例上的实验对比, 实验对比结果证明了算法设计的有效性. 下一步工作可将鲸鱼优化算法应用于更加复杂的车间调度问题, 如多目标FJSP, 进一步丰富算法的应用范围, 并且可将绿色调度目标作为算法优化目标, 响应国家碳中和、碳达峰政策.
[1] |
张超勇, 饶运清, 李培根, 等. 柔性作业车间调度问题的两级遗传算法. 机械工程学报, 2007, 43(4): 119-124. DOI:10.3901/JME.2007.04.119 |
[2] |
Li XY, Gao L. An effective hybrid genetic algorithm and tabu search for flexible job shop scheduling problem. International Journal of Production Economics, 2016, 174: 93-110. DOI:10.1016/j.ijpe.2016.01.016 |
[3] |
仲于江, 杨海成, 莫蓉, 等. 基于小生境粒子群算法的柔性作业车间调度优化方法. 计算机集成制造系统, 2015, 21(12): 3231-3238. DOI:10.13196/j.cims.2015.12.015 |
[4] |
Mirjalili S, Mirjalili SM, Lewis A. Grey wolf optimizer. Advances in Engineering Software, 2014, 69: 46–61.
|
[5] |
Karaboga D, Basturk B. A powerful and efficient algorithm for numerical function optimization: Artificial bee colony (ABC) algorithm. Journal of Global Optimization, 2007, 39(3): 459-471. DOI:10.1007/s10898-007-9149-x |
[6] |
Lu C, Gao L, Li XY, et al. A hybrid multi-objective grey wolf optimizer for dynamic scheduling in a real-world welding industry. Engineering Applications of Artificial Intelligence, 2017, 57: 61-79. DOI:10.1016/j.engappai.2016.10.013 |
[7] |
Karthikeyan S, Asokan P, Nickolas S. A hybrid discrete firefly algorithm for multi-objective flexible job shop scheduling problem with limited resource constraints. The International Journal of Advanced Manufacturing Technology, 2014, 72(9–12): 1567-1579. DOI:10.1007/s00170-014-5753-3 |
[8] |
姜天华. 混合灰狼优化算法求解柔性作业车间调度问题. 控制与决策, 2018, 33(3): 503-508. DOI:10.13195/j.kzyjc.2017.0124 |
[9] |
王玉芳, 马铭阳, 葛嘉荣, 等. 基于改进人工蜂群算法的柔性作业车间调度. 组合机床与自动化加工技术, 2021(3): 159-163, 168. DOI:10.13462/j.cnki.mmtamt.2021.03.038 |
[10] |
Li XX, Peng Z, Du BG, et al. Hybrid artificial bee colony algorithm with a rescheduling strategy for solving flexible job shop scheduling problems. Computers & Industrial Engineering, 2017, 113: 10-26. DOI:10.1016/j.cie.2017.09.005 |
[11] |
刘雪红, 段程, 王磊. 基于改进候鸟算法的柔性作业车间分批调度问题. 计算机集成制造系统, 2021, 27(11): 3185-3195. |
[12] |
Mirjalili S, Lewis A. The whale optimization algorithm. Advances in Engineering Software, 2016, 95: 51-67. DOI:10.1016/j.advengsoft.2016.01.008 |
[13] |
Samadianfard S, Hashemi S, Kargar K, et al. Wind speed prediction using a hybrid model of the multi-layer perceptron and whale optimization algorithm. Preprints, 2020, 2020020233. DOI:10.20944/preprints202002.0233.v1 |
[14] |
Bai LL, Han ZN, Ren JJ, et al. Research on feature selection for rotating machinery based on supervision kernel entropy component analysis with whale optimization algorithm. Applied Soft Computing, 2020, 92: 106245. DOI:10.1016/j.asoc.2020.106245 |
[15] |
郝晓弘, 宋吉祥, 周强, 等. 混合策略改进的鲸鱼优化算法. 计算机应用研究, 2020, 37(12): 3622-3626, 3655. DOI:10.19734/j.issn.1001-3695.2019.09.0528 |
[16] |
闫旭, 叶春明, 姚远远. 量子鲸鱼优化算法求解作业车间调度问题. 计算机应用研究, 2019, 36(4): 975-979. DOI:10.19734/j.issn.1001-3695.2017.10.0985 |
[17] |
张斯琪, 倪静. 混合鲸鱼算法在柔性作业车间系统中的应用. 系统科学学报, 2020, 28(1): 131–136.
|
[18] |
焦璇, 宁涛, 黄明, 等. 人工智能优化算法在柔性作业车间调度中的应用研究. 北京: 中国铁道出版社有限公司, 2019. 14–15.
|
[19] |
Mirjalili S. SCA: A Sine Cosine Algorithm for solving optimization problems. Knowledge-Based Systems, 2016, 96: 120-133. DOI:10.1016/j.knosys.2015.12.022 |
[20] |
Yuan Y, Xu H, Yang JD. A hybrid harmony search algorithm for the flexible job shop scheduling problem. Applied Soft Computing, 2013, 13(7): 3259–3272.
|
[21] |
Wang L, Pan QK, Tasgetiren MF. Minimizing the total flow time in a flow shop with blocking by using hybrid harmony search algorithms. Expert Systems with Applications, 2010, 37(12): 7929-7936. DOI:10.1016/j.eswa.2010.04.042 |
[22] |
刘小娟, 王联国. 一种基于差分进化的正弦余弦算法. 工程科学学报, 2020, 42(12): 1674-1684. DOI:10.13374/j.issn2095-9389.2020.07.26.002 |
[23] |
Brandimarte P. Routing and scheduling in a flexible job shop by tabu search. Annals of Operations Research, 1993, 41(3): 157-183. DOI:10.1007/BF02023073 |
[24] |
Kacem I, Hammadi S, Borne P. Approach by localization and multiobjective evolutionary optimization for flexible job-shop scheduling problems. IEEE Transactions on Systems, Man, and Cybernetics, Part C (Applications and Reviews), 2002, 32(1): 1–13.
|
[25] |
Ziaee M. A heuristic algorithm for solving flexible job shop scheduling problem. The International Journal of Advanced Manufacturing Technology, 2014, 71(1–4): 519-528. DOI:10.1007/s00170-013-5510-z |