一种基于改进鲸鱼算法求解柔性作业车间调度的方法与流程

文档序号:17930160发布日期:2019-06-15 00:46阅读:919来源:国知局
一种基于改进鲸鱼算法求解柔性作业车间调度的方法与流程

本发明属于柔性作业车间调度领域,涉及一种基于改进鲸鱼算法求解柔性作业车间调度的方法。



背景技术:

柔性作业车间调度问题(flexiblejob-shopschedulingproblem,fjsp)是经典调度问题的扩展,由于其考虑了工件柔性加工路径的特性,更符合车间生产的实际情况,但机器约束的减少,也增加了问题的求解难度,因此,该问题的求解算法也成为近些年车间调度领域研究的热点之一。目前,智能优化算法是解决这一问题的主要方法,它为fjsp的解决提供了更多思路和途径,而引起了国内外学者的广泛关注。

虽然近年来学者们提出了各种元启发式算法用于求解fjsp,包括基于云计算的改进细菌觅食算法、混合遗传算法以及粒子群算法等等,但目前仍没有那一种算法可以求解得fjsp的所有最优解,因此学者们仍在不断积极探索,以期找到一种能够更好得求解得最优解的求解方法。



技术实现要素:

本发明的目的在于克服上述现有技术的缺点,提供一种基于改进鲸鱼算法求解柔性作业车间调度的方法。

为达到上述目的,本发明采用以下技术方案予以实现:

一种基于改进鲸鱼算法求解柔性作业车间调度的方法,包括以下步骤:

步骤1:对柔性作业车间调度的机器选择和工序排序进行编码,建立柔性作业车间调度问题的数学模型;

步骤2:设置改进鲸鱼算法种群规模、最大迭代次数和位置元素,并利用混沌反向学习策略和搜索法生成初始种群;

步骤3:定义适应度函数:

其中,fmax表示工件的最大完工时间,表示工件i的完工时间,n表示工件数;计算种群中各调度解的适应度值,得到当前最优的调度解;

步骤4:判断当前迭代次数是否大于最大迭代次数;否,则执行步骤5-8;是,则执行步骤9;

步骤5:为最优鲸鱼个体设置计数器,若改进鲸鱼算法迭代一次后最优鲸鱼个体未发生改变,则计数器值加1,判断当前最优鲸鱼个体的计数器值是否不小于预设值;是,则执行步骤6;否,则执行步骤7;

步骤6:对调度解执行变邻域搜索操作,更新调度解;

步骤7:将调度解转换为鲸鱼个体位置向量,并保留调度解对应的鲸鱼个体;

步骤8:采用改进鲸鱼算法更新鲸鱼个体位置信息;将鲸鱼个体位置向量转换为调度解s完成种群更新,令t=t+1;其中,t为当前迭代次数,转至步骤3;

步骤9:输出调度解。

本发明进一步的改进在于:

改进鲸鱼算法包括环绕捕食、发泡网攻击和随机搜索;其中:

环绕捕食的数学模型为:

其中:t表示当前迭代次数,是系数向量,是当前最优鲸群个体的位置向量,是当前鲸群个体的位置向量,||是取绝对值,·是逐元素相乘,在迭代过程中其内部元素非线性收敛因子a在发泡网攻击和随机搜索中从2线性递减到0,表达式为tmax为最大迭代次数;为随机向量,r取值范围为[0,1];

发泡网攻击包括收缩包围和螺旋式位置更新;收缩包围时的变动范围随着的减少而缩小,的取值范围为[-1,1];螺旋式位置更新的数学模型为:

其中,为鲸鱼最佳位置与猎物之间的距离;b为定义的控制对数螺线形状的常数,l为[-1,1]之间的随机数;同时引入自适应权重ω:

则发泡网攻击的数学模型为:

随机搜索的数学模型为:

其中,为从当前种群中随机选择的个体位置矢量,p是[0,1]中的一个随机数。

步骤1中采用等长的两段式编码方式对柔性作业车间调度的机器选择和工序排序进行编码。

步骤6的具体方法为:

步骤6-1:构建邻域结构n1、n2和n3;

步骤6-2:进行変邻域搜索,具体包括以下步骤:

步骤6-2-1:将当前最优个体位置x*作为变邻域初始解x,设置λ←1,qmax←3最大迭代次数ηmax;

步骤6-2-2:设置q←1;

步骤6-2-3:若q=1,则x'←n1(x);若q=2,则x'←n2(x);若q=3,则x'←n3(x);

步骤6-2-4:将x'作为初始解进行局部搜索,得到最优解x”;

步骤6-2-5:若x”优于x,则x←x”,并设置q←1;否则,设置q←q+1;

步骤6-2-6:判断q>qmax是否满足,若满足,则设置q←q+1,转到步骤6-2-7;否则,转到步骤6-2-3;

步骤6-2-7:判断η>ηmax是否满足,若满足,结束;否则,转到步骤6-2-2。

步骤6-1包括以下步骤:

步骤6-1-1:构建邻域结构n1:在工序排序部分的码段中任选两个元素,将选中的两个元素进行位置交换操作;

步骤6-1-2:构建邻域结构n2:在工序排序部分的码段中任选两个元素,将选中的两个元素中位置靠后的元素插入到位置靠前的元素前面的位置;

步骤6-1-3:构建邻域结构n3:在机器分配部分的码段中任选一个元素,该元素的可加工设备数量大于1台,然后将该元素的对应的加工设备变为其他可选设备,进而通过方案转换个体位置的方式生成新的排序方案。

步骤6-2-4中局部搜索采用阈值接受法,包括以下步骤:

步骤6-2-4-1:获取初始解x',并设置阈值δ>0,γ←1,ρ←1和终止条件γmax;

步骤6-2-4-2:若ρ=1,则x”←n1(x')∪n3(x');若ρ=0,则x”←n2(x')∪n3(x');

步骤6-2-4-3:判断cmax(x”)-cmax(x')≤δ是否满足;如果满足,则x'←x”;否则,设置ρ←|ρ-1|;

步骤6-2-4-4:令γ←γ+1,判断γ>γmax是否满足;如果满足,则x”←x',转到步骤6-2-4-5;否则,转到步骤6-2-4-2;

步骤6-2-4-5:局部搜索结束。

将调度解s转换为鲸鱼个体位置向量的具体方法为:

s1:机器选择:采用下式将工序可选机器集中已选机器的序号转换为鲸鱼个体位置向量元素值,

x(i)=[2m/(s(i)-1)](n(i)-1)-m,s(i)≠1

其中:x(i)表示个体位置向量的第i个元素;s(i)表示元素i对应工序可以选择的机器个数;m表示机器总数;n(i)∈[1,s(i)]表示选定机器在可选机器集里面的序号;

如果s(i)=1,则x(i)在[-m,m]内任意取值;

s2:工序排序:首先生成[-m,m]内的一组与工序排序相对应的随机数,并按升序排列规则为每个随机数赋予一个唯一的rov值,使得每个rov值对应一个工序,然后根据工序的编码顺序对rov值进行重排,重排后的rov值对应的随机数顺序即为鲸鱼个体位置向量中各元素的值,组合为鲸鱼个体位置向量。

将鲸鱼个体位置向量转换为调度解s的具体方法为:

r1:机器选择:按照下式

得到选定机器在机器集里面的序号;其中:xij表示i工件的第j道工序所对应的个体位置元素;sij表示i工件的第j道工序可以选择的机器个数;nij∈[1,sij]表示选定机器在机器集里面的序号;如果sij=1,则xij在[-m,m]内任取数值,2m表示个体位置向量的长度;

r2:工序排序:首先给每一个鲸鱼个体位置元素按升序的顺序赋予对应的rov值,然后以rov值作为元素编号,将rov值与工序相对应构造得出相应的调度解s。

与现有技术相比,本发明具有以下有益效果:

通过采用基于混沌反向学习策略和搜索法的种群初始化方法来提高初始种群的质量;其次,针对当前最优个体执行变邻域搜索操作,增强了算法的局部搜索能力;采用两段式编码方式,有效的实现了柔性作业车间调度最优解的离散值和改进鲸鱼算法的连续值之间的转换;引入非线性收敛因子和自适应权重平衡了算法的全局搜索和局部开发的能力,使算法可以有效的求解得到柔性作业车间调度的所有最优解。通过对15个标准算例的仿真实验,验证了算法各种改善机制的有效性,同时也测验了算法在求解速度和精度方面的优越性,为后续的深入工作提供了一种新途径。

附图说明

图1为本发明的求解柔性作业车间调度的方法流程图;

图2为本发明的fjsp编码方案示意框图;

图3为本发明的调度方案转换为个体位置向量转换过程框图;

图4为本发明的个体位置向量转换为调度方案转换框图;

图5为本发明实施例3的迭代收敛曲线图;

图6为本发明实施例3的调度结果甘特图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

下面结合附图对本发明做进一步详细描述:

参见图1,本发明基于改进鲸鱼算法求解柔性作业车间调度的方法,包括以下步骤:

步骤1:对柔性作业车间调度的机器选择和工序排序进行编码,建立柔性作业车间调度问题的数学模型;

步骤2:设置改进鲸鱼算法种群规模、迭代次数和位置元素,并利用混沌反向学习策略和搜索法生成初始种群;

步骤3:定义适应度函数:

其中,fmax表示工件的最大完工时间,表示工件i的完工时间,n表示工件数;计算初始种群中各调度解的适应度值,得到当前最优的调度解;

步骤4:判断是否满足算法的终止条件;若不满足,则执行步骤5-8;如若满足,则执行步骤9;

步骤5:为最优鲸鱼个体设置计数器,若改进鲸鱼算法迭代一次后未发生改变,则计数器值加1,判断当前最优个体的计数器值是否满足≥预设值,如果满足,则执行步骤6;否则,执行步骤7;

步骤6:对调度解执行变邻域搜索操作,更新调度解;

步骤7:将调度解s转换为鲸鱼个体位置向量,并保留调度解所对应的鲸鱼个体;

步骤8:采用改进鲸鱼算法更新鲸鱼个体位置信息;将鲸鱼个体位置向量转换为调度解完成种群更新,令t=t+1;其中,t为当前迭代次数,转至步骤3;

步骤9:输出最优结果和对应调度解。

下面详细介绍本发明方法的内容:

一、柔性作业车间调度的问题模型

fjsp指的是n个工件如何在m台机器上安排加工的问题,其中,每个工件i的加工由ji道工序所组成,每道工序可以在一台以上的设备上完成加工,每台机器能够加工的工件种类和加工所需要的时间已知,在此基础上,寻找最合理的加工分配方案,力求最小化最大完工时间,该问题满足的假设条件如下:

所有工件在初始时刻均处于可加工状态;(2)一道工序只能完整的在同一台机器上加工完成,中间不允许移动;(3)一台机器同时只能加工一道工序;(4)同一个工件的工序之间加工顺序是固定的,不同工件的工序之间加工顺序相互独立。

令fmax表示工件的最大完工时间,表示工件i的完工时间,据此可以将目标函数表示为:

二、基本鲸鱼算法

鲸鱼优化算法(woa)是模仿座头鲸觅食行为的新型智能优化算法。座头鲸发现猎物后,以螺旋方式收缩包围猎物,同时发出气泡网进行觅食。具体觅食方式包括“环绕捕食”“发泡网攻击”“随机捕食”等三种捕食方式。其中“发泡网攻击”又包括“收缩包围”和“螺旋式位置更新”两个步骤,因此座头鲸的觅食方式有以下数学描述:

2.1环绕捕食

由于猎物的位置(最佳位置)在搜索空间中是未知的,所以woa假设当前鲸群最佳个体位置为最接近目标猎物的个体位置,鲸群其他个体将通过朝最佳个体位置方向移动进行更新。该行为表示为:

其中,t表示当前迭代次数,是系数向量,是当前最优个体的位置向量,是当前鲸群个体的位置向量,||是取绝对值,·是逐元素相乘,在迭代过程中其内部元素(发泡网攻击和搜索捕食阶段)从2线性递减到0,表达式为其中m为最大迭代次数;为随机向量,r取值范围为[0,1]。

2.2发泡网攻击

觅食过程中,座头鲸沿着螺旋路径逐渐收缩到猎物周围,为了对这种行为进行建模,假设在优化过程中,更新鲸鱼的位置时,以50%的概率作为阈值来选择收缩包围机制或螺旋式位置更新:

2.2.1收缩包围机制

这种行为是通过减少公式(4)中的a值来实现的;其中的变动范围也随着的减少而缩小,此时的取值在[-1,1]之间。

2.2.2螺旋式位置更新

首先计算鲸群个体和位于最优位置处的猎物之间的距离,然后在鲸群个体和猎物的位置之间创建一个螺旋数学模型,以模仿座头鲸的螺旋形运动。数学模型如下所示:

则座头鲸的发泡网觅食行为的数学模型如下:

p是[0,1]中的一个随机数。

2.3随机搜索

随机搜索是指鲸群个体根据随机选择的鲸鱼个体更新位置,而不是目前找到的最佳鲸鱼个体。在值大于1或者小于-1时,迫使鲸鱼个体偏离当前猎物位置,以此搜索其他更合适的猎物。数学模型如下:

其中,是从当前种群中随机选择的个体位置矢量。

三、改进鲸鱼算法求解柔性作业车间调度问题

3.1fjsp的编码机制

fjsp包含机器选择和工序排序两个子问题,针对这一特点,采用等长的两段式编码方式来对问题加以描述。如对于3个工件每个工件都有2道工序的fjsp,其个体位置向量总长度为12,个体位置元素取值范围为[-3,3],其中前6位表示6道工序的机器选择,后6位表示加工顺序的安排,编码方案如图2所示,opij表示工件i的第j道工序。

3.2转换机制

fjsp的解是离散值,woa的个体位置向量是连续值。为了解决这一差异,有效地利用woa来求解fjsp,采用下述方法实现二者的转换。

1)调度方案转换为个体位置向量

i)机器选择:按照式(11)将工序可选机器集中已选机器的序号转换为对应个体位置向量元素值,如下式所示:

x(i)=[2m/(s(i)-1)](n(i)-1)-m,s(i)≠1(11)

其中:x(i)表示个体位置向量的第i个元素;s(i)表示元素i对应工序可以选择的机器个数;n(i)∈[1,s(i)]表示选定机器在可选机器集里面的序号。如果s(i)=1,则x(i)在[-m,m]内任意取值。

ii)工序排序:首先生成[-m,m]内的一组与工序排序方案相对应的随机数,并按升序排列rov(rankedordervalue)规则为每个随机数赋予一个唯一的rov值,使得每个rov值对应一个工序,然后根据工序的编码顺序对rov值进行重排,重排后的rov值所对应的随机数顺序即为个体位置向量中各元素的值。转换过程如图3所示。

2)个体位置向量转换为调度方案

i)机器选择:按照式(11)的反向推导可得机器的编号如下式(12)所示。

其中:xij表示i工件的第j道工序所对应的个体位置元素;sij表示i工件的第j道工序可以选择的机器个数;nij∈[1,sij]表示选定机器在机器集里面的序号。如果sij=1,则xij在[-m,m]内任取数值,2m表示个体位置向量的长度。

ii)工序排序:首先给每一个个体位置元素按升序的顺序赋予对应的rov值,然后以rov值作为元素编号,将其与工序相对应即可构造得出相应的新的排序方案。转换过程如图4所示。

3.3种群初始化

种群初始化将针对机器分配和工序排序两个子问题分层展开,然后利用公式(11)将其转换为个体位置向量。首先対机器分配部分采用混沌反向学习策略生成一组较优的分配方案;然后,采用搜索的方式随机生成若干组工序排序方案,并将其依次与已生成的机器分配方案组合之后求对应的适应度值,选择适应度值最好的方案对为初始解,以此来完成初始种群的生成。

3.4非线性收敛因子与自适应权重更新策略

在woa中,其全局搜索和局部开发能力主要依赖于收敛因子a,其对于算法的求解能力有很大的的影响,其值大,则算法搜索能力较强,可以在较大区域内展开搜索,其值小,则只能在小范围内进行搜索,因此,为了提高woa的搜索效率,在算法前期搜索阶段可以将a设置大一些,有利于在较大范围展开寻优,后期设置小一些则便于在最优解周围进行针对性的精细搜索。对收敛因子a进行改进,其公式为:

通过对a的改进可以一定程度上提高算法的寻优能力,但并不能达到有效平衡算法局部搜索和全局探索能力的目的,为此,引入自适应权重ω与非线性收敛因子a相配合来协调算法全局搜索和局部开发的能力,通过自适应权重ω来提高算法的的寻优性能,其公式如(14)所示,改进后的更新公式如式(15)所示。

则随机搜索的数学模型为:

其中,为从当前种群中随机选择的个体位置矢量,p是[0,1]中的一个随机数。

3.5邻域搜寻模式

在基本woa搜索过程中,种群个体根据当前最优个体x*来更新位置信息,因此,x*的多样性也决定了woa算法跳出局部最优解的能力,影响算法的计算性能,本文将变领域搜索嵌入到woa中,并为x*设置“计数器”,若woa迭代一次后x*未发生改变,则“计数器”加1,否则不变。当计数器超过预设的上限(本文取15),则对执行变邻域搜索,使其跳出局部最优值。变邻域搜索的算法步骤如下:

构建邻域结构:1)邻域结构n1:在工序排序部分的码段中任选两个元素,将选中的两个元素进行位置交换操作。

2)邻域结构n2:在工序排序部分的码段中任选两个元素,将选中的两个元素中位置靠后的元素插入到位置靠前的元素前面的的位置。

3)邻域结构n3:在及其分配部分的码段中任选一个元素,该元素的可加工设备数量大于1台,然后将该元素的对应的加工设备变为其他可选设备,进而通过方案转换个体位置的方式生成新元素值。

进行変邻域搜索:

步骤1:将当前最优个体位置x*作为变邻域初始解x,设置λ←1,qmax←3最大迭代次数ηmax;

步骤2:设置q←1;

步骤3:若q=1,则x'←n1(x);若q=2,则x'←n2(x);若q=3,则x'←n3(x);

步骤4:将x'作为初始解进行局部搜索,得到最优解x”;

步骤5:若x”优于x,则x←x”,并设置q←1;否则,设置q←q+1;

步骤6:判断q>qmax是否满足,若满足,则设置q←q+1,转到步骤7;否则,转到步骤3;

步骤7:判断η>ηmax是否满足,若满足,结束;否则,转到步骤2。

邻域搜索中的局部搜索采用阈值接受法,具体如下:

步骤1:获取初始解x',并设置阈值δ>0,γ←1,ρ←1和终止条件γmax;

步骤2:若ρ=1,则x”←n1(x')∪n3(x');若ρ=0,则x”←n2(x')∪n3(x');

步骤3:判断cmax(x”)-cmax(x')≤δ是否满足;如果满足,则x'←x”;否则,设置ρ←|ρ-1|;

步骤4:令γ←γ+1,判断γ>γmax是否满足;如果满足,则x”←x',转到步骤5;否则,转到步骤2;

步骤5:局部搜索结束。

四、算例分析

柔性作业车间调度问题的局部化和多目标优化算法(算法1)、基于禁忌搜索的柔性作业车间调度算法(算法2)中的fjsp基准brandimarte算例(实施例1)和kacem算例(实施例2)进行仿真实验。仿真环境为:采用matilab2016a程序语言,在windows10操作系统下,配置为8g内存;cpuintel(r)core(tm)i5-8250u@1.60ghz主频1.80ghz的计算机上进行。算法的参数设置为:种群规模为100,螺旋常数b取1,最大迭代次数为400,领域搜索和局部搜索的最大迭代次数和设置为10。

首先分别对引入非线性收敛因子和自适应权重以及变邻域方法后算法的有效性进行对比分析,将各算法在mk01~mk10算例下独立运行20次进行比较,如表1所示,其中best表示20次仿真得到的最优值,avg表示20次仿真结果的平均值。woa表示传统的鲸鱼算法,woa-1表示在woa中引入非线性收敛因子和自适应权重,woa-2表示在woa中引入变领域搜索策略,iwoa表示本文提出的算法。从表1中数据可以看出,iwoa算法的计算结果优于其他两种算法,但计算时间较其他两种算法有所延长,这是由于引入变邻域搜索机制和非线性收敛因子等,一定程度上增加了算法的时间复杂度。

为了进一步验证iwoa求解fjsp问题的有效性,将其与现有文献中的不同算法进行比较,对比结果如表2和表3所示。在表2中,time表示对应算例的计算时间,avg-t表示5个标准算例的平均计算时间,lb表示对应算例的已知最优解,从表2中的数据可以明显看出,iwoa在求解kacem算例时,大多数情况下均能获得最优值。同时,基于蚁群优化算法在柔性作业车间调度问题中的应用(算法3)在配置为2.4ghzcpuand1gbram的计算机上对5个算例的平均计算时间214.8s,针对柔性作业车间调度问题提出的一种高效领域结构的混合禁忌搜索算法(算法4)在配置为1.6ghzcpuand512mbram的计算机上4978.8s的平均计算时间,混合灰狼优化算法(hgwo)求解柔性作业车间调度问题(算法5)在配置为pentiumcpug2030@3.00ghz,2.99ghz的计算机上19s的平均计算时间,本文算法在配置为intel(r)core(tm)i5-8250u@1.60ghz1.80ghz的计算机上的平均计算时间仅为4s,虽然各算法的仿真平台不完全一样,但也可以看出iwoa在计算速度方面有明显的提高。

由表3可知,在求解brandimarte的十个基准算例过程中,iwoa可以求得其中4个算例的最优解,优于针对柔性作业车间调度问题的“高尔夫社区”算法(算法8)(1个),混合灰狼优化算法(hgwo)求解柔性作业车间调度问题(算法5)(2个),一种求解柔性作业车间调度问题的有效分布式粒子群算法(算法7)(1个),基于蚁群优化算法在柔性作业车间调度问题中的应用(算法3)(3个),和基于柔性作业车间调度问题的人工免疫算法(算法6)(4个)和针对柔性作业车间调度问题提出的一种高效领域结构的混合禁忌搜索算法(算法4)(4个)相同。综合表2和表3的实验结果可知iwoa在求解以最小化最大完工时间为优化目标的fjsp方面具有一定的可行性和优越性。

表1三种算法的对比结果

表2kacem算例对比结果

表3brandimarte算例对比结果

实施例3

采用改进鲸鱼算法以一个3×6的fjsp调度问题为例进行仿真求解,其加工信息表如表4所示。其对应迭代收敛曲线如图5所示,得到的调度结果甘特图如图6所示。

表4加工信息表

本发明对柔性作业车间调度问题的特点,提出一种用于求解fjsp的改进的鲸鱼优化算法:1)算法采用两段式编码方式,设计了一种基于混沌反向学习策略和搜索法的种群初始化方法来提高初始种群的质量;其次针对当前最优个体执行变邻域搜索操作,以增强算法的局部搜索能力;此外,引入非线性收敛因子和自适应权重以平衡算法的全局搜索和局部开发的能力。2)通过对15个标准算例的仿真实验,验证了算法各种改善机制的有效性,同时也测验了算法在求解速度和精度方面的优越性。3)为下一步将把woa进行更深层次的改进以用来求解更复杂的车间调度优化问题提供了一种新途径。

以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。

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