1.一种针对多目标柔性作业车间调度问题的含救济算子的混合遗传算法,该算法用于作业车间技术领域,该算法在具备全局搜索与局部搜索的同时,优化了各解的利用率,其特征是: 该算法采用了一种通过各目标的相对重要性(各目标函数间的相对重要性通常由生产者根据实际情况得出)来为各目标函数赋加权值的方法; 该算法对每个解同时进行遗传搜索和局部搜索; 该算法在对每个解进行遗传搜索与局部搜索的同时,对劣解执行救济算子;该算法在局部搜索中,只随机选取每个当前解的部分邻域解进行检测;该算法设置精英组保存搜索过程中发现的非支配解
该算法的流程如下:
步骤一—初始化种群
1)根据生产信息分别产生全部工件的工序集W(式(1))和全部工序的机器集Mij(式(2));
2)按照工序集中工序的顺序,依次从相应工序的机器集中随机选择一台机器,以机器集中的编号组成机器选择部分的编码;
3)根据每个工件的工序数产生相应个数的数值为工件编号的数,并将这些数随机排列组成工序序列部分的编码;
4)机器选择部分的编码在前,工序序列部分的编码在后,将它们组合;
5)返回本步骤2,直至已经产生Npop个解;
步骤二—更新精英组
1)将当前种群中的非支配解复制入精英组;
2)检测精英组中的解,将被其他解所支配的解从精英组中删除;
步骤三——更新救济空间
1)选择工件
随机选择一个工件;
2)确定救济空间
对于机器选择部分,从最优解将被选择工件的工序所使用的加工机器编号提取;对于工序序列部分,从最优解中将被选择工件的工序的位置提取,将提取到的信息记入救济空间;
步骤四—计算适应度函数值
1)根据生产者给出的相对重要性关系,通过式(9)、式(10)、式(11)确定各目标函数的加权值;
2)通过式(6)计算每个解的适应度函数值;
步骤五——遗传搜索
1)随机选择Npop/2个个体;
2)交叉
随机将被选择的解两两一组作为一对父代解;
对每个解的机器选择部分使用如图9所示的两点交叉算子进行交叉,对每个解的工序序列部分采用如图10所示的基于工序编码交叉算子进行交叉;
3)根据突变概率Pm计算进行交叉的解的数目,并随机选出相应数目的解;
对每个解的机器选择部分和工序序列部分分别采用如图11所示的突变算子和如图12所示的突变算子进行突变
步骤六—局部搜索(与步骤五同时进行)
步骤七——救济算子(与步骤五同时进行)
步骤七—选择
采用轮盘赌选择法选择:
1)通过式(12)计算每个个体(xi)被遗传到下一代的概率P(xi);
2)通过式(13)计算每个个体(xi)的积累概率qi;
3)在[0,1]之间产生一个随机数r;
4)如果r< q1,则个体x1被选择;如果qk-1<r≤qk,则选择个体xk;
5)对3、4重复Npop次,以选择到Npop个个体;
步骤八—迭代
如果算法已经迭代了指定次数,则执行下一步骤(更新精英组);否则,返回步骤二;
步骤九—更新精英组
1)将当前种群中的非支配解复制入精英组;
2)检测精英组中的解,将被其他解所支配的解从精英组中删除。
2.根据权利要求1所述的算法,其特征是:该算法在局部搜索中,只随机选取每个当前解的部分邻域解进行检测,避免了局部搜索占用过多的计算时间,具体方式如下:
预先指定邻域解检测个数K
那么,对于当前解的局部搜索过程如下:
1)随机选择当前解的一个邻域解;
2)如果此邻域解比当前解更优,则邻域解作为新的当前解替换原来的当前解,并返回本步骤1);否则执行下一步;
3)如果已经检测了当前解的k个邻域解,即当前解被检测的k个邻域解中没有更优的解,则程序结束;否则返回本步骤1)。
3.根据权利要求1所述的算法,其特征是:该算法设置精英组保存搜索过程中发现的非支配解,避免了非支配解的遗失。
4.根据权利要求1所述的算法,其特征是:该算法采用了一种通过各目标的相对重要性来为各目标函数赋加权值的方法,使各目标函数加权值更加符合实际生产情况,具体实施方式如下:
对于多目标问题(f1(x),f2(x),…,fn(x)),适应度函数为
f(x)=w1f1(x)+w2f2(x)+…+wnfn(x), (6)
其中
wi≥0,i=1,2,…,n, (7)
w1+w2+…+wn=1 (8)
以如图8所示的三个目标函数的相对重要性示例为例,加权值的确定方法如下:
1)将相对重要性表(图8)转化为矩阵:
(9)
2)对得到的矩阵的各列进行标准化:
(10)
3)对各列标准化后的矩阵的各行进行标准化:
(11)
对行标准化后的矩阵的每行依次表示三个目标函数的加权值,即f1、f2、f3的加权值分别为w1=0.578、w2=0.302、w3=0.120。
5.根据权利要求1所述的算法,其特征是:该算法中遗传搜索、局部搜索、对劣解执行救济算子这几个步骤是同步进行的(具体可从图13、14看出),使得每个解的利用率提高,也使劣解得到了充分的利用。
6.根据权利要求5所述的算法,其特征是:引入救济算子(救济算子是一种优化劣解的算子)与救济空间(救济空间用来存储种群中的优良个体的共有序列),提高劣解的利用率
如图7所示的示例(生产信息对应图1),救济算子的执行过程如下:
1)选择工件
随机选择一个工件;
2)确定救济空间
对于机器选择部分,从最优解将被选择工件的工序所使用的加工机器编号提取;对于工序序列部分,从最优解中将被选择工件的工序的位置提取;
将提取到的信息记入救济空间;
3)优化劣解
对于劣解的机器选择部分,将被选择工件的工序所使用的加工机器的编号更换为救济空间中的机器编号;对于劣解的工序序列部分,将被选择工件的工序先加入对应位置,再将其他工件的工序按照原有的相对位置加入供需序列部分的空位。