基于遗传算法的车间调度算法
得分:_______ 南京林业大学
研究生课程论文
2011~2012学年第一学期
课程号:73327
课程名称:Matlab语言
论文题目:基于遗传算法的车间调度算法
学科专业:交通运输工程
学号:8113102
姓名:闫盖
任课教师:王一雄
二○一一年十二月
基于遗传算法的车间调度算法
【摘要】车间调度问题具有建模复杂性、计算复杂性、动态多约束、多目标性等特点。近几年,各种演化计算方法逐渐被引入到生产调度中,特别是遗传算法的应用。本文主要介绍了企业车间调度问题的遗传算法实现,通过Matlab 实现对遗传算法的编程,其仿真调度结果验证了遗传算法用于求解车间调度问题的可行性和有效性。 【关键词】遗传算法 车间调度 Matlab
Flow-Shop scheduling based on genetic algorithm
Abstract :The Flow-Shop scheduling problem has the property of modeling complexity, computational complexity, dynamic multi-constraint and multi-targeted. In recent years a variety of evolutionary computation methods, in particular, the application of genetic algorithms has been gradually introduced into the production scheduling problem. This paper puts forward a method to design Flow-Shop by using genetic algorithm. Program about genetic algorithm designs by using Matlab, Simulation results of our experiment show the feasibility and effectiveness of genetic algorithm for solving Flow-Shop scheduling. Key words :Genetic algorithm Flow-Shop scheduling Matlab
引言
生产调度对企业的生产作业过程具有重要的作用。有效的调度方法和优化技术是实现先进制造和提高生产效益的基础和关键。研究和解决好调度问题,能极大提高企业的生产效率,从而提高这些企业的竞争力。自从1954年Johnson 发表第一篇关于流水车间调度问题的文章以来,流水车间调度问题引起了许多学者的关注,提出了许多解决的方法。其中,以遗传算法、模拟退火、禁忌搜索以及人工神经网络为代表的智能化优化技术迅速发展,用来解决流水车间调度问题,受到人们的普遍关注。遗传算法以其优良的计算性能和显著的应用效果而特别引人注目,很多启发式混合方法都是在此基础上发展起来的。本文采用遗传算法进行求解。
1车间调度问题描述
车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源,提高企业经济效益的目的。车间调度问题从数学上可以描述为有n 个代加工的零件在m 台机器上加工,车间调度的数学模型如下:
(1) 机器集},,{21m m m m M ,?=,j m 表示第j 台机器,j=1,2,…,m 。 (2) 零件集},,{21n p p p P ,?=,i p 表示第i 个零件,i=1,2,…,n 。
(3) 工序序列集},,{21n op op op OP ,?=,},,{21ik i i i op op op op ,?=表示零件i
p 加工工序序列。
(4) 可选机器集},,{21ik i i op op op OPM ,?=,},,{21ijk ij ij ij op op op op ,?=表示零件
i p 加工工序j 可以选择的加工机器。
(5) 使用机器加工零件的时间矩阵T ,T t ij ∈,表示第i 个零件i p 使用第j 个机器的加
工时间。
(6) 使用机器加工零件的费用矩阵C ,C c ij ∈,表示第i 个零件i p 使用第j 个机器的加
工费用。 另外,问题需要满足的条件包括每个零件的各道工序使用每台机器不多于1次,每个零件加工都按照一定的顺序进行加工。
2遗传算法的车间调度算法模型建立
基于多层编码遗传算法的车间调度算法流程如下图所示。其中,种群初始化模块初始化种群构成问题的初始解集,适应度值计算模块计算染色体的适用度值,选择操作采用轮盘赌法选择优秀个体;交叉操作采用整数交叉法得到优秀个体,变异操作采用证书变异法得到优秀个体。
算法流程图
3模型算法的实现
3.1个体编码
染色体编码方式为证书编码,每个染色体表示全部工件的加工顺序,当待加工的工件总
数为n ,工件i n 的加工工序共为j m 时,则个体表示为长度为∑=k
i j i m n 1
2的整数串。其中,染
色体的前半部分表示所有工件在机器上的加工顺序,后半部分表示工件每道工序的加工机器序号。如个体
[2 4 3 1 1 2 3 4 2 1 3 3 2 2 1 3]
该个体表达了4个加工工序都是2次的工件在3台机器上的加工顺序。其中,前8位表示工件的加工顺序,为工件2→工件4→工件3→工件1→工件1→工件2→工件3→工件4;9到16位表示加工机器,依次为机器2→机器1→机器3→机器3→机器2→机器2→机器1→机器3。 3.2适应度值
染色体的适应度值为全部工件的完成时间,适应度值计算公式为:time i fitness =)( 其中,time 指全部任务完成时间,全部工件完成时间越短,该染色体越好。
3.3选择操作
选择操作采用轮盘赌法选择适应度较好的染色体,个体选择概率为:
∑-=n
i i Fitness i Fitness i pi 1
)(/)()(;)(/1)(i fitness i Fitness =
其中,)(i pi 表示染色体i 在每次选择中被选中的概率。 3.4交叉操作
种群通过交叉操作获得新染色体,从而推动整个种群向前进化,交叉操作采用整数交叉
法。交叉操作首先从种群中随机选取两个染色体,并取出每个染色体的前∑=k
i j i m n 1位,然后
随机选择交叉位置进行交叉。操作方法如下:交叉位置为5,只对个体前∑=k
i j i m n 1
位进行交
叉。
个体
-[112 3 2 2 3 31112121222] 交叉 [221322331112121222] 极值-[22133121311221 211 1] [11233121311221 211 1]
交叉后某些工件的工序多余(如个体中的工件2),某些工件的工序缺失(如个体中的工件1),因此,把工件工序多余的操作变为工件工序缺失的操作,并按交叉前个体的操作机器来调整
个体???
??+∑=11k i j i m n 位到∑=k i j i m n 1
2位的加工机器,如下所示:
交叉后个体-[221322331112121222] 调整 [221312331112221222]
3.5变异操作
种群通过变异操作获得新的个体,从而推动整个种群向前进化。变异算子首先从种群中随机选取变异个体,然后选择变异位置pos1和pos2,最后把个体中pos1和pos2位的加工工序以及对应的加工机器序号对换,如下列示,交叉位置为2和4。
个体-[221322331112121222] 交叉 个体-[231222331112121222]
4Matlab 程序实现和仿真结果
采用多层编码遗传算法求解车间调度问题,共有6个工件,在10台机器上加工,每个工件都要经过6道加工工序,每个工序可选择机器序号下表所示。
工序可选机器表
工序加工时间表
算法,首先进行个体初始化,然后采用选择、交叉和变异操作搜索最佳个体,得到最优的车间调度方法,主要代码如下:
[PNumber MNumber]=size(Jm); %PNumber 工件个数、MNumber工序个数
trace=zeros(2, MAXGEN); %寻优结果的初始值
WNumber=PNumber*MNumber; %工序总个数
Number=zeros(1,PNumber);
for i=1:PNumber
Number(i)=MNumber;
end
Chrom=zeros(NIND,2*WNumber);
for j=1:NIND
WPNumberTemp=Number;
for i=1:WNumber
val=unidrnd(PNumber);
while WPNumberTemp(val)==0
val=unidrnd(PNumber);
end
Chrom(j,i)= val;
WPNumberTemp(val)=WPNumberTemp(val)-1;
Temp=Jm{val,MNumber-WPNumberTemp(val)};
SizeTemp=length(Temp);
Chrom(j,i+WNumber)= unidrnd(SizeTemp);
end
end
[PVal ObjV P S]=cal(Chrom,JmNumber,T,Jm); %计算目标函数值
while gen SelCh=select('rws', Chrom, FitnV, GGAP); %选择操作 SelCh=across(SelCh,XOVR,Jm,T); %交叉操作 SelCh=aberranceJm(SelCh,MUTR,Jm,T); %变异操作 [PVal ObjVSel P S]=cal(SelCh,JmNumber,T,Jm); %计算目标适应度值end [Chrom ObjV] =reins(Chrom, SelCh,1, 1, ObjV, ObjVSel); %重新插入新种群gen=gen+1; trace(1, gen)=min(ObjV); %保存最优值 trace(2, gen)=mean(ObjV); if gen==1 %% 记录最佳值Val1=PVal; Val2=P; MinVal=min(ObjV); STemp=S; end if MinVal> trace(1,gen) %% 记录最小的工序Val1=PVal; Val2=P; MinVal=trace(1,gen); STemp=S; end end PVal=Val1; P=Val2; S=STemp; figure(1) %% 描绘解的变化plot(trace(1,:)); hold on; plot(trace(2,:),'-.');grid; legend('解的变化','种群均值的变化'); figure(2); %% 显示最优解 MP=S(1,PNumber*MNumber+1:PNumber*MNumber*2); for i=1:WNumber val= P(1,i); a=(mod(val,100)); b=((val-a)/100); Temp=Jm{b,a}; mText=Temp(MP(1,i)); x1=PVal(1,i); x2=PVal(2,i); y1=mText-1; y2=mText; PlotRec(x1,x2,mText); PlotRec(PVal(1,i),PVal(2,i),mText); hold on; fill([x1,x2,x2,x1],[y1,y1,y2,y2],[1-1/b,1/b,b/PNumber]); text((x1+x2)/2,mText-0.25,num2str(P(i))); end 算法的基本参数为:种群数目为40,最大迭代次数为50,交叉概率为0.8,变异概率为0.6,算法搜索得到的全部工件完成的最短时间为47s,算法搜索过程和最优个体对应的零件加工甘特图如下图所示。 5结论 本文提出多层编码遗传算法的车间调度算法可以满足生产调度的动态性要求。Matlab 仿真结果显示该算法具有实用性和有效性,为生产应用提供一个强有力的辅助工具,不需要做过多的改变就能满足其他类似调度应用。该遗传算法对车间调度问题大有改进,缩短了整个加工工序时间,减少目标函数运算量,为快速制订生产计划提供了一种切实有效的方法。 参考文献 [1]金志勇.基于遗传算法的车间调度系统研究[D].武汉理工大学,学位论文,2006 [2]蒋丽雯.基于遗传算法的车间作业调度问题研究[D].上海交通大学,学位论文,2006 [3]冯冠,章建功.多群体并行遗传算法在动态车间调度中的应用[A].中国管理信息化,2008.6 [4]王凌,郑大钟.基于遗传算法的job- shop调度研究进展[J].控制与决策,2001 [5]张群会.工序排序问题的遗传算法[J].煤矿机械,2001.5 [6]刘天虎,许维胜,吴启迪.基于遗传算法的生产调度系统建模及优化[J].华东经济管理,2008 [7]张松艳,基于遗传算法的大型Flow-shop生产调度[A].浙江科技学院学报,2010.4 得分:_______ 南京林业大学 研究生课程论文 2011~2012学年第一学期 课程号:73327 课程名称:Matlab语言 论文题目:基于遗传算法的车间调度算法 学科专业:交通运输工程 学号:8113102 姓名:闫盖 任课教师:王一雄 二○一一年十二月 基于遗传算法的车间调度算法 【摘要】车间调度问题具有建模复杂性、计算复杂性、动态多约束、多目标性等特点。近几年,各种演化计算方法逐渐被引入到生产调度中,特别是遗传算法的应用。本文主要介绍了企业车间调度问题的遗传算法实现,通过Matlab 实现对遗传算法的编程,其仿真调度结果验证了遗传算法用于求解车间调度问题的可行性和有效性。 【关键词】遗传算法 车间调度 Matlab Flow-Shop scheduling based on genetic algorithm Abstract :The Flow-Shop scheduling problem has the property of modeling complexity, computational complexity, dynamic multi-constraint and multi-targeted. In recent years a variety of evolutionary computation methods, in particular, the application of genetic algorithms has been gradually introduced into the production scheduling problem. This paper puts forward a method to design Flow-Shop by using genetic algorithm. Program about genetic algorithm designs by using Matlab, Simulation results of our experiment show the feasibility and effectiveness of genetic algorithm for solving Flow-Shop scheduling. Key words :Genetic algorithm Flow-Shop scheduling Matlab 引言 生产调度对企业的生产作业过程具有重要的作用。有效的调度方法和优化技术是实现先进制造和提高生产效益的基础和关键。研究和解决好调度问题,能极大提高企业的生产效率,从而提高这些企业的竞争力。自从1954年Johnson 发表第一篇关于流水车间调度问题的文章以来,流水车间调度问题引起了许多学者的关注,提出了许多解决的方法。其中,以遗传算法、模拟退火、禁忌搜索以及人工神经网络为代表的智能化优化技术迅速发展,用来解决流水车间调度问题,受到人们的普遍关注。遗传算法以其优良的计算性能和显著的应用效果而特别引人注目,很多启发式混合方法都是在此基础上发展起来的。本文采用遗传算法进行求解。 1车间调度问题描述 车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源,提高企业经济效益的目的。车间调度问题从数学上可以描述为有n 个代加工的零件在m 台机器上加工,车间调度的数学模型如下: (1) 机器集},,{21m m m m M ,?=,j m 表示第j 台机器,j=1,2,…,m 。 (2) 零件集},,{21n p p p P ,?=,i p 表示第i 个零件,i=1,2,…,n 。 (3) 工序序列集},,{21n op op op OP ,?=,},,{21ik i i i op op op op ,?=表示零件i p 加工工序序列。 (4) 可选机器集},,{21ik i i op op op OPM ,?=,},,{21ijk ij ij ij op op op op ,?=表示零件 i p 加工工序j 可以选择的加工机器。 流水线车间生产调度的遗传算法MATLAB源代码 n个任务在流水线上进行m个阶段的加工,每一阶段至少有一台机器且至少有一个阶段存在多台机器,并且同一阶段上各机器的处理性能相同,在每一阶段各任务均要完成一道工序,各任务的每道工序可以在相应阶段上的任意一台机器上加工,已知任务各道工序的处理时间,要求确定所有任务的排序以及每一阶段上机器的分配情况,使得调度指标(一般求Makespan)最小。 function [Zp,Y1p,Y2p,Y3p,Xp,LC1,LC2]=JSPGA(M,N,Pm,T,P) %-------------------------------------------------------------------------- % % 流水线型车间作业调度遗传算法 % GreenSim团队——专业级算法设计&代写程序 % 欢迎访问GreenSim团队主页→输入参数列表 % M 遗传进化迭代次数 % N 种群规模(取偶数) % Pm 变异概率 % T m×n的矩阵,存储m个工件n个工序的加工时间 % P 1×n的向量,n个工序中,每一个工序所具有的机床数目 % 输出参数列表 % Zp 最优的Makespan值 % Y1p 最优方案中,各工件各工序的开始时刻,可根据它绘出甘特图 % Y2p 最优方案中,各工件各工序的结束时刻,可根据它绘出甘特图 % Y3p 最优方案中,各工件各工序使用的机器编号 % Xp 最优决策变量的值,决策变量是一个实数编码的m×n矩阵 % LC1 收敛曲线1,各代最优个体适应值的记录 % LC2 收敛曲线2,各代群体平均适应值的记录 % 最后,程序还将绘出三副图片:两条收敛曲线图和甘特图(各工件的调度时序图) %第一步:变量初始化 [m,n]=size(T);%m是总工件数,n是总工序数 Xp=zeros(m,n);%最优决策变量 LC1=zeros(1,M);%收敛曲线1 LC2=zeros(1,N);%收敛曲线2 %第二步:随机产生初始种群 farm=cell(1,N);%采用细胞结构存储种群 for k=1:N X=zeros(m,n); for j=1:n for i=1:m X(i,j)=1+(P(j)-eps)*rand; end end 中文摘要 流水车间调度问题是研究多个工件在若干个机器上的加工次序的问题,有效的调度算法对企业提高生产效率有着重要作用。本文使用遗传算法求解流水车间调度问题,把一个染色体编码成若干个自然数,表示相应工件的排序权值;通过简单交换两个父代的若干相同位置的基因,产生能够继承父代优良特性的子代;并且采用均匀变异,更好地保持种群中的基因的多样性。实验表明,该方法能取得较好的效果。 关键字:遗传算法,流水车间调度方法,实数编码,基因链码,群体,适应度。 外文摘要 Abstract: Flow-shop scheduling problem study the problem the processing sequence of A plurality of workpieces on some working machine,and it makes good effects on proving production efficiency to the industries with effective methods.In the case,we deal with flow-shop scheduling problem using a algorithm,the Genetic Algorithm.There is a chromosome we've just coded into some natural numbers to represent the weight order of these workpieces; exchanging simply two fathers' places of some gene to produce new children that carried good feature on two fathers;we also use the Uniform Mutation,and it keeps its diversity of gene on the population.This experiment show this method can achieve good results. Key Words: Genetic Algorithm, Flow-shop scheduling problem,natural number coding,genic bar code,group,fitness. 先进制造管理 报告 遗传算法在作业车间调度问题中的应用 专业:管理科学与工程 时间:2015年1月 遗传算法在作业车间调度问题中的应用 1作业车间调度问题 所谓生产调度,即对生产过程进行作业计划,作为一个关键模块,是整个先进生产制造系统实现管理技术、运筹方法、优化技术、自动化与计算机技术发展的核心,有效的调度方法和优化技术的研究与应用,是实现先进制造和提高生产效益的基础和关键。 作业车间调度(job-shop)问题可以表述为:设有N个工件在M台机器上加工,根据工件加工工艺的要求,每个工件使用机器的顺序及其每道工序所花时间已给定,调度问题的目标就是如何选择加工顺序使得总的加工时间最短最优。 前提假设: 1. 每一台机器每次只能加工一个工件,每一个工件在机器上的加工被成为一道工序。 2. 不同工件的加工工序可以不同; 3. 所有工件的工序数不大于设备数; 4. 每道工序必须在指定的某种设备上加工; 5. 任何作业没有抢先加工的优先权; 6. 在作业优化过程中既没有新的工件加入也没有取消的工件; 车间作业是指利用车间资源(如机床、刀具、夹具等)完成的某项任务。在实际生产中,这项任务可能是装配一种产品,也可能是完成一批工件的加工。而在本文中,为了研究方便,我们将这项任务限定为加工一批工件。在此基础上,可对车间作业调度问题进行一般性的描述:假定有多个工件,要经过多台机器加工。一个工件在一台机器上的加工程序称为一道“工序”,相应的加工时间称为该工序的“加工时间”。用事先给定的“加工路线”表示工件加工时技术上的约束,即工件的加工工艺过程。用“加工顺序”表示各台机器上各个工件加工的先后顺序。车间作业调度问题中,每个工件都有独特的加工路线。它所要解决的问题就是确定每台机器上不同工件的加工顺序,以及每个工件的所有工序的起始加工时间,以最优化某个性能指标。然而,车间调度是一个 NP-Hard 问题,运用穷举法又会大大增加计算量,所以考虑利用遗传算法求解。 流水线车间生产调度的遗传算法MATLAB源代码n个任务在流水线上进行m个阶段的加工,每一阶段至少有一台机器且至少有一个阶段存在多台机器,并且同一阶段上各机器的处理性能相同,在每一阶段各任务均要完成一道工序,各任务的每道工序可以在相应阶段上的任意一台机器上加工,已知任务各道工序的处理时间,要求确定所有任务的排序以及每一阶段上机器的分配情况,使得调度指标(一般求Makespan)最小。 function [Zp,Y1p,Y2p,Y3p,Xp,LC1,LC2]=JSPGA(M,N,Pm,T,P) %-------------------------------------------------------------------------- % JSPGA、m % 流水线型车间作业调度遗传算法 % GreenSim团队——专业级算法设计&代写程序 % 欢迎访问GreenSim团队主页→ %-------------------------------------------------------------------------- % 输入参数列表 % M 遗传进化迭代次数 % N 种群规模(取偶数) % Pm 变异概率 % T m×n的矩阵,存储m个工件n个工序的加工时间 % P 1×n的向量,n个工序中,每一个工序所具有的机床数目 % 输出参数列表 % Zp 最优的Makespan值 % Y1p 最优方案中,各工件各工序的开始时刻,可根据它绘出甘特图 % Y2p 最优方案中,各工件各工序的结束时刻,可根据它绘出甘特图 % Y3p 最优方案中,各工件各工序使用的机器编号 % Xp 最优决策变量的值,决策变量就是一个实数编码的m×n矩阵 % LC1 收敛曲线1,各代最优个体适应值的记录 % LC2 收敛曲线2,各代群体平均适应值的记录 % 最后,程序还将绘出三副图片:两条收敛曲线图与甘特图(各工件的调度时序图) %第一步:变量初始化 [m,n]=size(T);%m就是总工件数,n就是总工序数 Xp=zeros(m,n);%最优决策变量 LC1=zeros(1,M);%收敛曲线1 LC2=zeros(1,N);%收敛曲线2 %第二步:随机产生初始种群 farm=cell(1,N);%采用细胞结构存储种群 for k=1:N 遗传算法在生产调度方面的应用 合肥工业大学吴磊(20080313)陈超峰(20080321)方振中(20080322)周超(20080332)王伦良(20080340) 摘要:生产调度问题是企业生产甚至国际合作的关键问题,但生产调度问题难以精确求解。遗传算法可以很好的解决这一问题,在生产调度、生产规划、任务分配等方面发挥着极其重要的作用。 关键词:生产调度生产调度方式遗传算法 1.遗传算法 遗传算法是模拟生物在自然环境中的进化过程而形成的一种自适应全局优化概率的搜索算法。它使用群体搜索技术,通过对当前群体施加选择交叉变异等一系列遗传操作,从而产生新一代的群体,并按优胜劣汰的机制逐步使群体进化到包含或接近最优解的状态。 1.1遗传算法的基本运算过程 选择:从当前种群中选出优良的个体作为父代个体。 对各染色体v k计算适合度eval(v k);k=1,2,3,…,m 计算选择概率: 对各染色体v k , P=eval(v k)/∑eval(v k) 交叉:对群体中的个体进行两两随即配对 对每一对相互配对的个体,随机设置某一基因之后的位置为交叉点 对每一对相互配对的个体,依设定的交叉概率在其交叉点处相互交换两个个体的染色体,从而产生出两个新的个体。 变异:遗传算法中的所谓变异运算,是将个体染色体编码串中的某些位置上的基因值用其他等位基因替换,从而形成一个新的个体。 2.生产调度 生产调度就是组织执行生产进度计划的工作,是实现生产进度计划的主要手段。生产调度以生产进度计划为依据,生产进度计划要通过生产调度来实现。 在生产调度的事业上,生产调度有管理和工作之分,也就是生产调度管理和生产调度工作,是两个互为联系有有区别的概念。生产调度的作用是职能作用,生产调度工作的作用是职责作用。具体来说,生产调度管理,是指生产调度的计划、实施、检查、总结的期量循环活动的管理,是指生产调度的计划理论、方法、法规等方面的管理。生产调度工作,则有狭义和广义之分,从狭义上说,生产调度工作是指生产调度的业务工作,也就是生产经营管理方面的技术性工作,其内容是生产调度对生产经营动态的了解、掌握、预防、处理,对关键岗位如主机岗位实行控制,对跨车间和跨部门的电、水、风,产、供、销、运等进行协调平衡,对产量、质量、安全、效益等重点环节实行衔接一致的保证;从广义上说,生产调度部门的行政管理方面的具体事项,如业务上,科技上的研讨活动,在岗人员道德和专业知识的教育,业务能量的具体发挥等,可见广义的生产调度工作,其具体活动事项要比生产调度管理大得多,将生产调度管理等同生产调度工作是不准确的。可以概括的说,生产调度工作是生产调度管理的具体表现,生产调度工作的完成是生产调度管理在实际上完成的具体表现。生产调度的重要意义在于:现代工业企业,生产环节多,协作关系复杂,生产连续性强,情基于遗传算法的车间调度算法
流水线车间生产调度的遗传算法MATLAB源代码
基于遗传算法的流水车间调度问题
遗传算法在作业车间调度问题中的应用——先进制造管理作业
02流水线车间生产调度的遗传算法MATLAB源代码
遗传算法在生产调度方面的应用