一种采用粒子群算法进行生产调度的方法

文档序号:6632095阅读:397来源:国知局
一种采用粒子群算法进行生产调度的方法
【专利摘要】本发明提供一种采用粒子群算法进行生产调度的方法,用于车间生产的排产与调度管理。该方法将车间所有工件的加工序列作为可行解,每一可行解作为一个粒子,全部可行解的集合构成粒子群,通过统计迭代过程中自身和群体发现的最优位置修正自身的寻优方向,从而求得最优解。其步骤为:(1)设定粒子群算法参数;(2)采用Giffler&Thompson算法产生初始解;(3)判断终止条件是否满足,如果满足则输出全局最优解,否则继续;(4)对各个粒子进行变异操作;(5)使用直接重构方法消解死锁解;(6)更新局部最优解和全局最优解,返回步骤(3)。该方法与已有方法相比,初始解具有更好的随机性,方法参数少,计算速度快,通用性好。
【专利说明】一种采用粒子群算法进行生产调度的方法

【技术领域】
[0001] 本发明属于车间生产调度领域,具体是一种采用粒子群算法进行生产调度的方 法,用于车间生产的排产与调度管理。

【背景技术】
[0002] 生产调度是指在一定的约束条件下,合理地分配资源完成一批给定的任务或者作 业,达到某些性能指标的最优化。在客户需求日趋多样化和个性化的市场竞争环境下,"按 订单"生产已经成为生产方式的主流。但现代工业企业,生产环节多,协作关系复杂,生产连 续性强,情况变化快,某些任务或者作业的生产次序以及资源的分配出错,往往会波及整个 生产系统的运行。如何对生产作业调度进行优化,有效地提高生产资源的利用率和企业的 生产效率,是当前企业生产急需解决的问题。
[0003] 早在60年代,人们就开始了对车间生产调度问题的研究。Giffler和Thompson在 1960年提出了用于车间生产调度的优先分派规则方法。Gere,W.S.在1966年提出了用于 车间生产调度问题一组基于优先分派规则的启发式算法。Balas在1969年第一个基于析取 图的枚举方法来处理调度问题。由于车间生产调度问题的复杂性和困难性,从问题产生直 到今日,为了得到一个理想解决这一问题的方法,许多研究人员对该问题进行大量的研究, 从而产生了各种各样的用于求解该问题的方法。
[0004] 求解车间生产调度问题的早期,主要采用的是最优化求解方法,包括数学规划法、 枚举法、分枝定界法、拉格朗日松弛法等。最优化求解方法规则简单,容易实现,但在实际生 产调度中存在许多不足,例如:数学规划法只能在可允许的有限时间内解决一些非常简单 的问题;枚举法无法保证获得可行解;分支定界法,在解决大规模问题时须耗费巨大的计 算时间,同时对初始上下界敏感;拉格朗日松弛法需要对问题再加工,选取或调整相应的算 法参数。
[0005] 粒子群算法是1995年由美国的Kennedy博士和Eberhart博士提出的一种基于群 智能优化的近似求解算法。基本思想源于对自然界中生物群体行为的研究发现。根据研究, 发现生物通过应用以下两种信息进行决策;一个是自身的经验;另一个是他人的经验。人 们的决策过程是一个将自身的经验与他人经验互相融合的过程。粒子群算法作为一种新兴 的智能算法,具有良好的全局优化能力、求解时间较短、易于实现。但在实际应用中,仍存在 缺陷。首先,粒子群算法在运行初期收敛速度较快,运行后期容易陷入局部最优;其次,在计 算过程中,由于粒子在不同机器上所表现出来的工序的位置的移动会出现环或者说会造成 不可行解。


【发明内容】

[0006] 针对现有技术存在的不足,本发明提供一种采用粒子群算法进行生产调度的方 法。
[0007] 本发明的技术方案是:
[0008] -种采用粒子群算法进行生产调度的方法,包括以下步骤:
[0009] 步骤1 :设定粒子群算法参数;
[0010] 参数包括:加工的工件数量、机器数量、工艺约束、种群大小、进化代数;
[0011] 步骤2 :采用Giffler&Thompson (G&T)算法随机生成一组粒子群的初始解,将其中 最好的解设为局部最优解Pid和全局最优解P gd。其中,每个初始解就是一个粒子;
[0012] 步骤3 :如果丨两足结束条件,转步骤7 ;
[0013] 步骤4 :根据每个粒子当前位置Xid,分别计算其下一个位置Xid',即新解;
[0014] 步骤4. 1 :计算Pid和Xid2间的差A,A = Pid -Xid,其中A是一个基本交换序,表 示A作用于Xid得到Pid;
[0015] 步骤4. 2 :计算Pgd和Xid之间的差B,B = Pgd - Xid,其中B也是一基本交换序,表 示B作用于Xid得到Pgd;
[0016] 步骤4. 3 :根据A和B计算Xid' ;
[0017] 步骤5 :采用直接重构方法,调整粒子群中每个粒子的新解Xid',使其成为可行解;
[0018] 步骤6:计算粒子群中每个粒子的适应度,如果找到一个更好的解,则更新Pid,如 果整个群体找到一个更好的解,更新Pgd,转步骤3 ;
[0019] 步骤7 :输出的全局最优解,算法结束。
[0020] 有益效果:
[0021] (1)采用G&T算法产生初始解,使初始解具有很好的随机性,同时,该算法参数少, 计算速度快;
[0022] (2)该算法具有很好的通用性,适于基于代价优化的调度问题和基于性能优化的 调度问题;
[0023] (3)基于工序的编码方式对应的问题解空间中,包含不可行解。本算法提出直接重 构方法进行不可行解的消解,提高粒子群算法的求解质量。

【专利附图】

【附图说明】
[0024] 图1是本发明【具体实施方式】的采用粒子群算法进行生产调度的方法流程图;
[0025] 图2是本发明【具体实施方式】的初始解实例甘特图;
[0026] 图3是本发明【具体实施方式】的死锁情况实例甘特图;
[0027] 图4是本发明【具体实施方式】的死锁消解后获得的新解实例甘特图。

【具体实施方式】
[0028] 下面结合附图对本发明的【具体实施方式】做详细说明,但本发明的保护范围不受具 体实施方式所限制,在不违背本发明技术方案的前提下,对本发明所作的本领域普通技术 人员容易实现的任何改动或改变都属于本发明的保护范围。
[0029] 本实施方式的采用粒子群算法进行生产调度的方法,流程如图1所示,包括以下 步骤:
[0030] 步骤1:设定粒子群算法参数;
[0031] 参数包括:加工的工件数量、机器数量、工艺约束、种群大小、进化代数;
[0032] 步骤2 :采用Giffler&Thompson (G&T)算法随机生成一组粒子群的初始解,将其中 最好的解设为局部最优解pid和全局最优解pgd。其中,每个初始解就是一个粒子;
[0033] G&T算法生成初始解的具体过程如下:
[0034] (1):令Q(l) = {〇iJ|i = 1,…,n ;j = 1,…,m}为所有操作的集合;S⑴为所有 工件第1道操作的集合。
[0035] (2):令七=1。
[0036] (3):令〇*为满足c (〇*) = min {c (c^.) | Ou G S⑴}的操作,m*为进行该操作的机 器;从集合{〇imH< G S(t) ;r(oimH<)〈c(o*)}中确定一个操作oim*,该集合被称为冲突集。
[0037] (4):生成Q(t+1) = Q(t)\{oiniJ。由S(t)除去操作〇_,并添加工件i的下一道 工序来生成集合S(t+1)。
[0038] (5):若Q(t+1)为非空,则令t = t+1,并转步骤3;否则结束算法。
[0039] 其中,〇ij表示工件i在机器j上的操作; Pij表示〇ij的加工时间;S(t)表示第t步 的前一道工序的执行时刻的所有未执行的集合;rf^j)表不S(t)中〇ij对应工件i到达机 器j的时间;cO^j)表示S(t)中的Oij可完成的最早时间,即。((^) = rO^O+Pij。
[0040] 步骤3:如果丨两足结束条件,转步骤7;
[0041] 结束条件一般设置为达到最大循环数或者最小无改进代数。
[0042] 步骤4:根据每个粒子当前位置Xid,分别计算其下一个位置Xid',即新解;
[0043] 步骤4. 1:计算Pid和Xid之间的差A,A = Pid - Xid,其中A是一个基本交换序,表 示A作用于Xid得到Pid;
[0044] 步骤4. 2:计算Pgd和Xid之间的差B,B = Pgd - Xid,其中B是一基本交换序,表示 B作用于Xid得到Pgd;
[0045] 步骤4. 3:根据A和B计算Xid' ;
[0046] 根据公式1,计算新解Xid' :
[0047] X,id = Xid ? a (Pid - Xid) ? 3 (Pgd - Xid) (1)
[0048] 其中a,e(a』G[0,l])为随机数。a (Pid - Xid)表示基本交换序(Pid - Xid) 中的所有交换子以概率a保留;同理,0 (Pgd -Xid)表示基本交换序(Pgd -Xid)中的所有 交换子以概率0保留.由此可以看出,a的值越大,(Pid - Xid)保留的交换子就越多,Pid 的影响就越大;同理,0的值越大,(Pgd - Xid)保留的交换子就越多,Pgd的影响就越大。
[0049] Xid、Pid、P gd都表示一个可行解,这个可行解用一串加工序列表示,解之间的差是一 个基本交换序,该交换序列如下示例获得:
[0050] 假设有两个加工序列X和Y,计算X和Y之间的差S,S = X - Y,其中S是一基本 交换序。其中,
[0051] X:(123456) Y :(263154)
[0052] 可以看出,X(l) =Y(4) =1,所以第一个交换于是50(1,4),¥1 = ¥+50(1,4),得到 Yi:(163254),X(2) = Y(4) = 2,所以第二个交换于是S0(2, 4),Y2 = Yi+SOQd),得到Y2: (123654)。
[0053] 同理,第三个交换于是S0(4, 6),Y3 = Y2+S0(4, 6) = X。这样,就得到一个基本交 换序:
[0054] S = X - Y = (S0 (1,4),S0 (2, 4),S0 (4, 6))。
[0055] 其中,SO他,〇p表示交换机器上工序i和工序j的加工顺序。
[0056] 步骤5:采用直接重构方法,调整粒子群中每个粒子的新解Xid',使其成为可行解;
[0057] 直接重构造方法是直接用G&T算法重新建立冲突集。在冲突集中,根据存在死锁 的调度中工序的工件号在机器上出现的顺序进行选择,即无需对进化粒子检测死锁而直接 重构造新解。
[0058] 步骤6 :计算粒子群中每个粒子的适应度,如果找到一个更好的解,则更新Pid,如 果整个群体找到一个更好的解,则更新Pgd,转步骤3;
[0059] 步骤7 :输出的全局最优解,算法结束。
[0060] 下面举例说明上述方式:
[0061]表一

【权利要求】
1. 一种采用粒子群算法进行生产调度的方法,其特征在于:包括以下步骤: 步骤1:设定粒子群算法参数; 参数包括:加工的工件数量、机器数量、工艺BOM、种群大小、最大进化代数; 步骤2 :采用G&T算法随机生成一组粒子群的初始解,将其中最好的解设为局部最优解 Pid和全局最优解Pgd。
2. 其中,每个初始解就是一个粒子; 步骤3 :如果满足结束条件,转步骤7 ; 步骤4 :根据每个粒子当前位置Xid,分别计算其下一个位置Xid',即新解; 步骤4. 1 :计算Pid和Xid之间的差A,A = Pid - Xid,其中A是一个基本交换序,表示A 作用于Xid得到Pid; 步骤4. 2 :计算Pgd和Xid之间的差B,B = Pgd - Xid,其中B也是一基本交换序,表示B 作用于Xid得到Pgd; 步骤4.3:根据4和8计算/; 步骤5 :采用直接重构方法,调整粒子群中每个粒子的新解Xid',使其成为可行解; 步骤6 :计算粒子群中每个粒子的适应度,如果找到一个更好的解,则更新Pid,如果整 个群体找到一个更好的解,更新Pgd,转步骤3 ; 步骤7 :输出的全局最优解,算法结束。
【文档编号】G06Q10/06GK104392298SQ201410591760
【公开日】2015年3月4日 申请日期:2014年10月28日 优先权日:2014年10月28日
【发明者】宋晓宇, 曹阳, 王守金, 赵明 申请人:沈阳建筑大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1