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

    %Differential evolution: mutation operator
function trialvec_popln = DE_mutation(individual_popln, beta_val, popln_size)

 for i = 1 : popln_size
     
     % select target vector and two difference vectors randomly
     rand_indx = randperm(popln_size);
     for t=1:popln_size
         if (rand_indx(t)==i)
             elimx = t;
         end
     end
     rand_indx(elimx)=[];
     trial_vector_indx = rand_indx(1);
     diffl_vec1_indx = rand_indx(2);
     diffl_vec2_indx= rand_indx(3);
     % obtain trial vectors for each of the parent vectors
     trialvec_popln(i,:) = individual_popln(trial_vector_indx,:) + beta_val*(individual_popln(diffl_vec1_indx,:)-individual_popln(diffl_vec2_indx,:));
 end
end