Contents

clear all
close all
clc

Paso 1 inicialización

Ng=50;
Np=10;
Ne=0;
pc=0.9;
pm=0.1;
L=[20 20];
v_min=[-1 -1];
v_max=[1 1];
Aop=zeros(Ng,1);

Paso 2 generación de la pobración inicial

p_real=f_pobini(Np,v_min,v_max);

Paso 3 codificacion de la pobración inicial

p_bin=f_codifica(p_real,L,v_min,v_max);

Paso 4 Evaluacion de la p_inicial

adap=f_evaluacion(p_real);

Ordenación de la población inicial

[p_real,p_bin,adap]=f_ordenacion(p_real,p_bin,adap);
%dibujo
figure,fsurf(@rastringin,[-1 1 -1 1]);
view(0,90);xlabel('x'),ylabel('y');
title('Generacion 1');
hold on;
h=plot3(p_real(:,1),p_real(:,2),41*ones(length(p_real(:,1))),'ro','linewidth',4);
drawnow;
%YA TENEMOS LA POBLACIÓN INICIAL ORDENADA

%%bucle para el resto de generaciones

for ng=2:Ng %50 GENERACIONES
    %generacion de la nueva generacion codificada
    p_bin_nueva=f_pobnueva(p_bin,Ne);

    %bucle secundario para el resto de individuos
    for ni=1:(Np-Ne)/2
        %Seleccion de los progenitores
        [padre,madre]=f_seleccion(p_bin,'torneo');
        %cruce
        [hijo,hija]=f_cruce(padre,madre,pc);
        %mutacion
        [hijo_mutado,hija_mutada]=f_mutacion(hijo,hija,pm);
        %inserción de los descendientes
        p_bin_nueva=f_insercion(hijo_mutado,hija_mutada,p_bin_nueva)
    end

    %descodificación de la nueva población codificada
    p_real_nueva=f_descodifica(p_bin_nueva,L,v_min,v_max)

    %evaluacion nueva poblacion
    adap=f_evaluacion(p_real_nueva);

    %ordenamos nueva poblacion y sustituimos poblaciones
    [p_real,p_bin,adap]=f_ordenacion(p_real_nueva,p_bin_nueva,adap);
    Aop(ng)=adap(1);

    %dibujo
    set(h,'xdata',p_real(:,1));
    set(h,'ydata',p_real(:,2));
    title(['Generacion=',num2str(ng)]);
    drawnow;pause(0.1);
end

%RESUTADOS
ind_optimo=p_real(1,:);
adap_optimo=Aop(end);
minimo=rastringin(ind_optimo(1),ind_optimo(2))
figure;
plot(1:Ng,Aop);
xlabel
p_bin_nueva =

  2×40 char array

    '1111011100000010110111110101101111110010'
    '1010000111100010010011001100110000010011'


p_bin_nueva =

  4×40 char array

    '1111011100000010110111110101101111110010'
    '1010000111100010010011001100110000010011'
    '1111011100000010110111110101101000010011'
    '1110100111010010111101111100010000011000'


p_bin_nueva =

  6×40 char array

    '1111011100000010110111110101101111110010'
    '1010000111100010010011001100110000010011'
    '1111011100000010110111110101101000010011'
    '1110100111010010111101111100010000011000'
    '1110011111100001111011111000011000010011'
    '1111011100000010110111110101101110001011'


p_bin_nueva =

  8×40 char array

    '1111011100000010110111110101101111110010'
    '1010000111100010010011001100110000010011'
    '1111011100000010110111110101101000010011'
    '1110100111010010111101111100010000011000'
    '1110011111100001111011111000011000010011'
    '1111011100000010110111110101101110001011'
    '0010000010001111000111001010110011100000'
    '1111010100010010001111110101000010001101'


p_bin_nueva =

  10×40 char array

    '1111011100000010110111110101101111110010'
    '1010000111100010010011001100110000010011'
    '1111011100000010110111110101101000010011'
    '1110100111010010111101111100010000011000'
    '1110011111100001111011111000011000010011'
    '1111011100000010110111110101101110001011'
    '0010000010001111000111001010110011100000'
    '1111010100010010001111110101000010001101'
    '1110100111010010111101110101000010001101'
    '0010000010000010001111111100010000011000'


l =

     1


p_real_nueva =

    0.9298    0.9199
    0.2647    0.5996
    0.9298    0.9190
    0.8268   -0.0293
    0.8116    0.9405
    0.9298    0.9197
   -0.7456    0.5844
    0.9146    0.9143
    0.8268   -0.0857
   -0.7460    0.9708


p_bin_nueva =

  2×40 char array

    '1111011100000010110111110101101000010011'
    '1110011111100001111011111000011000010011'


p_bin_nueva =

  4×40 char array

    '1111011100000010110111110101101000010011'
    '1110011111100001111011111000011000010011'
    '1111011100000010110111110101101000010011'
    '1111011100000010110111110101101110001011'


p_bin_nueva =

  6×40 char array

    '1111011100000010110111110101101000010011'
    '1110011111100001111011111000011000010011'
    '1111011100000010110111110101101000010011'
    '1111011100000010110111110101101110001011'
    '1111011100000010110111110101101110011000'
    '1110100111010010111101111100010000001011'

Error using vertcat
Dimensions of arrays being concatenated are not consistent.

Error in f_insercion (line 2)
poblacion_insertada=[poblacion ; hijo_mutado ; hija_mutada];

Error in A_GENETICO (line 51)
        p_bin_nueva=f_insercion(hijo_mutado,hija_mutada,p_bin_nueva)