www.gusucode.com > GAVPai_Book_MathworksCntrlFileEx_May2019 > GAVPai_Book_MathworksCntrlFileEx_May2019/construct_newgen.m

    % Extracts the best individuals from the parent and offspring population
% using mu lambda strategy for the next generation
% The best fit individuals are selected based on the fitness function values, parentW_fitness  associated with the 
% parentW_popln and offsprngW_fitness associated with the offsprngW_popln. 
% The corresponding individuals from parentX_popln and  offsprngX_popln
% are conjoined as NextGenPool_X, to prepare for the next generation cycle


function [NextGenPool_X, NextGenPool_W, NextGenPool_fitness, NextGenPool_psi] = construct_newgen(parentX_popln, parentW_popln, parentW_fitness, parentW_psi,  offsprngX_popln, offsprngW_popln, offsprngW_fitness, offsprngW_psi)


[row_mat, col_mat] = size(parentX_popln);
[~, parentW_fitness_sort_index] = sort(parentW_fitness, 'descend');

[~, offsprngW_fitness_sort_index] = sort(offsprngW_fitness, 'descend');

%mu lambda strategy based construction of next generation
mu = round((1/3)* row_mat+1);
lamb = row_mat-mu;

select_parent_index = parentW_fitness_sort_index(1:mu);
select_offsprng_index = offsprngW_fitness_sort_index(1:lamb);

select_parents_X = parentX_popln(select_parent_index,:);
select_parents_W = parentW_popln(select_parent_index,:);
select_parents_psi = parentW_psi(select_parent_index);
select_parents_fitness= parentW_fitness(select_parent_index);

select_offsprng_X = offsprngX_popln(select_offsprng_index,:);
select_offsprng_W = offsprngW_popln(select_offsprng_index,:);
select_offpsrng_psi = offsprngW_psi(select_offsprng_index);
select_offsprng_fitness= offsprngW_fitness(select_offsprng_index);


NextGenPool_X = [ select_parents_X; select_offsprng_X];
NextGenPool_W = [select_parents_W ; select_offsprng_W];
NextGenPool_psi = [ select_parents_psi, select_offpsrng_psi ];
NextGenPool_fitness = [ select_parents_fitness; select_offsprng_fitness ]; 

end