Está en la página 1de 3

NICHO.

Este programa calcula el minimo en perdidas por el mtodo nicho sin restricciones este es el cdigo principal
[poblacion]=poblalternat(np,x,kvar); for n=1:150 [fitnes]=fitnesI(poblacion,x,np,S,Z,A); [hijox,fitnesx]=cruzenicho(x,fitnes,np,S,Z,A); [mutados]=mutanicho(x,hijox,np); [aptos]=deterministico(x,mutados,np,S,Z,A,fitnesx); poblacion=aptos

end [fitnes]=fitnesI(poblacion,x,np,S,Z,A)

agI.- este calcula el capacitor optimo en un solo nodo

[poblacion]=poblainicialI(np,A,S); for m=1:50 [fitnes]=fitnesI(poblacion,x,np,S,Z,A); [seleccionados]=seleccionI(fitnes,np,x); [mutados]=cruzymutaI(seleccionados,np,x,S,Z,A); poblacion=mutados; end

gaend.- este es el original por el mtodo ag clacico fue el primero que hice
poblain=poblainicial(x,np,kvar,S,Z,A) % seleccion por metodo de torneo x1=0; for n=1:100 %%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%Penalizacion%%%%%%%%%%%%% % fitns=poblain(1:np,1:x).*poblain(1:np,x+1:2*x); % [decod,tensio]=fitness(S,Z,A,fitns,kvar,np,x); % tensiom=[tensio]; % muertos=penalizacion(tensiom,x,np); % if muertos==0 % poblain=[poblain] % else % for r=1:length(muertos) % poblain(muertos(r),1:x)=ones(1,x)*0; % end % poblain=[poblain]

% end %%%%%%%%%%%%%%%%%%%%%end%%%%%%%%%%%%% padres=seleccionados(x,np,kvar,S,Z,A,poblain); % reprodccion o cruze en dos puntos h=cruze(x,np,kvar,S,Z,A,padres); % mutacion de los alelos

pmuta=rand(np,1); for m=1:np if pmuta(m)<0.01

% provabilidad de mutacion

mutalelo=randi([1,x],1); cromo=h(m,1:2*x); cromo(mutalelo)=not(cromo(mutalelo)); hijos(m,1:2*x)=cromo; else hijos(m,1:2*x)=h(m,1:2*x); end end hijos=[hijos]; % hasta aqui los valores ya cruzados y mutados fitns=hijos(1:np,1:x).*hijos(1:np,x+1:2*x); ft=fitness(S,Z,A,fitns,kvar,np,x); poblain=[hijos ft] %%%%%%%%%%%%%%%% ordev=sort(poblain(:,end)); jijoju(n)=ordev(1);

% para graficar la evolvucion x1=x1+1; generaciones(n)=x1; ftss(n)=sum(ft(:,end))/np; end jijoju=[jijoju] plot(generaciones,ftss) axis([0,100,0,0.2])

aqu el algoritmo con las restricciones de la rension

nichorestringido.
[poblacionx]=poblarestric(np,x,kvar,A,S,Z); poblacion=poblacionx; for n=1:100 [fitnes]=fitnesI(poblacion,x,np,S,Z,A); [hijox,fitnesx]=cruzenicho(x,fitnes,np,S,Z,A); [mutados]=mutanicho(x,hijox,np); [aptos]=determirestric(x,mutados,np,S,Z,A,fitnesx) poblacion=aptos

end [fitnes]=fitnesI(poblacion,x,np,S,Z,A)

También podría gustarte