一种改良的帝国竞争算法解决柔性作业车间调度问题的方法与流程

文档序号:15928481发布日期:2018-11-14 01:23阅读:156来源:国知局

本发明涉及车间调度,特别是一种改良的帝国竞争算法解决柔性作业车间调度问题的方法。

背景技术

随着先进的信息技术、制造技术以及网络技术的迅猛发展,客户的需求越来越多样化、个性化,新的产品不断涌现,产品更新换代速度加快,生产模式逐渐转向“品种多样、批量变小、注重交货期、减少库存”的大规模客户定制化模式。新一轮的科技革命和产业革命蓄势待发,如德国工业界提出了“工业4.0”战略和中国提出了“中国制造2025”战略。其中,智能制造是主要发展方向之一,也是从制造大国转向制造强国的根本路径。生产调度是智能制造生产管理的关键环节,是先进智能制造系统高效运转的关键。从1954年,johnson研究了两台机器的流水车间调度问题n/2/f/cmax开始,车间调度问题一直受到众多研究学者的关注,其研究成果在机械、钢铁、纺织、电子等行业的车间生产中得到了广泛应用。在研究车间生产调度时,一般简化为若干调度模型,其中作业车间调度问题(jobshopschedulingproblem,jsp)是一种十分典型的模型。它的特点是每个工序使用的机床被事先确定,并且是唯一的。但是,这并不符合实际加工情况,容易导致加工计划与实际生产调度相脱节。随着现代企业中生产柔性不断提高,柔性作业车间调度问题得到日益广泛的关注和研究。柔性作业车间调度问题(flexiblejobshopschedulingproblem,fjsp)是一类重要的生产调度问题,是在传统经典作业车间调度问题基础上,增加了加工设备的选择约束,符合实际生产过程中同一道工序会有多台加工设备满足加工的需求,使问题更加接近实际生产过程。fjsp问题是经典jsp问题的扩展,也是np-难问题。

帝国竞争算法(imperialistcompetitivealgorithm,ica)是一种受帝国竞争行为启发的新的智能优化算法,由atashpaz-gargari和lucas在2007年提出的,属于基于社会进化革命的群体元启发式智能优化算法。帝国竞争算法的主要思想模仿了人类社会进化过程中帝国之间相互竞争并占领其殖民地的过程。帝国竞争算法开始于一群被定义为国家的个体,每个国家代表一种基本设计方案。所有国家分为两类:帝国主义国家和殖民地国家。每个国家通过成本函数判断国家的势力,势力强大的国家作为帝国主义国家;反之,势力弱的国家作为殖民地国家,之后按照帝国主义国家势力的大小对剩下的国家进行分配,使其成为各自的殖民地。由帝国主义国家和殖民地国家组成一个帝国。然后,依次进行同化、革命等操作,势力更强的帝国能够占领最弱帝国的殖民地,当所有的殖民地全部被一个帝国占有时,算法结束。传统帝国竞争算法主要解决连续型优化问题,如函数优化、设计参数优化等,并取得了比遗传算法和粒子群算法更好的结果。本发明将提出三种方法进行初始国家个体的产生,提高初始国家个体解的质量,提高求解柔性作业车间调度问题的效率。



技术实现要素:

针对上述情况,为克服现有技术之缺陷,本发明提供一种改良的帝国竞争算法解决柔性作业车间调度问题的方法,其可以解决现有的帝国竞争算法在离散型的柔性作业车间调度问题中的应用不足,传统帝国竞争算法中的国家个体表达方式难以表达柔性作业车间问题;解决现有的帝国竞争算法容易陷入局部最优,过早收敛的问题。

本发明的技术方案为:包括以下步骤:步骤1:参数设置,设置帝国竞争算法求解柔性作业车间调度问题的相关参数,包括:国家数量npop、帝国主义国家数量nimp、殖民地国家数量ncol、迭代次数niter,帝国内部同化概率pcimp,帝国内部革命概率pmimp,殖民地国家影响因子α;帝国竞争算法的终止条件为:若在还未达到迭代次数niter就只剩一个帝国时,算法终止,否则,运行到迭代次数为止;

步骤2:初始化国家个体,每一个国家代表一组柔性作业车间调度问题的可行方案,传统帝国竞争算法解决连续型优化问题,编码方式不适合离散型柔性作业车间调度问题,结合柔性作业车间调度问题特点设计两段式实数编码方式进行国家个体的编辑,并分别提出全领域搜索、局部领域搜索和随机搜索的初始化方法来产生npop个国家;

步骤3:通过成本函数,计算每个国家的成本值;

步骤4:产生帝国主义国家和殖民地国家,按照每个国家的成本值计算每个国家的势力大小,依据之前设定的帝国主义国家数量,将殖民地国家随机分配给帝国主义国家,形成nimp个帝国;

步骤5:帝国内部进行同化操作,帝国内部的殖民地国家与帝国主义国家之间进行同化操作,使得殖民地国家不断向帝国主义国家移动;

步骤6:帝国内部进行革命操作,帝国内部的殖民地国家为防止同化作用造成过早收敛,需要进行革命操作;

步骤7:帝国内部判断是否更换帝国主义国家,对各个帝国内部的国家进行成本计算,将成本最小的殖民地与其所属的帝国主义国家进行比较,如果比帝国的成本还低,就替换该帝国主义国家,而成为统治者;

步骤8:帝国之间的竞争操作,势力最强的帝国占有势力最弱的帝国中的殖民地,使得强大的帝国更加强大,弱小的帝国更加弱小;

步骤9:弱势帝国的灭亡,删除掉没有殖民地的帝国,该帝国灭亡;

步骤10:计算每个国家成本;

步骤11:判断算法是否终止,依据参数中对算法停止条件的设定,判断算法是否终止,若算法终止,则输出运行结果;反之,算法还没有终止,则回到步骤5继续执行。

本发明将传统的帝国竞争算法经过改进将其应用领域扩展到了柔性作业车间调度问题中。每个国家个体采用两段式的整数编码来表达其中的一种方案,该编码方式能够适应多种柔性作业车间调度问题,而且简单实用,减少算法的计算复杂度。三种初始化方法相混合产生初始国家群体的方法提高了群体整体解的质量,提高了算法运行效率,更快的搜索到最优解。帝国内部的同化操作进行了改进,将殖民地国家与帝国主义国家之间通过优良信息进行交换的方式使得优良信息得以共享,从而使殖民地国家靠近帝国主义国家。帝国内部的革命操作操作,依据帝国竞争算法的迭代次数进行概率变化,增加国家个体的多样性,防止算法过早收敛。

附图说明

图1为本发明算法流程图。

图2为本发明问题实例图。

图3为本发明中国家个体表达式图。

图4为本发明加工机器部分的同化操作图。

图5为本发明加工工序部分的同化操作图。

图6为本发明中革命操作图。

图7为本发明更换帝国主义国家图。

图8为本发明甘特图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明的具体实施方式作进一步详细说明。

步骤1:设置帝国竞争算法的参数,包括:国家数量npop、帝国主义国家数量nimp、殖民地国家数量ncol、迭代次数niter,帝国内部同化概率pcimp,帝国内部革命概率pmimp,殖民地国家影响因子α。

其中,npop=nimp+ncol,0<pcimp<1,0<pmimp<1。

帝国竞争算法的终止条件为:若在还未达到迭代次数niter就只剩一个帝国时,算法终止;否则,运行到迭代次数为止。

关于变量取值的说明:国家数量npop可以取值200-400,国家数量根据电脑处理能力或问题规模来进行取值,没有必须取多少;

帝国主义国家数量nimp、帝国主义国家数量一般占国家数量的10%-20%;

殖民地国家数量ncol、当帝国主义国家数量确定了,殖民地国家数量也就确定了,即:国家数量减去帝国主义国家数量;

迭代次数niter,可以取值50-200,迭代次数和国家数量的取值依据类似,一般在100左右,例如可以取值100;

帝国内部同化概率pcimp,0<pcimp<1,随机取值,一般在0.7左右,例如可以取值0.7;

帝国内部革命概率pmimp,0<pmimp<1,随机取值,一般在0.1左右,例如可以取值0.1;

殖民地国家影响因子α,0<α<1,随机取值,一般在0.5左右,例如可以取值0.5。

步骤2:初始化国家个体。需要将柔性作业车间调度问题转化为国家个体能够表达的方式。由于柔性作业车间调度问题是离散的,而且存在部分柔性的柔性作业车间调度问题和全部柔性的柔性作业车间调度问题,表达方式必须能够简易的表达所有情况。以便减少计算复杂度,保证运算过程的国家都是合理的,而不需要进行修补。为此,采用两段式的整数编码方式进行国家个体的编码。

图2中给出一个实例,该实例中变量取值为:国家数量npop为200,帝国主义国家数量nimp为20,殖民地国家数量ncol为180,迭代次数niter为50,帝国内部同化概率pcimp为0.7,帝国内部革命概率pmimp为0.1,殖民地国家影响因子α为0.5。

该实例包括3个工件,5台机器,是一个部分柔性的柔性作业车间调度问题。依据图2中的实例,国家个体的表达式,如图3所示,总长度为2l,l为所有工件的所有工序和,ji表示工件i的工序数。图3中左侧一段为加工机器,按照工件1、工件2及工件3的工序顺序进行排列(当然可以是多个工件,多个工件按照工件1、工件2、工件3……工件n的工序顺序进行排列,图3是给出了具体的三个工件的实施例),每个数字表示对应工序加工机器集中的顺序号,而不是机器号。例如第二个数字为1,则表示工序o12的加工机器对应机器集{m2,m4}中的第1个机器,即机器m2,而不是机器m1。图3中右侧一段为加工工序,每个数字代表工件号,出现的次数等于该工件的工序数,在转换为工序的顺序时,从左到右依次读取每个数字,同一个数字的出现顺序即为该工序的加工顺序。将图3中的加工工序部分转换为工序顺序时为[o21,o11,o22,o31,o32,o12,o22]。

图3给出了一个国家个体的表达式。在初始化时,产生npop个国家。在初始化时,提出三种初始化方法。

1)全领域搜索:在所有工件的工序的加工机器选择中,保证最短加工机器先被选到而且保证加工机器上的工作负荷平衡。具体执行步骤为:

a)设置一个长度为机器总台数的向量,向量上的每个位置记录对应机器上的总负荷初始值为0,称为负荷向量;

b)随机选择某个工件的第一道工序;

c)将该工序可选机器集中每个机器的加工时间和负荷向量中记录的对应机器的加工时间相加,从中选择最小的那台机器作为该工序的加工机器,并将当前机器的加工时间记录到负荷向量中;

d)选择当前工件的下一道工序,执行步骤c),直到当前工件的所有工序的加工机器选择完毕;

e)从工件集中删除该工件,然后执行步骤b)到d),直到全部工件被执行完毕。

2)局部领域搜索:保证一个工件的工序中优先加工时间最短或者说选择机器负荷最小的加工机器进行加工。具体执行步骤为:

a)设置一个长度为机器总台数的向量,向量上的每个位置记录对应机器上的总负荷初始值为0,称为负荷向量;

b)随机选择某个工件的第一道工序;

c)将该工序可选机器集中每个机器的加工时间和负荷向量中记录的对应机器的加工时间相加,从中选择最小的那台机器作为该工序的加工机器,并将当前机器的加工时间记录到负荷向量中;

d)选择当前工件的下一道工序,执行步骤c),直到当前工件的所有工序的加工机器选择完毕;

g)将负荷向量中的所有值重置为0;

h)从工件集中删除该工件,然后执行步骤b)到g),直到全部工件被执行完毕。

3)随机搜索:为保证初始种群的多样性,使初始种群分散于解空间,一部分国家个体中的工序加工机器在工序可选机器集中随机选择。具体执行步骤如下:

a)随机选择一个工件的第一道工序,从该工序的加工机器集中随机选择一个机器;

b)在当前工件下一道工序的加工机器集中随机选择一台;

c)重复执行b),直到所有工序执行完毕;

d)从工件集中删除当前工件,然后重复执行a)到c),直到所有工件执行完毕。

三种方法在初始国家群体时的比例,经过实验比较分析,按照全领域搜索占60%、局部领域搜索占30%、随机搜索占10%的分配更合理。

步骤3:通过成本函数,计算每个国家的成本值。

cost=f(country)=f(o1,o2,o3,…,ol)

本发明中的成本函数主要是计算每个国家个体转换为一个调度方案时,该调度方案的完工时间。在国家个体转换为调度方案时,首先需要将加工机器部分依据每个工序的加工机器集转换为对应的加工机器号。然后,依次读取加工工序部分,并且按照顺序安排到相应的机器上,直到最后一个工序安排完毕,计算出完工时间。

步骤4:产生nimp个帝国主义国家和ncol个殖民地国家,最终形成nimp个帝国。

依据步骤3中得到的每个国家个体的成本值,按照由低到高的顺序进行排列。取前nimp个成本低的国家作为帝国主义国家,那么后面的ncol个国家就是殖民地国家。

然后,对nimp个帝国主义国家进行规范化处理,得到每个帝国主义国家的相对势力:

ncimp=round{pimp×ncol}

其中,cimp是cimp标准化代价,cimp是第imp个帝国主义国家的成本函数值,pimp是标准化势力大小,round是一个将小数四舍五入成整数的函数,ncimp是第imp个帝国主义国家的初始殖民地国家数量。

从ncol个殖民地国家中随机选择相应个数的国家分配给各个帝国主义国家,国家势力相对强大的帝国主义国家被分配到的殖民地国家数量就会多,帝国主义国家和它所拥有的殖民地国家形成初始的nimp个帝国。

步骤5:帝国内部进行同化操作。帝国内部的殖民地国家与帝国主义国家之间进行同化操作,使得殖民地国家不断向帝国主义国家移动。

为了提高效率,在殖民地国家中选择一部分个体进行同化操作。选择步骤为:

1)随机产生与该帝国所属殖民地国家数量相等的向量向量rc中的每个变量服从[0,1]均匀分布;

2)向量rc中的值小于帝国内部同化概率pcimp的殖民地国家作为同化操作对象。

国家个体采用两段式表达方法,当殖民地国家与帝国主义国家进行信息交换时,分别对两个部分进行操作,确保同化操作后的国家仍是可行的。

加工机器部分:此部分必须保证国家个体表达式的先后顺序保持不变。

1)在[1l]之间随机产生一个整数r,r=rand(1,l);

2)在[1l]之间产生r个互不相等的整数组成的序列r;

3)按照序列r中的顺序,依次将对应位置上的数字替换掉殖民地国家加工机器部分表达式中的数字。

以附图2中的问题为例,如图4所示。加工机器部分总长度l=7,随机产生一个整数为4,然后随机产生4个互不相等的整数的序列r=[2,4,5,7],将帝国主义国家加工机器部分相应位置的数字替换掉殖民地国家加工机器部分的数字,而产生新的殖民地国家。

加工工序部分:将殖民地国家的加工工序部分与帝国主义国家的加工工序部分进行信息交换,更新殖民地国家的加工工序部分。按照下面的步骤进行操作:

1)将所有工件j={j1,j2,...,jn}随机划分为两个工件集jobset1和jobset2;

2)随机选择其中一个工件集jobset;

3)复制帝国主义国家中包含在工件集jobset中的工件到新的殖民地国家,保持它们的位置和顺序;

4)将殖民地国家中不包含在工件集jobset中的工件复制到新的殖民地国家中,保持它们的顺序。

如图5所示,含有5个工件。其中一个工件集为j={1,3},包含工件1和工件3,将帝国主义国家中包含工件1、3的灰色部分复制到新的殖民地国家中,然后将殖民地国家中去掉工件1和3,将剩下的白色部分复制到新的殖民地国家中。

步骤6:帝国内部进行革命操作。帝国内部的殖民地国家为防止同化作用造成过早收敛,需要进行革命操作。

为了增加国家个体多样性和提高算法运行效率,在殖民地国家中选择一部分个体进行革命操作。殖民地国家选择步骤为:

1)随机产生与该帝国所属殖民地国家数量相等的向量向量rc中的每个变量服从[0,1]均匀分布;

2)向量rc中的值小于帝国内部革命概率pmimp的殖民地国家作为同化操作对象。

1)在加工机器部分,随机选择某个加工机器,然后用对应机器集中的其他机器代替它;

2)在加工工序部分,随机选择两个位置上的工序进行交换;

如图6所示,加工机器部分的第1个位置上的机器,机器集中有5台机器,随机选择第3台机器替换当前的第2台机器;第5个位置上的机器,机器集中有4台机器,随机选择第2台机器替换当前的第1台机器。加工工序部分随机选择第3个位置和第6个位置上的数字进行交换。

步骤7:当所有帝国内的殖民地国家同化操作完成后,可能会出现某个殖民地国家的成本值比所属帝国内的帝国主义国家的成本值还小,因此,需要在帝国内部进行判断是否更换帝国主义国家。对各个帝国内部的国家进行成本计算,将成本最小的殖民地与其所属的帝国主义国家进行比较,如果比帝国的成本还低,就替换该帝国主义国家,而成为统治者。如图7所示,图中五角星为帝国主义国家,圆圈代表所属的殖民地国家,在a)中存在某个殖民地国家的成本值比帝国主义国家的成本值低,交换两者的位置,b)图是交换后的帝国。

步骤8:帝国之间的竞争操作。势力最强的帝国占有势力最弱的帝国中的殖民地,使得强大的帝国更加强大,弱小的帝国更加弱小。具体的操作步骤如下:

1)计算每个帝国的总成本函数值,也就是总的势力大小,包括帝国主义国家和所属的殖民地国家。计算公式为:

其中,tcimp表示第imp个帝国的总成本值,f(imp)表示第imp个帝国主义国家的成本值,α是殖民地国家影响因子,其大小决定了殖民地国家对整个帝国势力的影响程度,且0<α<1。

2)依据1)中计算的每个帝国的总成本值,选择最弱的帝国中最弱的殖民地作为各个帝国间竞争的对象,势力越大的帝国越有可能占有该殖民地国家。每个帝国占有最弱殖民地国家的占有概率按照下式进行计算。

其中,tcimp和ntcimp分别是第imp个帝国的总成本和标准化总代价,pimp是第imp个帝国占有殖民地的概率。

每个帝国的占有概率计算完毕后,形成一个概率向量p:

3)为了能够使得每个帝国都有占领最弱殖民地国家的机会,也防止算法过早收敛。对形成的每个帝国的占有概率值进行处理。

随机生成一个与向量p同维的,且每个变量服从在[0,1]区间均匀分布的向量r

将向量p和r进行相减操作,产生向量d

在向量d中,dk(0<k≤nimp)是经过调整改进后的每个帝国的势力大小,将最弱的殖民地国家分配给d中最大值,也就是势力最强的帝国。

步骤9:弱势帝国的灭亡。在帝国竞争中,失去所有殖民地国家的帝国集团将会灭亡,而且该帝国中的帝国主义国家将沦为殖民地国家随机分配给某个帝国。

步骤10:重新计算每个国家个体的成本函数值。

步骤11:判断算法是否终止。依据参数中对算法停止条件的设定,判断算法是否终止。若算法终止,则输出运行结果;反之,算法还没有终止,则回到步骤5继续执行。

对图2中的问题进行求解,以最大完工时间最小作为成本函数。国家数量npop、帝国主义国家数量nimp、殖民地国家数量ncol、迭代次数niter,帝国内部同化概率pcimp,帝国内部革命概率pmimp,殖民地国家影响因子α。最大完工时间的最优值为13,甘特图如图8所示。

本发明提出了一种改良的帝国竞争算法求解柔性作业车间调度问题。提出采用两段式的国家个体表达式方法,使其能够适应不同类型的柔性作业车间调度问题,避免运行过程中非法解的产生,使算法初始化个体时更加简单。另一方面,为了提高算法初始国家群体的质量,提出三种初始化方法相混合的方法。为提高算法运行效率和防止算法过早收敛,在帝国内部进行同化操作和革命操作的时候,采用0-1均匀分布随机数的方式,通过随机概率来选择殖民地国家并进行相应的操作。最后,通过柔性作业车间调度问题实例对提出的改良的帝国竞争算法进行验证,计算结果证明提出的方法是有效的,也给出了最优解的调度甘特图。

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