Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % Piotr Partyka
- f = @(x) -x + sin(5*x) - cos(13*x);
- % parametry wejsciowe
- m = 6;
- l = 5;
- lg = 10;
- Pc = 0.8;
- Pm = 0.01;
- a = -1;
- b = 1;
- b_a = b-a;
- pop = randi([0 1], m, l);
- qual_func = evaluate(pop);
- for k=1:lg
- % dekodowanie
- Xd = bi2de(pop);
- for k_l=1:m
- Xr(k_l) = a + Xd(k_l) * b_a/(2^l-1);
- end
- % parent selection
- % crossing
- pop_cross = pop_parent;
- for k_l=1:2:m
- if(rand() < Pc)
- border = randi([1 l-1]);
- pop_cross(k_l, 1:border) = pop_parent(k_l, 1:border);
- pop_cross(k_l, border+1:end) = pop_parent(k_l+1, border+1:end);
- pop_cross(k_l+1, 1:border) = pop_parent(k_l+1, 1:border);
- pop_cross(k_l+1,border+1:end) = pop_parent(k_l, border+1:end);
- end
- end
- % mutation
- mut_num = Pm * m * l;
- pop_mut = pop_cross;
- for k_l=1:mut_num
- m_mut = randi(m);
- l_mut = randi(l);
- pop_mut(m_mut, l_mut) = ~pop_mut(m_mut, l_mut);
- end
- pop = pop_mut;
- qual_func = evaluate(pop);
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement