gusucode.com > GAVPai_Book_MathworksCntrlFileEx_May2019 > GAVPai_Book_MathworksCntrlFileEx_May2019/DE_Rand5Dir4_Operator.m
% Differential evolution Rand5/Dir4 Operator function mutated_popln = DE_Rand5Dir4_Operator(popln, f_val, F_val, popln_size, individual_length) % initialization differential_vec_indx(1:5) = 0; V_star(1,1:individual_length) = 0; V(1:4,1:individual_length) = 0; mutated_popln(1:popln_size, 1:individual_length) =0; for i = 1 : popln_size % prepare rand_indx, random number indices for each population % individual to enable it choose five random individuals from the % population, without repeating itself. rand_indx = randperm(popln_size); for t=1:popln_size if (rand_indx(t)==i) elimx = t; end end rand_indx(elimx)=[]; % select five random individuals from the population for u=1:5 differential_vec_indx(u) = rand_indx(u); end % Obtain V* the best individual with the maximal objective function and % represent the rest as V1, V2, V3 and V4 defined in equation (5.26) [~, max_obj_indx] = max( [f_val(differential_vec_indx(1)), f_val(differential_vec_indx(2)), f_val(differential_vec_indx(3)), f_val(differential_vec_indx(4)), f_val(differential_vec_indx(5))] ); j=1; for z=1:5 if (differential_vec_indx(z) == differential_vec_indx(max_obj_indx)) V_star(1,:) = popln(differential_vec_indx(z), :); else V(j,:) = popln(differential_vec_indx(z),:); j=j+1; end end % obtain trial vector for each of the parent vector individual mutated_popln(i,:) = V_star(1,:) + F_val/4 * ( 3*V_star(1,:) - V(1,:)-V(2,:)-V(3,:)-V(4,:)); end end