置换流水车间调度问题的MATLAB求解
求解置换流水车间调度问题的memetic算法
求解置换流水车间调度问题的memetic算法
Memetic算法是一种基于遗传算法和局部搜索算法结合的混合
算法,在求解置换流水车间调度问题时,可以通过将遗传算法和局部搜索算法结合,以提高求解效率。
步骤一:初始化参数
首先,需要初始化算法的参数,包括种群规模、变异率、交叉率、迭代次数等。
步骤二:初始化种群
然后,初始化种群,即产生一组初始解,用于进行后续的搜索。
步骤三:进行遗传算法迭代
接着,进行遗传算法的迭代,即对当前种群进行变异、交叉、选择等操作,以获得新的种群,并计算当前种群的适应度。
步骤四:进行局部搜索
然后,对当前种群中的某个解进行局部搜索,以求得更优的解。
步骤五:更新种群
最后,将局部搜索得到的更优解替换原有解,更新当前种群,并重复以上步骤,直至达到迭代次数为止。
matlab车辆调度优化算法
车辆调度优化算法在现代物流和运输领域中扮演着重要的角色。
随着城市化进程的加快和人们对快速高效货运的需求不断增加,车辆调度优化算法的研究和应用变得尤为重要。
其中,matlab作为一种强大的计算工具,被广泛应用于车辆调度优化算法的研究和实践中。
本文将从以下几个方面对matlab车辆调度优化算法进行探讨。
一、matlab在车辆调度优化算法中的应用概述1. Matlab在数学建模方面的优势Matlab作为一种强大的数学软件工具,拥有丰富的数学函数库和强大的矩阵运算能力,能够快速高效地进行数学建模和优化计算。
在车辆调度优化算法中,这种优势使得Matlab成为一种理想的工具。
2. Matlab在算法研究和实现中的应用Matlab提供了丰富的算法工具箱,包括遗传算法、模拟退火算法、粒子裙优化算法等常用的优化算法,这些算法的灵活性和易用性使得Matlab成为车辆调度优化算法研究和实现的理想选择。
二、matlab在车辆路径规划中的应用1. 车辆路径规划的基本问题和挑战车辆路径规划是车辆调度优化算法中的重要问题之一,它涉及到如何合理安排车辆的行驶路线,以最大限度地减少行驶距离和时间。
这是一个 NP 难题,需要运用各种优化算法来求解。
2. Matlab在车辆路径规划中的具体应用Matlab提供了丰富的优化算法工具箱,可以很方便地用来解决车辆路径规划中的优化问题。
可以利用遗传算法来对车辆路径进行优化,或者利用模拟退火算法来寻找最优路径。
三、matlab在车辆调度问题中的应用实例1. 基于Matlab的车辆调度优化算法研究以某物流公司的货物配送路线为例,通过Matlab对车辆调度优化算法进行研究和实现,能够有效降低运输成本,提高运输效率。
2. 基于Matlab的算法实现与性能评测通过实际案例,可以用Matlab对车辆调度优化算法进行实现,并进行性能评测,评估算法的优劣,为实际应用提供参考。
matlab在车辆调度优化算法中具有重要的应用价值,并且在实际的研究和实践中得到了广泛的应用。
matlab鸟群算法求解车间调度问题详解及实现源码
matlab鸟群算法求解车间调度问题详解及实现源码⽬录⼀、车间调度简介1 车间调度定义2 传统作业车间调度3 柔性作业车间调度⼆、蝴蝶优化算法(MBO)简介1 介绍2 ⾹味3 具体算法三、部分源代码五、matlab版本及参考⽂献⼀、车间调度简介1 车间调度定义车间调度是指根据产品制造的合理需求分配加⼯车间顺序,从⽽达到合理利⽤产品制造资源、提⾼企业经济效益的⽬的。
车间调度问题从数学上可以描述为有n个待加⼯的零件要在m台机器上加⼯。
问题需要满⾜的条件包括每个零件的各道⼯序使⽤每台机器不多于1次,每个零件都按照⼀定的顺序进⾏加⼯。
2 传统作业车间调度传统作业车间带调度实例有若⼲⼯件,每个⼯件有若⼲⼯序,有多个加⼯机器,但是每道⼯序只能在⼀台机器上加⼯。
对应到上⾯表格中的实例就是,两个⼯件,⼯件J1有三道⼯序,⼯序Q11只能在M3上加⼯,加⼯时间是5⼩时。
约束是对于⼀个⼯件来说,⼯序的相对顺序不能变。
O11->O12->O13。
每时刻,每个⼯件只能在⼀台机器上加⼯;每个机器上只能有⼀个⼯件。
调度的任务则是安排出⼯序的加⼯顺序,加⼯顺序确定了,因为每道⼯序只有⼀台机器可⽤,加⼯的机器也就确定了。
调度的⽬的是总的完⼯时间最短(也可以是其他⽬标)。
举个例⼦,⽐如确定了O21->O22->O11->O23->O12->O13的加⼯顺序之后,我们就可以根据加⼯机器的约束,计算出总的加⼯时间。
M2加⼯O21消耗6⼩时,⼯件J2当前加⼯时间6⼩时。
M1加⼯O22消耗9⼩时,⼯件J2当前加⼯时间6+9=15⼩时。
M3加⼯O11消耗5⼩时,⼯件J1当前加⼯时间5⼩时。
M4加⼯O23消耗7⼩时,⼯件J2加⼯时间15+7=22⼩时。
M1加⼯O12消耗11⼩时,但是要等M1加⼯完O22之后才开始加⼯O12,所以⼯件J1的当前加⼯时间为max(5,9)+11=20⼩时。
M5加⼯O13消耗8⼩时,⼯件J2加⼯时间20+8=28⼩时。
改进的粒子群算法求解置换流水车间调度问题
关键词 : 粒子群 算法 ; 多样性 ; 局部收敛 ; 置换流 水车间调度
中图分类号 : P 8 T 1 文献标志码 : A
I pr v d p r il wa m p i i a i n f r pe m u a i n fo ho c d i r blm m o e a tc e s r o tm z to o r t to ws p s he ul l ng p o e
Z A G Q —a g , H N Y n - eg, A i H N iin C E o gs n H N Bn l ' h
( .C lg l t n n frai n ier g Tnf U i rt,S ag a 0 3 1C ia 1 oeeo e r ia dI om t nE gnen , og nv sy h n hi 0 3 , hn ; l fE co c n o i i ei 2 2 ol eo l tcya fr ainE gnen ,腼 n s nvrt o Si c n ehooy h n ̄ agJagu2 50 ,C i ) .C lg e r i n I om t n i r e fE c it d n o e i g g uU i syf c ne d Tcnl ,Z agi n ins 16 0 hn e i e a g g n a
MATLAB粒子群算法工具箱求解水电站优化调度问题
文章编号:1007 2284(2009)01 0114 03MATLAB 粒子群算法工具箱求解水电站优化调度问题芮 钧1,2,陈守伦1(1.河海大学水利水电学院,江苏南京210098; 2.国网南京自动化研究院,江苏南京210003)摘 要:粒子群算法因其原理简单、易于编程、适于并行计算等优点而得到了广泛的应用。
本文探讨和分析了M at lab 粒子群算法工具箱,并提出了基于该工具箱来实现水电站优化调度计算的方法。
计算实例表明,M atlab 粒子群算法工具箱可以很好地用于解决水电站优化调度问题,可获得比动态规划算法更好的精度。
关键词:M atlab;粒子群算法;水电站;优化调度 中图分类号:T V697.1 文献标识码:AOptimal Dispatch of Hydropower Stations by Using Matlab Particle S warm Algorithm ToolboxesRUI Jun 1,2,C HEN Shou lun 1(1.Colleg e o f Water Co nser vancy and H ydro po wer Eng ineering,H ohai U niver sity ,N anjing 210098,China;2.N anjing A utomation Resea rch I nstit ute,Nanjing 210003,China)Abstract:Because of its simplicity ,generality and parallelism,PSO (P article Sw arm Optimization)is w idely used.T he M atlab par ti cle sw ar m alg or ithm too lbox is ana lyzed,and a metho d based o n it is also pr oposed to solve the pr oblem of optimal dispatch o f hy dr o pow er stations.Pr actical application indicates that t he M atlab par ticle swar m algo rithm too lbox can solve pr oblems mo re precisely than dynamic prog ramming.Key words:M atlab;hy dr opow er statio n;optimal reg ulatio n;pa rticle sw arm o pt imizatio n algo rit hm收稿日期:2008 03 01作者简介:芮 钧,(1978 ),男,工程师、博士研究生,主要从事梯级水电站群优化调度及自动发电控制研究。
解决多目标置换流水车间问题的改进MDPSO算法
解决多目标置换流水车间问题的改进MDPSO算法摘要:置换流水车间调度问题(flow-shop scheduling problem)是生产调度问题的一个子问题,是NP-hard组合优化离散问题之一,具有很强的实际研究意义。
在现代的生产制造过程中,单一的目标优化已经满足不了日益发展的工业需求,所以对多目标流水车间调度问题的研究显得尤为重要,已在实际生产中得到广泛应用。
本文在多目标进化算法粒子群算法PSO的基础上设计了一种多目标进化算法离散多目标粒子群优化算法MDPSO以求解该问题,用 MATLAB 编程实现该算法并对几个标准多目标flowshop 算例进行仿真测试。
实验结果表明,提出的算法比已有的NSGA_II算法具有更好的优化性能。
关键词:多目标flowshop问题;MDPSO算法;NSGA-II;Improved MDPSO method for Multi-objective flow-shop scheduling problemWu Ye, Li Xiaoyu, Yao Jun(Shanghai zhengfan technology co. Ltd , School of Mechatronics and Automation, Shanghai University, Shanghai, China)AbstractMulti-objective flow-shop scheduling problem is a sub problem of production scheduling problem. It is one of the discrete problems of NP-hard optimization and has strong theoretical and actual purpose.In the modern production and manufacturing process, single-objective optimization can’t meet the growing industrial demand, sothe research on the scheduling problem of multi-objective flow-shop is particularly important. This paper designs a Multi-objective evolutionary algorithm based on the PSO to solve this problem. It was implemented by MATLAB and simulation on a kind of benchmark functions. The experimental results show that the proposed algorithm hasa better optimization performance than the NSGA – II.Keywords: Multi-objective flow-shop scheduling problem; MDPSO; NSGA-II1 引言在现实生活中,许多问题都需要寻找一个最优决策或者是最佳解决方案,这类问题被统称为优化问题,仅有一个目标函数的最优化问题称为单目标优化问题,目标函数超过一个的最优化问题称为多目标优化问题(Multi-objective Optimization Problems,MOP)[1]。
改进的蚁群算法求解置换流水车间调度问题
改进的蚁群算法求解置换流水车间调度问题张丽萍【摘要】In order to avoid the shortcomings of ant algorithm for solving permutation flow shop scheduling problem that easily fall into local best situation and long calculation time, in this paper, an improved Max-MinAnt System (MMAS)algorithm which apply Nawaz-Enscore-Ham ( NEH ) heuristic algorithm to enhance the quality of the initial solutions and further improve the search capabil-ities through regulation of adaptive strategies is proposed . Finally we use the proposed algorithm to solve Taillard benchmarks set . Compared with other approaches , the experimental results show the effectiveness of the proposed algorithm .%针对蚂蚁算法在求解置换流水车间调度问题时易陷入局部最优以及计算时间较长的缺点,对最大最小蚂蚁系统( MMAS )进行了改进。
在该算法中,采用 NEH 启发式算法提高初始解质量,并通过自适应的调节策略进一步提高蚁群算法的搜索能力。
运用提出的混合算法求解 Taillard 基准测试集,并将测试结果与其他算法进行比较,验证了该调度算法的有效性。
02流水线车间生产调度的遗传算法MATLAB源代码
流水线车间生产调度的遗传算法MATLAB源代码n个任务在流水线上进行m个阶段的加工,每一阶段至少有一台机器且至少有一个阶段存在多台机器,并且同一阶段上各机器的处理性能相同,在每一阶段各任务均要完成一道工序,各任务的每道工序可以在相应阶段上的任意一台机器上加工,已知任务各道工序的处理时间,要求确定所有任务的排序以及每一阶段上机器的分配情况,使得调度指标(一般求Makespan)最小。
function [Zp,Y1p,Y2p,Y3p,Xp,LC1,LC2]=JSPGA(M,N,Pm,T,P)%--------------------------------------------------------------------------% JSPGA.m% 流水线型车间作业调度遗传算法% GreenSim团队——专业级算法设计&代写程序% 欢迎访问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);%收敛曲线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;endfarm{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,2*N);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)};end%记录最佳个体和收敛曲线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个工序的加工时间% P 1×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(0.5*mPoint1+0.5*mPoint2,mText-0.5,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,0.5,1]);text(0.5*mPoint1+0.5*mPoint2,mText-0.5,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)]);。
置换流水车间调度问题的MATLAB求解
物流运筹实务课程设计题目:置换流水车间调度问题的MATLAB求解置换流水车间调度问题的MATLAB求解!]目录一、前言 (5)二、问题描述 (6)三、算法设计 (7)四、?五、实验结果 (15)"摘要自从Johnson 1954年发表第一篇关于流水车间调度问题的文章以来.流水车间调度问题引起了许多学者的关注。
安排合理有效的生产调度是生产活动能井然有序开展,生产资源得到最佳配置,运作过程简明流畅的有力保证。
流水车间调度问题是许多实际流水线生产调度问题的简化模型。
它无论是在离散制造工业还是在流程工业中都具有广泛的应用。
因此,对进行研究具有重要的理论意义和工程价值。
流水线调度问题中一个非常典型的问题,而置换流水线调度问题作为FSP 问题的子问题,是一个著名的组合优化问题。
该问题是一个典型的NP难问题,也是生产管理的核心内容。
随着生产规模的扩大,流水线调度问题的优化对提高资源利用率的作用越来越大,因此对其研究具有重要的理论和现实意义。
&关键字:流水车间,单件小批量生产,jsp模型,Matlab前言企业资源的合理配置和优化利用很大程度上体现在车间一层的生产活动中,所以加强车间层的生产计划与控制一直在企业生产经营活动中占有十分重要的地位。
车间生产计划与控制的核心理论是调度理论。
车间调度问题是一类重要的组合优化问题。
为适应订货式、多品种、小批量生产的需要,引进了置换流水车间调度概念。
在置换流水车间调度优化后,可以避免或大大减少流程工作时间、提高生产效率。
因此,研究成组技术下车间调度问题是很有必要的。
生产调度,即对生产过程进行作业计划,是整个个先进生产制造系统实现管理技术、优化技术、白动化与计算机技术发展的核心。
置换流水车间调度问题是许多实际生产调度问题的简化模型。
生产计划与调度直接关系着企业的产出效率和生产成本,有效的计划与调度算法能最大限度地提高企业的效益。
调度问题是组合优化问题,属于NP问题,难以用常规力一法求解。
置换流水线车间调度问题的研究
LI U Yi g n ’ 。 GU We n - x i a n g 2 ' 。 LI Xi a n g - t a o 。 ( C o l l e g e o f Hu ma n i t i e s& S c i e n c e s o f No r t h e a s t No r ma l Un i v e r s i t y , C h a ge n h u n 1 3 0 1 1 7 , C h i n a ) 1
计
算
机
科
学
Vo 1 .3
Co mp u t e r S c i e n c e
置 换 流 水 线 车 间调 度 问题 的研 究
刘 莹L 。 谷 文祥 。 李 向涛。
( 东北 师 范大学人 文 学院 长 春 1 3 0 1 1 7 ) ( 长 春建 筑 学院基 础教 学部 长 春 1 3 O 6 O 7 ) 。 ( 东北 师 范大 学计算 机科 学 与信 息技术 学 院 长 春 1 3 0 1 1 7 ) 。
c o mp r e h e n s i v e u n d e r s t a n d i g. n
Ab s t r a c t As t h e s c i e n c e a n d t e c h n o l o g y d e v e l o p a n d t h e p r o d u c t i o n s c a l e e x p a n d s c o n s t a n t l y , t h e r e s e a r c h o n p e r mu t a -
置换流水车间调度问题的中心引力优化算法求解
置换流水车间调度问题的中心引力优化算法求解刘勇;马良【摘要】目前求解置换流水车间调度问题的智能优化算法都是随机型优化方法,存在的一个问题是解的稳定性较差.针对该问题,本文给出一种确定型智能优化算法——中心引力优化算法的求解方法.为处理基本中心引力优化算法对初始解选择要求高的问题,利用低偏差序列生成初始解,提高初始解质量;利用加速度和位置迭代方程更新解的状态;利用两位置交换排序法进行局部搜索,提高算法的优化性能.采用置换流水车间调度问题标准测试算例进行数值实验,并和基本中心引力优化算法、NEH 启发式算法、微粒群优化算法和萤火虫算法进行比较.结果表明该算法不仅具有更好的解的稳定性,而且具有更高的计算精度,为置换流水车间调度问题的求解提供了一种可行有效的方法.%The existing intelligent optimization algorithms for permutation flow-shop scheduling problem are all stochastic optimization methods.One problem with these approaches is that they have poor solution stability.In this paper,a method based on central force optimization algorithm which is a deterministic intelligent optimization algorithm is proposed to resolve this problem.The basic algorithm depends upon the choice of the initial solutions.To deal with this problem,low-discrepancy sequences are used to generate initial solutions to improve the quality of initial solutions.The acceleration and position equations are employed to update the solutions.A sorting method to swap two positions in a solution is used to conduct local searches,to enhance the performance of the algorithm.The benchmarks are used to perform numerical experiments.The presented algorithm is compared with basiccentral force optimization algorithm,NEH heuristic algorithm,particle swarm optimization algorithm,and firefly algorithm.The results demonstrate that the proposed method not only has better solution stability but also higher accuracy.The presented approach provides a feasible and effective way to solve the permutation flowshop scheduling problem.【期刊名称】《运筹与管理》【年(卷),期】2017(026)009【总页数】6页(P46-51)【关键词】置换流水车间调度;最大完工时间;中心引力优化算法;确定性【作者】刘勇;马良【作者单位】上海理工大学管理学院,上海200093;上海理工大学管理学院,上海200093【正文语种】中文【中图分类】O221.3置换流水车间调度问题(Permutation Flow-Shop Scheduling Problem,PFSP)是一种典型的生产调度问题,有着广泛的工程应用背景,大概10%的产品制造系统、装配线系统和信息服务设施都可以转换为PFSP模型[1]。
matlab生产调度问题及其优化算法
生产调度问题与其优化算法〔采用遗传算法与MATLAB编程〕信息014 孙卓明二零零三年八月十四日生产调度问题与其优化算法背景与摘要这是一个典型的Job-Shop动态排序问题。
目前调度问题的理论研究成果主要集中在以Job-Shop问题为代表的基于最小化完工时间的调度问题上。
一个复杂的制造系统不仅可能涉与到成千上万道车间调度工序,而且工序的变更又可能导致相当大的调度规模。
解空间容量巨大,N个工件、M台机器的问题包含M(N)!种排列。
由于问题的连环嵌套性,使得用图解方法也变得不切实际。
传统的运筹学方法,即便在单目标优化的静态调度问题中也难以有效应用。
本文给出三个模型。
首先通过贪婪法手工求得本问题最优解,既而通过编解码程序随机模拟优化方案得出最优解。
最后采用现代进化算法中有代表性开展优势的遗传算法。
文章有针对性地选取遗传算法关键环节的适宜方法,采用MATLAB 软件实现算法模拟,得出优化方案,并与计算机随机模拟结果加以比拟显示出遗传算法之优化效果。
对车间调度系列问题的有效解决具有一定参考和借鉴价值。
一.问题重述某重型机械厂产品都是单件性的,其中有一车间共有A,B,C,D四种不同设备,现承受6件产品的加工任务,每件产品承受的程序在指定的设备上加工,条件:1、每件产品必须按规定的工序加工,不得颠倒;2、每台设备在同一时间只能担任一项任务。
〔每件产品的每个工序为一个任务〕问题:做出生产安排,希望在尽可能短的时间里,完成所承受的全部任务。
要求:给出每台设备承当任务的时间表。
注:在上面,机器 A,B,C,D 即为机器 1,2,3,4,程序中以数字1,2,3,4表示,说明时如此用A,B,C,D二.模型假设1.每一时刻,每台机器只能加工一个工件,且每个工件只能被一台机器所加工 ,同时加工过程为不连续; 2.所有机器均同时开工,且工件从机器I 到机器J 的转移过程时间损耗不计; 3.各工件必须按工艺路线以指定的次序在机器上加工屡次;4.操作允许等待,即前一操作未完成,如此后面的操作需要等待,可用资源有限。
求解改进布谷鸟算法的置换流水车间调度问题
BING Xiaofeng,TAO Yifei,DONG Yuanyuan,SUN Sihan (Faculty of Mechanical and Electrical Engineering, Kunming University of Science and Technology,
调度⑴研究的内容是将稀缺资源分配给在一定时
间内的不同任务[2]%它一
程,其目的 :
化一
目标。
调的 对于企
业及相关 人员都有着重要的
和理论价
值。置换流水车间调度问题[3] ( Permutation Flow Shop
Scheduling Problem, PFSP )是对流水车间调度问题⑷
(Flow Shop Scheduling Problxm, FSP)的扩展,是一类典
鸟算法(Cuckoo Search,CS)是近年提出的一种新颖的 化算法,是模拟自然中布谷鸟寄生孵育雏鸟的
为发展而来的一种群
化。该 的优化
思想基 拟布谷鸟的孵育寄 为和鸟类的莱维飞
行行为,对解 整体更新评价策略从 现全局优
化,
、调参数少、收敛速度快的优点。
目前国内已有文献大多将布谷鸟
解项目
管理中资源调度[13]、函数优化[14]、整数规划[15]问题
、壬a巧區2019年第32卷第10期
Electenie Sci. & Tech. /Oct. 15,2019
求解改进布谷鸟算法的置换流水车间调度问题
丙『孝锋,陶翼飞,董圆圆,孙思汉
置换流水车间调度问题的两阶段分布估计算法
置换流水车间调度问题的两阶段分布估计算法孙良旭;曲殿利;刘国莉【摘要】Aiming to solve the permutation flow shop scheduling problem, minimizing the total flow time as the objective function, it proposes a novel two-stage estimation of distribution algorithm. In the first stage, it firstly uses NEH (Nawaz-Enscore-Ham, NEH)heuristic to construct a relatively optimal initial individual, and then generates initial popu-lation randomly. To keep the diversities of the population, it puts forward a preferred mechanism to select individuals and establish the probability model, and at the same time, uses elite mechanism to keep the optimal individual in the contem-porary populations. Finally it uses probability model to sample and generate the next generation of population. In the second stage, it uses the insert and interchange operator to do neighborhood search around the optimal individual which is got in the first stage in order to improve the global search ability of estimation of distribution algorithm and prevent it from entrapping the local optimal. Through sufficient experiments, contrast and analysis for outcome of the examples, it proves the feasibility and effectiveness of the proposed algorithm.%针对置换流水车间调度问题,以最小化总流水时间为目标,提出了一种新颖的两阶段分布估计算法。
求解置换流水车间调度问题的一种混合算法
求解置换流水车间调度问题的一种混合算法0. 前言置换流水车间调度问题(PFSP是对经典的流水车间调度问题进行简化后得到的一类子问题,最早在石化工业中得到应用,随后扩展到制造系统、生产线组装和信息设备服务上[1] 。
该问题一般可以描述为,n个待加工工件需要在m台机器上进行加工。
问题的目标是求出这n 个工件在每台机器上的加工顺序,从而使得某个调度指标达到最优,最常用的指标为工件的总完工时间(makespar)最短。
PFSP最早由Johnson于1954年进行研究[2],具有NP难性质[3] 。
求解方法主要有数学规划,启发式方法和基于人工智能的元启发式算法[4] 。
数学规划等适用于小规模问题,启发式方法计算便捷,却又无法保证解的质量。
随着计算智能的发展,基于人工智能的元启发式优化算法成为研究的重点。
遗传算法(GA是研究与应用得最为广泛的智能优化算法,利用遗传算法求解PFSP问题的研究也有很多。
遗传算法具有操作简单、容易实现的优点,且求解时不受约束条件限制。
然而,遗传算法通常存在着过早收敛,容易陷入局部最优的现象。
导致这一现象的原因在于遗传算法的交叉、变异操作具有一定的随机性,在求解PFSP问题的过程中往往会破坏构造块,产生所谓的连锁问题。
为了克服遗传算法的缺陷,研究人员提出了一种不进行遗传操作的分布估计算法[5] (EDA。
EDA是一种运用统计学习的新型优化算法。
相比GA EDA在全局搜索上有较大的优势,而局部搜索能力不足,同样会导致局部最优[6][7] 。
以混合优化为思路,本文将设计一种EDA与GA吉合的混合算法来求解PFSP 问题,混合算法通过EDA的概率模型和GA的交叉变异操作两种方式来生成个体,并引入模糊控制理论[8] 来自适应调节两种算法生成个体的比例。
1. 置换流水车间调度问题PFSP问题通常假设:(1)n台工件在m台机器上加工。
(2)每个工件以相同的顺序在m台机器上加工。
(3)每个工件在每台机器上的加工时间是预先确定的。
多构造蚁群优化求解置换流水车间调度问题_刘延风
第37卷 第1期2010年1月计算机科学Computer Science Vo l.37No.1Jan 2010到稿日期:2009-02-09 返修日期:2009-05-13刘延风(1970-),男,讲师,主要研究方向为智能优化算法及其应用,E -mail:teach er2003@;刘三阳(1959-),男,教授,主要研究方向为最优化理论与算法。
多构造蚁群优化求解置换流水车间调度问题刘延风 刘三阳(西安电子科技大学应用数学系 西安710071)摘 要 针对置换流水车间调度问题,提出了一种多构造蚁群优化求解算法。
在该算法中,蚁群采用两种方式构造解,分别是基于NEH (N aw az -Ensco re -H am,N EH)启发式算法和R ajendran 启发式算法,并根据解的质量,自适应地调整两种构造方式在蚁群中所占的比例。
对置换流水车间调度问题的基准问题测试表明,提出的算法是有效的。
关键词 多构造蚁群优化,置换流水车间调度,N EH 启发式算法,Rajendran 启发式算法中图法分类号 T P38 文献标识码 AMult-i construction Ant Colony Optimization Algorithm for Permutation Flow Shop SchedulingLIU Yan -feng L IU San -y ang(Departmen t of Applied M ath ematics,Xidian U nivers ity,Xi .an 710071,Chin a)Abstract A M ulti Construction A nt Colony Optimizatio n A lg or ithm fo r Permutatio n Flow Shop Scheduling w as pro -posed.In this alg or ithm,so lutio ns ar e constructed thr ough two modes,which are based on N aw az -Ensco re -H am heuris -t ics and R ajendr an heur istics respectiv ely.T hen the pr opor tion of const ruct ion mo des is adjusted adaptively accor ding to qualit y of so lutio n constructed.Simulation results and comparisons based on benchmarks demo nstr ate the effectiveness of the alg or ithm.Keywords Per mut ation flo w sho p scheduling ,M ulti constructio n ant co lony o ptimization,N EH heuristics,Rajendran heur istics1 引言置换流水车间调度问题是许多实际流水线生产调度的简化模型。
基于双模式PSO算法求解置换流水车间调度问题
基于双模式PSO算法求解置换流水车间调度问题马祎航;陶文华;刘阳【摘要】针对粒子群算法求解置换流水车间调度这类NP-hard问题存在的早熟问题,本文提出了一种基于随机键编码的双模式飞行粒子群算法。
首先,基于ROV 规则对工件加工顺序进行随机键编码。
其次,粒子在搜索过程中采用带有自适应惯性权重的双模飞行方式来更新位置和速度,避免粒子群陷入早熟收敛状态。
为了提高解的质量,每次迭代过程中对PSO优化得到的种群最优解进行邻域局部搜索。
最后,通过对标准测试集的数值仿真及与其他PSO算法的比较,证实了所提算法求解该问题的有效性与可行性。
%Our objective in this report is to study the permutation flow shop scheduling problem, this paper proposes a dual-mode particle swarm optimization algorithm based on random key code. Based on the ROV rules for random code for the processing sequence;Secondly, particles in the search process use dual flight mode with the adaptive inertia weight to update the position and velocity, avoid particle swarm into premature convergence;In order to improve the quality of the solution, in each iteration the neighborhood local search algorithm is used on PSO optimized solution.Finally a comparison through numerical simulation and comparison of different PSO algorithm on the standard test set, to verify the feasibility and effectiveness of the proposed algorithm to solve the problem.【期刊名称】《电子设计工程》【年(卷),期】2016(024)015【总页数】4页(P1-4)【关键词】置换流水车间调度;粒子群算法;邻域搜索;随机键【作者】马祎航;陶文华;刘阳【作者单位】辽宁石油化工大学信息与控制工程学院,辽宁抚顺 113000;辽宁石油化工大学信息与控制工程学院,辽宁抚顺 113000;中国石油抚顺石化公司烯烃厂辽宁抚顺 113009【正文语种】中文【中图分类】TN081置换流水车间调度问题(Permutation Flow Shop Scheduling Problem,PFSP)是制造系统中重要的规划问题[1],是在流水车间调度问题的基础上,增加了每台机器加工各工件顺序相同的这一特定的约束条件[2],已证明3台即为NP-hard问题[3]。
改进二元分布估计算法求解置换流水车间调度问题
改进二元分布估计算法求解置换流水车间调度问题
裴小兵;赵衡
【期刊名称】《运筹与管理》
【年(卷),期】2018(027)010
【摘要】针对置换流水车间调度这类组合最优化问题的求解,提出了一种改进二元分布估计算法(Improved binary estimation distribution algorithm,I-EDA).算法以二元分布估计算法为架构,使用NEH(Nawaz-Enscore-Ham)启发式算法生成初始解,提高了初始解的质量;通过对优势解的统计采样构建位置矩阵模型和链接矩阵模型,依照两个矩阵模型的合并概率组合链接区块产生子代.提出了NEH插入式重组策略和基于位置概率的交换策略和两种全新局部搜索机制替代原二元分布估计算法的相邻交换法,以进一步筛选优势解.最后通过对Reeves标准测试集的仿真实验和算法比较验证了所提出算法的有效性.
【总页数】7页(P193-199)
【作者】裴小兵;赵衡
【作者单位】天津理工大学管理学院,天津 300384;天津理工大学管理学院,天津300384
【正文语种】中文
【中图分类】TP301
【相关文献】
1.改进的分布估计算法求解混合流水车间调度问题研究 [J], 张凤超
2.应用改进区块遗传算法求解置换流水车间调度问题 [J], 裴小兵;张春花
3.改进粒子群算法求解置换流水车间调度问题 [J], 张源;王加冕
4.改进的分布估计算法求解混合流水车间调度问题研究 [J], 张凤超
5.应用改进混合进化算法求解零空闲置换流水车间调度问题 [J], 裴小兵;李依臻因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
物流运筹实务课程设计题目:置换流水车间调度问题的MATLAB求解置换流水车间调度问题的MATLAB求解目录一、前言 (5)二、问题描述 (6)三、算法设计 (7)四、实验结果 (15)摘要自从Johnson 1954年发表第一篇关于流水车间调度问题的文章以来.流水车间调度问题引起了许多学者的关注。
安排合理有效的生产调度是生产活动能井然有序开展,生产资源得到最佳配置,运作过程简明流畅的有力保证。
流水车间调度问题是许多实际流水线生产调度问题的简化模型。
它无论是在离散制造工业还是在流程工业中都具有广泛的应用。
因此,对进行研究具有重要的理论意义和工程价值。
流水线调度问题中一个非常典型的问题,而置换流水线调度问题作为FSP 问题的子问题,是一个著名的组合优化问题。
该问题是一个典型的NP难问题,也是生产管理的核心内容。
随着生产规模的扩大,流水线调度问题的优化对提高资源利用率的作用越来越大,因此对其研究具有重要的理论和现实意义。
关键字:流水车间,单件小批量生产,jsp模型,Matlab前言企业资源的合理配置和优化利用很大程度上体现在车间一层的生产活动中,所以加强车间层的生产计划与控制一直在企业生产经营活动中占有十分重要的地位。
车间生产计划与控制的核心理论是调度理论。
车间调度问题是一类重要的组合优化问题。
为适应订货式、多品种、小批量生产的需要,引进了置换流水车间调度概念。
在置换流水车间调度优化后,可以避免或大大减少流程工作时间、提高生产效率。
因此,研究成组技术下车间调度问题是很有必要的。
生产调度,即对生产过程进行作业计划,是整个个先进生产制造系统实现管理技术、优化技术、白动化与计算机技术发展的核心。
置换流水车间调度问题是许多实际生产调度问题的简化模型。
生产计划与调度直接关系着企业的产出效率和生产成本,有效的计划与调度算法能最大限度地提高企业的效益。
调度问题是组合优化问题,属于NP问题,难以用常规力一法求解。
随着制造业的快速发展,大规模定制生产、全球化制造等思想的提出,使车间调度问题呈现出以下的新特点:约束条件多,时间复杂度高,空问复杂度高。
这将导致在许多情况下,求解所建立的数学模型的快速性无法满足,如果采用适度线形化处理之后求解,将会因简化太多而使结果严承失真。
所以需选择功能强大的数值计算工具来实现这一问题的求解。
MATLAB恰好提供了这样的平台。
MATLAB是一个高度集成的系统,集科学计算、图像处理、声音处理于一体,具有极高的编程效率。
典型JSP模型分析与Matlab的应用结合使流水车间调度问题迎刃而解。
最大完工时间是生产调度中最常用的性能度量指标之一,最大完工时间越短,则说明产品总的生产周期越短,生产能力越大;此类调度问题的优化研究有助于提高企业的生产效率与资源利用率。
一、问题描述流水车间调度问题通常可以描述为n个工件要在m台机器上加工,每个工件有m道工序,每道工序都要在不同的机器上加工,所有工件的加工顺序都相同,问题的目标是确定每台机器上工件的加工顺序及开工时间,使得特定的性能指标最优。
置换流水车间调度问题PFSP是对流水车间调度问题的进一步约束,即约定每台机器上所有工件的加工顺序相同,其解空间的规模为!n,远远小于流水车间调n。
度问题的规模(!)m本次课程实验主要研究PFSP中的最小化最大完工时间问题,利用三元组表示F prmu C)求解Carlier (1978)提出的8个算例、以及Reeves (1995)提法(max出的21个算。
由于三台机器以上的调度问题被证明是NP难问题,对于大规模的调度,至今仍未出现求解最优的方法,常常采用启发式算法来求解近优解。
本案例主要采用instance car2进行求解。
案例:某产品,需要经过4道工序对13个工件进行加工,这13个工件的生产流程是一样的。
加工时间表见下:表4-3 某产品加工时间表计算步骤如下:首先确定n/m/F/C max 的最大完工时间为: 1,11)1,(c j t j =k j t k j c i j c 1)1,(),(11+-= k=2,...,m 111)1,(c )1,(c i j i t j j +=- i=2,...,n k j i i i i t k j c k j k j +-=-)}1,();,(c m ax {),(c 1则 C max =),(c n m j二、算法设计 (一)假设工件在机器上的加工顺序是相同的,同时假定各工件准备就绪,机器一开动就投入生产,开工时间为0,则最大完工时间等于最大流程时间。
同时3台机器以上的流水车间调度是NP 难问题,所以本文只考虑了2台、3台机器的情况,解决3台机器以上的问题方法也可运用人工智能算法,解的质量更高,但因该类算法需良好的软件编程能力,故本文不加探究。
n 个工件在m 台机器上的加工顺序相同。
工件在机器上的加工时间是给定的。
问题的目标是求n 个工件在每合机器上的最大完工时间等于最大流程时间。
这种流水线调度问题要在满足以下两个约束条件的前提下,使得加工完所有的工件所花的时间尽可能地少: 1、工件约束每个工件在每台机器上恰好加工一次,每个工件在各机器上加工顺序相同。
不失一般性,假设各工件按机器1至m 的顺序进行加工。
各工件在各机器上的加工时间已知。
2、机器约束每台机器在任何时刻至多加工一个工件,每台机器加工的各工件的顺序相同。
置换流水线调度问题实质是如何调整加工工件的序列,提高机器的利用率的问题,即在同一时刻正在加工的机攫数越多,机器利用率越大口根据该原则,我们根据下面规则安排工件的加工顺序:(l)在前面机器加工时间较短、后面机器加工时间较长的工件,安排在序列前。
这样可以使得后面的机器尽快参加工作,并且后面的机器不需要作空等待,(2)机器加工时间较为平均且加工时间较长的工件,安排在序列的中部。
这样可以使得各个机器在中期的时候都能得到运作。
(3〕前面加工时间较长,后面加一〔时间较短的上件女排在序列尾部。
这样使得前面的机器能“延迟”完工,后面的机器尽快完工。
(二)利用Matlab软件对上面的案例进行求解,编程如下:软件输出相应的结果,如下:(三)绘制甘特图编程如下:三、实验结果1、根据上面matlab的求解得到以下实验结果:最优排序为13 4 12 6 7 10 1 14 8 9 3 11 25 min(Cmax)= 84232、甘特图如下所示:四、流水线型车间作业调度问题遗传算法MATLAB源码流水线型车间作业调度问题可以描述如下:n个任务在流水线上进行m个阶段的加工,每一阶段至少有一台机器且至少有一个阶段存在多台机器,并且同一阶段上各机器的处理性能相同,在每一阶段各任务均要完成一道工序,各任务的每道工序可以在相应阶段上的任意一台机器上加工,已知任务各道工序的处理时间,要求确定所有任务的排序以及每一阶段上机器的分配情况,使得调度指标(一般求Makespan)最小。
下面的源码是求解流水线型车间作业调度问题的遗传算法通用MATLAB源码function [Zp,Y1p,Y2p,Y3p,Xp,LC1,LC2]=JSPGA(M,N,Pm,T,P)% 输入参数列表% 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);%收敛曲线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,2*N);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个工序的加工时间% P 1×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(0.5*mPoint1+0.5*mPoint2,mText-0.5,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,0.5,1]);text(0.5*mPoint1+0.5*mPoint2,mText-0.5,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)《MATLAB基础教程》清华大学出版社 2011.3 第一版(2)《计算机工程与应用》 2009年第36期。