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