Transcript Genetski_algoritam_i_problem_trgovaÄ kog_putnika
Genetski algoritam i problem trgovačkog putnika
Luka Križan Voditelj: Izv. prof. dr. sc. Domagoj Jakobović
Problem trgovačkog putnika
Definicija problema: pronaći najkraći hamiltonovski ciklus u težinskom grafu Za zadani skup gradova i zadane udaljenosti među njima potrebno je pronaći najkraći put kojim će se proći kroz sve gradove točno jednom i vratiti se u početni grad Faktorijelna složenost 2/28
Genetski algoritam
Osnovne ideje – evolucija i prirodna selekcija Jedinke najboljih sposobnosti preživljavaju i prenose svoje gene na iduću generaciju 3/28
Evolucija traži najbolje i najprilagođenije jedinke na uvjete u okolini Selekcija – proces izdvajanja najsposobnijih jedinki Križanje – rekombinacija gena prilikom reprodukcije Mutacija – slučajna promjena genetskog materijala → genetski operatori 4/28
Definicija genetskog algoritma
Proces koji imitira prirodne evolucijske procese i primjenjuje ga na populaciji jedinki Jedinka – potencijalno rješenje problema (npr. redoslijed gradova u problemu trgovačkog putnika) Svakom rješenju pridjeljuje se dobrota – mjera kvalitete rješenja Iz populacije se stvara nova populacija selekcijom – izdvajanjem najboljih rješenja 5/28
Prazna mjesta u novoj populaciji popune se novim jedinkama koje nastaju križanjem između preživjelih jedinki Ponavljanje postupka – jedinke/rješenja teže k optimalnom rješenju 6/28
Pseudokod genetskog algoritma
Genetski algoritam: t=0 generiraj pocetnu populaciju P(0) sve dok nije zadovoljen uvjet zavrsetka: t=t+1 selektiraj P’(t) iz P(t-1) krizaj jedinke iz P’(t) i djecu spremi u P(t) mutiraj jedinke iz P(t)
7/28
Prikaz rješenja
Kromosom prikazati strukturom podataka koja najbolje opisuje svojstva jedinke Traženje ekstrema funkcije f(x) – realni broj iz domene od f Problem trgovačkog putnika – cjelobrojno polje u kojem svaki broj označava redni broj grada u obilasku 8/28
Selekcija
Postupak odabira dobrih jedinki koje će sudjelovati u reprodukciji Svrha – čuvanje i prenošenje dobrih svojstava na iduću generaciju Odabir samo najboljih jedinki – prerana konvergencija Loše jedinke mogu sadržavati dobar genetski materijal – trebaju imati (manju) šansu za opstanak 9/28
Implementirana je eliminacijska turnirska selekcija Iz populacije se slučajno odabere k jedinki i izbaci se ona najlošija od njih Veličina turnira (k) obično je cijeli broj iz intervala [2,10] Prazno mjesto u populaciji popuni se križanjem između dvije slučajno odabrane jedinke 10/28
Genetski operatori
Križanje – sudjeluju dvije jedinke, nastaju jedna ili dvije nove jedinke Roditelji: Djeca: 1001|0110|1101 1101|1011|0110 1001| 1011 |1101 1101 |0110| 0110 11/28
Proizvoljan broj prekidnih točaka Uklanjanje duplikata 12/28
PMX
PMX – partially matched crossover Slično uniformnom križanju s dvije prekidne točke, ali prilagođeno problemu trgovačkog putnika 13/28
Roditelj1 = 1234 | 567 | 8 Roditelj2 = 1852 | 364 | 7 Uniformno križanje bi dalo neispravno rješenje 1234 | 364 | 8 PMX provodi zamjenu 3→5, 6→6, 4→7 Rješenje nakon križanja: 12 57 | 364 | 8 14/28
CX
CX - cycle crossover Križanje bez prekidnih točaka Dobiveno rješenje je uvijek valjano U slučaju velike sličnosti roditelja, dijete može završiti jednako kao jedan od roditelja 15/28
Roditelj1 = 12345678 Roditelj2 = 18523647 Dijete = 12XXXXXX Dijete = 12XXXXX8 Dijete = 12XXXX78 Dijete = 12X4XX78 Dijete = 12 5 4 36 78 16/28
GX
GX – greedy crossover Odabire se prvi grad iz jednog od roditelja i uspoređuje u koje se gradove dolazi iz tog grada u oba roditelja U nastavak obilaska dodaje se onaj grad do kojeg je put kraći Ako se jedan od gradova već nalazi u djetetu, odabire se onaj drugi Ako se oba grada nalaze u djetetu, slučajno se odabire jedan od gradova koji se još nije pojavio 17/28
Mutacija
Slučajna promjena jednog ili više gena Provodi se nad jednom jedinkom Prije mutacije: 01110101 Poslije mutacije: 1 1110101 18/28
Zašto koristiti mutaciju?
Smanjuje mogućnost zaustavljanja u lokalnom optimumu Obnova izgubljenog genetskog materijala Roditelj1: 1011011 0 Roditelj2: 0101101 0 19/28
Jednostavna mutacija
Mutacija prilagođena problemu trgovačkog putnika Slučajno se odaberu dva grada u obilasku i zamjeni se njihov redoslijed 12345678 12 3 456 7 8 12 7 456 3 8 20/28
2opt
Optimizacijska metoda razvijena za pojednostavljenje rješavanja problema trgovačkog putnika 21/28
Pseudokod 2opt zamjene
2optzamjena(rjesenje,i,k): rjesenje[0] do rjesenje[i-1] dodaju se istim redoslijedom u novo_rjesenje rjesenje[i] do rjesenje[k-1] dodaju se suprotnim redoslijedom u novo_rjesenje rjesenje[k] do kraja dodaju se istim redoslijedom u novo_rjesenje vrati novo_rjesenje
22/28
i=2, k=4, početno rješenje 1234567 →12 43 567 i=2,k=5 →12 543 67 i=2,k=6 →12 6543 7 i=3,k=5 →123 54 67 i=3,k=6 →123 654 7 23/28
Pseudokod programa
ucitaj parametre programa ucitaj tablicu udaljenosti iz tekstualne datoteke kreiraj nasumicno pocetnu populaciju za i=1 do broj_iteracija: nasumicno odaberi velicna_turnira jedinki od odabranih jedinki izbaci onu koja ima najdulji put obilaska nasumicno odaberi dvije jedinke iz cijele populacije ako su obje jedinke iste: nad jednom jedinkom provedi jednostavnu mutaciju kao rezultat krizanja nasumicno kreiraj novu jedinku inace: nad odabranim jedinkama provedi odabrano krizanje za j=0 do vjerojatnost_mutacije*velicina_populacije: nasumicno odaberi jedinku iz cijele populacije nad odabranom jedinkom provedi odabranu mutaciju sortiraj uzlazno populaciju prema duljini puta obilaska ispiši populaciju u tekstualnu datoteku
24/28
Rezultati izvođenja za problem gr17
Operatori Udio uspjesnih 0% Pros. broj iteracija Najbolje rješenje 2194 Prosječno rješenje 2407 Odstupanje 0,1544 pmx, j. mutacija pmx, 2opt 100% 107 pmx, kombinacija cx, j. mutacija cx, 2opt cx, kombinacija 100% 0% 100% 100% 196 311 316 2140 2379 0,1413 25/28
Operatori Broj uspješnih 28% Pros. broj iteracija 3209 Najbolje rješenje 2094 Prosječno rješenje Odstupanje 2101 7,99*10^-3 gx, j. mutacija gx, 2opt 100% 412 gx, kombinacija 100% 413 26/28
Zaključak
Najbolja kombinacija operatora: pmx i 2opt mutacija Brzo i uspješno rješavanje problema sa dvadesetak gradova Lošiji rezultati za probleme s više od 40 gradova 27/28
Hvala na pažnji :) 28/28