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

    % Tournament selection

function [next_gen_pool, next_gen_pool_objval,  psifun, G1_nextgen, G2_nextgen, next_gen_pool_fitness ] = EMNP_DE_selection(feas_parent, psip,  G1p, G2p,  feas_parent_objval, feas_parent_fit,  offsprng, psio, G1o, G2o,  offsprng_objval, offsprng_fit, popln_size) 
for i=1:popln_size
    if (psip(i) ==0) && (psio(i)==0)  % feasible solutions, selection based on  minimum of objective function values
        if (feas_parent_objval(i) >= offsprng_objval(i) )  
            next_gen_pool(i,:)= feas_parent(i,:);
            psifun(i)= psip(i);
            G1_nextgen(i)=G1p(i);
            G2_nextgen(i,:)=G2p(i,:);
            next_gen_pool_objval(i) = feas_parent_objval(i);
            next_gen_pool_fitness(i) = feas_parent_fit(i);
        else
            next_gen_pool(i,:)= offsprng (i,:);
            psifun(i)=psio(i);
            G1_nextgen(i)=G1o(i);
            G2_nextgen(i,:)=G2o(i,:);
            next_gen_pool_objval(i) = offsprng_objval(i);
            next_gen_pool_fitness(i) = offsprng_fit(i);
        end
        
    else 
        if (psip(i) ~=0) && (psio(i)~=0)  % infeasible solutions, selection based on  minimum  of penalty function  values
                if (psip(i) <= psio(i) )
                    next_gen_pool(i,:)= feas_parent(i,:);
                    psifun(i)= psip(i);
                    G1_nextgen(i)=G1p(i);
                    G2_nextgen(i,:)=G2p(i,:);
                    next_gen_pool_objval(i) = feas_parent_objval(i);
                    next_gen_pool_fitness(i) = feas_parent_fit(i);
                else
                    next_gen_pool(i,:)= offsprng (i,:);
                    psifun(i)=psio(i);
                    G1_nextgen(i)=G1o(i);
                    G2_nextgen(i,:)=G2o(i,:);
                    next_gen_pool_objval(i) = offsprng_objval(i);
                    next_gen_pool_fitness(i) = offsprng_fit(i);
               end
        else 
                if (psip(i) ~=0) && (psio(i)==0)
                    next_gen_pool(i,:)= offsprng (i,:);
                    psifun(i)=psio(i);
                    G1_nextgen(i)=G1o(i);
                    G2_nextgen(i,:)=G2o(i,:);
                    next_gen_pool_objval(i) = offsprng_objval(i);
                    next_gen_pool_fitness(i) = offsprng_fit(i);
                else
                    next_gen_pool(i,:)= feas_parent(i,:);
                    psifun(i)= psip(i);
                    G1_nextgen(i)=G1p(i);
                    G2_nextgen(i,:)=G2p(i,:);
                    next_gen_pool_objval(i) = feas_parent_objval(i);
                    next_gen_pool_fitness(i) = feas_parent_fit(i);
                end
        end
            
    end
end
end