《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > 改进的蚁群算法求解置换流水车间调度问题

改进的蚁群算法求解置换流水车间调度问题

2015-05-19
作者:张丽萍
来源:2014年微型机与应用第12期

  摘  要: 针对蚂蚁算法在求解置换流水车间调度问题时易陷入局部最优以及计算时间较长的缺点,对最大最小蚂蚁系统(MMAS)进行了改进。在该算法中,采用NEH启发式算法提高初始解质量,并通过自适应的调节策略进一步提高蚁群算法的搜索能力。运用提出的混合算法求解Taillard基准测试集,并将测试结果与其他算法进行比较,验证了该调度算法的有效性。

  关键词: 置换流水车间调度问题;自适应; NEH启发式算法

  置换流水车间是很多实际流水线生产调度问题的简化模型,是目前研究最广泛的一类经典的调度问题。由于置换流水车间调度问题属于NP-hard难题,不存在多项式精确求解算法,因此,对这类问题的研究具有重要意义。

  求解置换流水车间调度问题的方法大致可以分为三类[1]:经典算法(如线性规划、动态规划、整数规划、分枝定界等)、启发式算法(如Gupta法、Palmer法、Johnson法、CDS法、NEH法等)和基于人工智能的元启发式算法(如模拟退火、禁忌搜索、遗传算法、蚂蚁算法等)。经典算法的计算复杂性一般很大,只适合求解小规模置换流水车间调度问题,在工程中往往不实用。启发式算法通过一定的规则可以快速地构造出问题的解,但通常解的质量较差[2]。基于人工智能的元启发式算法能够较快地构造出问题的解,因此,在置换流水车间调度问题中被广泛使用。

  蚁群算法是受到自然界中真实蚂蚁的启发,由意大利学者DORIGO M于1991年提出的一种元启发式算法。该算法具有鲁棒性和通用性等良好特性,在求解作业车间、流水车间等调度问题上取得了较好的效果。但是,传统的蚁群算法存在计算时间长和易陷入停滞的问题,故本文从结合NEH算法和自适应调节策略两方面来改善蚁群算法的性能,经Taillard基准测试验证,改进后的蚁群算法有效。

  1 问题描述

  置换流水车间调度问题研究的是n个工件在m台机器上的流水加工过程,所有工件以相同的顺序在每一台机器上加工完成,同时约定每个工件在每台机器上只加工一次,每台机器每次最多只能加工一个工件,各工件在各机器上所需的加工时间已知,要求得到某调度方案使得总加工时间最小。定义J=(j1,…,jn)为所有机器上的一个加工排序,ti,j为操作的执行时间,Ci,j表示操作的完成时间。则加工任务jk在机器i上的完成时间C按式(1)计算:

  1.png

  2 蚁群算法

  2.1 蚁群算法简介

  蚂蚁是一种没有视觉的动物,但是它们可以通过信息素,协同找到食物和巢穴之间的最短路径[3]。蚂蚁在运动过程中能够感知这种物质的存在及其强度,并以此指导自己的运动方向,使蚂蚁倾向于朝着该物质强度高的方向运动。这样,由大量蚂蚁组成的蚁群的集体行为便表现出一种自催化的正反馈行为,较短路径上会有较多的信息素累积,越来越多的蚂蚁选择信息素浓度高的路径,而其他路径上的信息素浓度却会随时间衰减,最终蚁群能找到一条从食物源到巢穴的最短路径[4]。

  蚁群算法最初用于解决旅行商问题,之后陆续渗透到其他领域中。较早把蚁群算法应用到置换流水车间问题的是YING K C和LIAO C J,后者在Tailard的benchmark问题上做了测试,证实该方法非常有效。

  2.2 蚁群算法

  本文以求解置换流水车间问题说明MMAS模型。求解这类问题有两种解构造模式,分别为弧模式和节点模式[5]。本文采用的是节点模式。

  在解构造的结点模式下,代表流水车间调度问题的有向图G=(N,A),如图1所示。其中,N={Oij}是图中的节点集合,节点Oij代表作业j 位于作业处理序列π的第i个位置;A是图G中部分连接节点集N中各节点的有向弧的集合,连接节点Oij和O(i+1),l的有向弧方向为从Oij~O(i+1),l。这里的路径选择概率为:

  16BDH58ABN0HID(HXW1NWH3.png

001.jpg

  在节点模式下,式(2)中Nk(Oij)={O(i+1),l|l?埸π′}代表节点Oij的可行领域集合。其中τij和ηij分别代表对应于节点Oij的信息素浓度和基于问题的启发式信息。p表示人工蚁搜索过程中从节点O(i-1)π(i-1)移到节点Oij的概率。

  从虚构节点job0出发,按照式(2)给出的状态迁移规则,在G图中一步步地构造出问题的解,蚁群算法的流程如下:

  (1)设置参数。设置迭代次数counter=0,设置最大迭代次数Ncmax。计算每个工件的总加工时间Si(i=1,…,n),定义能见度ηij=Si。按照工件总加工时间Si最大优先的原则计算出最大流程时间makespan,设置信息素赋初始值τ0=1/((1-ρ)·makespan);τmax=τ0,τmin=τmax/5。

  (2)初始化m个蚂蚁,将m个蚂蚁放在虚拟节点job0上。

  (3)每个蚂蚁都按照式(2)选择下一步路径。

  (4)将新选择的工序添加到禁忌表中,判断是否遍历了所有的工件,是则执行步骤(5),否则执行步骤(3)。

  (5)按照式(3)更新信息素。

  τij=ρ·τij+?驻τij(3)

  其中,ρ为信息素残留系数(1-ρ为挥发系数);Δτij=1/Cbest,令Cbest为迭代以来最优解,|Cbest|为Cbest的makespan值,如果Cbest中位置j上工件不为i,则Δτij为0,否则Δτij=1/|Cbest|。信息素取值区间为[τmin,τmax],若τij>τmax,则设定τij=τmax;若τij>τmin,则设定τij=τmin。这样可以较好地防止早熟现象。

  (6)count++。如果count<Ncmax,则清空禁忌表,返回步骤(2)继续执行;否则,结束循环。

  3 MMAS的优化

  3.1 NEH启发式算法

  NEH启发式算法是由NAWAZ M、ENSCORE E、和HAM I共同提出的算法[6],该算法步骤如下:

  (1)按n个工件在机器上总加工时间递减的顺序排列各个工件。

  (2)取前两个工件调度使部分最大流程时间达到极小。

  (3)从k=3~n把第k个工件插入到k个可能的位置,求得最小部分的最大流程时间。

  3.2 与NEH算法的结合

  (1)获取初始解。利用NEH启发式算法计算得到最大流程时间makespan,并定义τ0=1/((1-ρ)·makespan)。

  (2)部分NEH局部搜索。在使用MMAS构造出路径之后,对构造的工件顺序按照NEH启发式算法的步骤(2)、(3)构造出解。利用NEH启发式算法进行局部寻优,可以进一步提高MMAS的求解质量。但是为了保证算法的时间效率,在此只对Nmax次迭代中的前N次迭代利用NEH启发式算法对迭代最优蚂蚁进一步局部寻优。

  3.3 自适应信息素挥发系数

  与NEH算法相结合,虽然极大程度地提高了MMAS解质量,但是也从一定程度上加速了MMAS的局部收敛速度。为此,本文引入自适应改变挥发度系数的方法,以进一步提高MMAS的全局搜索能力。

  在算法模型中,信息素挥发系数ρ的大小直接关系到蚁群算法的全局搜索能力及收敛速度[3]。ρ过小,从未被搜索到的节点的信息量会减少到接近于0,降低了算法的全局搜索能力;而ρ过大,以前搜索过的解被选择的可能性过大,也会影响到算法的全局搜索能力。因此可以自适应地改变ρ的值,当最优值在一定循环次数内没有明显改变时,降低ρ的值。公式如下:

  ρnew=0.95ρold    0.95ρold≥ρmin

  ρmin            其他(4)

  其中,ρmin为ρ的最小值,用来防止ρ过小,降低算法收敛速度。

  3.4 改进MMAS的实现流程

  改进后的MMAS算法求解置换流水车间问题的流程图如图2所示。

002.jpg

  (1)初始化各个参数。设置蚂蚁数量为m、迭代次数counter=0、最大迭代次数为Ncmax、局部搜索次数为N。计算每个工件的总加工时间Si(i=1,…,n),定义能见度ηij=Si。设置信息素残留系数为ρ,ρmin为ρ的最小值,定义Nm次迭代最优解相同,则判定陷入局部最优。

  (2)利用NEH启发式算法得到总加工时间的初始值makespan,设置τ0=τmax=1/((1-ρ)·makespan),τmin=1/5·τmax。

  (3)将各只蚂蚁放在虚拟节点job0上,对于每只蚂蚁,按照式(2)选择下一步路径,直到所有蚂蚁均构造出解。

  (4)若count<N,则利用NEH启发式算法的后两步对最优迭代蚂蚁选择的路径做进一步局部寻优;否则,执行步骤(5)。

  (5)判断迭代最优解相同次数小于Nm,则执行步骤(6);否则,按照式(4)改变挥发系数的值,再执行步骤(6)。

  (6)按照式(3)进行信息素的更新,检查信息素的边界,使其保持在[τmin,τmax]的范围内。

  (7)count++。如果count<Ncmax,清空禁忌表,返回步骤(3)继续向下执行;否则,结束循环,输出结果。

  4 仿真实验

  本文测试数据采用Taillard在1993年提出的基准测试问题,并将运行结果与其他参考文献提出的算法进行比较,以此验证提出的改进蚁群算法是有效的。

  本文算法各参数设置如下:蚂蚁个数na=20,挥发系数ρ=0.99,挥发系数最小值ρmin=0.5,α=1.0,β=4.0,最大迭代次数为300,局部搜索次数为10。本文选取每种规模系列问题中的第一个问题进行计算,并与NEARCHOU A C[5]提出的算子遗传算法(GA)、Lian Zhigang[7]提出的NPSO粒子群算法进行比较,每个算例连续运行20次,记录其中的最优结果,如表1所示。其中,BS表示运行结果中的最优解,RPD(Relative Percentage Deviation)表示相对误差百分率。由表1可知,相比其他两种算法,本文提出的算法在求解Taillard系列问题方面能够更好地收敛在最优解附近。

003.jpg

  本文针对解置换流水车间调度问题提出了一种改进的蚁群算法。在该算法中,采用NEH算法产生初始解,并利用自适应挥发系数的方法避免算法早熟,使分散搜索和集中搜索达到有效平衡,提高了算法的搜索能力。Taillard系列基准问题测试表明,本文的算法是有效的。

  参考文献

  [1] 高海兵,周驰.广义粒子群优化模型[J].计算机学报,2005,28(12):1980-1987.

  [2] 王凌.车间调度及其遗传算法[M].北京:清华大学出版社,2003.

  [3] 李士勇.蚁群算法及其应用[M].哈尔滨:哈尔滨工业大学出版社,2004.

  [4] 吴启迪,汪镭.智能蚁群算法及其应用[M].上海:上海科技教育出版社,2004.

  [5] NEARCHOU A C.The effect of various operators on the genetic search for large scheduling problems[J].InternationalJournal of Production Economy,2004,88(1):191-203.

  [6] NAWAZ M,ENSCORE E,HAM I.A heuristic algorithm forthe mmachine,n job flow shop[J].The International Journalof Management Sciences,1983,11(1):91-95.

  [7] Lian Zhigang,Gu Xingsheng,Jiao Bin.A Novel particle swarmoptimization algorithm for permutation flow shop scheduling to minimize makespan[J].Chaos,Solitons and Fractals,2008,35(5):851-861.


本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。