Krzyżowanie metodą PMX i mutacje

[b]Wprowadzenie:[/b] Jednym z wielu operatorów krzyżowania algorytmów genetycznych jest operator krzyżowania PMX. Moim zdaniem jest to najprostszy operator. Poniżej w prostych słowach przedstawię sposób przeprowadzenia krzyżowania operatorem PMX na dwóch przykładowych rodzicach. [b]PMX[/b] Punkt „cięcia” genotypów „rodziców”: po 3cim i 6tym genie Przykładowi „rodzice”: Os1 = {3,5,1,2,4,6,8,9,7} 0s2 = {9,5,6,8,7,4,1,3,2} 1.Dokonujemy „cięcia”: Os1 = {3,5,1,|2,4,6,|8,9,7} 0s2 = {9,5,6,|8,7,4,|1,3,2} 2.Zamieniamy miejscami środki rodziców… (2<->8, 4<->7 i 6<->4) Os1 = {3,5,1,|8,7,4,|8,9,7} 0s2 = {9,5,6,|2,4,6,|1,3,2}

[b]Wprowadzenie:[/b]

Jednym z wielu operatorów krzyżowania algorytmów genetycznych jest operator krzyżowania PMX. Moim zdaniem jest to najprostszy operator. Poniżej w prostych słowach przedstawię sposób przeprowadzenia krzyżowania operatorem PMX na dwóch przykładowych rodzicach.

[b]PMX[/b]

Punkt „cięcia” genotypów „rodziców”: po 3cim i 6tym genie Przykładowi „rodzice”:

Os1 = {3,5,1,2,4,6,8,9,7} 0s2 = {9,5,6,8,7,4,1,3,2}

1.Dokonujemy „cięcia”: Os1 = {3,5,1,|2,4,6,|8,9,7} 0s2 = {9,5,6,|8,7,4,|1,3,2}

2.Zamieniamy miejscami środki rodziców… (2<->8, 4<->7 i 6<->4)

Os1 = {3,5,1,|8,7,4,|8,9,7} 0s2 = {9,5,6,|2,4,6,|1,3,2}

…i wywalamy geny „zewnętrzne” równe tym w środku

Os1 = {3,5,1,|8,7,4,|X,9,X} 0s2 = {9,5,X,|2,4,6,|1,3,X}

(genami, które powtarzają się w środku i na zewnątrz są 8,7,2,6. Zamiast nich tymczasowo wstawiłem X. (geny w środku nie są zmieniane).)

3.Miejsca oznaczone X zmieniamy za pomocą reguł, jakimi zamienialiśmy środki: (jeśli X było 6, to teraz będzie 4. Patrz pkt2):

Os1 = {3,5,1,|8,7,4,|2,9,4} 0s2 = {9,5,4,|2,4,6,|1,3,8}

4.Otrzymujemy potomków:

Pt1 = {3,5,1,8,7,4,2,9,4} Pt2 = {9,5,4,2,4,6,1,3,8}

[b]Mutacje:[/b]

Mutacje wprowadzają do genotypu losowe zmiany. Ich zadaniem jest wprowadzanie różnorodności w populacji, czyli zapobieganie (przynajmniej częściowe) przedwczesnej zbieżności algorytmu. Poniżej przedstawiam dwie metody mutacji genotypów:

[b]1.Mutacja 2-punktowa[/b] Przeprowadzamy linie cięcia i przepisujemy środek od tyłu np.:

Os1 = {1,2,3,4,5,6}

Linie cięcia po 2-gim i 5-tym genie

Os1 = {1,2,|3,4,5,|6}

I dokonujemy mutacji:

Os1’ = {1,2,5,4,3,6}

[b]2.Mutacja wymierna:[/b]

Elementy przed liniami cięcia zamieniamy miejscami:

Os1 = {1,2,|3,4,5,|6}

Os1’ = {1,5,3,4,2,6}