一种改进文化基因算法求解多目标柔性作业车间调度问题的制作方法

文档序号:11063901阅读:590来源:国知局
一种改进文化基因算法求解多目标柔性作业车间调度问题的制造方法与工艺

本发明涉及作业车间调度技术领域,具体地涉及用算法求解多目标柔性作业车间调度问题。



背景技术:

在制造业中,生产调度问题种类繁多、方法多样,其中,作业车间调度问题(JSP)是最基本、最重要的机器调度问题,同时也是最困难的NP—hard问题。柔性作业车间调度问题(FJSP)是JSP的扩展,它允许每个工序在给定的几台机器上加工,而不是一个机器。目前,对FJSP的研究已取得了一定的进展,各种启发式算法,进化算法等,应用到该领域。不乏有遗传算法(GA)、粒子群算法(PSO)、局部搜索算法、模拟退火算法、蚁群算法等。这些算法虽有好的性能,但也有缺陷。比如:遗传算法虽能通过种群间的相互作用,保持已经搜索到的信息,这是基于单个个体搜索过程的优化方法所无法比拟的。但是,遗传算法也存在着计算速度较慢、过早收敛等问题。局部搜索算法是解决优化问题的有效方法,但面临迭代次数过多,消耗时间过长的问题。



技术实现要素:

针对上述不足之处,本发明要解决的技术问题是提供一种既有全局搜索能力也有局部搜索能力的算法,即改进的文化基因算法求解柔性作业车间调度问题。

本发明的目的是:提高算法的求解速度与质量。

本发明为实现上述目的,所采用的技术方案是:一种改进文化基因算法求解柔性作业车间调度问题。该技术方案包括以下步骤:

步骤1:对种群规模POP_SIZE、最大迭代次数Gm、交叉和变异次数N、变异概率Pm等参数进行初始化;

步骤2:随机生成POP_SIZE个个体作为初始种群,计算每个个体的适应度。设置迭代次数t=0,并设置当前种群Pt=P0

步骤3:对Pt进行适应度排序,得到其中的非支配个体集合Pnodom,并将非支配个体数Snodom设置为Pnodom中的元素个数;

步骤4:将Pnodom中的个体直接拷贝到下一代种群Pt+1,设置Pt+1的个体个数n=Snodom

步骤5:在Pt中随机选择一对个体:父代1和父代2;

步骤6:如果父代1、父代2的所有目标函数值都相等,则转步骤8;否则,执行下一步骤;

步骤7:分别以概率Pm对父代1、父代2进行变异,然后对父代1、父代2执行N次交叉操作产生包含有2N个元素的子代个体集合ChildPop对ChildPop进行适应度排序,在其Pareto前端集合中随机选择一个个体进入新种群Pt+1,设置Pt+1的个体个数n=n+1;

步骤8:如果n<POP_SIZE,转步骤5;否则,执行下一步骤;

步骤9:对种群Pt+1中的每个个体执行爬山法局部搜索,并用所得的局部最

优解替换原个体;

步骤10:将Pt+1和Pt合并,选择最好的POP_SIZE个个体组成新的Pt+1

步骤11:如果迭代次数t>Gm,则算法结束;否则,更新种群Pt=Pt+1,并设置迭代次数t=t+1,然后转步骤3。

本发明的有益效果是:该改进文化基因算法吸收了进化算法和局部搜索算法的优点,不仅具有很强的全局搜索能力,同时,每次交叉和变异后均进行局部搜索,通过优化种群分布,及早剔出不良个体,进而减少迭代次数,加快算法的求解速度。这样既保证了较高的收敛性能,又能获得高质量的解。

该算法文化基因算法采用与进化算法相似的框架与操作流程,并在此基础上通过局部邻域搜索使每次迭代的所有个体都达到局部最优。进化搜索进行种群的全局广度搜索,局部搜索进行个体的局部深度搜索。文化基因算法充分吸收进化算法和局部搜索算法的优点,它不仅具有很强的全局搜索能力。同时,每次交叉和变异后均进行局部搜索,通过优化种群分布,及早剔出不良个体,进而减少迭代次数,加快算法的求解速度。这样既保证了较高的收敛性能,又能获得高质量的解,从而使文化基因算法的搜索效率在某些问题领域比传统进化算法要快几个数量级。

附图说明:

图1表示本算法的详细流程图

图2表示一个3*3的可行调度方案示例图

图3表示该算法的SPX交叉示例图

图4表示本算法的插入变异示例图

图5表示本算法的替换变异示例图

具体实施方式:

该文化基因算法对于求解多目标柔性作业车间调度问题有很好的实用性,该算法采用与进化算法相似的框架与操作流程,并在此基础上通过局部邻域搜索使每次迭代的所有个体都达到局部最优。进化搜索进行种群的全局广度搜索,局部搜索进行个体的局部深度搜索。

下面结合附图和实施例,对本发明进一步的描述:

一、多目标柔性作业车间调度问题,结合图2

FJSP的描述如下:一个加工系统有m台不同的机器M={Mj|j=1,2,...,m},要加工n个工件J={Ji|i=1,2,...,n}令Ki表示工件的总工序数,Oik表示工件Ji的第k道工序k=1,2,...,Ki,所有工件的总工序数为Pikj表示工序Oik在机器Mj上的加工时间,工件的加工顺序是预先确定的,工件Ji的每道工序Oik可以在mik台不同的机器上加工mik=Mik,Mik为M中能加工Oik的机器集合。调度的目标就是确定每个机器各个工件的加工顺序和每个工序的开工时间,以使得某个指标最优。

为了简化问题,作出如下假设:所有设备在t=0时刻都是可用的,所有工件在t=0时刻释放,每一台设备在同一时刻只能加工一道工序,一道工序一旦开始加工不允许中断,每一个工件的工序顺序是预定的不能修改,忽略设备的设置时间和工序之间的转换时间。

二、算法的关键步骤说明

1、个体编码和适应度计算,结合图2

算法采用基于工序的编码表示调度问题的解。对经过进化操作产生的每个子代个体都将其解码为活动调度,计算出需要优化的多个适应度函数值。在局部搜索过程中,也将每个邻域解解码为活动调度来计算适应度函数值。局部搜索结束后,将选中的活动调度转化为基于工序的编码,用新个体的编码和适应度替换原有个体的编码和适应度。

2、交叉操作,结合图3

该算法采用集合分割交叉(Set-Partition Crossover,SPX)方法,执行交叉操作,该方法的过程如下:

(1)将工件集合{1,2,...n}随机分成两个非空集合J1和J2

(2)设置子代个体的当前元素小标为1,如果第一个父代的第一个元素属于J1,则子代个体的当前元素赋值为第一个父代个体的第一个元素,且当前元素下标加1。

(3)如果第二个父代个体的第一个元素属于J2,则子代个体的当前元素下标加1,以此类推,直到子代个体的所有元素均赋值。

(4)交换两个非空集合J1和J2中的元素,重复以上步骤可以得到另一个子代个体。

为了更清楚的描述本发明的SPX交叉,结合图3,描述如下:将工件集合{1,2,3}分为两个子集合J1={2},J2={1,3}。第一个父代个体[112313223]第一个基因不属于J1,不执行操作;第二个父代个体[221233113]第一个基因不属于J2,不执行操作;同样两个父代个体的第二个基因也都不属于对应的工件集合,不执行操作。接下来第一个个体的第三个基因2属于J1,将其填入子代个体,并将子代个体下标加1为2;第二个个体的第三个基因1属于J2,将其填入子代个体,并将子代个体下标加1为3;以此类推,可得到子代个体[213321213]。交换J1和J2包含的元素,执行类似的操作可得到第二个子代个体[121232133]。

本发明的SPX交叉较其他交叉方法的好处在于本交叉操作不是单纯地将父代个体的特征继承下来,而在继承父代特征的同时,发生了变异,也就是交叉方法中隐藏着变异行为。

3、变异操作

为了实现对调度空间的广泛搜索,本算法以相等的概率Pm从插入变异和替换变异两种方法中随机选择一种对种群中的个体进行变异。

(1)插入变异,结合图4:在父代个体中随机选取一个基因,将其插入到另一个随机选取的基因之前。如图4的3*3调度问题的个体[112313223],假设随机选择的两个基因分别为第三个基因位上的2和第八个基因位上的2,则执行插入变异后的个体为[112231323]。

(2)替换变异,结合图5:在父代个体中,随机选一段基因串,然后将其插入到一个随机选取的基因之前。如图53*3调度问题的个体[112313223],假设随机选择的基因串是由第五个基因位至第八个基因位上的基因组成的[1322],随机选中的另一个基因位第三个基因位上的基因2,则执行替换变异后的个体为[11322233]。

4、爬山法局部搜索

由于爬山法只选择比当前解好的邻域解,容易陷入局部最优,而常用的迭代局部搜索,禁忌搜索,变邻域搜索法等虽能够跳出局部最优,得到更好的解,但迭代次数较多,消耗时间较长。于是本算法采用爬山法进行局部搜索,克服了这些问题,既能够跳出局部最优得到更好的解,也能够减少计算时间。

本算法的爬山法局部搜索过程如下:

对于优化问题的一个解s,邻域是指对s实施一个操作M后能够得到的解的集合。用N(s)表示s的邻域,则:N(s)={s'|s'=M(s)}。步骤如下:

(1)选定一个当前解s;

(2)按照邻域结构定义生成s的一个邻域解集合N(s);

(3)将N(s)中比s质量差的解删除得到改善解集合N(s)′;

(4)计算N(s)'中解的个数|N(s)'|;

(5)如果|N(s)'|不等于零,则从N(s)'中按照一定控制策略选择一个替换s,转本步骤2;否则转本步骤6

(6)算法结束。

本算法采用此爬山法进行局部搜索之后,对所有邻域解集合进行非劣排序,在其Pareto前端集合中随机选择一个个体替换当前解。

上述结合附图只是对该算法的描述,并不因此限定本发明,本发明的保护范围依据权利要求书的内容确定。

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