Professional Documents
Culture Documents
ataqiz(i,j)=sumdiagiz;
ataqd(i,j)=sumdiag;
ataq(i,j) = sum(A(i,:))+sum(A(:,j)');
% pause
end
x= ataqd+ataqiz+ataq;
y =sum(sum(x));
function [an,filan,columnan]=borrauno(a,fila,columna,indice)
[xx,yy,pob]=size(a);
i = indice;
if i ==1
an= a(:,:,i+1:pob);filan=fila(i+1:pob,:);columnan=columna(i+1:pob,:);
end
if i == pob
an= a(:,:,1:pob-1);filan=fila(1:pob-1,:);columnan=columna(1:pob-1,:);
end
if i<pob & i >1
for j=1:i-1
an(:,:,j) = a(:,:,j);filan(j,:)=fila(j,:);columnan(j,:)=columna(j,:);
end
for j = i+1:pob
an(:,:,j-1) = a(:,:,j);filan(j-1,:)=fila(j,:);columnan(j-1,:)=columna(j,:);
end
end
ahij(:,:,k)=bh;
fhij(k,:) = fbh;
chij(k,:) = cbh;
[fhij(k,:),chij(k,:)]=ordenuno(fhij(k,:),chij(k,:));
end
end
end
end
end
end
if n >= 1
% disp('n fue mayor que 1');
for j = size(indb):-1:1
[a,fila,columna]=borrauno(a,fila,columna,indb(j));
[xx,yy,pob]=size(a);
end
end
genetico
%algoritmo genetico
% genero la poblacion inicial de 8 individuos (individuo es tablero con reinas
dispuestas)
clear all
clc
fcmax=22;
pobmax = 50; % es la poblacion maxima
pobini = 20; % es el numero de individuos en la pobalcion inicial
% pause
[ahij,fhij,chij] = combinex(a,fila,columna,ind);
% se eliminan individuos iguales
[ahij,fhij,chij]=eliminar(ahij,fhij,chij);
[q,w,nhijos]= size(ahij);
% nhijos
% pause
end
[amut,fmut,cmut]= mutar(a,fila,columna,indm,pmut);
[q,w,nmut]=size(amut);
disp('numero de individuos que han mutado')
nmut;
indc=[1 2 3]
[aclon,fclon,cclon]= clonar(a,fila,columna,indc);
nclones=3
% pause
% disp('filas y columnas de hijos')
% fhij
% chij
% disp('filas y columnas de mutantes')
% fmut
% cmut
if nhijos > 1 % si no hay hijos no se actualiza poblacion con hijos sino solo con
mutantes
for i=1:nhijos
a(:,:,i)=ahij(:,:,i);fila(i,:)=fhij(i,:);columna(i,:)=chij(i,:);
fc(i)=ataqt(ahij(:,:,i),fhij(i,:),chij(i,:)); % evaluo el funcional de costo
end
end
% mutantes
for i= 1:nmut
a(:,:,i+nhijos)=amut(:,:,i);fila(i+nhijos,:)=fmut(i,:);columna(i+nhijos,:)=cmut(i,:);
fc(i+nhijos)=ataqt(a(:,:,i+nhijos),fila(i+nhijos,:),columna(i+nhijos,:)); % evaluo
el funcional de costo
end
for i= 1:nclones
a(:,:,i+nhijos+nmut)=aclon(:,:,i);fila(i+nhijos+nmut,:)=fclon(i,:);columna(i+nhijos+nmut
,:)=cclon(i,:);
fc(i+nhijos+nmut)=ataqt(a(:,:,i+nhijos+nmut),fila(i+nhijos+nmut,:),columna(i+nhijos+nmut
,:)); % evaluo el funcional de costo
end
% ordenar por la funcion de costo
[a,fila,columna,fc]=ordenar(a,fila,columna,fc);
[xx,dim]=size(fc);
% recortar la poblacion al valor pobmax
if dim > pobmax
a=a(:,:,1:pobmax);fila =fila(1:pobmax,:);columna=columna(1:pobmax,:);fc=fc(:,1:pobmax);
end
% disp('funcion de costo luego de operar geneticamente')
fcmin = min(fc);
% pause
if fcmin==0
break
end
end