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 51 52 53 54 55 56 57 58 59 60 61 62 63
| clear all
clc
% Initialiser le réseau de simulation
eNodeB=10;% nombre des eNodeB
SGM=3;% nombre des commutateurs
c=[12,10,6,12,7,8,10,12,6,6;8,8,10,6,12,6,12,10,6,12;8,6,3,6,6,3,6,6,3,9;12,10,6,12,7,8,10,12,6,6];
h=[2,3,5,8,1,2,3,5,4,3;2,6,1,8,9,5,4,8,2,1;7,5,2,6,7,1,3,7,2,9;2,3,5,8,1,2,3,5,4,3;2,6,1,8,9,5,4,8,2,1;7,5,2,6,7,1,3,7,2,9;2,3,5,8,1,2,3,5,4,3;2,6,1,8,9,5,4,8,2,1;7,5,2,6,7,1,3,7,2,9;3,10,1,16,3,10,14,7,9,8;2,3,5,8,1,2,3,5,4,3;2,3,5,8,1,2,3,5,4,3];
% Initialiser le nombre d'itérations :
it_max=100;
it=1;
tic
% génération du solution initiale
S1=randi(SGM,1,eNodeB);
n=length(S1);
% Initialiser la liste de Taboue
tL=zeros(1,n);
% initialisé la meilleur solution
SB=S1;
% calculer le cout de la solution initiale
F=soleval(SB,SGM,eNodeB,c,h);
% initialisé le meilleur cout
FB=F;
%recherche de taboue
while(it<=it_max)
% Explorer le voisinage
best_cost=inf;
for j=1:n
if(tL(j)==0)
SV=perm1(SB,j);
FV=soleval1(SV,SGM,eNodeB,c,h);
% si le cout de la solution courante <cout de meilleur solution
% choisir le meilleur mouvement selon le cout
if FV< best_cost
best_cost =FV;
Bmv=j;
end
end
end
% mettre à jour la meilleur solution par la meilleur solution voisine
SB=perm1(SB,Bmv);
% mettre à jours la liste de Taboue
tL=tL-(tL>0);
% determiner le nombre des itérations pour lesquelle le mouvement
% choisit est tabou(valeur choisit aléatoirement en 5 et 9)
tL(Bmv)=7;
% si le cout de la solution courante <cout de meilleur solution
% mettre à jour la meilleur solution
if(best_cost<=FB)
FB=best_cost;
SB=SV;
end
it=it+1;
it
plot(G)
disp(G);
disp(SB);
end |
Partager