Académique Documents
Professionnel Documents
Culture Documents
1
Control electrónico de sistemas eléctricos
Figura 2. Por tanto, el entorno completo de una solución en nuestro ejemplo ilustrativo
está formado por 15 soluciones adyacentes que pueden ser obtenidas a partir de estos
Intercambios tal como muestra el Cuadro 1.
2
Control electrónico de sistemas eléctricos
3
Control electrónico de sistemas eléctricos
4
Control electrónico de sistemas eléctricos
Programación en Matlab
%BUSQUEDA TABU
clear,clc
MAQUINAS=[1 2 3 4 5 6 ; 5 8 2 6 10 3 ;9 10 16 7 20 23 ; 1 1 1 1 1 1 ];
LIMITE=30; %timepo minimo aceptado para que opere la maquina
M=MAQUINAS';%matris [tareas pj dj wj]
M2=MAQUINAS';
%pj=tiempo de operacion
%dj= dias de operacion
%wj=penalizacion
M_TABU=zeros(length(M(:,1)));%MATRIZ PARA DETERMINAR LAS POSICIONES TABU
FRE_TABU=zeros(length(M(:,1)));%MATRIZ PARA DETERMINAR LAS POSICIONES DE
FRECUENCIA TABU
%**********************************************
%primera iterasion es la soluciondada dada pornosostros
% apartir dela segunda iterasion son valores hallados porlas
% todas las combinacioens posibles
5
Control electrónico de sistemas eléctricos
T=0;
while T<50
T=T+1;
%************************************************
MM=M; I=0;
for f=1:MQNAS2 %numero demaquinas -1
if r<0
r=0;
end
R(j,1)=r;
end
TAREA1(I)=MM(f,1);%tarea intercambiable1
TAREA2(I)=MM(c,1);%tarea intercambiable2
F(I)=sum(R);%funcion objetivo
%-----------------------------------
----------
end
end
TAREA1;
TAREA2;
F;
VALOR_MOV=F-FO;
ABSOLUTE;
MATRIZ= [ TAREA1' TAREA2' F' VALOR_MOV' ABSOLUTE' ];
MATRIZ22= MATRIZ;
%||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
k=0;
while k<1
k=k+1;
7
Control electrónico de sistemas eléctricos
end
%||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MATRIZ;
for AA=1:MQNAS2 %numero demaquinas -1
for BB=AA+1:MQNAS1 %numero demaquinas
if (M_TABU(AA,BB)~=0)
M_TABU(AA,BB)=M_TABU(AA,BB)-1;
end
end
end
8
Control electrónico de sistemas eléctricos
val_max=b;
elseif a>b
val_max=a;
val_min=b;
end
M_TABU(val_min,val_max)=3;
FRE_TABU(val_max,val_min)=FRE_TABU(val_max,val_min)+1;
%NUEVA MATRIZ DE MAQUINAS TAREAS ETC
M=MM;
for x=1:MQNAS1 %numero de maquinas
if M(x,1)==a
prime_maq_ubica_fila=x;
end
end
for xx=1:MQNAS1 %numero de maquinas
if M(xx,1)==b
seg_maq_ubica_fila=xx;
end
end
M(prime_maq_ubica_fila,:)=MM( seg_maq_ubica_fila,:);
M( seg_maq_ubica_fila,:)=MM(prime_maq_ubica_fila,:);
%************************************************
%el nuevo valor minimo de la funcion objetivo seria
disp('*************************************')
M
MATRIZ
minimo
MAQUINAS=[a,b]
MATRIZ_TABU_CON_FECUENCIAS=M_TABU+ FRE_TABU
FO=FO+minimo
%if FO>LIMITE
% T=0 ;
%endnd