💥💥💞💞欢迎来到本博客❤️❤️💥💥



🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。



⛳️座右铭:行百里者,半于九十。

目录

​​💥1 概述​​

​​📚2 运行结果​​

​​🎉3 参考文献​​

​​🌈4 Matlab代码实现​​

基于离散的 Jaya 算法实现柔性车间调度(Matlab代码实现)_matlab

💥1 概述

   元启发式方法已经越来越多地被用于解决FJSP问题,由于FJSP的复杂性和多约束性,利用算法优化求解的时间过长成为实时调度策略的主要障碍。在不同的方法中,元启发式算法具有计算时间合理、求解质量高等优点。Raol9于2016提出了一种新的元启发式算法Jaya,并将其应用于诸多领域的优化问题中。在文中,Jaya与几种存在的mete启发式优化算法分别进行了实验比较,实验和讨论结果验证了其中Jaya算法的有效性。与现有的大多数元启发式算法相比,Jaya算法的优势和竞争力在于不需要调整任何特定的参数,只需要种群规模和迭代次数等常用控制参数以达到最优。并且在相对较少的函数求值次数下提供了最优结果。Jaya算法的局限性在于无法有效地探索解空间中的区域,容易陷入局部最优解。Gao等以快速最小化柔性机器工作时间负载长度为目标,采用Jaya算法快速求解柔性作业车间调度问题,与国内现有的新型启发式算法结果进行了比较,实验结果证明了该新型算法的技术优越性。Rylan等l!11]在Jaya算法的基础上又引入有效的局部搜索技术,提出了一种算法/-Jaya,以最大完工时间为主要性能指标,比较了这种|-Jaya算法与其他常用元启发式算法的不同性能,验证了该类算法的性能有效性。然而,通过查阅文献可知,由于Jaya算法提出时间较晚,国内运用Jaya求解柔性作业车间调度问题的研究还较少,且运用Jaya求解调度问题仍有很大的改进空间。
 

📚2 运行结果

基于离散的 Jaya 算法实现柔性车间调度(Matlab代码实现)_开发语言_02

程序比较简单,可创新型比较大。

部分代码:

clc
clear all
% M= input('Input the number of machines:'); % number of machines
% J= input('Input the number of jobs:'); % number of jobs
M=3
J=3
% JO=zeros(1,J); % initialize number of operations for jobs
% for i= 1:J
% fprintf('Input the number of operations in Job %d :',i) % number of operations per job
% JO(i) = input('');
% end
JO=[2 2 2]
STO=sum(JO) % Total operations
CSJO= cumsum(JO) % cumulative sum of number of operations
PT=[1 2 4;3 2 1;4 1 1;3 3 2;5 2 1;3 2 3]
JC=zeros(1,J)
MC=zeros(1,M)
CI=1
BC=zeros(1,J-1)
BC=CSJO(1:J-1)
AJ=zeros(1,J)
n=0
a=0
PO=5
d=zeros(1,STO)
% for i= 1:STO
% fprintf('Input the job order for sequencing :',i) % number of operations per job
% OS(i) = input('');
% end
% for i= 1:STO
% fprintf('Input the MACHINE ORDER :',i) % number of operations per job
% MA(i) = input('');
% end
for t=1:PO
[OS,MA]=Random(M,J,JO,STO,CSJO,AJ,n)
O(t,:)=OS
Q(t,:)=MA
[mak]=makespan(OS,PT,JC,MC,MA,CSJO,STO,J)
tm(t)= mak
end
fitness1=zeros(1,PO-1)
fitness2=zeros(1,PO-2)
for d=1:PO
[lb,bp]=min(tm)
besto=O(bp,:)
bestm=Q(bp,:)
r1=zeros((PO-1),STO)
j1=zeros((PO-1),STO)
r1(1:bp-1,:)=O(1:bp-1,:)
j1(1:bp-1,:)=Q(1:bp-1,:)
r1(bp:(PO-1),:)=O(bp+1:PO,:)
j1(bp:(PO-1),:)=Q(bp+1:PO,:)
fitness1= [tm(1:bp-1) tm(bp+1:PO)] [lw,wp]=max(fitness1)
[lw,wp]=max(fitness1)
worsto=r1(wp,:)
worstm=r1(wp,:)
r2=zeros((PO-2),(STO))
j2=zeros((PO-2),(STO))
r2(1:wp-1,:)=O(1:wp-1,:)
j2(1:wp-1,:)=Q(1:wp-1,:)
r2(wp:(PO-2),:)=O(wp+1:PO-1,:)
j2(wp:(PO-2),:)=Q(wp+1:PO-1,:)
fitness2 = [fitness1(1:wp-1) fitness1(wp+1:PO-1)]
for g=1:PO-2
z=r2(g,:)
sf=j2(g,:)
[z_new]=opseq(worsto,besto,STO,z)
[y_new]=mcseq(worsto,besto,sf)
r2_new(g,:)=z_new
j2_new(g,:)=y_new
RT(g,:)=z_new
GT(g,:)=y_new
for lk=1:PO-2
[mak]=makespan(OS,PT,JC,MC,MA,CSJO,STO,J,GT,RT)
end

end
end


 

🎉3 参考文献

[1]裴小兵,祁文博,戴毓彤.求解柔性作业车间调度问题的新型改进Jaya算法[J].计算机工程与应用,2022,58(19):318-325.

​🌈​​4 Matlab代码实现