基于遗传算法的流水线车间调度模块设计与实现_张青
- 格式:pdf
- 大小:371.20 KB
- 文档页数:5
遗传算法在车间调度中的应用实践探索近年来,随着工业生产的发展和智能化水平的提高,车间调度成为了一个重要的问题。
传统的车间调度方法往往需要大量的人力和时间投入,且效果不尽如人意。
而遗传算法作为一种优化算法,逐渐成为了解决车间调度问题的热门方法之一。
本文将探讨遗传算法在车间调度中的应用实践。
首先,我们来了解一下什么是遗传算法。
遗传算法是一种模拟自然界进化过程的优化算法,其基本思想是通过模拟生物的遗传、变异和适应过程,不断优化问题的解。
在车间调度中,遗传算法可以被用来寻找最优的调度方案,以最大程度地提高生产效率和资源利用率。
在应用遗传算法进行车间调度时,首先需要将调度问题转化为适应度函数的形式。
适应度函数可以根据具体的车间情况进行定义,一般包括生产时间、资源利用率、成本等指标。
然后,通过随机生成一组初始解作为种群,并通过交叉、变异等操作产生新的解。
接着,根据适应度函数对新解进行评价,并选择适应度较高的解作为下一代的种群。
通过不断迭代,最终得到最优的调度方案。
遗传算法在车间调度中的应用实践已经取得了一些令人瞩目的成果。
例如,某汽车制造厂采用遗传算法对生产线进行调度,成功地将生产时间缩短了30%,生产效率提高了20%。
另外,某电子厂使用遗传算法对设备的使用进行优化,使得资源利用率提高了15%。
这些实践案例表明,遗传算法在车间调度中具有较好的应用前景。
然而,遗传算法在车间调度中也存在一些挑战和限制。
首先,遗传算法的求解过程需要大量的计算资源和时间,对计算能力的要求较高。
其次,适应度函数的定义和参数的选择对最终结果有着重要影响,需要经验和专业知识的支持。
此外,遗传算法的结果往往是一种近似解,无法保证找到全局最优解。
因此,在实际应用中需要权衡时间、成本和精度等因素。
为了进一步提高遗传算法在车间调度中的应用效果,有必要结合其他优化算法进行改进。
例如,可以将遗传算法与模拟退火算法相结合,通过模拟退火算法的全局搜索能力来提高遗传算法的收敛速度和解的质量。
基于遗传算法的车间调度算法优化研究随着企业规模的扩大和自动化程度的提高,车间调度问题已经成为制造业领域中的一个关键性问题。
理想的车间调度方案应该在保证生产效率和质量的前提下,节约时间和成本,提高生产效益。
然而,由于车间内涉及到多种不同的资源和工艺流程,车间调度问题具有高度复杂性,这就为车间调度算法的研究与优化提出了挑战。
传统的车间调度算法主要采用启发式规则、贪心算法等方法,这些算法虽然简单直接,但是难以得到最佳方案。
而遗传算法则是近年来应用较为广泛的一种优化算法,它模拟了进化论的基本思想,通过随机变异和自然选择来搜索最优解,在求解复杂问题上具有较高的效率和精度。
基于遗传算法的车间调度算法可以分为两个步骤:问题建模和遗传算法求解。
问题建模车间调度问题可以被描述为:在有限的时间内,根据作业间的相关性、机器的可用性和可能的瓶颈制约,把所有作业调度到相应的机器上,使得总制造时间最短。
具体来说,车间调度问题可由以下参数描述:作业集合J={1,2,3,…,n}表示所有作业的集合。
机器集合M={1,2,…,m}表示所有可用机器的集合。
作业间的关系表示为A,A(i,j)=1表示作业i在作业j之前执行。
机器处理时间为T,T(i,j)表示作业i在机器j上处理所需时间。
在此基础上,车间调度问题可以被定义为:找到一个作业序列S={s1, s2, …, sn},其中作业i排在作业j前面当且仅当A(i,j)=1。
针对每个作业i,找到一个机器mi∈M,最小化完成所有作业所需时间。
遗传算法求解遗传算法是一种优化算法,它通过模拟生物进化的过程,将原始问题转换成一系列适应度函数的求解,进而得到最优解。
具体来说,遗传算法包括以下几个步骤:1. 初始化种群:首先需要随机生成一个初始种群,每个个体都是车间作业序列的一个排列。
2. 适应度评估:对于每个个体,都需要根据其所代表的车间调度方案计算出对应的适应度函数,以评价该个体的优劣程度。
3. 选择操作:通过适应度函数的大小,按一定概率选择个体进入下一代。
基于遗传算法的流水车间调度问题中文摘要流水车间调度问题是研究多个工件在若干个机器上的加工次序的问题,有效的调度算法对企业提高生产效率有着重要作用。
本文使用遗传算法求解流水车间调度问题,把一个染色体编码成若干个自然数,表示相应工件的排序权值;通过简单交换两个父代的若干相同位置的基因,产生能够继承父代优良特性的子代;并且采用均匀变异,更好地保持种群中的基因的多样性。
实验表明,该方法能取得较好的效果。
关键字:遗传算法,流水车间调度方法,实数编码,基因链码,群体,适应度。
外文摘要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.目录中文摘要 (1)外文摘要 (2)目录 (3)1 引言 (4)1.1 论文的发展背景及重要性 (4)1.1.1 时代背景 (4)1.1.2 论文研究的重要性 (4)1.2 论文的研究问题及解决方法 (4)2 FSP问题描述 (5)2.1 排序问题的基本概念 (5)2.1.1 名词术语 (5)2.1.2 条件假设 (5)2.2车间作业排序问题的特点 (6)2.3 车间作业排序问题 (6)2.3.1 目标函数 (6)2.3.2 车间调度问题的分类 (7)3 遗传算法理论 (7)3.1 遗传算法的产生和发展 (7)3.2 遗传算法的基本思想 (8)3.2.1 基本概念 (8)3.2.2 遗传算法的基本思想 (9)4 基于遗传算法的流水车间调度方法 (11) 4.1 问题的提出 (11)4.2 遗传算法基本步骤 (11)4.2.1 编码 (11)4.2.2 初始群体生成 (12)4.2.3 适应度计算 (12)4.2.4 选择 (14)4.2.5 交叉 (15)4.2.6 变异 (17)4.2.7 终止 (19)5. 研究成果 (20)5.1 算法求解与分析 (20)5.2 实验结果 (21)参考文献 (22)附录 (23)1 引言1.1 论文的发展背景及重要性1.1.1 时代背景从第一次工业革命起,由于科技的进步人类社会就开始了一个经济腾飞的大时代。
调度:原理、算法及系统课程论文基于遗传算法车间调度问题目录1. 研究背景和意义 (3)2. 概述 (4)2.1车间调度 (4)2.2遗传算法 (4)2.3遗传算法在流水车间调度问题中的应用 (5)3. 简单遗传算法中的不足 (8)4. 改进算法 (9)4.1改进遗传算法 (9)4.2单亲DNA遗传算法 (15)5. 总结与展望 (19)6. 参考文献 (20)基于遗传算法车间调度问题遗传算法(GenetiAlgorithm,GA)是演化计算方法中应用最广泛之一,应用于全局搜索等参数优化计算领域,也适用于车间作业调度问题。
它作为一种非确定性的拟生态随机优化算法在过去20年中得到了广泛的应用,由于其具有不依赖于问题模型的特性、全局最优性、随机转移性而非确定性、隐含并行性等特点,因此遗传算法更适合复杂问题的优化,比其他优化技术相比存在显著的优势,正越来越激起人们的广泛研究与应用。
在阅读一定文献后写出此综述。
本文主要包含以下内容:(一)对课题研究的背景和意义作了较为简单的介绍。
(二)概述了普通流水车间调度问题及其求解方法,并详细介绍了遗传算法理论,针对普通流水车间调度问题着重阐述了遗传算法在其中的应用,包括遗传操作的设计,控制参数的设定等。
(三)对智能优化算法作了研究。
对遗传算法所存在的不足,即算法容易陷入局部最优,算法收敛速度慢等缺点进行了分析。
(四)针对简单遗传算法的不足提出改进方案。
提出一些改进算法,详细介绍改进遗传算法、单亲DNA遗传算法(五)总结与展望1.研究背景和意义调度问题研究的是在一定的约束条件下将稀缺的资源分配给在一定时间内不同的任务。
它是一个决策过程,其目的是优化一个或多个目标[1]。
最开始是从生产制造行业中提出的。
在生产制造业,企业为了在市场中获得较强的竞争力,在保证质量的前提之下,利用先进的车间调度技术,制定合理的生产作业计划以实现缩短产品生产周期、加快产品上市时间、实时满足市场需求等目标。
《基于遗传算法的车间作业调度问题研究》一、引言随着制造业的快速发展,车间作业调度问题(Job Scheduling Problem,JSP)逐渐成为生产管理领域的重要研究课题。
车间作业调度问题涉及到多个工序、多台设备和多类工件的合理安排,其目的是在满足各种约束条件下,实现生产效率的最大化和生产成本的最低化。
传统的车间作业调度方法往往难以解决复杂多变的实际问题,因此,寻求一种高效、智能的调度方法成为当前研究的热点。
遗传算法作为一种模拟自然进化过程的优化算法,具有全局搜索能力强、适应性好等优点,被广泛应用于车间作业调度问题的研究中。
二、遗传算法概述遗传算法是一种基于生物进化原理的优化算法,通过模拟自然选择和遗传学机制,在搜索空间中寻找最优解。
在车间作业调度问题中,遗传算法将每个可能的调度方案视为一个个体,通过编码、适应度函数、选择、交叉和变异等操作,逐步优化调度方案,最终得到最优解。
三、基于遗传算法的车间作业调度问题研究1. 问题描述车间作业调度问题可以描述为:在一定的时间和资源约束下,如何合理安排工件的加工顺序和每台设备的加工时间,以达到特定的生产目标。
该问题具有多目标、多约束、离散性和动态性等特点,是一个典型的组合优化问题。
2. 编码方式在基于遗传算法的车间作业调度问题研究中,编码方式是关键。
常用的编码方式包括二进制编码、整数编码和符号编码等。
其中,整数编码方式将每个个体的基因表示为一个整数值,便于处理大规模的组合优化问题。
3. 适应度函数设计适应度函数是评价个体优劣的依据,对于车间作业调度问题,通常以生产效率、生产成本等指标作为适应度函数的评价指标。
在遗传算法中,通过不断优化适应度函数,逐步找到最优的调度方案。
4. 遗传操作遗传操作包括选择、交叉和变异等步骤。
选择操作根据个体的适应度进行选择,保留优秀的个体;交叉操作通过交换两个个体的部分基因,产生新的个体;变异操作通过改变个体的基因值,增加种群的多样性。
基于遗传算法的车间调度优化研究近年来,随着汽车工业的快速发展,车间调度优化问题变得愈发复杂。
针对这一问题,基于遗传算法的车间调度优化研究应运而生。
遗传算法是一种模拟自然界进化过程的优化算法,通过模拟进化过程中的选择、交叉和变异操作,逐步优化车间调度方案,以实现最佳效果。
首先,车间调度优化问题的关键在于降低生产过程中的时间成本和资源浪费。
传统的车间调度方法通常基于经验和规则,无法充分考虑多种约束条件和变化情况,难以得到较优解。
而基于遗传算法的车间调度优化研究通过模拟进化机制,可以克服传统方法的局限性。
其次,基于遗传算法的车间调度优化研究具有一定的特点和优势。
首先,遗传算法能够并行优化多个车间调度方案,提高求解效率。
其次,遗传算法可以通过多次迭代来不断优化,逐步逼近最优解。
此外,遗传算法还具备较强的鲁棒性,能够适应不同的约束条件和变化情况,保证解的稳健性。
在具体的研究中,基于遗传算法的车间调度优化可以从以下几个方面展开。
首先,需要确定适应度函数。
适应度函数是遗传算法中的关键部分,它用于评估每个个体的适应度,从而决定该个体参与进化的概率。
在车间调度优化中,适应度函数可以考虑诸如制造周期、机器利用率和交通时间等因素。
合理的适应度函数可以有效地指导遗传算法的优化过程。
其次,需要建立合适的编码方式。
遗传算法对个体的表示形式要求至关重要。
在车间调度优化中,个体可以通过排列、二进制编码或者其他方式进行表示。
不同的编码方式会影响遗传算法的搜索效率和结果质量,因此需要根据实际情况选择合适的编码方式。
然后,需要设计交叉和变异操作。
交叉和变异是遗传算法中的两个重要操作,用于生成新的个体。
在车间调度优化中,交叉可以将两个优秀的个体的部分基因进行组合,产生更好的后代。
而变异可以在一定程度上保持个体的多样性,避免陷入局部最优解。
因此,合理设计交叉和变异操作,能够有效提高遗传算法的搜索能力。
最后,需要确定其他约束条件。
在车间调度优化中,除了时间成本和资源浪费之外,还存在着很多的约束条件,如机器容量、作业之间的关系等。
流水线车间生产调度的遗传算法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 个工序的加工时间% P1× 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);% 收敛曲线 1LC2=zeros(1,N);%收敛曲线2%第二步:随机产生初始种群farm=cell(1,N);%采用细胞结构存储种群for k=1:NX=zeros(m,n);for j=1:nfor i=1:mX(i,j)=1+(P(j)-eps)*rand;endendfarm{k}=X;endcounter=0;% 设置迭代计数器while counter<M%停止条件为达到最大迭代次数%第三步:交叉newfarm=cell(1,N);%交叉产生的新种群存在其中Ser=randperm(N);for i=1:2:(N-1)A=farm{Ser(i)};% Manner=unidrnd(2);%父代个体随机选择交叉方式if Manner==1cp=unidrnd(m-1);%随机选择交叉点%双亲双子单点交叉a=[A(1:cp,:);B((cp+1):m,:)];%子代个体b=[B(1:cp,:);A((cp+1):m,:)];elsecp=unidrnd(n-1);%随机选择交叉点b=[B(:,1:cp),A(:,(cp+1):n)];endnewfarm{i}=a;%交叉后的子代存入newfarmnewfarm{i+1}=b;end%新旧种群合并FARM=[farm,newfarm];%第四步:选择复制fitness=zeros(1,N);plotif=0;for i=1:(2*N)X=FARM{i};Z=COST(X,T,P,plotif);%调用计算费用的子函数FITNESS(i)=Z;end%选择复制采取两两随机配对竞争的方式,具有保留最优个体的能力Ser=randperm(2*N);for i=1:Nf2=FITNESS(Ser(2*i));if f1<=f2farm{i}=FARM{Ser(2*i-1)};fitness(i)=FITNESS(Ser(2*i-1));elsefarm{i}=FARM{Ser(2*i)};endend%记录最佳个体和收敛曲线minfitness=min(fitness)meanfitness=mean(fitness)LC1(counter+1)=minfitness;%收敛曲线1,各代最优个体适应值的记录LC2(counter+1)=meanfitness;%收敛曲线2,各代群体平均适应值的记录pos=find(fitness==minfitness);Xp=farm{pos(1)};%第五步:变异for i=1:Nif Pm>rand;%变异概率为PmX=farm{i};I=unidrnd(m);J=unidrnd(n);X(I,J)=1+(P(J)-eps)*rand;farm{i}=X;endendfarm{pos(1)}=Xp;counter=counter+1end%输出结果并绘图figure(1);plotif=1;X=Xp;[Zp,Y1p,Y2p,Y3p]=COST(X,T,P,plotif);figure(2);plot(LC1);figure(3);plot(LC2);function [Zp,Y1p,Y2p,Y3p]=COST(X,T,P,plotif)%JSPGA的内联子函数,用于求调度方案的Makespan 值%输入参数列表% X调度方案的编码矩阵,是一个实数编码的m×n 矩阵% T m× n的矩阵,存储m个工件 n 个工序的加工时间% P1× n的向量,n个工序中,每一个工序所具有的机床数目% plotif是否绘甘特图的控制参数%输出参数列表%Zp最优的Makespan值% Y1p最优方案中,各工件各工序的开始时刻% Y2p最优方案中,各工件各工序的结束时刻% Y3p最优方案中,各工件各工序使用的机器编号%第一步:变量初始化[m,n]=size(X);Y1p=zeros(m,n);Y2p=zeros(m,n);Y3p=zeros(m,n);%第二步:计算第一道工序的安排Q1=zeros(m,1);Q2=zeros(m,1);R=X(:,1);% 取出第一道工序Q3=floor(R);%向下取整即得到各工件在第一道工序使用的机器的编号%下面计算各工件第一道工序的开始时刻和结束时刻for i=1:P(1)%取出机器编号pos=find(Q3==i);%取出使用编号为i 的机器为其加工的工件的编号lenpos=length(pos);if lenpos>=1Q1(pos(1))=0;if lenpos>=2for j=2:lenposQ1(pos(j))=Q2(pos(j-1));Q2(pos(j))=Q2(pos(j-1))+T(pos(j),1);endendendendY1p(:,1)=Q1;Y3p(:,1)=Q3;%第三步:计算剩余工序的安排for k=2:nR=X(:,k);%取出第 k 道工序Q3=floor(R);%向下取整即得到各工件在第k 道工序使用的机器的编号%下面计算各工件第 k 道工序的开始时刻和结束时刻for i=1:P(k)%取出机器编号pos=find(Q3==i);%取出使用编号为i 的机器为其加工的工件的编号lenpos=length(pos);if lenpos>=1EndTime=Y2p(pos,k-1);%取出这些机器在上一个工序中的结束时刻POS=zeros(1,lenpos);%上一个工序完成时间由早到晚的排序for jj=1:lenposPOS(jj)=ppp(1);EndTime(ppp(1))=Inf;end%根据上一个工序完成时刻的早晚,计算各工件第k 道工序的开始时刻和结束时刻Q1(pos(POS(1)))=Y2p(pos(POS(1)),k-1);Q2(pos(POS(1)))=Q1(pos(POS(1)))+T(pos(POS(1)),k);%前一个工件的结束时刻if lenpos>=2for j=2:lenposQ1(pos(POS(j)))=Y2p(pos(POS(j)),k-1);%预定的开始时刻为上一个工序的结束时刻if Q1(pos(POS(j)))<Q2(pos(POS(j-1)))%如果比前面的工件的结束时刻还早Q1(pos(POS(j)))=Q2(pos(POS(j-1)));endendendendendY1p(:,k)=Q1;Y2p(:,k)=Q2;Y3p(:,k)=Q3;end%第四步:计算最优的Makespan 值Y2m=Y2p(:,n);Zp=max(Y2m);%第五步:绘甘特图if plotiffor i=1:mfor j=1:nmPoint1=Y1p(i,j);mPoint2=Y2p(i,j);mText=m+1-i;PlotRec(mPoint1,mPoint2,mText);Word=num2str(Y3p(i,j));%text*mPoint1+*mPoint2,,Word);hold onx1=mPoint1;y1=mText-1;x2=mPoint2;y2=mText-1;x4=mPoint1;y4=mText;%fill([x1,x2,x3,x4],[y1,y2,y3,y4],'r');fill([x1,x2,x3,x4],[y1,y2,y3,y4],[1,,1]);text*mPoint1+*mPoint2,,Word);endendendfunction PlotRec(mPoint1,mPoint2,mText)%此函数画出小矩形%输入 :%mPoint1输入点1,较小,横坐标%mPoint2输入点2,较大,横坐标%mText输入的文本,序号,纵坐标vPoint = zeros(4,2) ;vPoint(1,:) = [mPoint1,mText-1];vPoint(2,:) = [mPoint2,mText-1];vPoint(3,:) = [mPoint1,mText];vPoint(4,:) = [mPoint2,mText];plot([vPoint(1,1),vPoint(2,1)],[vPoint(1,2),vPoint(2,2)]); hold on ;plot([vPoint(1,1),vPoint(3,1)],[vPoint(1,2),vPoint(3,2)]); plot([vPoint(2,1),vPoint(4,1)],[vPoint(2,2),vPoint(4,2)]); plot([vPoint(3,1),vPoint(4,1)],[vPoint(3,2),vPoint(4,2)]);。
基于遗传算法的车间调度优化问题研究一、引言随着制造业的发展,车间调度优化问题成为了越来越重要的研究方向。
合理的车间调度方案能够使制造企业的生产效率得到提高,降低企业成本,提高企业的竞争力。
因此,如何实现车间调度优化,降低制造成本,已成为制造业界普遍关注的问题。
基于遗传算法的车间调度优化问题研究,成为提高制造业生产效率的有效方法之一。
二、遗传算法基本原理遗传算法是一种仿生学上的计算方法,其基本原理是模拟自然界中物种进化的过程,通过优胜劣汰,不断选择进化,逐渐得到最优解。
遗传算法主要包括三个过程:1. 选择操作:根据问题的特点选择合适的适应度函数,保留适应度最高的个体。
2. 交叉操作:从保留下来的父代中随机选择两个个体,进行基因重组,生成新的后代。
3. 变异操作:在一定概率下对新生的后代进行随机调整,增加优化的可能性。
三、车间调度问题的建模车间调度问题可以简单地定义为在一组工作任务和一组工作岗位之间建立合理的任务分配方案,以实现工作流程的协调。
对于同一工作台,可能存在多个任务,而对于同一任务,可以有多个可行的工作时间。
这使得车间调度问题成为一个特殊的多维背包问题。
对于车间调度问题,一些重要的因素包括任务数、工作台数、每个任务在各个工作台中的时间要求和任务之间的先后顺序关系。
因此,它可以表示为一个完全二部图G=(T,W,E),其中T表示所有任务的集合,W表示所有工作台的集合,E表示任务和工作台之间的二元关系。
这样,一个车间调度问题便可以被转化为一个二进制决策问题,其中每个决策变量都表示某个任务在某个工作台上的完成顺序。
四、车间调度问题的遗传算法求解1. 编码对于车间调度问题,可以使用二进制编码将决策问题转化为一个0-1串。
每个决策变量由1个比特位表示,其中1代表任务在对应工作台上的完成顺序为第一个,0则代表对应为第二个,以此类推。
2. 适应度函数适应度函数是遗传算法中的一个重要参数,指示一个码字在解空间的适应程度。
基于遗传算法的车间调度算法实现随着现代制造业迅速发展,车间调度问题逐渐成为制造业中非常普遍而重要的问题之一。
针对不同的生产需求和生产约束条件,车间调度问题需要使用不同的算法进行求解。
遗传算法是一种优化算法,在车间调度问题中得到了广泛的应用。
本文将介绍基于遗传算法的车间调度算法实现。
一、车间调度问题简介车间调度问题是指在一定的资源限制下,合理安排各个作业的工作时间,使得整个车间生产效率最高。
车间调度问题是一个NP难问题,需要使用高效的算法进行求解。
通常情况下一个车间中会有多个工作站,每个工作站可以处理不同种类的作业,有不同的加工时间以及之间的约束条件。
根据车间调度问题的研究侧重点和应用场景,可以将其分为许多子问题,如单机调度问题、流水线调度问题、车间调度问题等。
二、遗传算法简介遗传算法是一种模拟自然界进化规律的优化算法。
其基本思想是将问题的解表示为染色体,并用遗传编码来表示染色体上的基因,然后通过自然选择和交叉变异等操作,来不断更新种群,从而达到寻找问题最优解的目的。
具体操作过程包括:首先生成一个随机的初始种群,然后通过评价函数来对每一套染色体方案进行等级评价,得出适应度值。
随着不断进行自然选择、交叉和变异操作,种群的群体适应度值不断提高,最后找到问题的最优解。
三、基于遗传算法的车间调度问题实现针对车间调度问题,可以将不同车间的作业编码为不同的基因序列(染色体),基因序列中的每个基因表示一个作业的处理过程。
然后通过优选零工序、优化生产顺序、置换调度等方法,对车间调度问题进行求解。
1、评价函数的设计评价函数是遗传算法中最重要的一个部分,它决定了基因序列在群体中的适应度值。
在车间调度问题中,评价函数可以设为车间的总生产时间,即车间内所有作业完成所需的总时间。
此外,考虑到不同作业的权重不同,可以在计算车间生产时间时,根据不同作业的重要性,附带不同的权重因子,得到更为准确的生产时间。
2、基于染色体表达的作业调度方法基于染色体表达的作业调度方法是将车间内的不同作业之间的关系用染色体表达出来,从而确定较为合理的生产顺序。
收稿日期:2005-07-24作者简介:张 青(1982-),男,湖北应城人,研究方向为机械工程及自动化。
基于遗传算法的流水线车间调度模块设计与实现张 青,杨明忠,蔡 兰(武汉理工大学机电工程学院,湖北武汉430070)摘 要:介绍了一种基于遗传算法的流水线车间调度模块设计方法,以流行的C ++Bu il d er 作为编程工具,采用遗传算法处理流水线车间调度问题,开发并实现了可用于企业使用的ERP 车间调度模块。
关键词:遗传算法;车间调度;C++Builder 中图分类号:F406.2 文献标识码:A文章编号:1001-4551(2006)04-0062-05D esign and Applicati o n of F l o w Shop SchedulingM odule Based on Genetic A lgorit h mZHANG Q in ,YAN M ing -zhong ,C A I Lan(S chool of M echatronic Eng i neering,W uhan University of Thchnology 430070,Ch i na)Abstrac t :A design i ng m ethod o f fl ow shop scheduli ng m odule based on geneti c a l gor it hm is i ntroduced by the article .U s i ng C++Bu il der as the prog ramm i ng too ,l the authors deal w it h the i ssue of fl ow shop scheduli ng m odu l e by g enetic a lgo rith m,and desi gn and apply a shop scheduli ng m odule o f ERP,wh ich can be used by anterprises .K ey word s :gene ti c a l go rith m,s hop schedu li ng ,C++Bu ilder0 前 言企业资源的合理配置和优化利用很大程度上体现在车间一层的生产活动中,所以加强车间层的生产计划与控制一直在企业生产经营活动中占有十分重要的地位。
车间生产计划与控制的核心理论是车间调度理论。
车间生产计划与控制技术涉及到了多个学科、多个领域方向的理论和方法。
实现对车间生产调度的仿真,具有以下几个好处:通过计算机仿真可以寻求和分析生产资源之间存在的动态相互影响,解决车间调度中发生的具体冲突。
有时对于一组任务可能存在几种可能的计划或调度方案,通过对车间生产过程实行仿真,就可以知道各个方案的性能指标,帮助调度人员从中选择出最佳方案。
通过计算机仿真还可以对生产过程中出现的特殊情况或故障进行分析和预测,帮助调度人员制定出各种应急的诊断措施。
本研究采用C++Builder 编程工具,结合实验室正在开发的可重构ERP 系统,设计出了实用的流水线车间调度模块,成功地实现了生产调度仿真,在企业中已有较好的应用效果。
1 车间调度1.1 调度问题表述车间调度就是对一个可用的加工机床集在时间上进行加工任务集分配,以满足一个性能指标集。
从数学规划的角度看,车间调度问题可表示为在等式或不等式约束下,对目标函数的优化。
典型的车间调度问题包括一个要完成的作业集,每个作业由一个操作集组成,各操作的加工需要占用机床或其它资源,并且必须按一些可行的工艺次序进行加工;每台机床可对工件进行若干加工操作,并且在不同的机床上能完成的加工操作集可以不同。
调度的目标是将作业合理地安排到各机床,并合理地安排作业的加工次序和加工开始时间,使约束条件一一被满足,同时对一些性能指标进行优化。
在实际制造系统中,还要考虑刀具、托盘和物料搬运系统的调度问题。
#62#M echan ical&E lectricalE ngi neeri ng M agaz i ne Vo.l 23 No .4 2006 机电工程 2006年第23卷第4期车间调度实质上是一种决策模型。
一般来说,车间调度的基本思想就是如何在多项不同的事务中合理的分配作为共同资源的机械设备,并使总的生产作业时间最少。
1.2车间调度问题的分类和特点按照不同的标准,可以将调度问题分为6种类型:(1)开环和闭环车间;(2)单处理机、多处理机、F l o w Shop(各工件加工路径一致)和Job Shop(各工件加工路径不一致);(3)基于调度费用和基于调度性能的指标;(4)确定性调度和随机性调度;(5)静态调度和动态调度;(6)有序加工和无序加工等。
在现代车间调度问题中多采用的是Job Shop型,其调度问题有如下特点:(1)建模复杂性;(2)计算复杂性;(3)动态随机性;(4)多约束性;(5)多目标性。
本研究针对上述F lo w Shop车间调度模块的设计及其在工业生产中的应用。
1.3车间调度的数学规划模型数学规划法在车间调度中被广泛应用,调度问题可以用整数规划法、混合整数规划法和动态规划法来描述。
由于调度问题是NP问题,计算的复杂性使得这些方法的运用受到限制。
随着新的技术、更强有力的启发式规则和现代计算机所提供的计算能力的发展,使得这些方法又焕发了活力。
为克服方法自身的不足,一些学者相应地提出了分解技术:1.3.1基于数学规划问题法有学者提出了一套基于数学规划问题的方法。
将车间控制分成两层,上层详细说明每个零件加工的最早开始时间和最迟结束时间,考虑各子问题之间的约束关系,下层通过对所有工序的细致排序来细化上述的时间限制,考虑各子问题内的约束。
还有的学者使用了临时分解的概念提出了一个数学规划框架,用这框架来分析生产计划和调度。
该框架的特点时分级和多层。
较高的层次处理共性的问题,较低的层次处理个性问题,实际的调度发生在最下面。
1.3.2枚举方法与拉氏松弛法在整数规划中,应用最多的是分枝定界法和拉氏松弛法。
前者是一种枚举方法,对于较大的调度问题,要花费很大的时间,其主要存在的问题是整数约束。
为了克服这个问题,产生了拉氏松弛法,它删除了整数约束而相应地加入代价。
由于其在可行的时间里能对复杂的规划问题提供很好的次优解,并能对解的次优性进行评估,近来成为解决复杂车间调度问题的一种重要方法。
建立车间单元重组的数学规划模型如下:&c(%(&)c(!)()*()#$())!c()+,)!, -c)!-(*)#$c()+,)!,-c)#$-(%)&c, (+),.!-.)(-)2流水线车间调度模块设计基于目前制造业发展的现状,学术界对车间调度模块的研究已经取得了相当的理论成果。
但是,这些理论成果在实际工程实施方面做的应用研究还不多。
因此,笔者希望在应用研究方面做些尝试,获得良好应用效果。
2.1前提条件为了简化问题,车间调度理论的研究中通常要使用一些假设。
最常用的有以下几条:(1)机器从不发生故障,而且人力资源总能够满足生产要求。
(2)任何时点上每一台机器最多只能加工一个作业。
(3)所有机器准备时间(忽略)为零,即所有作业能立即进入加工。
(4)不存在中断,一旦一个操作开始,就不会停止,直到完成。
(5)加工时间与加工次序无关。
(6)任何地点的加工时间和技术上的约束都事先确定并且已知。
2.2模型设计在满足假设的前提条件下,提炼出的以下车间调度的数学规划模型:参数:n)工件数;m)工序数;T ij)工件i在j 工序的加工时间;S ij)工件i在j工序的开始加工时刻,S ij\0;E ij)工件i在j工序的加工结束时刻。
混合流水车间排列排序调度问题的数学规划模型为:目标函数:m in m ax{E i m,i=1,2,,,n}约束条件:S i+1j=m ax{S ij-1+T ij-1,S ij}i I1,2,,,n,j I2,3,,,mE ij=m ax{S ij,E ij+1-T ij}i I1,2,,,n,j I1,2,,,m初始条件:E11=0,S11=0,E n m=S n m#63#张青,杨明忠,蔡兰.基于遗传算法的流水线车间调度模块设计与实现一般说来,单一型号的产品的生产时间基本上是一个定值,而同一产品的不同型号之间生产工序基本相同。
通过交换一批不同型号工件的加工顺序可以计算出不同的任务完成时间,从而可以找出整体这批工件加工时间最少的顺序。
传统的时间计算方法基本都采用GANNT 图算法实现。
由于生产过程中投料的产品型号比较多,而且一般来说,工序也比较多,实现遍历的时间就会相当长。
因此,为了减少所需进行GANNT 运算的工件顺序的次数和时间,作者采用了遗传算法的思想来进一步减少程序运行时间,力求能够尽可能的实现最优设计。
将GANNT 图算法和遗传算法结合后的程序运行效果如下。
为了方便演示,笔者只设计了4个工件(C1,C2,C3,C4),4道工序(M 1、M 2、M 3、M 4)的示例(见图1)。
采用遗传算法计算的最短时间是19,加工顺序为2→1→3→4。
该加工顺序为最佳的理论加工顺序,采用GANNT 图显示,得到加工顺序2→1→3→4的加工流程。
流水线车间调度模块显示模块,如图2所示。
图1流水线车间调度模块主界面图2 流水线车间调度模块显示模块具体的实现软件界面演示:在某段时间内某个车间某条流水线上的加工任务,如表1所示。
其中:甲1、乙1、丙1,甲2、乙2、丙2,,为不同的加工任务。
不同的加工任务中,加工零件不只一个。
因此,就有不同的加工方案设计。
通过前面介绍的算法程序可以得到几种相对比较优的方案,具体方案,如图3、图4所示。
图3 方案显示图4 单个方案计划制定者可以在查看4种不同的方案后,确定其中一种比较合适的方案(主要考虑交货时间和机器的效率),从而就完成了单个计划的制定。
在多个任务制定完成之后,可以根据当月指定的计划,粗略的算出整条流水线的负荷,并绘制成评估图,供车间调度时参考。
#64#M echan ical&E lectricalE ngi neeri ng M agaz i ne Vo.l 23 No .4 2006 机电工程 2006年第23卷第4期3 系统的软件实现3.1 利用遗传算法计算加工总时间这是利用遗传算法计算流水线车间调度的基本问题。
作者采用MATLAB 强大功能,编写计算不同加工顺序的.m 文件,然后利用VC++将.m 文件转化为.d ll 文件,建立动态链接库文件。
然后在C ++Bu il d er 中调用.dll 文件,实现流水线车间调度模块的软件功能。