一种求解零等待流水车间调度问题的改进粒子群优化算法的制作方法

文档序号:14452686阅读:658来源:国知局

本发明属于流水车间调度算法技术领域,具体涉及用算法求解零等待流水车间调度问题。



背景技术:

调度问题通常是指在规定的时间内,怎样利用现有的资源进行合理地安排生产,从而实现生产效益的最大化。车间调度问题是调度问题的一个子集,是企业进行生产计划与控制的一个重要组成部分,是帮助企业提高自己竞争力的关键因素。随着科学技术的不断发展,元启发式方法被提出,该方法的成功取决于他们提供探索(多样化)和开发(强化)之间的平衡的能力。根据他们的搜索策略,元启发式方法可以分为两类:一种是基于单一解的局部搜索算法,包括模拟退火算法,禁忌搜索。另一种是基于种群的有学习部分的搜索算法,包括克隆优化算法、粒子群优化算法、遗传算法、免疫算法。一般而言,基于单一解的启发式算法表现更多的局部搜索能力,而基于种群的启发式算法拥有更多的全局搜索能力。

eberhart和kennedy在1995年提出的粒子群优化算法(pso,particleswarmoptimization)是一种群体智能算法,它模拟群体行为,如鸟类群落和鱼群。pso最初被用来优化各种连续的非线性函数。由于其结构简单且搜索效率高,pso作为一种被广泛采用的优化技术,已经被成功应用于许多现实问题,包括nwfsp等组合优化问题。一些学者修改了pso的主要算子以适应工件序列。另一些则使用新的表示方式来代替工件排列表示,通常引入编码方法来将离散解映射到连续域。常见的编码规则包括rk(random-key),lov(largest-order-value),sov(smallest-order-value),lrv(largest-ranked-value)和spv(smallest-position-value)等。虽然这些编码规则表现出了良好的性能,但编码效率是通常较低。另外,这些编码规则下的搜索空间并不能完全适应原本应用于连续空间的演化算法,例如pso。

本发明要解决的技术问题是:针对传统粒子群算法初期收敛速度快,而在后期容易陷入早熟、局部最优,且pso适用于连续解空间;以及阶乘码表示方法能将零等待流水车间调度问题(no-waitflowshopschedulingproblem,nwfsp)中的离散解映射至连续整数空间的能力。提出在阶乘码表示的nwfsp下对原始的pso算法进行改进,优化pso求解nwfsp的性能。



技术实现要素:

本发明的目的在于提供一种求解零等待流水车间调度问题的改进粒子群优化算法,解决了针对传统粒子群算法初期收敛速度快,而在后期容易陷入早熟、局部最优的问题。

本发明技术方案包括以下步骤:

步骤1:参数初始化;

设置控制参数的值:mrt为最大运行时间限制,c1和c2为速度常数,wmin和wmax影响惯性重量的参数,c=0是种群距离未变化次数,g=1为当前的迭代次数;

步骤2:种群初始化;

使用nn+neh生成初始工件序列,nn和neh是两种流行的启发式算法。评估其适应度值得到当前最优解pbest,历史最优解gbest=pbest,种群之间的欧氏距离d0,然后使用阶乘编码方法,将所有排列映射至整数构成初始种群,最后,随机生成可行的初始速度集;

步骤3:移动粒子;

通过原始pso种群更新策略更新种群,将新的种群映射到相应的工件序列,并评估每个新工件序列的完工时间。并更新当前最优解pbest以及历史最优解gbest;

步骤4:使用改进的变邻域搜索算法对pbest进行局部搜索,并将搜索得到的结果替换pbest;

步骤5:使用种群自适应算子pa增加种群的多样性;

步骤6:检查终止条件,如果终止条件满足,停止,返回变量gbest的值和相应的序列作为最终的解,否则继续步骤7;

步骤7:更新粒子速度;使用原始pso速度更新策略更新粒子速度集。g=g+1,转到步骤3。

进一步,步骤2中为了加快早期收敛速度生成工件序列,nn将每个步骤的部分调度序列的最后工件以最小的延迟时间附加到未调度的工件,nn+neh的详细步骤可以描述如下:

(1):设集合为待加工的工件集合,其中为集合p中的第i个工件,从通用集合p中随机选取l个工件其中为从集合p中随机选取的的第j个工件;

(2):将来自s的第j个工件jj,j=1,2,...,l作为在初始种群中第j个初始序列中的第一个工件,表示为然后应用nn启发式规则,寻找拥有至最小延迟时间的工件

(3):将来自s1的其他n-2个工件(即,排除)应用neh启发式规则(参考文献nawazm,jreee,hami.aheuristicalgorithmforthem-machine,n-jobflow-shopsequencingproblem[j].omega,1983,11(1):91-95.)来构建子序列sneh;

(4):通过将sneh附加到前两个工件之后来构造初始种群的第j个初始序列重复步骤2和步骤3,直到得到l个初始序列。

由于所提出的fpapso算法使用粒子来探索搜索空间,所以在算法的迭代过程中也需要粒子速度来更新粒子的位置。fpapso算法最初产生随机整数作为粒子速度,以更新粒子的位置。请注意,速度必须保持在适当的范围内,使得更新后的粒子仍然保持在可行的解空间。

进一步,步骤4中改进的变邻域搜索算法如下:

(1)在交换第η个和第k个工件,η≠k。

(2)删除第η个工件,并将其插入到第k个工件后,η≠k。

进一步,步骤5中pa的方法如下:

在一维整数域中的欧氏距离被用于测量pa中的种群多样性,设xg={x1,x2,...,xl}是第g代的种群,其中l代表种群大小,计算xg个体之间的欧氏距离dg如下:

当种群收敛在局部最优时,种群多样性低下,在这种情况下,两代之间的dg变化不显着,如果dg在连续的t代中保持不变,当种群规模变大时,算法进入稳定停滞状态将需要更多的时间,因此设定t=l,这表示pso不能产生更好的解以逃逸局部最优区域,那就意味着必须重新生成新的种群,新种群x′g={x′1,x′2,...,x′l}由如下方法产生:

x′i=n(μ,σ)i=1,2,...,l(2)

其中n表示产生一个正态分布随机数,其平均值为μ,方差为σ,计算公式如下:

在等式(3)中,pbest是当前种群中最好的个体,ub和lb分别是搜索空间的上界和下界。在等式(4)中,timeg表示从算法开始到当前代g的运行时间,mrt最大运行时间限制。

本发明的有益效果是改进了粒子群优化算法,提升了全局搜索能力,避免了过早收敛

附图说明

图1为交换和插入两种邻域操作;

图2为fpapso的算法流程图;

图3为rec35实例的收敛曲线;

图4为rec41实例的收敛曲线。

具体实施方式

下面结合具体实施方式对本发明进行详细说明。

本发明方法步骤如下:

步骤1:参数初始化。设置控制参数的值:l(粒子数目),mrt(最大运行时间限制),c1和c2(速度常数),wmin和wmax(影响惯性重量的参数),c=0(种群距离未变化次数),g=1(当前的迭代次数)。

步骤2:种群初始化。使用nn+neh生成初始工件排列。评估其适应度值得到当前最优解pbest,历史最优解gbest=pbest,种群之间的欧氏距离d0。然后使用阶乘编码方法,将l个排列映射至l个整数,其中l为初始种群大小(下文一致)。这l个整数构成初始种群。最后,随机生成可行的初始速度集。

为了加快早期收敛速度,本发明算法:基于阶乘码及种群自适应的粒子群优化算法(fpapso)将使用最近邻算法(nn)和插入式启发式算法(neh)生成l个初始解(或工件序列)。nn和neh是两种流行的启发式算法。nn将每个步骤的部分调度序列的最后工件以最小的延迟时间附加到未调度的工件。nn+neh的详细步骤可以描述如下:

(1):设集合为待加工的工件集合,其中为集合p中的第i个工件。从通用集合p中随机选取l个工件其中为从集合p中随机选取的的第j个工件;

(2):将来自s的第j个工件jj,j=1,2,...,l作为在初始种群中第j个初始序列中的第一个工件,表示为然后应用nn启发式规则,即寻找拥有至最小延迟时间的工件

(3):将来自s1的其他n-2个工件(即,排除)应用neh启发式规则(参考文献nawazm,jreee,hami.aheuristicalgorithmforthem-machine,n-jobflow-shopsequencingproblem[j].omega,1983,11(1):91-95.)来构建子序列sneh;

(4):通过将sneh附加到前两个工件之后来构造初始种群的第j个初始序列重复步骤2和步骤3,直到得到l个初始序列。

由于所提出的fpapso算法使用粒子来探索搜索空间,所以在算法的迭代过程中也需要粒子速度来更新粒子的位置。fpapso算法最初产生随机整数作为粒子速度,以更新粒子的位置。请注意,速度必须保持在适当的范围内,使得更新后的粒子仍然保持在可行的解空间。

步骤3:移动粒子。通过原始pso种群更新策略(参考文献kennedyj,eberhartr.particleswarmoptimization[c]ieeeinternationalconferenceonneuralnetworks,1995.proceedings.ieee,2002:1942-1948vol.4.)更新种群。将新的种群映射到相应的工件序列,并评估每个新序列的完工时间。并更新当前最优解pbest以及历史最优解gbest。

步骤4:使用改进的变邻域搜索算法(variableneighborhoodsearch,vns)对pbest进行局部搜索,并将搜索得到的结果替换pbest。

vns是一个用于组合及全局优化的启发式方法。这种技术的基本思想是在随机局部搜索过程中允许有规律地改变当前最好解的邻域结构。我们对vns方法做了一些改进,以适用于本文提出的算法。在此使用到的vns的邻域结构有两种:交换邻域和插入邻域,定义如下:

(1)在交换第η个和第k个工件,η≠k(交换邻域),如图1。

(2)删除第η个工件,并将其插入到第k个工件后,η≠k(插入邻域),如图1。

为了应用vns局部搜索,必须使用阶乘解码规则将整数粒子解码为工件排列。同样的,vns得到的局部最优排列,也必须编码成一个整数解以返回到pso。

步骤5:使用种群自适应算子(pa)增加种群的多样性。应用pa算子对当前种群进行适应操作。然后使用适应后的种群替换当前种群。

以阶乘码表示的nwfsp问题包含许多局部最优解,这意味着基础的pso很容易陷入局部最优。种群自适应算子能够在种群多样性差时提高种群多样性,并使种群在陷入局部最优时跳出局部最优。pa用于改善种群多样性,避免粒子堆积在局部最优点。pa的方法如下:

在一维整数域中的欧氏距离被用于测量pa中的种群多样性。假设xg={x1,x2,...,xl}是第g代的种群,其中l代表种群大小。计算xg个体之间的欧氏距离dg如下:

当种群收敛在局部最优时,种群多样性低下。在这种情况下,两代之间的dg变化不显着。如果dg在连续的t代中保持不变(当种群规模变大时,算法进入稳定停滞状态将需要更多的时间,因此我们设定t=l),这表示pso不能产生更好的解以逃逸局部最优区域,那就意味着必须重新生成新的种群。新种群x′g={x′1,x′2,...,x′l}由如下方法产生:

x′i=n(μ,σ)i=1,2,...,l(2)

其中n表示产生一个正态分布随机数,其平均值为μ,方差为σ,计算公式如下:

在等式(3)中,pbest是当前种群中最好的个体,ub和lb分别是搜索空间的上界和下界。在等式(4)中,timeg表示从算法开始到当前代g的运行时间。mrt最大运行时间限制。

fpapso是一种结合pso,pa和vns的启发式算法。在原有pso的基础上,fpapso的基本要素总结如下:

粒子(个体):表示g代种群中的第i个“粒子”。在事实表现形式下,粒子由自然数域中的数字表示。请注意,粒子总是对应于工件加工序列。

种群(粒子群):xg是第g代的l个粒子,

排列:每个粒子都一一对应于一个工件排列类似地,具有l个粒子的群xg对应于l个工件排列i=1,2,...,l的集合πg,

粒子的适应度值:一个粒子的适应度值等于相应工件序列的加工完成时间。

搜索空间:假设有n个工件,所有的排列可以唯一映射至自然数空间:[0,1,...,n!-1]。因此,fpapso的整个搜索空间是[0,1,...,n!-1]。

邻域:fpapso的邻域与nnd邻域相匹配。

基于上述算法的几个重要组成部分,fpapso算法的流程如图2。

步骤6:检查终止条件。如果终止条件满足,停止。返回变量gbest的值和相应的序列作为最终的解。否则,继续步骤7。

步骤7:更新粒子速度。使用原始pso速度更新策略更新粒子速度集。g=g+1,转到步骤3。

本发明提出了一种求解零等待流水车间调度问题(nwfsp)的改进粒子群优化算法。该算法以最小化完工时间为目标。首先,设计了一种基于阶乘表示的新的编解码技术,用于将nwfsp离散空间的调度序列映射至连续空间中的自然数序列。其次,在原始粒子群优化算法(pso)的基础上设计了三个对应的算子使其适应于求解阶乘表示的nwfsp问题:(1)用neh算法及最近邻启发式算法(nn+neh算子)产生优质的初始粒子群;(2)使用变邻域搜索(vns)算子在当前最优解附近进行局部搜索;(3)使用种群适应(pa)算子,以增加种群多样性,避免粒子陷入局部最优。这些改进大大加强了标准pso算法求解nwfsp的性能,使其成为了一种求解该问题高效且稳健的算法。

在下面的实验中,测试了用最小化完工标准来求解nwfsp算法的效率和效率。fpapso与基于pso算法,两种基于禁忌机制的算法,一种基于阶乘码表示的算法和一种基于迭代贪心(ig)的算法即dpsovnd[2],ts-pso[3],iiga[4],tmiig[5]。这些算法提供了用最小化完工标准来求解nwfsp的最新性能。对于这些算法,我们使用了三个不同尺度的标准测试集来测试它们的性能:(1)由carlier设计的8个实例:car01到car08。(2)由reeves设计的29个实例:rec01至rec41,分为七个不同大小的子集,从20×5到75×20。这些实例可从or库网站获得。每个实例独立运行30次,每个算法进行比较。

fpapso采用c++编程语言实现,并在具有3.4ghzcoretmi7-6700cpu,8gb内存及64位操作系统的pc上运行。有必要指出,程序中使用基于gnu多精度运算库的mpir运算库来处理阶乘编解码中的大整数运算。

为了进行准确而公平的比较,对比算法也已经在c++中被仔细地重新实现,原始论文中给出的所有细节在fpapso的相同平台上运行并且具有相同的最大运行时间(mrt)终止条件。对于carlier标准测试集,每个比较算法的最大运行时间设置为n×mms。对于reeves标准测试集,每个比较算法的mrt条件设置为10×n×mms。

为了证明我们提出的算法的有效性,并将性能与其他方法进行比较,使用平均相对百分比偏差(averagerelativepercentagedeviation,arpd)来衡量实验结果的质量。相应的arpd值计算如下:

其中mi是实例在第i次运行中由算法获得的完工时间。copt是目前为止最好的解决方案或者最好的解决方案。显然,arpd值越小,算法的性能越好。

另外,还记录标准偏差(sd)以指示算法的鲁棒性,其中sd计算如下:

其中mi是实例在第i次运行中由算法获得的完工时间。是n个结果的平均值。低sd值意味着算法是可靠的。

表2显示了运行carlier实例时四种比较算法的实验结果。每项措施的最佳结果用黑体字表示。表1中的列3(copt)给出了迄今为止发现的最佳解决方案。第4列(t(s))提供了所有算法的mrt。如表1所示,fpapso的平均arpd值为0,分别比dpsovnd和ts-pso的对应值分别为0.001和0.007,并且等于tmiig的arpd值。尤其是dpsovnd和ts-pso在car4中找不到最优解,car4虽然规模仅为14×4,但有各种局部最优解。可以得出结论,fpapso对解决小规模的nwfsp问题是有效的。有趣的是,ts-pso和fpapso是基于事实表现和pso的。然而,在car4实例中fpapso可以避免陷入局部最优,而ts-pso则不能。原因是pa策略的引入使得fpapso具有更强的全球搜索性能。tmiig和fpapso算法的平均sd值是0,低于dpsovnd和ts-pso得到的0.167和0.655,这意味着fpapso算法对于小规模的nwfsp问题也是可靠的。

表1.基于carlier标准测试集的算法比较.

进一步,对于reeves案例,表2列出了四种比较算法的计算结果。每个度量的最佳结果用黑体表示。如表2所示,由fpapso获得的arpd值比其他的要好,或者至少相等,只有rec21实例除外。由fpapso算法产生的平均arpd值为0.08,分别小于由ts-pso,dpsovnd和tmiig分别获得的0.42,0.15和0.12的相应值。fpapso得到的平均sd值也最好,分别小于ts-pso,dpsovnd和tmiig得到的9.49,4.48和2.59。以上结果说明fpapso算法比中等规模nwfsp问题的这些最新算法明显好。图3和图4中两个reeves实例(rec35和rec41)的收敛曲线表明,tmiig和dpsovnd可以快速收敛到局部最优。然而,fpapso随着进化过程逐渐平缓下降。原因是fpapso在进化早期探索大峡谷景观,群落随粒子运动聚集在几个谷底。即使fpapso在开始时收敛速度并不快,fpapso仍能在几代之后达到全局最优。这意味着pso可以有效地探索具有事件发现的搜索空间。

表2.基于reeves标准测试集的算法比较。

本发明的优点还在于:

(1)借助了阶乘编码方式将nwfsp离散解空间映射至连续解空间,使得求解连续问题的pso能运用于求解离散的车间调度问题;并在原始的pso算法上增加了初始解成机制、局部搜索机制以及种群适应机制,增强了pso的全局搜索能力及局部搜索能力;

(2)在pso算法中引入新的初始解生成机制,使得pso能快速探索较好解所在的区域;

(3)在pso算法中引入变邻域搜索机制作为局部搜索策略,增强了pso的局部搜索能力,加快其收敛速度;

(4)在pso算法中引入种群适应策略,避免了pso在阶乘码表示的nwfsp适应度地形中陷入局部最优,从而提升了pso的全局搜索能力,避免了过早收敛。

以上所述仅是对本发明的较佳实施方式而已,并非对本发明作任何形式上的限制,凡是依据本发明的技术实质对以上实施方式所做的任何简单修改,等同变化与修饰,均属于本发明技术方案的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1