Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.08 KB | None | 0 0
  1. % Piotr Partyka
  2.  
  3. f = @(x) -x + sin(5*x) - cos(13*x);
  4. % parametry wejsciowe
  5. m = 6;
  6. l = 5;
  7. lg = 10;
  8. Pc = 0.8;
  9. Pm = 0.01;
  10. a = -1;
  11. b = 1;
  12. b_a = b-a;
  13.  
  14. pop = randi([0 1], m, l);
  15. qual_func = evaluate(pop);
  16.  
  17. for k=1:lg
  18.     %   dekodowanie
  19.     Xd = bi2de(pop);
  20.     for k_l=1:m
  21.         Xr(k_l) = a + Xd(k_l) * b_a/(2^l-1);
  22.     end
  23.  
  24.     %   parent selection
  25.    
  26.    
  27.     %   crossing
  28.     pop_cross = pop_parent;
  29.     for k_l=1:2:m
  30.         if(rand() < Pc)
  31.             border = randi([1 l-1]);
  32.             pop_cross(k_l, 1:border) = pop_parent(k_l, 1:border);
  33.             pop_cross(k_l, border+1:end) = pop_parent(k_l+1, border+1:end);
  34.             pop_cross(k_l+1, 1:border) = pop_parent(k_l+1, 1:border);
  35.             pop_cross(k_l+1,border+1:end) = pop_parent(k_l, border+1:end);
  36.         end
  37.     end
  38.    
  39.     % mutation
  40.     mut_num = Pm * m * l;
  41.     pop_mut = pop_cross;
  42.     for k_l=1:mut_num
  43.         m_mut = randi(m);
  44.         l_mut = randi(l);
  45.         pop_mut(m_mut, l_mut) = ~pop_mut(m_mut, l_mut);
  46.     end
  47.    
  48.     pop = pop_mut;
  49.     qual_func = evaluate(pop);
  50. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement