一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于禁忌搜索遗传算法的车间柔性作业调度方法与流程

2023-02-10 16:54:44 来源:中国专利 TAG:


1.本发明涉及结合局部禁忌搜索策略和遗传算法的调度优化领域,具体说是一种基于禁忌搜索遗传算法的车间柔性作业调度方法。


背景技术:

2.车间生产调度技术是制造系统的基础,其针对一项可分解的工作,在满足工艺路线、交货期等约束条件的前提下,进行资源分配,下达生产指令并安排生产方案,以获取产品成本最优。目前解决柔性车间作业调度有两种技术方案:一种是最优化方法,枚举遍历解空间,得到精确的全局最优解,耗时长且只适用于小规模调度问题;另一种是近似方法,虽然不能保证是最优解,但在满足对可行解的约束条件下,可以快速地找到调度方法,适合实际调度问题的求解。由于精确枚举存在耗时长的缺点而近似方法却能在合理时间内求得满意解,故通常采用后一种技术方案解决柔性调度问题。在近似方法中,利用迭代求解计算的技术方案应用广泛,迭代算法可分为两类:进化算法和局部搜索算法。进化算法包括遗传算法、粒子群算法、蚁群算法等,局部搜索算法由启发式算法变化而来,包括模拟退火算法和禁忌搜索算法等。


技术实现要素:

3.为了实现在规定迭代次数内优化最大完工时间,解决传统遗传算法局部搜索能力较差,且容易早熟收敛的缺点,本发明按照迭代求解和局部搜索相结合的思路,采用遗传算法和禁忌搜索相结合的方法,以最大完工时间为优化目标,对染色体进行分段编码,经交叉变异操作后对全局空间搜索;然后在局部空间设置禁忌表和禁忌长度,避免在解空间内重复搜索,同时接受次优解,防止算法过早的陷入局部最优解导致早熟,以此提升了算法的搜索能力和鲁棒性。
4.本发明为实现上述目的所采用的技术方案是:
5.一种基于禁忌搜索遗传算法的车间柔性作业调度方法,包括以下步骤:
6.全局搜索:将任意一种车间柔性作业的调度方案作为一条染色体,对每条染色体分别进行种群编码,并对编码后的染色体进行交叉操作和变异操作,得到最终表示工序排序的变异编码的染色体种群;
7.局部禁忌搜索:基于染色体种群中的染色体构建柔性调度方案析取图模型,寻找关键路径,在关键路径上对工序进行删除和插入操作,完成对局部区域的一次搜索,为局部搜索设置禁忌表和禁忌长度,寻找满足禁忌表和禁忌长度的所有染色体,完成车间柔性作业的调度方案的优化。
8.所述种群编码为分段编码形式,第一段为机床选择编码,第二段为工序编码;所述机床选择编码给每个工件的每个工序指定机床,所述工序编码在机床选择编码的前提下,指定每一个机床的加工的工序顺序。
9.所述机床选择编码具体为:根据柔性工作调度表,得到某一工件的某一工序对应
的可选加工机床的集合,在集合中选择一台机床作为完成该工序使用的机床,对其进行编码a,其编码含义为:某一工序在可选加工机床的集合中选择了第a台机床,机床选择编码的长度为所有工件工序的数目总和。
10.所述工序编码具体为:设置一个长度为机床数的时间数组time[m],数组初始化为0,每一项对应已经安排在此台机床上加工的所有工序的时间和,随机选择一个工件,从当前工件的第一道工序开始,将可选加工机床的集合中每台机床的加工时间与时间数组time[m]中的对应时间相加,从中选择最短的加工时间所对应的机床k,更新time[k]的值为所选的最短加工时间加上机床k的已有加工时间;依次选择工件的每一道工序,选择最短加工时间并迭代更新时间数组,直至为所有工件选定工序加工的机床,根据机床选择编码,按照同一工件之间的先后顺序约束条件,筛选随机生成工序排序的编码,得到工序编码。
[0011]
所述染色体交叉操作为:将种群编码中的所有机床选择编码作为初始种群,选择初始种群的两条父代染色体,按照机床选择编码的长度,随机生成元素为0、1的数组序列,在父代染色体parent1中选择与数组序列中元素为0相对应的机床选择编码,并从父代染色体parent2中选择与数组序列中元素为1相对应的机床选择编码,用从两条父代染色体选出的编码,按照在父代染色体中的原相对位置,组成新的子代染色体child1;用两条父代染色体剩下的编码,同样按照原父代染色体相对位置,得到子代染色体child2。
[0012]
所述染色体变异操作为:对机床选择编码部分,在迭代过程中按照固定概率随机选出的染色体上,选择两个基因位,分别从可选加工机床的集合上选择加工时间最短的机床编码作为两个基因位上的变异值;对工序编码部分,按照固定的概率随机选出染色体,根据变异操作确定的机床编码,对每台机床所要加工的工件工序随机排序,然后用工件自身的加工顺序对工件排序进行筛选,作为最终工序排序的变异编码。
[0013]
所述对染色体种群中的染色体构建柔性调度方案析取图模型,具体为:将每条染色体在其局部邻域内定义邻域结构,并使用局部搜索策略通过移动关键路径上工序的方式改变邻域结构,所述关键路径的长度为调度最大完工时间。
[0014]
所述对局部区域的一次搜索,具体为:在柔性调度方案析取图中关键路径上的工序节点进行移动时,第一步删除同一台机床上的待移动工序节点与其他节点间弧连接,然后将对应的权值设置为0;接下来从已删除工序的可选加工机床的集合中选择一台,按照约束条件选择节点插入位置;最后以优化完工时间为目标更新节点权重。
[0015]
所述禁忌表的数据结构为:将搜索策略的移动属性作为禁忌对象,每条染色体对应一张禁忌表,将禁忌对象设置为(u,m,t)三元组的形式存储,其中,u表示关键路径上的工序节点,m表示工序u的加工机床,t表示加工时间。
[0016]
本发明具有以下有益效果及优点:
[0017]
1.本发明的染色体分为机床选择和工序排序两部分,这样的编码方式简捷明了,可以使调度方法初期能够在复杂空间内进行全局优化搜索。
[0018]
2.作为一种有方向性的在概率指导下的启发式算法,不同于穷举暴力搜索,本发明具有并行搜索的特性,每条染色体都能表征一种可行解,对整个种群进行迭代操作,以此均匀覆盖整个解空间,能有效提高寻找调度方案的搜索效率,
[0019]
3.本发明在局部禁忌搜索阶段设立了三元组形式的禁忌表数据结构,以最大完工时间为优化目标,以此避免算法过早陷入早熟收敛,有效提升了算法的局部搜索能力。
[0020]
4.本发明没有拘泥于穷举所有调度方案得到全局最优解导致浪费大量时间,而是在遗传算法中结合禁忌搜索,得到局部最优解,优化了最大完工时间,能提升实际机床产线的工作效率,减少实际生产时间成本。
附图说明
[0021]
图1为本发明算法流程图;
[0022]
图2为本发明种群染色体编码图;
[0023]
图3为染色体机床选择部分交叉操作示意图;
[0024]
图4为染色体工序排序部分变异操作示意图;
[0025]
图5柔性作业调度析取图;
[0026]
图6柔性作业调度甘特图。
具体实施方式
[0027]
下面结合附图及实施例对本发明做进一步的详细说明。
[0028]
遗传算法以种群迭代的方式,种群中个体以染色体形式存在,用来模拟自然选择、交叉和变异操作,染色体的编码由机床选择和工序排序两部分组成,每条染色体表示当前调度问题的一种可行调度方案,可以计算出对应的加工完成时间,将其作为可行解评价函数。
[0029]
对柔性作业车间调度问题建立模型:n个工件要在m台机床上进行加工,每个工件有多道工序并且工序间的加工顺序是固定的,每道工序有多台机床可供选择进行加工,以最大完工时间为调度目标,为每个工件确定所需的加工机床和为每台机床确定工件的加工工序。
[0030]
定义模型中各种参数如下:
[0031]
mi:第i台机器(1≤i≤m);ji:第i个工件(1≤i≤n);
[0032]hj
:第j个工件对应的工序数;cj:第j个工件的加工完成时间;
[0033]oij
:工件i的第j道工序;
[0034]
p
kij
:o
ij
在机床k上的所需加工时间;
[0035]sij
:o
ij
的开始加工时间;
[0036]cij
:o
ij
的完工时间;
[0037]
x
kij
:o
ij
选择机床k加工时,值为1,否则值为0;
[0038]ykijhl
:如果o
ij
先于o
hl
加工在机床k上加工,值为1,否则值为0;
[0039]
混合遗传禁忌算法约束准则用公式表示如下:
[0040]
(1)机床加工工件时的原子性,即假设机床不会发生故障导致加工中断;
[0041]
if x
kij
=1,s
ij
p
kij
=c
ij

[0042]
(2)机床在某一时刻只能加工一件工件的一道工序且工件工序的顺序不变;
[0043]
if y
kijhl
=1,s
ij
p
kij
≤s
kl
[0044]cij
<s
i(j 1)

[0045]
(3)不同工件之间的工序不存在先后约束条件,不同机床之间功能独立;
[0046]
(4)机床可以实现循环操作,即某一工件的多道工序可在同一台机床上连续或间
隔加工;
[0047][0048][0049]
建立fjsp的优化目标函数为:
[0050]ft
=min(max(cj))1≤j≤n
[0051]
将混合算法的运行过程分为全局搜索和局部搜索两个阶段,在第一个阶段进行种群初始化,对初始群体以交叉变异的方式进行全局搜索,第二个阶段在生成的可行解能够均匀覆盖种群空间时,引入禁忌搜索,设置禁忌表的长度和存储格式来寻找局部最优解。当混合算法全局搜索迭代次数达到设定值时,算法终止;当局部搜索满足所有关键路径上的工序都在同一台机床上加工或所有的关键工序都属于同一工件时,判定局域禁忌搜索得到了局部最优解,禁忌搜素终止。算法结合了遗传算法和禁忌搜索的优点,能在规定迭代次数内完成全局范围内可行解的寻找,同时能够凭借禁忌搜索更新得到局部优化解,在可接受时间范围内,避免搜索算法过早收敛,得到优化后的调度方案。
[0052]
算法流程图步骤如图1所示,初始化染色体种群并设置算法停止条件后,对染色体进行选择交叉操作,如果子代染色体未达到渴望标准,对染色体进行变异并更新禁忌表进行邻域禁忌搜索,以保证种群的多样性,从而得到调度方案。
[0053]
(1)算法实施的第一个部分是种群编码和初始化
[0054]
种群编码的单位是染色体,采用分段编码形式,包括机床选择编码和工序编码,前者为工件的每道工序在可选集合中选择相应的机床,后者为每台机床所分配的工件工序进行排序,并最终使最后的完工时间最短。每条染色体表示一种符合约束条件准则的调度方案,以表1所示3*4柔性作业调度为例,图2的编码展示了一种可行调度解。
[0055]
表1
[0056]
[0057]
工序o
21
的可选加工集合为{m2,m3,m4},对应的机床选择部分的编码值为1表示o
21
在可选加工集中选择了第一台机床m2,机床选择部分的编码长度为所有工件工序的数目总和。在确定每个工件工序的加工机床后,为每台机床上所加工的工序进行排序,同一个工件的工序之间有着固有的加工顺序,工序排序主要解决不同工件的工序在同一台机床的加工顺序。
[0058]
种群初始化就是在满足约束条件下为每道工件工序选择所需加工的机床,形成若干可行解。初始化产生的可行解采用随机生成的方式,以便均匀覆盖整个种群空间。生成机床选择编码时需设置一个长度为机床数的数组time[m],数组初始化为0,每一项对应已经安排在此台机床上加工的所有工序的时间和。随机选择一个工件,从当前工件的第一道工序开始,将可选加工集中每台机床的加工时间与time数组中的时间相加,从中选择值最短的加工时间所对应的机床k,更新time[k]的值为所选的最短加工时间加上机床k的已有加工时间;依次选择工件的每一道工序,选择最短加工时间并迭代更新时间数组,直至为所有工件选定工序加工的机床,以此实现各台机床加工负载均衡和减短最大完工时间。根据已经生成的机床编码,按照同一工件之间的先后顺序约束条件,筛选随机生成工序排序的编码,得到工序编码。
[0059]
(2)算法的第二个部分是交叉和变异操作
[0060]
对父代染色体的机床编码进行交叉操作,提高对种群解空间的搜索能力;引入变异操作来随机改变染色体编码的值,从而维护种群的多样性,避免算法过早陷入局部最优。
[0061]
在机床选择编码部分采用多点均匀交叉的方式,由于每道工件工序的可选加工集是确定的,故要确保机床编码的先后顺序不变。如图3所示,选择初始种群的两条父代染色体,按照机床编码的长度,随机生成元素为0、1的数组序列。在parent1中选择与数组序列中0相对应的机床编码,并从parent2中选择与数组序列为1相对应的机床编码,用从两条父代染色体选出的编码,按照在父代染色体中的原相对位置,组成新的子代染色体child1;用两条父代染色体剩下的编码,同样按照原父代染色体相对位置,得到子代染色体child2。经过交叉操作确定每道工序的加工机床后,按照同一工件的先后顺序约束为每一台机床确定工件工序的加工顺序,从第一道工序开始,遵从局部最优的原则,选择使工序加工时间最短的机床,实现对解空间的高效搜索。
[0062]
通过变异操作对染色体上的某些基因进行部分扰动以生成新的个体,提升种群的多样性和增强算法的局部搜索能力。如图4所示,采用两种变异操作:对机床编码部分,在迭代过程中按照固定概率随机选出的染色体上,选择两个基因位,分别从可选机床加工集合上选择加工时间最短的机床编码作为两个基因位上的变异值;对工序排序部分编码,按照固定的概率随机选出染色体,根据上一步变异操作确定的机床编码,对每台机床所要加工的工件工序随机排序,然后用工件自身的加工顺序对工件排序进行筛选,作为最终工序排序的变异编码。
[0063]
迭代是指对整个染色体种群的更新,其中既有新生成的染色体,也有禁忌表中完工时间过长被屏蔽掉不会进行下一轮交叉和变异操作的染色体;
[0064]
算法不是只进行一次交叉和变异操作,迭代的次数由外部输入,作为算法终止条件。
[0065]
(3)算法的第三个部分是局部禁忌搜索
[0066]
经过交叉和变异操作后的染色体种群已经满足在全局可行解空间内均匀分布的条件,这一步需要每条染色体在局部邻域内定义邻域结构和移动方法,凭借禁忌搜索来寻找优化可行解。受邻域结构构造方式直接影响,使局部搜索策略通过移动关键路径上工序的方式改变邻域结构。以表1中柔性作业调度为例,建立工件工序析取图调度方案如图5所示。图中的o
31
、o
12
、o
13
、o
33
是一条关键路径,该路径的长度就是调度的最大完工时间。
[0067]
对于在析取图中关键路径上的工序节点进行移动时,第一步删除同一台机床上的待移动工序节点与其他节点间弧连接,然后将对应的权值设置为0;接下来从已删除工序的可选机床集中选择一台,按照约束条件选择节点插入位置;最后以优化完工时间为目标更新节点权重。染色体每改变一次关键路径就对局部区域进行了一次搜索,为了避免重复访问已搜索过的解,采取建立禁忌表的数据结构,用以存储搜索策略的移动属性作为禁忌对象。每条染色体对应一张禁忌表,将禁忌对象设置为(u,m,t)三元组的形式存储,u表示关键路径上的工序节点,m表示工序u的加工机床,t表示加工时间。
[0068]
建立的调度甘特图如图6所示,如果能够缩短最大完工时间,则在当前种群中新建染色体和对应的禁忌表,更新禁忌表中的关键路径及其对应的加工机床和时间,并将此时的局部优化解作为下次邻域搜索的比较对象。将禁忌表的长度其设置为当前关键路径的工序数目和可加工机床数目的和,以避免导致约束条件过多导致效率降低。进行局部搜索要移动关键路径上的工序,使其在不同的机床上加工,每次搜索得到新的可行解,确定当前调度的关键路径,计算路径上对应工件工序的时间的和,进行多次迭代操作得到优化调度方案。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献