一种基于混合鲸鱼群算法求解柔性作业车间调度的方法
技术领域
本发明属于柔性作业车间调度技术领域,具体涉及一种基于混合鲸鱼群算法求解柔性作业车间调度的方法。
背景技术
柔性作业车间调度问题(Flexible Job-shop Scheduling Problem,FJSP)作为传统作业车间调度问题的扩展形式,增加了工件柔性加工路径的选择问题,其求解的难度更大,也更贴近于生产实际,已被证明是一种具有NP难特性的组合优化问题。对于该问题的求解,各种智能算法目前为其的主要手段,也成为了当前生产调度领域的研究热点。
现有技术中,加工顺序与开始时间相关联的FJSP,通过对分离图模型的学习,设计了一种领域具体化和解空间多样化的禁忌搜索算法,并通过标准算例的测试验证了算法的优越性;基于离散和谐搜索算法的用于求解最小化最大完工时间FJSP的高效排序的方法,改进混合灰狼优化算法,通过进化种群动态、反向学习初始化种群,以及最优个体变异等三个方面对算法进行改进操作,并对标准算例进行了仿真,结果表明,改进后的混合灰狼优化算法能够有效跳出局部最优值,找到更好的解,且结果鲁棒性更强。通过应用多色集合理论中围道布尔矩阵来构建柔性作业车间调度问题的多重约束模型和单层遗传编码方式,使GA算法的搜索范围得以缩小,染色体的空间和时间复杂度得到有效降低,进而提高了算法求解FJSP问题的速度和精度。混合型灰狼优化算法(HGWO),采用两段式个体编码方式实现离散调度解的连续编码,并利用变邻域搜索策略加强了算法的局部搜索能力,同时引入遗传算法的交叉和变异操作增强了种群的多样性,通过对柔性作业车间调度问题标准算例的仿真测验,结果表明该算法能有效地避免了早熟,提高了求解速度和精度。应用量子计算理论改进的鲸鱼优化算法(WOA),并应用其对作业车间调度问题进行了求解,证明了算法的收敛性和正确性,而作业车间调度问题属于离散的调度问题,而改进的鲸鱼算法主要通过对连续的鲸鱼个***置向量进行迭代操作来实现求解与寻优的,现有技术并未给出两者之间的具体转换过程。因此,应用新型算法来求解生产调度问题依然是制造领域研究的热点之一。
WSA是受到鲸鱼捕食捕食过程中个体之间利用超声波相互交流引导的启发而提出的一种新的元启发式算法。WSA以其特殊的迭代方式,证明了其求解组合优化问题的优越性。但要应用其来求解离散类问题,首先要解决问题解与个***置向量之间的相互转换问题,因此,本文通过引入经典转化机制解决调度问题解与个***置向量之间相互转化的基础上,应用该算法来对FJSP这一经典组合优化问题进行求解,并通过实施例求解和对比分析来验证算法的优越性,以期探索出一条解决FJSP的新的途径。
发明内容
本发明的目的是提供一种基于混合鲸鱼群算法求解柔性作业车间调度的方法,解决了现有技术中存在的柔性作业车间调度问题中表现出的求解精度不高、收敛速度较慢的问题。
本发明所采用的技术方案是,一种基于混合鲸鱼群算法求解柔性作业车间调度的方法,具体按照以下步骤实施:
步骤1、定义柔性作业车间调度的编码方式为两段式随机键编码,然后采用转换机制进行映射转换;
步骤2、定义适应度函数,以求解总加工时间最短为优化目标;
步骤3、采用鲸鱼群算法,对柔性作业车间调度问题中的参数以及鲸鱼种群初始化,首先对鲸鱼群算法中个***置变量元素的上下界ε、声源强度ρ0、当前迭代次数t、最大迭代次数M参数进行设定;种群初始化分为两步进行,第一步随机生成工序的排序方案,第二步采用改进遗传算法的遗传变异方式生成与工序排序方案对应的较优的机器分配方案,进而产生较优的初始种群;
步骤4、计算各调度方案的适应度值,寻找并保留最好的调度解S*;
步骤5、输出最优的调度解S*及其对应的适应度函数值,S*即为所求最优调度方案。
本发明的特点还在于,
步骤1中转换机制具体按照以下步骤实施:
a、调度方案向个***置的转换:
i)机器选择:按照下式将工序可选机器集中序号转换成个***置向量元素值:
x(i)=[2m/(s(i)-1)](n(i)-1)-m,s(i)≠1
其中:x(i)表示个***置向量的第i个元素;s(i)表示元素i对应工序可以选择的机器个数;n(i)∈[1,s(i)]表示选定机器在可选机器集里面的序号。如果s(i)=1,则x(i)在[-m,m]内任意取值。
ii)工序排序:首先生成[-m,m]内的一组随机数,并按升序排列ROV规则为每个随机数赋予一个唯一的ROV值,使每个ROV值对应一个工序,然后根据工序的编码顺序对ROV值进行重排,重排后的ROV值所对应的随机数顺序即为个***置向量中各元素的值。
b、个***置向量向调度方案的转换:
i)机器选择:按照所述a中调度方案向个***置的转换中的公式的逆操作执行,由此获得机器的编号:
ii)工序排序:首先使每一个元素编号对应一个唯一的编码中的工序顺序及位置元素,然后根据ROV规则对位置元素进行升序排列,此时的ROV值对应元素编号进而构造工序排序方案;
步骤2具体按照以下步骤实施:
步骤2.1、柔性作业车间调度的问题模型FJSP描述如下:
假设M为加工设备的数量,N为待加工工件数量,P为工序数,I为所有设备的集合;Ieg代表工件e的第g道工序的可用设备集合,Je为工件e的工序数,x为所有工件的加工次序,Segk表示工件e的第g道工序在设备k上加工的开始时间;Eegk为工件e的第g道工序在设备k上的加工结束时间;Tegk为工件e的第g道工序在设备k上的持续加工时间,且k∈Ieg则有Eegk=Segk+Tegk;Ep表示最后工序的完工时间;MS表示所有工件的最后完工时间;
当工件i的第j道工序和工件e的第g道工序在同一台设备上执行,若工序j先于工序g加工时,Qijeg=1,否则Qijeg=0;若工件e的第g道工序在机床k上加工,则Xegk=1,否则Xegk=0;
若某FJSP共有S种可能的加工顺序,要求总的作业时间最短的加工排序,先求取每个加工顺序x(x∈{1,...,S})对应的作业时间;显然,顺序x中最后加工工序的完工时间即所有工件的最后完工时间:
MS=Ep (1)
步骤2.2、设目标函数F(x)为:
F(x)=min(MSx )=min((Ep)x) (2)
其中,x=1,…,S;Qijeg=1;
S.T.Segk-Ee(g-1)n≥0 (3)
e=1,…,N;g=1,…,Je;Xegk=1,Xe(g-1)n=1
Segk-Eijk≥0 (4)
e=1,…,N;g=1,…,Je;Xijk=1,Xegk=1,Qijeg=1。
步骤4具体按照以下步骤实施:
步骤4.1、利用公式(5)进行迭代操作,具体如下
式中:和/>分别指X的第i个元素在t步与t+1步迭代的位置;
指Y的第i个元素在t步迭代的位置;
dX,Y指X与Y之间的距离;
表示0到/>之间产生的随机数,其中,衰减系数η的取值与目标函数的维数、定义域和峰值分布特征相关;
步骤4.2、利用转换机制将调度解转换为鲸鱼个***置向量,并保留S*所对应的个体X*;
步骤4.3、利用公式(5)进行迭代操作,判断是否满足算法的终止条件,若不满足,则令t=t+1,重复执行步骤4.3.1~步骤4.3.7;如若满足则执行步骤5,具体如下:
步骤4.3.1、定义两只鲸鱼之间的距离计算方法;
步骤4.3.2、对每一个鲸鱼寻找较优且最近的个体;如果不存在则保持不动;
步骤4.3.3、找到所有适应度值大于的个体,如/>
步骤4.3.4、计算每一个适应度值大于的个体/>与/>之间的距离D1,D2,D3;
步骤4.3.5、对D1,D2,D3排序,选择最小值所对应的个体即为/>的较优且最近的个体;
步骤4.3.6、将和/>的值以及初始化的参数带入迭代公式(5)更新每一个个***置向量/>
步骤4.3.7、执行个***置向量向调度方案的转换方式,生成更新之后所有个体对应的调度方案,返回步骤4.2。
步骤4.1中ρ0取经验值2。
步骤4.1中,衰减系数η的初始值按照如下方法确定:
首先,令
即
dmax指在搜索区域内两只鲸鱼之间可能的最大距离,
其中,n为目标函数的维数,与/>分别表示第i个变量的下限与上限,因此,η=-20·ln(0.25)/dmax。
本发明的有益效果是,基于混合鲸鱼群算法求解柔性作业车间调度的方法,通过转换机制实现FJSP调度解与鲸鱼个***置向量之间的相互转换,进而利用WSA较强的局部和全局搜索能力,以及在维持种群多样性方面的优势,来进行迭代求解,以提高FJSP的求解精度和速度。
附图说明
图1是本发明一种基于混合鲸鱼群算法求解柔性作业车间调度的方法中鲸鱼群算法求解FJSP的流程图;
图2是本发明一种基于混合鲸鱼群算法求解柔性作业车间调度的方法中实施例1的WSA进化收敛曲线;
图3是本发明一种基于混合鲸鱼群算法求解柔性作业车间调度的方法中实施例1调度结果甘特图;
图4是本发明一种基于混合鲸鱼群算法求解柔性作业车间调度的方法中实施例2WSA进化收敛曲线;
图5是本发明一种基于混合鲸鱼群算法求解柔性作业车间调度的方法中实施例3WSA进化收敛曲线。
具体实施方式
下面结合附图和具体实施方式对本发明进行详细说明。
本发明一种基于混合鲸鱼群算法求解柔性作业车间调度的方法,如图1所示,具体按照以下步骤实施:
步骤1、定义柔性作业车间调度的编码方式为两段式随机键编码,然后采用转换机制进行映射转换,其中,转换机制具体按照以下步骤实施:
a、调度方案向个***置的转换:
i)机器选择:按照下式将工序可选机器集中序号转换成个***置向量元素值:
x(i)=[2m/(s(i)-1)](n(i)-1)-m,s(i)≠1
其中:x(i)表示个***置向量的第i个元素;s(i)表示元素i对应工序可以选择的机器个数;n(i)∈[1,s(i)]表示选定机器在可选机器集里面的序号。如果s(i)=1,则x(i)在[-m,m]内任意取值。
ii)工序排序:首先生成[-m,m]内的一组随机数,并按升序排列ROV规则为每个随机数赋予一个唯一的ROV值,使每个ROV值对应一个工序,然后根据工序的编码顺序对ROV值进行重排,重排后的ROV值所对应的随机数顺序即为个***置向量中各元素的值。
b、个***置向量向调度方案的转换:
i)机器选择:按照所述a中调度方案向个***置的转换中的公式的逆操作执行,由此获得机器的编号:
ii)工序排序:首先使每一个元素编号对应一个唯一的编码中的工序顺序及位置元素,然后根据ROV规则对位置元素进行升序排列,此时的ROV值对应元素编号进而构造工序排序方案;
步骤2、定义适应度函数,以求解总加工时间最短为优化目标,具体按照以下步骤实施:
步骤2.1、柔性作业车间调度的问题模型FJSP描述如下:
假设M为加工设备的数量,N为待加工工件数量,P为工序数,I为所有设备的集合;Ieg代表工件e的第g道工序的可用设备集合,Je为工件e的工序数,x为所有工件的加工次序,Segk表示工件e的第g道工序在设备k上加工的开始时间;Eegk为工件e的第g道工序在设备k上的加工结束时间;Tegk为工件e的第g道工序在设备k上的持续加工时间,且k∈Ieg则有Eegk=Segk+Tegk;Ep表示最后工序的完工时间;MS表示所有工件的最后完工时间;
当工件i的第j道工序和工件e的第g道工序在同一台设备上执行,若工序j先于工序g加工时,Qijeg=1,否则Qijeg=0;若工件e的第g道工序在机床k上加工,则Xegk=1,否则Xegk=0;
若某FJSP共有S种可能的加工顺序,要求总的作业时间最短的加工排序,先求取每个加工顺序x(x∈{1,...,S})对应的作业时间;显然,顺序x中最后加工工序的完工时间即所有工件的最后完工时间:
MS=Ep (1)
步骤2.2、设目标函数F(x)为:
F(x)=min(MSx )=min((Ep)x) (2)
其中,x=1,…,S;Qijeg=1;
S.T.Segk-Ee(g-1)n≥0 (3)
e=1,…,N;g=1,…,Je;Xegk=1,Xe(g-1)n=1
Segk-Eijk≥0 (4)
e=1,…,N;g=1,…,Je;Xijk=1,Xegk=1,Qijeg=1;
步骤3、采用鲸鱼群算法,对柔性作业车间调度问题中的参数以及鲸鱼种群初始化,首先对鲸鱼群算法中个***置变量元素的上下界ε、声源强度ρ0、当前迭代次数t、最大迭代次数M参数进行设定;种群初始化分为两步进行,第一步随机生成工序的排序方案,第二步采用改进遗传算法的遗传变异方式生成与工序排序方案对应的较优的机器分配方案,进而产生较优的初始种群;
步骤4、计算各调度方案的适应度值,寻找并保留最好的调度解S*,具体按照以下步骤实施:
步骤4.1、利用公式(5)进行迭代操作,具体如下
式中:和/>分别指X的第i个元素在t步与t+1步迭代的位置;
指Y的第i个元素在t步迭代的位置;
dX,Y指X与Y之间的距离;
表示0到/>之间产生的随机数,其中,衰减系数η的取值与目标函数的维数、定义域和峰值分布特征相关;
步骤4.2、利用转换机制将调度解转换为鲸鱼个***置向量,并保留S*所对应的个体X*;
步骤4.3、利用公式(5)进行迭代操作,判断是否满足算法的终止条件,若不满足,则令t=t+1,重复执行步骤4.3.1~步骤4.3.7;如若满足则执行步骤5,具体如下:
步骤4.3.1、定义两只鲸鱼之间的距离计算方法;
步骤4.3.2、对每一个鲸鱼寻找较优且最近的个体;如果不存在则保持不动;
步骤4.3.3、找到所有适应度值大于的个体,如/>
步骤4.3.4、计算每一个适应度值大于的个体/>与/>之间的距离D1,D2,D3;
步骤4.3.5、对D1,D2,D3排序,选择最小值所对应的个体即为/>的较优且最近的个体;
步骤4.3.6、将和/>的值以及初始化的参数带入迭代公式(5)更新每一个个***置向量/>
步骤4.3.7、执行个***置向量向调度方案的转换方式,生成更新之后所有个体对应的调度方案,返回步骤4.2;
步骤4.1中ρ0取经验值2;
步骤4.1中,衰减系数η的初始值按照如下方法确定:
首先,令
即
dmax指在搜索区域内两只鲸鱼之间可能的最大距离,
其中,n为目标函数的维数,与/>分别表示第i个变量的下限与上限,因此,η=-20·ln(0.25)/dmax;
步骤5、输出最优的调度解S*及其对应的适应度函数值,S*即为所求最优调度方案。
本发明一种基于混合鲸鱼群算法求解柔性作业车间调度的方法,为了验证WSA求解柔性作业车间调度问题的可行性,本文运用其分别对三个实施例进行了仿真实验,并与其他智能算法进行对比分析。仿真环境为:采用MATILAB2016a,在配置为CPU主频1.9GHz、AMD A10-7300 Radeon R6处理器、Windows 10操作***的环境下进行。
实施例1
实例1为3×6的FJSP,其加工任务信息如表1所示,鲸鱼群算法的参数设置如下:种群规模为50,鲸鱼个***置向量维度为30,ρ0设置为2,dmax=32.86,衰减系数η取0,最大迭代次数M为400:
表1实例1加工任务信息表
利用基于随机键的两段式编码对机器分配和工序排序进行编码,则个***置向量的长度为30,且各元素均在[-3,3]中任意取值,利用计算机生成30位的随机数,并按照一定的顺序存储,如表2所示,其中OPij表示工件i的第j道工序:
表2个***置向量图
针对实施例1,对其求解得其WSA进化收敛曲线如图2所示,由图2可知此鲸鱼群算法能够在35代时,从144较快地收敛到134,其对应调度结果甘特图如图3所示。
实施例2
为了进一步验证算法可行性以及优越性,选择文献[1](傅卫平,刘冬梅,来春为,王雯.基于多色集合的改进遗传算法求解多品种柔性调度问题[J].计算机集成制造***,2011,17(05):1004-1010.)中的实例2来进行仿真,具体加工信息见文献[1],鲸鱼群算法的参数设置如下:种群规模为100,实例1中鲸鱼个***置向量维度为108,ρ0设置为2,dmax=104.96,衰减系数η取0,最大迭代次数M为200。得其WSA进化收敛曲线如图4所示,得到最优解为121分钟,由图4的WSA进化收敛曲线和实例2的进化曲线对比可知,此鲸鱼群算法能在32代时,很快地从150收敛到121,相比之下,其求解的速度明显较快。
实施例3
为更加全面地比较和验证算法效果,选取柔性作业调度的Kacem基准问题里面的8×8实施例进行求解,计算20次。鲸鱼群算法的参数设置如下:种群规模为100,鲸鱼个***置向量维度为54,ρ0设置为2,dmax=117.57,衰减系数η取0,最大迭代次数M为200,实施例3的WSA进化收敛曲线如图5所示。表3为鲸鱼群算法将所得结果与进化算法、主-从遗传算法、多阶遗传算法、蚁群算法的求解结果对比:
表3 Kacem 8×8基准问题各算法求解结果对比
方法名称 |
最优值 |
优值次数 |
平均收敛代数 |
平均收敛时间/min |
进化算法 |
15 |
1 |
|
|
主-从遗传算法 |
19 |
2 |
200 |
41.8 |
多阶段算法 |
15 |
|
|
|
蚁群遗传算法 |
14 |
2 |
53 |
8.7 |
鲸鱼群算法 |
14 |
3 |
35 |
7.6 |
针对传统算法在求解FJSP时表现出的求解精度和速度方面的不足,本发明运用新的元启发式算法WSA来对FJSP进行求解,通过采用两段式编码方式和引入转换机制建立了调度问题解与鲸鱼个***置向量之间的相互映射,然后利用WSA对FJSP进行了求解,仿真实施例结果表明WSA在求解FJSP方面具有一定的优越性,该算法特殊的迭代公式,寻找较优且最近的迭代方式,在求解组合优化类问题时表现出了一定的优势。