A hybrid Pareto based local search algorithm for multi objective flexible job shop scheduling problems
一种基于基于帕累托的多目标局部智能搜索应用在柔性车间调度(上)
可变邻域搜索
步骤:
第一步:先按预先确定的顺序初始化一些列的邻域搜索结构
第二步:产生一个初始解作为当前的最优解
第三步:判断是否满足停止搜索的条件,如果满足则执行第6步,如果不满足则执行第4和5步
第四步:用一种邻域搜索产生的新解,如果比之前的更优的话,就进行替换,并且依然用这种进行迭代,如果产生的解不优,则换一种邻域搜索方法进行搜索,这样让领域搜索,的替换更加系统
第五步:判断如果当前的领域搜索是最后一种领域搜索结构,在选择第一种进行搜索
第六步:输出目前最优的解
写成流程图就是这个样子:
关键路径理论
任何一个可行解的FJSP问题都可以通过析取图进行表示G=(N,A,E)——N表示节点的集合,A表示链接弧的集合,并且E表示析取弧的集合,关键路劲在G的集合中是最长的路径,在局部搜索时用关键路劲的理论是最有效果的,例如:图一给出一个解的析取图,图2给出该解的相应甘特图。在图一中,关键路劲是被高亮表示,,在一张析取图中也存在几个关键路径,,并且,解越差,关键路径越少,甚至只有一条,而解有优关键路径的条数也越多。并且每个关键路径都等于makespan,在关键路径上的任何一个操作都叫做关键操作,**在不增加计划的最大完工时间的情况下,关键操作不能被延迟。**可以将关键路径分解为几个关键路径块,一个关键路径块是在同一台机器上处理的相邻关键操作的最大序列。相应的在这个关键路径上的第一个操作,和最后一个操作叫做块的头和块的尾。其他的操作称为内部操作,如图一所示,具体析取图的表示含义为看这位博主的文章
编码方式:
在操作部分用的是222.表示的是201,202,203,以此类推,在机器选择部分也是采用表示选择的第几个机器,不是直接选择机器号。
初始化种群
主要思想就是考虑两个问题:第一个就是解的质量问题,第二个就是考虑解的多样性问题
在机器部分初始化方法
全局-局部最小处理时间规则的流程图:
局部的负载相对最小,相当于101,102,103,104,105,106,这几个工序作为一个行向量,需要保证,在这几道工序的行向量的值相差最小,从而得到它的选择的机器号。
代码请见:
链接: link.