1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| clear all; close all; clc;
tic;
n=4;% nombre des jobs sur la première machine
m=3;%nombre total des jobs sur la 2 eme machine,
k=perms(1:m);
[ l1 , l2]= (size(k));
p=[2 5 1 6]; %processing time sur la premiere machine
q=[3 4 2 ];% processing time sur la deuxieme machine
S{1}=[1 3];
S{2}=[1 2];
S{3}=[4];
J=zeros(1,m);
for i=1:m
J(1,i)=sum(p(S{i}));
end
[v, seq]=sort (J,'descend');% obtention de la séquence qu'on l'appelle 'seq'
for i=1:m
H{i}=S{seq(i)}
end
D{1} = H{1};% On exécute d'abord S dans la première position
F{1}=D{1};
for i=2:length(S);
D{i} = unique([D{i-1} H{i}]);% On fait S2\S1, S3\S2,...
F{i}= setdiff(D{i},D{i-1});
end
c=zeros(1,m);
for i=1:m
c(1,i)=sum(p(F{i}));% On détermine le temps de fin sur la première machine
end
G=cumsum(c);
C=zeros(1,m);
C(1,1)=G(1,1)+q(seq(1,1));
for i=2:m
C(1,i)=max((G(1,i)),C(1,i-1))+q(seq(1,i));% temps de fin sur la 2 eme machine
end
makespan=C(1,m);
for i=1:length(k)
kl{i}=k(i,;
end
toc; |
Partager