OPTIMIZACIJA PROMETNIH PROCESA (nastavni tekst) izv. prof. dr. sc. Tonči Carić Fakultet prometnih znanosti Sveučilište u Zagrebu 2014. 1 OSNOVNI POJMOVI U TEORIJI GRAFOVA 4 1 4 UVOD 1.1 Definicija grafa 1.1.1 Usmjereni i neusmjereni grafovi 1.1.2 Stupanj vrha u grafu 5 5 7 1.2 9 Specijalni grafovi OPTIMIZACIJE NA GRAFU 11 2 11 GIBANJE PO GRAFU 2.1 Težinski grafovi i njihov matrični prikaz 11 2.2 Definicija šetnje, staze, puta i ciklusa 13 2.3 Eulerovi i Hamiltonovi grafovi 14 2.4 Problem kineskog poštara 2.4.1 Definicija problema kineskog poštara 2.4.2 Eulerova tura i problem kineskog poštara 2.4.3 Rješavanja problema kineskog poštara dodavanjem umjetnih bridova 2.4.4 Mogući načini dodavanja umjetnih bridova 2.4.5 Algoritam rješavanja problema kineskog poštara 2.4.6 Hierholzerov algoritam pronalska Eulerove ture 16 16 16 18 19 20 22 2.5 Razapinjuće stablo 2.5.1 Kruskalov algoritam 2.5.2 Primov algoritam 23 24 24 2.6 25 Problem trgovačkog putnika 2.7 Metode rješavanja problema trgovačkog putnika 2.7.1 Heuristika najbližeg susjeda 2.7.2 Umetajuće heuristike 27 27 28 2.8 Egzaktne metode 29 2.9 Aproksimacijske metode 29 2.10 Heurističke metode 30 2.11 Metaheurističke metode 2.11.1 Simulirano kaljenje 2.11.2 Genetski algoritmi 2.11.3 Optimizacija kolonijom mrava 2.11.4 Optimizacija rojem čestica 30 31 31 31 31 2 2.12 Iterativna lokalna pretraga 2.12.1 Operatori poboljšanja kod lokalne pretrage 2.12.2 Bijeg iz lokalnog optimuma 32 33 34 LOKACIJSKO ALOKACIJSKI PROBLEM 36 3 36 ODREĐIVANJA LOKACIJE OBJEKATA UNUTAR PROMETNE MREŽE 3.1 Povijesni razvoj 36 3.2 Weberov problem 38 PROBLEM PAKIRANJA U POSUDE 40 4 40 UVOD 4.1 Definicija problema 40 4.2 Jednodimenzionalni problem pakiranja u posude 41 4.3 Problem dvodimenzionalnog pakiranja u posude 4.3.1 Heuristički pohlepni jednofazni algoritmi 4.3.2 Strategije popunjavanja polica 4.3.3 Jedno-fazni algoritmi za rješavanje problema dvodimenzionalnog pakiranja u posude 4.3.4 Dvofazni algoritmi za rješavanje problema 2D pakiranja u posude 41 41 42 43 45 PROBLEM RASPOREĐIVANJA 49 5 49 UVOD 5.1 Matematička interpretacija problema 5.1.1 Problem raspoređivanja poslova na identične strojeve 5.1.2 Raspoređivanje poslova na tekućoj vrpci 5.1.3 Problem raspoređivanja (notacija) 5.1.4 Linerani program za (Pm|prmp|Cmax) 3 49 50 51 51 53 Osnovni pojmovi u teoriji grafova 1 UVOD Za prikazivanje pojedinih geografskih lokacija i veza među lokacijama često se koriste točke i poveznice među njima. Dvije točke i linija koja povezuje te točke mogu na primjer predstavljati direktnu zračnu liniju između dva grada. Upotrebna vrijednost strukture gdje točka predstavlja neku geografsku lokaciju, a linija na primjer put od jedne do druge geografske lokacije dobra je motivacija za uvođenje matematičke strukture koju nazivamo graf. Prvi rad u kojem se koristi „graf“ za prikaz odnosa geografskih lokacija i njihovih poveznica objavio je 1741. švicarski matematičar Leonhard Euler (1707.–1783.) u časopisu Commentarii academiae scientiarum Petropolitanae, u kojem je formulirao i riješio problem Sedam Königsberških mostova. Problem koji je rješavao Leonhard Euler je interesantan zbog pristupa u kojem je za rješenje problema bitna samo enumeracija objekata problema i njihova međusobna povezanost, a ne stvarne topološke dimenzije postavljenog problema. Problem Sedam Königsberških mostova je nastao kada su stanovnici Kaliningrada (tadašnjeg Königsberga) pokušavali pronaći način da prijeđu svih sedam mostova tako da svaki most prijeđu točno jedanput i da se vrate u polaznu točku, ali bezuspješno. Sami mostovi su izgrađeni s obje strane rijeke Pregel i na dva riječna otoka (slika1.1 Problem Sedam Königsberških mostova ). Sedam mostova povezuje obje strane rijeke i otoke. Euler je dokazao da na željeni način nije moguće obići svih sedam mostova. 1.1 Problem Sedam Königsberških mostova Euler je problem pojednostavnio tako da je kopna i otoke zamijenio je točkama A, B, C, D i povezao ih linijama koje u stvarnosti predstavljaju mostove. Na taj način dobio je strukturu koju danas nazivamo graf, 1.2. 4 1.2 Graf naglašava odnose povezanost objekata u prostoru 1.1 Definicija grafa Pojam grafa je vrlo općenit. Osnovna karakteristika grafa je da se sastoji od dva skupa. Svaki graf definiran je skupovima V i E. Skup V (engl. Vertex) predstavlja vrhove grafa. Skup E (engl. Edge) predstavlja bridove grafa. Graf G definiran je skupovima V i E. Skupovi V i E imaju konačan broj elemenata. DEFINICIJA 1.1 Graf je uređena trojka G=(V,E,φ), gdje je V=V(G) neprazan skup čije elemente nazivamo vrhovima, E=E(G) je skup disjunktan s V, čije elemente nazivamo bridovima, a φ je funkcija koja svakom bridu e iz E pridružuje par {u,v}, ne nužno različitih vrhova iz V. Graf skraćeno označavamo G=(V,E) ili samo G. , 1.1 Graf G (1.1) , sastoji se od skupa vrhova V i skupa parova vrhova koje nazivamo bridovi. Ako su u i v dva vrha, tada par {u,v} predstavlja brid e. Kažemo da e povezuje vrhove u i v ili da je e brid između vrhova u i v. Kažemo da su vrhovi u i v incidentni bridu e i da je brid e incidentan i vrhu u i vrhu v. Ako se vrhovi u i v u paru {u,v} ne razlikuje, tada takav brid nazivamo petlja. Za par vrhova u i v kažemo da su susjedni ako postoji brid e kojih ih povezuje. Dva brida ili više bridova koji povezuju iste vrhove zovu se višestruki bridovi. 1.1.1 Usmjereni i neusmjereni grafovi Bridovi grafa mogu biti usmjereni ili ne. Ako su svi bridovi u grafu usmjereni, tada takav graf zovemo usmjereni graf, u suprotnom, zovemo ga neusmjereni. U grafu, za koji inicijalno pretpostavljamo da je neusmjeren, brid od vrha u do vrha v identificira se s bridom od vrha v do vrha u. U digrafu (skraćeno za usmjereni graf), ta dva smjera smatraju se različitim bridovima. DEFINICIJA 1.2 Usmjereni graf (digraf) je uređena trojka G=(V,E,φ), gdje je V=V(G) neprazan skup čije elemente nazivamo vrhovima, E=E(G) je skup usmjerenih bridova, a funkcija φ je funkcija incidencije, koja svakom bridu e iz E pridružuje uređeni par (u,v), ne nužno različitih vrhova iz V, koje brid e spaja. Vrh u je početni, a v krajnji vrh od e. 5 Jednostavni graf je graf koji ne sadrži petlje ni višestruke bridove. Multigraf je graf koji „dozvoljava“ višestruke bridove, ali „ne dozvoljava“ petlje. Pseudograf je (multi)graf koji „dozvoljava“ višestruke petlje. Odnosi između jednostavnih grafova, multigrafova i pseudografova prikazani su na slici 1.3. 1.3 Vrste grafova ovisno o tome da li dozvoljavaju petlje i višestruke bridove Primjer 1.1 Na slici 1.5 prikazan je usmjereni, a na slici 1.4 neusmjereni graf s jednakim skupom vrhova V, ali različitim skupom E. Slika 1.4 1.5 Primjer usmjerenog i neusmjernog grafa 6 Primjer 1.2 Na slici 1.6 prikazan je jedan multigraf u kojem postoje višestruki bridovi, a na slici pseudograf koji osim višestrukih bridova ima i jednu petlju. 1.6 Primjer grafa koji je multigraf 1.7 Primjer grafa koji je pseudograf 1.1.2 Stupanj vrha u grafu Stupanj vrha u grafu predstavlja broj bridova koji su incidentni s vrhom čiji stupanj mjerimo kao što je prikazano na slici 1.8. Slikovito stupanj vrha možemo odrediti tako da oko svakog vrha opišemo kružnicu malog radijusa, broj presijecanja takve kružnice s bridovima predstavlja stupanj vrha. 1.8 Broj presijecanja kružnice s bridovima predstavlja stupanj vrha 7 U računanju stupnja vrha koji ima petlju, petlja doprinosi povećanju stupnja vrha za dva. DEFINICIJA 1.3 Stupanj vrha (ili valencija vrha) grafa G je broj dG(v) bridova u G incidentnih sa v. Za jednostavne grafove G stupanj vrha je jednak broju susjednih vrhova v∈V(G) i često se definira kao kardinalni broj skupa NG(v), pri čemu je NG(v) skup svih susjeda od v. Ako je dG(v) jednak 0 onda kažemo da je vrh v izolirani vrh grafa G. Čest je slučaj da umjesto izraza V(G) koristimo samo V, a umjesto dG(v) samo d(v). TEOREM 1.1 Za svaki graf vrijedi: = 2|| ௩∈ DOKAZ: Stupanj svakog vrha definira se kao broj bridova incidentnih tom vrhu. Kako svaki brid ima dva kraja, broj stupnjeva u grafu mora biti jednak dvostrukom broju bridova. TEOREM 1.2 U svakom je grafu broj vrhova neparnog stupnja paran broj. DOKAZ: Prema teoremu TEOREM 1.1 suma svih stupnjeva u grafu je paran broj. Neka su V1 i V2 redom skupovi vrhova neparnog i parnog stupnja u zadanom grafu i neka vrijedi V1 U V2 = V. Tada je: + = = 2|| ௩∈భ ௩∈మ ௩∈ Kako je broj ∑௩∈మ paran, slijedi da i ∑௩∈భ mora biti paran broj pa je |ଵ | paran broj. TeoremTEOREM 1.2 često se zove i lema rukovanja (engl. hadshaking lemma) jer je dokaz jednostavno prikazati situacijom u kojoj se neparni broj ljudi međusobni uvijek rukuje paran broj puta. 8 1.9 Lema rukovanja 1.2 Specijalni grafovi Prazan graf je graf u kojem nema bridova, 1.10. 1.10 Prazan graf Put sa n vrhova Pn je jednostavni graf definiran sa skupom vrhova V(Pn)={v1,v2,…,vn} i skupom bridova E(Pn)={ {vi,vi+1} : i=1,…,n-1 }, 1.11 1.11 Graf put Ciklus s n vrhova Cn je jednostavni graf definiran s vrhovima V(Cn)={v1,v2,…,vn} i skupom bridova E(Cn)={ { v1,v2}, { v2,v3}, … , {vn-1,vn}, {vn,v1}}, 1.12 9 1.12 Graf ciklus Potpuni graf je jednostavan graf u kojem je svaki par vrhova spojen bridom. Oznaka za potpuni graf s n vrhova je Kn , 1.13. 1.13 Potpuni graf Primjer 1.3 Neka je G=(V,E) potpuni graf. Skup V sastoji se od vrhova {0,1,2,3}. Skup bridova potpunog grafa može se predstaviti u općem slučaju: E={(i,j): i,j ∈ V, i<j)} ili u ovom primjeru: E= { {0,1}, {0,2}, {1,2}, {0,3}, {1,3}, {2,3} }, 1.14. 1.14 Potpuni graf 10 Optimizacije na grafu 2 Gibanje po grafu Jednostavnost strukture grafa omogućava da praktične probleme u prometu i transportu možemo preslikati u probleme gdje je stvarni svijet prometnica apstrahiran u grafove, a na grafovima možemo primijeniti poznate dokazane teoretske spoznaje i algoritme. U zračnom prometu simetrični težinski graf dobro oslikava kvantitativne odnose parametra putovanja kao što su vrijeme putovanja, udaljenosti ili cijene transporta između zračnih luka. Iste te parametre kao što su udaljenost, vrijeme i cijena transporta u cestovnom prijevozu u visoko urbaniziranim područjima velikih gradova ne možemo pohraniti u simetrične matrice koje opisuju simetrični graf. Za prikaz jednosmjernih ulica i kompleksne prometne regulacije simetrični graf nije dobro rješenje. Visoki nivo asimetrije udaljenosti između točke A i točke B, gdje je u jednom smjeru udaljenost manja nego u drugom rješava se na način da težinske grafove opišemo asimetričnim matricama i pripadajućim grafovima. Neovisno o tome da li je graf simetričan ili ne, struktura grafa još uvijek je najbolja podloga za prikaz prostornih odnosa na kojem se odvija prijevoz robe ili transport putnika. 2.1 Težinski grafovi i njihov matrični prikaz Neka zrakoplovni prijevoznik povezuje šest gradova C1, C2, C3, C4, C5 i C6, Slika 2.1. Cijena prijevoza od grada Ci to Cj dana je kao član (i,j) matice (2.1) . Na primjer cijena karte od C1 do C2 iznosi 250, ali od C1 do C6 iznosi ∞. Takve cijene su vidljive u matrici (2.1) gdje je član matrice (1,2) jednak 250, a član matrice (1,6) ima iznos ∞. S obzirom da je udaljenost od C1 do C2 jednaka udaljenosti od C2 do C1 i članovi matrice (1,2) i (2,1) imaju jednaku vrijednost, kao i članovi (1,6) i (6,1). Matrica (2.1) je simetrična matrica. Slika 2.1 11 DEFINICIJA 2.1 0 250 200 ∞ 180 ∞ 250 0 ∞ 300 250 ∞ 0 350 300 ∞ 200 ∞ 0 ∞ ∞ ∞ 300 350 180 250 300 ∞ 0 180 ∞ ∞ ∞ ∞ 180 0 2.1 Težinski graf je uređeni par (G, ω), gdje je G graf i ω: E(G)→ funkcija koja svakom bridu e iz G pridružuje nenegativni broj ω(e). Vrijednost ω(e) nazivamo težinom brida e. Za matrični prikaz grafova najčešće se koristi matrica susjedstva (težinska matrica) nalik matrici (2.1). Za prikaz grafova, koji nemaju težine može se koristiti matrica incidencije koja se tvori tako da su u redcima vrhovi, a u stupcima bridovi. Ako je vrijednost elementa matrice 1, tada je taj vrh incidentan (povezan) s tim bridom, ako incidencija vrha i brida ne postoji, vrijednost elemenata matrice je 0 tj. G=(V,E) preslikavanje A:V x E -> {0,1} Ova vrsta prikaza je rjeđe u upotrebi. U slučaju da udaljenosti između dvije prostorne lokacije nisu jednake, već ovise o smjeru kao na slici 2.2, nužno je ovakve odnose prikazati asimetričnim usmjerenim grafom. Prostorno prometni odnosi ove dvije lokacije opisuju se asimetričnim usmjerenim grafom i asimetričnom matricom Slika 2.3. 2.2 Primjer kada udaljenosti između dvije lokacije ovise o smjeru 12 0 2200 3200 0 Slika 2.3 2.2 Definicija šetnje, staze, puta i ciklusa Često je na grafu potrebno pronaći najkraći put između dva vrha. Ovisno o karakteristikama grafa, moguće je da traženi put niti ne postoji. Da bi mogli prikazati gibanje po grafu definiramo općeniti pojam šetnje (engl. walk). Šetnja između vrhova grafa v i q je konačni niz vrhova i bridova koji alterniraju npr. ( v=v0, e1, v1, e2, v2, e3, … , en, vn=q ) i možemo je zapisati i na kraći način kao v0e1v1e2v2e3 …envn. Šetnja je zatvorena ako je v = q. Broj bridova u šetnji predstavlja dužinu šetnje. DEFINICIJA 2.2 Šetnja u grafu G je konačan niz W = v0e1v1e2v2 . . . gdje se izmjenjuju vrhovi v i bridovi e, na način da su krajevi od ei vrhovi vi-1 i vi, za svaki i, 1 ≤ i ≤ k. DEFINICIJA 2.3 Ako su svi bridovi u šetnji W međusobno različiti, onda se W zove staza. DEFINICIJA 2.4 Ako se šetnja W sastoji od međusobno različitih bridova i vrhova, onda se W zove put. DEFINICIJA 2.5 Šetnja u kojoj su svi bridovi i vrhovi osim početnog i krajnjeg različiti zove se ciklus. Primjer 2.1 Slika 2.4 13 Za šetnju W kažemo da je (v0, vk) šetnja ili šetnja od početnog vrha v0 do krajnjeg vrha vk. Sam indeks k, predstavlja duljinu šetnja. Na slici Slika 2.4 prikazani su osim šetnje, primjer staze (engl. trail), primjer puta (engl. path) i primjer ciklusa. 2.3 Eulerovi i Hamiltonovi grafovi Kako je i opisano u prethodnom poglavlju, problem sedam Königsberških mostova je nastao kada su stanovnici Kaliningrada (tadašnjeg Königsberga) pokušavali pronaći način da prijeđu svih sedam mostova tako da svaki most prijeđu točno jedanput i da se vrate u polaznu točku, ali bezuspješno. Sedam mostova povezuje obje strane rijeke i otoke. Ako upotrebimo do sada definirane pojmove, ovaj problem možemo postaviti i na ovaj način: „Postoji li u zadanom multigrafu staza koja sadrži sve njegove bridove?“, Slika 2.5. Slika 2.5 Euler je svoje zaključke prezentirao na Akademiji znanosti u St. Petersburg 1735. godine. Formirao je tri glavna zaključka: Ako je bilo koje kopno (obala ili otok) povezano s nekim drugim kopnom neparnim brojem mostova, tada kružno putovanje koje prelazi svaki most točno jedanput nije moguće. Da bi završio kružno putovanje oko obala prelazeći svaki most točno jedanput, za svaki ulazni most mora postojati jedan izlazni. Ako je broj mostova neparan za točno dva kopna, tada je putovanje koje prelazi svaki most točno jedanput moguće samo ako putovanje počinje u jednom, a završava u drugom kopnu. Ako nema kopna povezanog s neparnim brojem mostova putovanje može početi iz bilo kojeg kopna i završiti u tom istom kopnu. Danas se ovi zaključci očituju na ovaj način: DEFINICIJA 2.6 Eulerova staza grafa G je staza koja prolazi svakim bridom od G, znači da sadrži svaki brid točno jednom. DEFINICIJA 2.7 Eulerova tura je zatvorena Eulereva staza DEFINICIJA 2.8 Graf G je Eulerov ako dopušta Eulerovu turu. 14 Za slučaj „Sedam königsberških mostova“, odnosno za multigraf nije moguće pronaći Eulerovu turu jer se ne može naći zatvorena Eulerova staza. Slika 2.6 TEOREM 2.1 Povezan graf G je Eulerov ako i samo ako su svi vrhovi od G parnog stupnja. Parni stupanj vrha prema (DEFINICIJA 1.3) znači da se svaki vrh „nalazi” na parnom broju bridova. Povezani graf je graf u kojem za svaka dva vrha na grafu postoji put koji iz jednog vrha vodi u drugi. Ako prebacimo fokus s bridova na vrhove, možemo definirati : DEFINICIJA 2.9 Hamiltonov put na grafu G je put koji sadrži sve vrhove. DEFINICIJA 2.10 Hamiltonov ciklus na G je ciklus na G koji sadrži sve vrhove do G. DEFINICIJA 2.11 Graf G je Hamiltonov ako sadrži Hamiltonov ciklus. Ne postoji direktna veza između Hamiltonovog i Eulerovog grafa. 15 2.4 Problem kineskog poštara Poštar raznosi poštu u jednom dijelu grada (oblasti). Poštar ima zadatak obići sve ulice u oblasti barem jednom. Obilazak svih ulica može napraviti više ili manje dobro. Postavlja se optimizacijski problem, kojim putem treba poštar raznosti pisma, a da bude što uspješniji. Preciznije: „Kojom rutom poštar treba obići svoju oblast na način da barem jednom obiđe svaku ulicu i da pri tome prijeđe što manji put i da se vrati na mjesto odakle je krenuo?“. 2.4.1 Definicija problema kineskog poštara Ovakav problem možemo postaviti za razne djelatnosti kao što su: određivanje ruta vozila za pranje ulica, sakupljanje otpada, prijevoz učenika ili drugih komunalnih službi poput zimskih službi (čišćenja snijega). Za neusmjereni graf G=(V,E) gdje su dužine bridova d(i,j)>0, (i,j ∈ E)problem kineskog poštara možemo formulirati, tako da vrijedi , → 2.1 ,∈ gdje je sij – broj prolazaka bridom. Slijedom prethodnih definicija možemo kazati da je graf Eulerov ako sadrži Eulerovu turu. Eulerova tura je zatvorena Eulerova staza. Eulerova staza prolazi svakim bridom grafa, znači da sadrži svaki brid točno jednom. Ako na Eulerovom grafu rješavamo problem kineskog poštara, možemo zaključiti da je rješenje trivijalno jer predstavlju Eulerovu turu. Suma duljina bridova grafa je duljina put koju treba preći poštar jer će posjetiti sve bridove samo jednom i vratiti se u početni vrh grafa. Ako graf nije Eulerov tada poštar treba posjetiti neke od bridova više puta. 2.4.2 Eulerova tura i problem kineskog poštara Promotrimo tri različita grafa. Pronalazak Eulerove ture možemo poistovjetiti s pokušajem crtanja grafa na način da u jednom potezu bez podizanja olovke nacrtamo bridove grafa. Za prvi graf na slici (2.7 Graf 1) nije moguće pronaći redoslijed crtanja bridova na način da ćemo sve bridove nacrtati u jednom potezu bez podizanja olovke s papira. Možemo zaključiti da se graf na slici (2.7 Graf 1) nije Eulerov graf. 2.7 Graf 1 16 Za drugi graf slika (2.8 Graf 2) moguće je nacrtati sve bridove u jednom potezu olovke bez podizanja olovke s papira, ali početak i kraj crtanje nikada nisu ista točka, pa ni ovaj graf nije Eulerov graf. 2.8 Graf 2 Za treći graf na slici (2.9 Graf 3) moguće je nacrtati sve bridove u jednom potezu olovke bez podizanja olovke s papira. Graf 3 je Eulerov graf. U čemu se razlikuju između grafova (Graf 1, Graf 2 i Graf 3) ? 2.9 Graf 3 Ako usporedimo stupnjeve vrhova u svakom od grafova vidimo pravilonost koja je povezana s teoremom (TEOREM 2.1). U tablici (Tablica 2.1) je vidljivo da svi vrhovi Grafa 3 imaju paran stupanj, pa je moguće nacrtati Eulerovu turu odnosno u neprekinutom nizu posjetiti sve bridove bez ponovnog posjećivanja nekog od bridova i vratiti se u početni vrh. Kod Grafa 2 moguće je napraviti Euleorovu stazu, ali ne i turu. Razlika u turi i stazi je što su kod staze početni i završi vrh razlikuju i to su kod Grafa 2 upravo vrhovi s neparnim stupnjevima. Kod Grafa 1 nije moguće napraviti ni Eulerovu stazu niti turu. 17 Tablica 2.1 VRHOVI Grafa 1 A B C D 2.4.3 Stupnjevi 3 3 3 3 VRHOVI Grafa 2 A B C D E Stupnjevi 3 4 4 3 2 VRHOVI Grafa 3 A B C D E F Stupnjevi 4 4 4 4 2 2 Rješavanja problema kineskog poštara dodavanjem umjetnih bridova Pretpostavimo da je graf na kojem poštar treba razdijeliti poštu graf na slici (Slika 2.6). Brid odgovara ulici gdje se pošta raspoređuje u poštanske sandučiće a vrh je mjesto gdje poštar može promijeniti smjer i krenuti u neku novu ulicu koja je povezana s prethodnom. Poštar mora proći svakom ulicom, ali želi minimizirati broj ponovnih prolazaka kroz ulicu koji se konkretno za graf (Slika 2.6) ne mogu izbjeći jer graf nije Eulerov. Da bi odredili najkraći put potrebno je uzeti u obzir duljinu ulica ili vrijeme potrebno za prolazak tim ulicama, pa graf (Slika 2.6) moramo obogatiti parametrima (duljinom ili vremenom) i na taj način dobiti težinski graf (DEFINICIJA 2.1). Da bi riješili problem kineskog poštara na grafu koji nije Eulerov, potrebno je proširiti postojeći graf umjetnim bridovima. Dodavanjem tih novih umjetnih bridova stupanj vrhova se može dovesti do parnog broja. Tako bi graf (Slika 2.6) preoblikovali u novi graf (Slika 2.10) koji je Eulerov i koji ima Eulerovu turu. U novom grafu moguće su tražene poštareve staze, npr. staza (DEFINICIJA 2.3) W (2.2). W = de4ae1be2ae3be6ce7be5de8be9d Slika 2.10 18 2.2 U stazi W (2.2) koriste se oba umjetno dodana brida e1 i e9 koji omogućavaju parnost svih vrhova i pretvaraju graf, (Slika 2.6) u Eulerov graf (DEFINICIJA 2.8) odnosno u graf, (Slika 2.10). 2.4.4 Mogući načini dodavanja umjetnih bridova Da bi poštar putovao stazom (definicija 2.3) na grafu koji nije Eulerov i vratio se na početni vrh od kojeg je započeo putovanje, nuženo je umetanje novih umjetnih bridova između pojedinih vrhova. Broj novo umetnutih bridova između dva vrha odgovara broju ponovnih prolazaka kroz originalni brid između ta dva vrha. Svaki novo umentuti brid postoji isključivo zato da bi prebrojali prolaske kroz originalni brid. Na koliko je načina moguće dodati umjetne bridove, a da oni zadovolje opisanu motivaciju umetanja? Umjetni brid povezuje vrhove neparnog stupnja. Ako imamo dva takva vrha u grafu, moguće ih je povezati samo na jedan način. S obzirom na teorem TEOREM 1.1 koji kaže da je u svakom grafu broj vrhova neparnog stupnja paran broj, sljedeći mogući broj vrhova neparnog stupnja je četiri. Za Graf 1 na slici (2.7 Graf 1) moguću su tri načina povezivanja četiri vrha neparnog stupnja koji su prikazani na slici 2.11. 2.11 Načina povezivanja četiri vrha Grafa 1 Nadalje za šest vrhova neparnog stupnja, broj mogući načina povezivanje vrhova možemo prebrojati i uočiti pravilonst. Za šest vrhova ABCDEF neparnog stupnja, vrh A možemo povezati sa preostalih pet, a preostalih četiri možemo povezati na tri načina. Znači za šest vrhova neparnog stupnja moguće je 5 x 3 x 1 načina povezivanja. Slično razmatranje možemo provesti za osam i više vrhova neparnog stupnja. Pravilnost možemo uočiti promatrajući tablicu (Tablica 2.2). Tablica 2.2 Broj vrhova neparnog stupnja 2 4 6 8 10 n Broj mogućih povezivanja parova vrhova 1 3x1=3 5 x 3 x 1 = 15 7 x 5 x 3 x 1 = 105 9 x 7 x 5 x 3 x 1 = 945 (n-1) x (n-3) x (n-5) x ... x 1 19 2.4.5 Algoritam rješavanja problema kineskog poštara Da bih pronašli turu poštara s minimalnom ukupnom udaljenošću potreban je algoritam koji će za slučaj da graf nije Eulerov umetnuti, na najbolji mogući način, umjetne bridove. Koraci potrebni za rješavanje problema kineskog poštara na nusmjernom grafu prikazani su u algoritmu (Algoritam 2.1) Algoritam 2.1. Algoritam rješavanja problema kineskog poštara 1: Prebroji sve vrhove neparnog stupnja 2: Prebroji sva moguća povezivanja parova vrhova neparnog stupnja 3: Pronađi povezivanje vrhova s najmanjom težinom umjetnih bridova 4: Na originalni graf dodaj pronađeno povezivanje s minimalnom težinom 5: Ukupna težina ture je zbroj težina svih bridova grafa Primjer 2.2 ZADATAK: Za graf na slici (Slika 2.12) potrebno je pronaći turu kineskog poštara Slika 2.12 PRIMJER Algoritma rješavanja problema kineskog poštara graf na slici (Slika 2.12) 1: Jedini vrhovi s neparnim stupnjem su vrhovi A i H 2: Ova dva vrha se mogu spojiti samo na jedan način 3: Najkraći put spajanja od A do H je stazom bridova AB,BF,FH i ukpuna težina je 160 4: Novi umjetni bridovi prikazani su na slici (Slika 2.13) 5: Ukupna tura koju poštar treba preći je 1000, što je zbroj svih bridova 840 uvećan za 160 20 Slika 2.13 Za izračunatu ukupnu vrijednost težina 1000, ture u primjeru (Primjer 2.2) moguće je pronaći velik broj tura. Pronalazak koliko se pojedinih vrhova ponavlja u turi moguće je pronaći algoritmom (Algoritam 2.2) Algoritam 2.2. 1: Rješi problem algoritmom (Algoritam 2.1) 2: Izradi tablicu (Tablica 2.3) svih vrhova i njihovih stupnjeva 3: Broj pojavljivanja svakog od vrhova u turi jednak je polovici njegovog stupnja, osim za prvi vrh Tablica 2.3 Vrh A B C D E F G H Stupanj vrha 4 6 4 4 2 6 2 4 Broj pojavljivanja vrha 2 3 2 2 1 3 1 2 Ture poštara koje imaju izračunatu minimalnu težinu 1000 moraju imati broj pojavljivanja pojedinih vrhova kako je navedeno u tablici (Tablica 2.3). 21 2.4.6 Hierholzerov algoritam pronalska Eulerove ture Da bi došli do konkretne ture koja je rješnje problema kineskog poštara potrebno je pronaći Euleoruv ture u Eulerovom grafu. Hierholzerov algoritam konstruira uzastopne zatvorene staze čijim se spajanjima u konačnici dobije Eulerova tura (staza). Drugi naziv ovog algoritma je End-Pairing Algorithm. Ulaz u algoritam je Eulerov graf. Na početku se konstruira staza sa početnim vrhom 1 koji može biti proizvoljan, korak a) na slici (2.14). Nadalje se proizvoljno bira incidentan brid vrhu 1 i dodaje se u stazu. Isti postupak se ovbaljva dok staza ne postane zatvorena. Kada staza postane zatvorena ispituje se sadrži li staza jednak broj bridova kao i ulazni graf. Tim se načinom detektira da li je algoritam pronaša konačno rješenje. Ako broj bridova nije jednak ukupnom broju bridova kao u koraku algoritma d) slika (2.14), tada se iz liste bridova Trenutno zadnji dodatni brid prebacuj u listu Završno i tako redom dok se ne dođe do vrha u kojem je moguće nasumično odabirati neposjećene bridove. Kada su svi bridovi posjećeni, trenutna lista bridova posprema se u završnu i algoritam završava s radom, a duljina Euleorva ture jednaka je sumi svih bridova. 2.14 22 2.5 Razapinjuće stablo Razapinjuće stablo (engl. spanning tree) na grafu je podraf koji sadrži sve njegove vrhove i stablo je. Stablo je graf koji ne sadrži ciklus. Jedan graf sadrži više razapinjujućih stabala. Na slici (2.15) je prikazan primjer dva razapinjuća stabla (desno) od grafa G (lijevo). 2.15 DEFINICIJA 2.12 Minimalno razapinjuće stablo (engl. minimum spanning tree) (MST) težinskog grafa je razapinjuće stablo čija je suma težina svih bridova manja od bilo kojeg drugog razapinjućeg stabla na razmatranom grafu. Minimalno razapinjuće stablo se najčešće razmatra na težinskom grafu gdje težine predstavljaju ovisno o njegovoj primjeni udaljenost vrijeme, trošak, itd. Primjer minimalnog razapinjućeg stabla na težinskom grafu prikazan je na slici 2.16. Bitno je napomenuti da na istom grafu može postojati više različitih minimalnih razapinjućih stabala odnosno razapinjujućih stabala koja se sastoje od različitog skupa bridova sa jednakom ukupnom sumom težina. 2.16 Iako je pronalazak minimalnog stabla tema istraživanja istraživača još od 1920-tih godina još uvijek se istražuju bolji i efikasniji algoritam. Razlog je što algoritmi za pronalazak minimalnog razapinjućeg stabla ima jako puno važnih primjena, što direktnih kao što je prostiranje električne mreže, čišćenje prometnica između bitnih javnih ustanova (bolnice, škole, vatrogasci) od oborina i još mnogih drugih. Osim direktnih aplikacija pronalazak minimalnog razapinjućeg stabla u grafu, 23 važna ulogu ima kao i dio mnogih algoritama za rješavanje optimizacijskih problema. Poznata primjena je kod Cristofidesova aprokismacijskog algorima za rješavanje TSP problema gdje se u njegovu inicijalnom koraku traži pronalazak minimalnog razapinjućeg stabla u grafu. Kalsični algoritmi za pronalazaka minimalnoga razapinjućeg su Kruškalov algoritam i Primov algoritam. Oba algoritma spadaja u pohlepna algoritme i pronalaze rješenje u polinmnom vremenu. 2.5.1 Kruskalov algoritam Prvi algoritam koji se razmatra je objavljen 1956. Godine u radu "On the shortest spanning subtree of a graph and the traveling salesman problem" od strane Joseph Bernarda Kruskala (1928 – 2010). Kruskalov algoritam (Algoritam 2.3) u inicijalnom koraku kreira šumu stabala, gdje svaki vrh promatranog grafa predstavlja jedno stablo šume. Šuma je skup međusobno disjunktnih stabala, a stablo je graf koji ne sadrži ciklus, gdje su svaka dva vrha povezana putem. U početku svako stablo se sastoji samo od jednog vrha bez iti jednog brida koji mu pripada. Nakon toga se svi bridovi sortiraju prema težini, a najčešći izbor za strukturu podataka koja se koristi za to je prioritetni red. U svakom koraku algoritma dohvaća se sljedeći najmanji brid iz prioritetnog reda i dodaje se u šumu što zapravo znači da će se napraviti unija dva stabla iz inicijalne šume. U slučaju kada brid koji je sljedeći na redu za dodavanje tvori ciklus odnosno spaja dva vrha koja se već nalaze u istom stablu, taj brid se ne dodaje. Algoritam 2.3 Kruskalov algoritam 1: 2: 3: 4: 5: 6: 7: 8: Kreiraj šumu stabala - gdje je svaki vrh jedno odvojeno stablo Spremi sve bridove u prioritetni red dok postoje bridovi u prioritetnom redu Dohvati brid s najmanjom težinom iz prioritetnog reda ako brid tvori ciklus Nemoj dodati brid u šumu inaće Dodaj brid u šumu // Dodavanjem brida u šumu napravi se unija dva stabla Kritični dio ovog algoritma je detektiranje da li će brid koji je sljedeći na redu za dodavanje tvoriti ciklus. Ovaj korak je dosta spor osim u slučaju kada se koristi struktura podataka disjunktni skupovi (engl. disjoint sets). 2.5.2 Primov algoritam Primov algoritam (u literaturi se još naziva DJP algoritam, Jarníkov algoritam ili Prim–Jarníkov algoritam) razvijen je 1930 godine od strane češkog matematičara Vojtěch Jarníka, a kasnije 1957 godine neovisno je otkriven od Robert C. Prima dok ga je na kraju opisao i Edsger Dijkstra 1959 godine. Primov algoritam (Algoritam 2.4) radi na način da se kreira podgraf originalnog grafa sa jednim proizvoljno odabranim vrhom. Zatim se traži incidentan brid vrhu iz novog grafa koji ima najmanju težinu i dodaje se u novi graf dok se taj brid uklanja iz starog grafa. Ovaj postupak se ponavlja sve dok stari graf ostane bez vrhova s tim da se traži najmanji brid bilo kojem vrhu iz novog grafa. Na ovaj način u svakoj iteraciji se dodaje jedan novi vrh što će na kraju rezultirati da će novo kreirani graf biti podgraf originalnog grafa i njegovo najmanje razapinjuće stablo. 24 Algoritam 2.4 Primov algoritam 1: Kreiraj novi graf sa jednim vrhom iz originalnog grafa 2: dok originalni graf sadrži vrhove 3: Pronađi vrh iz originalnog grafa sa najmanjom težinom brida prema novom grafu 4: Dodaj vrh u novi graf 5: Izbriši vrh iz originalnog grafa Za razliku od Kruskalova algoritma Primov ne mora tražiti da li će se kreirati ciklus na novom grafu jer algoritam radi sa vrhovima, a ne bridovima. 2.6 Problem trgovačkog putnika Problem trgovačkog putnika (engl. Travelling Salesman Problem (TSP)) su W.R. Hamilton i T. Kirkman početkom 19 stoljeća definirali kao rekreativnu zagonetku baziranu na pronalaženju Hamiltonovog ciklusa (DEFINICIJA 2.10). Graf predstavlja mrežu gradova, bridovi su mogući putni pravci između gradova a težine bridova su udaljenosti gradova. Ovaj se problem može predstaviti kao putovanje trgovačkog putnika s ciljem da obiđe sve gradove samo jednom, ali da prevali ukupno najkraći put i vrati se upravo u onaj grad odakle je putovanje započeo. TSP problem je NP teški problem u matematičkoj teoriji. Svojstvo takvih problema je da pronalazak egzaktnog rješenja problema iznimno dugo traje jer algoritmi rješavanja imaju veliku računalnu složenost. Složenost problema se vidi kada prebrojimo sva moguća rješenja problema trgovačkog putnika i usporedimo rast broja rješenja s rastom broja bridova na kojem se rješava TSP problem. TSP problem promatrat ćemo na potpunim grafovima gdje su svaka dva vrha povezana bridom, za prikaz takvog grafa koristit ćemo težinsku matricu susjedstva. Veze između bridova neće se crtati već se podrazumijeva da se od svakog vrha može doći do bilo kojeg drugog vrha. Kolika je udaljenost između vrhova bit će vidljivo iz matrice, a te udaljenosti ne moraju nužno predstavljati i geometrijske odnose udaljenosti između pojedinih vrhova. 2.17 Kako je vidljivo iz slike (2.17), za ne usmjereni graf matrica susjedstva je simetrična, u slučaju da je matrica nesimetrična u matrici neće postojati zrcaljenje s obzirom na dijagonalu matrice. 25 Svako pojedino rješenje TSP problema bit će opisanom ciklus na primjer 1-2-3-4 , slika (2.18). 2.18 Ako želimo prebrojiti na koliko je načina moguće obići četiri lokacije, odnosno koliko je mogućih hamiltonovih ciklusa u jednom potpunom grafu od 4 vrhta, možemo prve četiri ispisati, a zatim ih kao hamiltonvoe cikluse ispisati slika (2.19). Svaki od hamiltonovih ciklusa ima svoju duljinu puta. 2.19 Ako želimo prebrojati koliko ima ukupno mogućih ciklusa za potpuni graf s 4 vrha. Tada u općem slučaju možemo kazati da imamo (n-1)! različitih ciklusa, odnosno u slučaju n=4, je (41)!=3*2*1=6 ciklusa. Za graf koji ima zrcalnu matricu kao na slici 2.17, možemo uočiti da su ciklusi 12-3-4-1 i 1-4-3-2-1 potpuno jednaki slika (2.20), pa je za takve grafove broj mogućih obilazaka (hamiltonovih ciklusa) jedank (n-1)!/2. 2.20 26 2.7 Metode rješavanja problema trgovačkog putnika Heurističke metode ili kraće heuristike su u općem smislu metode rješavanja problema koje se temelje na iskustvu. Većinu heuristika koje se pojavljuju u literaturi možemo intuitivno podijeliti na konstruktivne heuristike koje iterativno konstruiraju jedno rješenje gradeći ga od samog početka ili enumeracijske heuristike koje ispituju cijeli skup rješenja i odabiru najbolje. Konstruktivne heuristike vezane su za specifični problem koji rješavaju i često imaju polinomijalno vrijeme izvršavanja. Konstruktivne heuristike često imaju jednostavnu strukturu i predstavljaju pohlepne algoritme koji započinju graditi rješenje od jednog ili više jednostavnih fragmenata rješenja. Za razliku od njih enumeracijske heuristike predstavljaju metode koje na općenitiji način pristupaju pronalasku rješenja i moraju se prilagoditi specifičnom problemu. Vrijeme izvođenja enumeracijskih heuristika vezano je za veličinu skupa rješenja kojeg heuristika ispituje, a veličina skupa je često eksponencijalno ovisna o veličini problema. Rješenja dobivena konstruktivnim heuristikama često predstavljaju početno rješenje za enumeracijske heuristike Heuristike često pronalaze rješenja problema upotrebljiva u praksi u kraćem vremenskom roku u odnosu na vrijeme potrebno egzaktnim metodama. Za heuristike ne postoje nikakve procjene o kvaliteti rješenja ili o vremenu izvršavanje metode pod krajnje nepovoljnim uvjetima iako heuristike koje koristimo, često brzo vraćaju upotrebljiva rješenja. U pravilu nije moguće odrediti koliko su rješenja dobivena heurističkim metodama, udaljena od optimalnih rješenja problema. Problemi za koje možemo dokazati da su NP teški problemi, danas se u praktičnim primjenama u pravilu rješavaju heuristikama jer trenutno ne postoji bolji pristup. Metode rješavanja TSP problema mogu se podjeliti u četiri glavne skupine: egzaktne, aproksimacijske, heurističke i metaheurističke. Najednostavnije su heurističke konstruktive heuristke koje grade obilaske (Hamiltonove cikluse) od početka, a njihova rješenja se kasnije mogu poboljšati lokalnim pretragama. 2.7.1 Heuristika najbližeg susjeda Heuristika najbližeg susjeda (NNH) je jedan od prvih algoritama za rješavanje TSP problema, a dosta se često koristi kao inicijalno rješenje za testiranje popravljajućih heuristika, dosta je brza, ali su rješenja uvijek daleko od optimalnih. NNH algoritam (Algoritam 2.5 NNH algoritam)radi na način da iz skupa gradova slučajno odabere početni grad, doda ga u rutu i označi kao posjećenog. Zatim iz skupa neposjećenih gradova pronade najbliži grad od prethodno dodanog i doda ga u rutu te ga označi da je posjećen. Ovaj korak se ponavlja sve dok svi gradovi ne budu posjećeni . Algoritam 2.5 NNH algoritam 1: Slučajno odaberi početni vrh i označi ga kao posjećenog 2: dok ima neposjećenih vrhova 3: Pronadi vrh koji je najbliži zadnjem posjećenom vrhu 4: Dodaj ga u rutu i označi kao posjećenog 5: Dodaj prvi vrh u rutu 27 2.7.2 Umetajuće heuristike Postoje četiri umetajuće heuristike koje rade na sličnom principu. Sve se sastoje od tri koraka: inicijalizacije, selekcije i umetanja. 2.7.2.1 Heuristika ubacivanje slučajno odabranog grada Heuristika ubacivanja slučajno odabranog grada (engl. Random/arbitrary insertion) radi na način da konstruira parcijalnu rutu u kojoj se nalazi samo jedan slučajno odabran grad. Zatim u svakom sljedećem koraku se vrši slučajni odabir sljedećeg grada koji će se dodati u već konstruiranu rutu. Ubacivanje se radi na način da se pronađe brid na grafu čije će uklanjanje i dodavanje slučajno odabranog grada minimizirati ukupnu udaljenost. Algoritam (Algoritam 2.6)završava kada se svi gradovi nalaze u konstruiranoj ruti. Algoritam 2.6. Heuristika ubacivanja slučajno odabranog grada 1: Inicijalizacija 2: Kreiraj parcijalnu rutu sa samo jednim slučajno odabranim gradom i 3: Pronadi grad j za koji vrijedi da je cij minimalan i izgradi parcijalnu rutu (i, j) 4: Selekcija 5: Slučajno odaberi jedan grad k koji se još ne nalazi u parcijalnoj ruti 6: Umetanje 7: Pronadi brid i, j koji pripada parcijalno konstruiranoj ruti i koji minimizira cik + ckj - cij 8: Ubaci k izmedu i i j 9: Ako su svi gradovi dodani u rutu onda završi algoritam, u protivnom idi na korak 2 2.7.2.2 Heuristike najbližeg i najdaljeg ubacivanja Heuristika najbližeg ubacivanja (engl. Nearest insertion heuristic) i heuristika najdaljeg ubacivanja (engl. Farthest Insertion Heuristic) su slične i imaju samo jedan detalj koji ih razlikuje. Obje započinju sa parcijalnom rutom koja ima samo jedan grad slučajno odabran. Jedina razlika izmedu ove dvije heuristike je u koraku selekcije tj. pri odabiru grada gdje se za heuristiku najbližeg ubacivanja ckj minimiziran, a kod heuristike najdaljeg ubacivanja ckj se maksimizira. Algoritam (Algoritam 2.7) završava kada se svi gradovi nalaze u konstruiranoj ruti. Algoritam 2.7. Heuristika najbližeg/najdaljeg ubacivanja 1: Inicijalizacija 2: Kreiraj parcijalnu rutu sa samo jednim slučajno odabranim gradom i 3: Pronadi grad j za koji vrijedi da je cij minimalan i izgradi parcijalnu rutu (i, j) 4: Selekcija 5: Pronadi gradove k i j (gdje j pripada parcijalno konstruiranoj ruti dok k ne pripada) 6: čiji je ckj minimiziran/maksimiziran 7: Umetanje 8: Pronadi brid i, j koji pripada parcijalno konstruiranoj ruti a čiji je cik + ckj - cij najmanji 9: Ubaci k izmedu i i j 10: Ako su svi gradovi dodani u rutu onda završi algoritam, u protivnom idi na korak 2 28 2.7.2.3 Heuristika najeftinijeg ubacivanja Heuristika najeftinijeg ubacivanja (engl. Cheapest insertion) radi na način da konstruira parcijalnu rutu u kojoj se nalazi samo jedan slučajno odabran grad. Selekcija sljedećeg grada se vrši na način da se biraju dva grada koja su već u ruti te jedan koji nije dodan u rutu, a da su udaljenosti izmedu njih minimizirane. Algoritam (Algoritam 2.8) završava kada se svi gradovi nalaze u konstruiranoj ruti. Algoritam 2.8. Heuristike najeftinijeg ubacivanja 1: Inicijalizacija 2: Kreiraj parcijalnu rutu sa samo jednim slučajno odabranim gradom i 3: Selekcija 4: Pronadi gradove k, i i j (gdje i i j pripadaju konstruiranoj turi dok k ne pripada) gdje je 5: cij + ckj + cij minimalan 6: Umetanje 7: Ubaci k izmedu i i j 8: Ako su svi gradovi dodani u rutu onda završi algoritam, u protivnom idi na korak 2 2.8 Egzaktne metode Egzaktne metode pronalaze optimalno rjesenje, ali zbog svoje velike računalne složenosti ograničeni su na manje probleme. Najjednostavniji egzaktni algoritam bio bi da se ispituju sve moguće kombinacije i izabere se najpovoljnija. Ova metoda se naziva gruba sila (Brute Force) i neefikasna je čak i za instance problema od 15 točaka. Sljedeći metoda je dinamičko programiranje koja svoju najznačajniju primjenu ima u odredivanju donje granice rješenja. Donja granica rješenja je vrijednost ispod koje se sigurno ne nalazi optimalno rješenje TSP problema. Osim spomenutih tu su još linearno programiranje, metode pretraživanja s vraćanjem (Backtracking), metoda grananja i ograničivanja (Branch & Bound), te metoda grananja i rezanja (Branch & Cut). 2.9 Aproksimacijske metode Aproksimacijske metode daju u polinomijalnom vremenu približno tzv. sub-optimalno rješenje uz garanciju da je to rješenje ”blizu” optimalnom. Aproksimacijski algoritmi razlikuju se po obliku ”garancije dobrote” za rješenja koja daju. Tako ih dijelimo na apsolutno aproksimacijske, relativne aproksimacijske i aproksimacijske sheme. Najpoznatijji aproksimacijski algoritam je Christofidesov algoritam koji se najčešće koristi za konstrukciju rješenja i daje rješenja koja su približno 10% od optimalnog. Christofidesov algoritam radi na način da na zadanom grafu koji opisuje problem pronade minimalno razapinjujuće stablo, te zatim iz njega se pronađu vrhovo koji su neparnog stupnja. Stupanj vrha odreden je brojem bridova sa kojima je incidentan. Zatim se nad tim vrhovima pronade minimalno savršeno uparivanje koje je jedan od najtežih kombinatornih problema koji se mogu rješiti u polinomnom vremenu. 29 2.10 Heurističke metode Heuristike su obično zasnovane na nekoj intuitivno prihvatljivoj strategiji za koju je lako provjeriti da u većini slučajeva daje dobre rezultate. Dvije osnovne strategije su pohlepni pristup i lokalno pretraga. Pohlepna “greedy” heuristika konstruira rješenja u nizu koraka (faza). U svakom koraku biramo mogućnost koja je “lokalno optimalna” u nekom smislu i nadamo se da ćemo doći do “globalnog optimuma”. Kada pohlepni pristup primijenimo na NP teški problem ponekad je moguće dobiti “približni” algoritam. Lokalna pretraga je heuristička strategija rješavanja problema koja zahtijeva da u svakom trenutku raspolažemo jednim dopustivim rješenjem problema. Tekuće rješenje nastoji se poboljšati. Promatramo okolinu (susjedstvo) tekućeg rješenja i skup dopustivih rješenja koja su blizu tekućem. Blizu u tom smislu da se susjedstvo generira jednostavnom transformacijom tekućeg rješenja. Biramo najbolje rješenje iz okoline, na način da svako novo rješenje koje je bolje od tekućeg proglašavamo novim tekućim. Opisani postupak se nastavlja dok god je moguće, tj. sve dok ne dobijemo tekuće rješenje u čijoj okolini nema boljeg rješenja. Glavni nedostatak lokalne pretrage je što može zastati u lokalnom optimumu. Za vođenje lokalne pretrage nužno je osigurati mehanizam bijega iz lokalnog optimuma. 2.11 Metaheurističke metode Prve metahuristike javljaju se 80-ih godina 20-tog stoljeća, a pojam je prvi uveo Fred Glover 1986. Metaheuristike su iterativne procedure rješavanja kombinatornih optimizacijskih problema koje kao jedan korak procedure mogu sadržavati i tradicionalne heuristike (npr. lokalnu pretragu). Bitno svojstvo metahuristika je da koriste neku strategiju pronalaska globalnog optimuma. Ponekad metaheuristike dozvoljavaju prihvaćanje lošijih rješenja ciljne funkcije kako bi se ostvario bijeg iz lokalnog optimuma. Dozvoljeno je i prihvaćanje rješenja koja krše ograničenje kako bi se lokalna pretraga mogla voditi u nekom novom teže dostupnom susjedstvu tekućeg rješenja. Garancije pronalaska optimalnog rješenja ne postoje, ali metahuristike često pronalaze prihvatljivo rješenje u kratkom vremenu i generalno su primjenjive na velikom broju kombinatornih optimizacijskih problema. Metaheuritike pokušavaju pronaći ravnotežu između diversifikacije i intenzifikacije lokalne pretrage. Mehanizam diversifikacija ostvaruje namjeru strategije da se istraži što veći prostor rješenja (susjedstva). Mehanizam intenzifikacija ostvaruje namjeru da se što bolje ispita pojedino područje u potrazi za lokalnim optimumima. Balans ova dva mehanizma teško je ostvariti jer zadržavati pretragu u pojedinom području nije dobro, ali s druge strane nije dobro ni prebrzo dozvoliti napuštanje pojedinog područje bez da se pronađe lokalni ekstrem. Mnogi metaheurističke algoritme uzimaju kao podvrstu heurističkih metoda. Ove metode kao i heurističke ne daju garanciju pronalaska optimalnog rješenja, a takoder daju zadovoljavajuća rješenja relativno brzo. Jedina razlika je što metaheuristike nalaze inspiraciju u prirodi čija iskustva preuzimaju, simuliraju i na taj način daju rješenja. Za njihov rad je potrebno koristiti neku od konstruktivnih heuristika, a ponekad koriste i spomenute heurističke motode lokalne pretrage za poboljšavanje rješenja. Najpoznatiji primjeri su simulirano kaljenje (engl. Simulated Annealing), genetski algoritmi (engl. Genetic Algorithm), te metode optimizacije mravljom kolonijom (engl. Ant Colony Optimization, skraćeno ACO). ACO spada u metaheuristike kolektivne inteligencije ili jata (Swarm Intelligence) koje postaju sve popularnije jer daju konkurentne rezultate. Osim ACO metode njega vrijedi još spomenuti algoritme inspiriane ponašanjem roja čestica (Particle Swarm) ponašanje 30 pčela (Artificial bee colony), krijesnica (Glowworm swarm optimization), imunološkog sustava (Artificial immune systems), i dr. 2.11.1 Simulirano kaljenje Na osnovu Metropolisov algoritma koji oponaša termodinamičke procese koji se odvijaju u metalurgiji prilikom kaljenja metala osamdesetih je godina predložen za rješavanje problema iz područja kombinatorne optimizacije. Kaljenja u metalurgiji koristi se za postizanje stanja minimalne unutarnje energije koja se dobije formiranjem pravilne kristalne rešetke. Kada je metal zagrijan atomi su stohastički organizirani, a brzim hladenjem ostaju u nepravilnim položajima koje predstavljaju energetski lokalni optimum. Da bi se dobio energetski globalni optimum odnosno struktura metala bez nepravilnosti koristi se postupag sporog hladenja ili kaljenja. Ako se temperatura iskoristi kao parametar u rješavanju kombinatornih problema koji kontrolira diverzifikaciju i intenzikaciju pretrage, veća temperatura će značiti veću diverzifikaciju odnosno bolje istraživanje cjelokupnog prostora rješenja, a manja temperatura veću intenzifikaciju odnosno veću eksploataciju uskog područja rješenja u kojem se pretraga nalazi. 2.11.2 Genetski algoritmi Genetski algoritmi podskup su evolucijskih algoritama. Inspiracija ovakvih algoritama pronadena je u prirodnom produktu evoluciji. Jedinke koje se bolje prlagode okolišu imaju veće izglede za preživaljavanje od onih koje se slabije prilagode. Samim time i njihov se genetski materijal prenosi s generacijama. Osim ovog bitna je karakteristika medusobno natjecanje, prirodna selekcija te mutacije koje su najčešće loše ali mogu biti i korisne. Algoritam radi na način da simulira evoluciju na način da za trenutno rješenje uzima najbolje kromosome od roditelja, da se povremeno u jednoj od generacija dogodi mutacija te da postupkom prirodne selekcije preživljavaju najbolje jedinke. Najbolje jedinke se odreduju prema funkciji cilja koja je kod TSP najkraći put. 2.11.3 Optimizacija kolonijom mrava ACO metaheuristika je inspirirana ponašanjem kolonija mrava u prirodi. Ova metoda je još uvijek relativno mlada i predložena je od strane Doriga u njegovoj disertaciji 1992. godine. Sve varijante ACO metode rade na principu stigmergije, odnosno mehanizmom neizravne komunikacije izmedu jedinki iste vrste putem tragova koje ostavljaju u okolišu. Glavna ideja u primjeni ovog ponašanja u rješavanju kombinatornih problema je da jedinke (umjetni mravi) pretražuju prostor u svim smjerovima i da ostavljaju feromone koji lagano isparavaju. Oni mravi koji pronadu kraći put ostavljaju više feromona na putu, tako da se s vremenom na najkraćem putu nakupi najveća koncetracija feromona. 2.11.4 Optimizacija rojem čestica Pripada skupini algoritama inteligencije roja koja se temelje na sociološko-psihološkim principima. Kada se promatra jato ptica ili riba te kako jedinke unutar jata mjenjaju položaj u potrazi za hranom postoji velika vjerovatnost da će cijelo jato slijediti jedinku koja je osjetila ili pronašla izvor hrane. U jatu svaka jedinka ima i vlastiti instikt za hranom te se povremeno odvaja od jata u potrazi za izvorem hrane. Pronalaskom boljeg hranilišta, pomaže sebi i cijelom jatu jer će je ostale ptice 31 pratiti i preseliti se na bolje hranilište. Algoritam optimizacije rojem čestica radi na način da u potrazi za rješenjem kreću samostalne jedinke (čestice) te s vremenom mijenjaju svoju poziciju. Važnost pojedine čestice se vrednuje tako da se pozicija čestice uvrsti u funkciju cilja koja kao izlaz čestici daje realnu vrijednost. Čestice koje više vrijede te njihove pozicije daju najkraći put u rješavanju TSP-a . 2.12 Iterativna lokalna pretraga Iterativna lokalna pretraga (engl. Iterated Local Search, skraćeno ILS) je pojam u primjenjenoj matematici i računarstvu, te označava metodu za pretraživanje susjedstva za rješavanje problema diskretne optimizacija. Odlikuju je jednostavnost implementacije, robusnost i učinkovitost. Metoda je bazirana na pretpostavci da se potraga za optimalnim rješenjem ne treba voditi u čitavom prostoru rješenja, već da se treba usmjeriti na područja u blizini lokalnih optimuma do kojih ILS jako brzo dolazi. Na slici (2.21) je prikazan pojednostavljeni prostor rješenja S. Potraga za rješenjem u blizini lokalnih optimuma naziva se intenzifikacija, dok se bijeg iz lokalnih optimuma i potraga za rješenjem na nekom drugom mjestu naziva diverzifikacija. 2.21 Uspješnost ILS ovisi o izboru i načinu implementacije tri osnovna elementa od kojih se metoda sastoji: lokalnoj pretrazi, bijegu iz lokalnog optimuma, te mehanizmu odlučivanja o prihvaćanju rješenja. Pseudokod ILS metode prikazan je u algoritmu. U ILS-u sa procedurom GenerirajPocetnoRjesenje se inicijalno konstruira ruta jednim od konstrukcijskih algoritama opisanih prethodno. Zatim se poziva procedura LokalnaPretraga koja operatorima lokalne (2-Opt ili 3-Opt) pretrage poboljšava trenutno rješenje do zaglavljivanja u lokalnom optimumu. Zatim se poziva procedura naziva PromjeniSusjedstvo koja radi bijeg iz lokalnog optimuma. LokalnaPretraga i PromjeniSusjedstvo se poziva onoliko puta koliko je to unaprijed zadano uvjetom prekida koji je definiran u proceduri UvjetPrekida. Obično se radi o unaprijed zadanom broju iteracija, a može to biti i neki drugi uvijet kao što je primjerice vrijeme trajanja algoritma. Uvjet prihvaćanja rješenja definiran je sa ′ # , gdje se uvijek uzima najbolje trenutno riješenje dok se prethodno odbacuje. Sa ovim korakom se može jako puno ekperimentirati jer je moguće pamtiti prethodna stanja rješenja u obliku tabu liste i na taj način usmjeriti ILS. 32 2.12.1 Operatori poboljšanja kod lokalne pretrage Trenutno riješenje u ILS-u se poboljšava jednostavnim operacijama (procedura LokalnaPretraga u algoritmu 5) zamjene redosljeda točki/bridova, čime se postiže minimizacija ciljne funkcije. Operatori koji se koriste za poboljšanje rješenja su 2-Opt i 3-Opt. 2-Opt je prvi put predstavljen u radu [8], a radi na način da briše dva brida iz rješenja i pokušava ih prespojiti na način prikazan slikom (2.22). 2.22 Operator 3-Opt radi isto kao i 2-Opt samo što briše 3 brida i pokušava ih prespojiti na sve moguće načine, slika (2.23). Uvijek se izabire ono riješenje koje je najbolje od četiri moguća. Logičan nastavak bi bio 4-Opt operator, ali on ne daje dobre rezultate jer je previše mogućih pokreta, pa to značajno usporava ILS. Postoje razne varijacije implementacije ovih operatora jedna koju treba istaknuti je 2.5-Opt operator koji je nešto izmedu 2-Opta i 3-Opta [15]. 33 2.23 2.12.2 Bijeg iz lokalnog optimuma Lokalna pretraga završava u lokalnom optimumu kada se ne može pronaći susjedno rješenje koje je bolje od trenutne vrijednosti funkcije cilja. Kod bijega iz lokalnog optimuma svjesno se ”pokvari” riješenje kako bi u sljedećoj iteraciji lokalna pretraga pokušala izbjeći zaglavljivanje u istom lokalnom optimumu što bi bilo pogubno za funkciju cilja. Kod implementacije metode za bijeg i lokalnog optimuma potrebno ja paziti na sljedeće stvari: • Modificiranje postojećeg rješenja u manjoj mjeri često rezultira povratkom u isti lokalni optimum nakon što se lokalna pretraga ponovo provede; • Modificiranje postojećeg rješenja u većoj mjeri rezultira prevelikim udaljavanjem od postojećeg susjedstva što ponekad nije poželjno budući da se optimum može nalaziti u blizini postojećeg rješenja. 2.24 34 Korišten operator za bijeg iz lokalnog optimuma u ovom seminaru je double bridge koji je jednostavan za implementirati, a pritome je jako efikasan. Radi na način da presječe četiri brida na riješenju i prespoji ih drugačijim redosljedom kao što je prikazano na slici (2.24) Ako je rješenje išlo redosljedom A->B->C->D->E->F->G->H->A nakon primjene double bridga operatora odnosno bijega iz lokalnog optimuma riješenje će izgledati A->B->G->H->E->F->C->D->A. 35 Lokacijsko alokacijski problem 3 Određivanja lokacije objekata unutar prometne mreže Određivanja lokacije jednog ili više objekata unutar prometne mreže optimizacijski je problem koji se već dugo proučava u okviru operacijskih istraživanja. Ako promatramo okruženje u kojem na bilo kojem mjestu možemo pozicionirati objekt ili uslugu tada lociranje izvodimo u kontinuiranom prostoru. U slučaju da samo pojedine pozicije objekata mogu biti prihvatljive, radi se o lociranju u diskretnom prostoru. U slučaju velikih prometnih mreža sasvim je prihvatljivo diskretni prostor zamijeniti kontinuiranim i dobiti sugestiju u kojem geografskom području postižemo bolje rezultate lociranjem pojedinog objekta, dok je ponekad nužno odabirati poziciju iz unaprijed određenih prihvatljivih pozicija. Važno je naglasiti kako je lociranje unutar kontinuiranog prostora značajno lakše u slučaju velike prometne mreže i da je vrijedno razmotriti gubitak preciznosti u svrhu izračunljivosti. Najbolji položaj objekta ovisi o mnogo različitih kriterija kao što su: udaljenost, kapacitet objekta ili mogućnosti pružanja usluge, gustoća stanovnika itd. Lokacijsko alokacijski problem može biti zasnovan na jednom kriteriju kao što je udaljenost ili različitim kombinacijama kriterija kao što su udaljenost i kapacitet centra, ili kapacitet centra i optimalan trošak. Cilj rješavanja lokacijsko alokacijskih problema je pronalaženje lokacija za jedan ili više objekata na temelju jednog ili više kriterija kako bi postigli što višu korisnost. 3.1 Povijesni razvoj Prvi značajan korak u rješavanju lokacijskih problema učinio je francuski matematičar Pierre de Fermat (1601-1665). Za tri proizvoljne točke u ravnini želio je pronaći četvrtu, za koju bi suma udaljenosti do sve tri zadane točke bila minimalna slika (3.1). 3.2 36 Torricelli i Bonaventura Francesko Cavalieri radeći na Fermat-ovom problemu, primijetili su da se krugovi opisani oko jednakostraničnih trokuta konstruiranih na stranicama trokuta kojeg čine tri zadate točke, sijeku u traženoj točki, slika (3.3) 3.3 Thomas Simpson (1710-1761) generalizirao je ovaj problem 1750. godine, odredivši optimalnu točku za koju je suma otežanih rastojanja do tri zadane točke minimalna. Giovanni Francesco de Toschi Fagnano (1715-1797) proširio je ovaj problem zadajući četiri točke u ravnini i tražeći petu optimalnu točku, imajući u vidu isti kriterij optimalnosti kao i njegovi prethodnici Početak modernog pristupa problemu lociranja vezuje se za ime Alfreda Webera (1868 1958), koji je dao značajan doprinos razvoju modela za rješavanje problema lociranja teške industrije. U cilju minimiziranja transportnih troškova, u nekim granama industrije proizvodne je pogone potrebno približiti izvorima sirovina (na primjer, količine sirovina u industriji čelika veće su od količine gotovih proizvoda), a u nekim drugim, proizvodne pogone potrebno je locirati što bliže tržištu, tj. korisnicima. S pojavom i razvojem računalne tehnike učinjen je značajan napredak u povećanju mogućnosti rješavanja lokacijskih zadataka postojećim modelima, metodama i algoritmima, ali i u razvijanju novih. Postavke lokacijskih problema postaju realnije i složenije. U razvoju algoritama poklanja se sve više pažnje implementaciji u praksi. U praktičnim poslovima se često pojavljuju problemi o tome kako opskrbiti, na što bolji način, grupu destinacija koje imaju fiksnu i poznatu lokaciju. U ovim problemima je potrebno odrediti broj, lokaciju te veličinu centra koji bi što ekonomičnije mogli opskrbiti grupu destinacija s materijalima ili uslugom. Problem se može opisati na slijedeći način. Zadani podaci su lokacija svake destinacije, zahtjev od svake destinacije, troškovi dostave za regiju od interesa. Potrebno je utvrditi: broj izvora, lokacija svakog izvora , kapacitet svakog izvora. 37 Problem koji je tu opisan je težak, ne samo sa teoretskog stajališta nego i sa računskog. Egzistencija i upotreba računala ostavljaju trag na problemima kombinatorne optimizacije, ali se neki problemi još uvijek ne mogu riješiti niti upotrebom računala. Tradicionalne egzaktne metode ne mogu riješiti lokacijsko alokacijski problem uspješno. 3.2 Weberov problem Osnovi Weberov problem može se slikovito opisati potrebom pronalaska lokacije npr. skladišta ako su poznata fiksna mjesta isporuke. Svaka od lokacija isporuke osim svoje fizičke pozicije opisana je i svojom težinom koja opisuje njenu važnost (npr. prosječnu količinu isporučene robe) te približavanjem skladišta pojedinoj „težoj“ lokaciji smanjuje se trošak transporta. Potrebno je pronaći lokaciju koja će ukupni trošak transporta od skladišta do svih mjesta isporuke smanjiti na najmanju vrijednost . Funkcija troška transporta mora uzeti u obzir sve „težine privlačenje“ ali i Euklidsku udaljenost fiksne lokacije od skladišta. Opisani primjer samo je jedna od interpretacija Weberovog problema jer Euklidska udaljenost je samo jedna od metrika izračunavanja udaljenosti koja se koristi. Matematička interpretacija problema n (min) f (x ) = ∑ wi ⋅ d (x, ai ) i=1 1 22 x j − a (ji ) }, (min) f (x ) = ∑ { wi ⋅ ∑ ( n i=1 m j=1 ) f(x) predstavlja funkciju cilja koja mora dati minimalnu vrijednost. Parametar wi predstavlja težinski faktor (cijenu transporta) za vezu između čvora ai i optimalne točke navedenog problema. 38 Indeks i predstavlja broj čvora [1, 2, 3...n], dok j predstavlja pojedinačnu koordinatu sustava. Weiszfeldova metoda se koristi za izračun lokacije X zadane pomoću x i y koordinata. (j = 1, 2). Slika 1 prikazuje primjer primjene Weiszfeldove metode unutar jedne ravnine u prostoru, gdje su sve koordinate točaka ai i x definirane pomoću dvije koordinate (x i y). 39 Problem pakiranja u posude 4 Uvod Problem pakiranja u posude (eng. Bin Packing) predstavlja problem gdje je potrebno smjestiti objekte različitih dimenzija u posude na takav način da broj upotrjebljenih posuda bude minimalan. Postoje mnoge varijante ovog problema kao što su linearno pakiranje, dvodimenzionalno pakiranje ili na primjer pakiranja prema kriteriju kao što su masa ili cijena. Praktična primjena problema pakiranja vrlo je raznolika poput popunjavanje teretnog prostora vozila, popunjavanje pauza u tv programu reklamama ili pohrana podatkovnih struktura na medije. 4.1 Definicija problema Neka su zadane posude uvijek istog kapaciteta V i n objekata, veličine a1, a2, …,an. Potrebno je n objekata pakirati u što manji broj posuda veličine V. Potrebno je pronaći za koji broj B posuda postoji rješenje za koja je particija disjunktnih podskupova skupa { a1, a2, …,an } u podskupove S1 U L U S B izvedena na takav način da je broj B minimalan. Linearni progra za ovaj problem prikazan je na slici 4.1. 4.1 Linerni program problema pakiranja u posude 40 4.2 Jednodimenzionalni problem pakiranja u posude „First fit“ algoritam rješava jednodimenzionalni problem pakiranja u posude na pohlepni način. Motivacija algoritma je vrlo intuitivna jer se svaki objekt pokušava pohraniti u prvu slobodnu posudu koja ima dostatni kapacitet. Ako takva posuda ne postoji, koristi se nova dodatna posuda. Može se pokazati da je algoritam aproksimativan s faktorom 2. Dokaz polazi od opažanja da u bilo kojem trenutku izvršavanja algoritma nije moguće da dvije posude budu manje od napola pune. Promatranjem odluka algoritma u kojim slučajevima algoritam dodaje novu posudu možemo zaključiti kako algoritam neće dodavati novu posudu ako postoji napola puna posuda a objekt koji dodajemo je manji od V/2. Samo ako je posuda popunjena za više od pola i ako je novi objekt ne može stati u posudu posuda će biti dodana. Ne može se dogoditi situacija u kojoj je trenutna posuda popunjena s manje od V/2, a da se započne koristi nova posuda koja se popunjava s objektom manjim od V/2. Svaka nova posuda biti će uvijek popunjena s objektom koji je veći ili jednak od vrijednosti V/2 i to samo ako je zadnja upotrjebljena posuda već napola puna, pa je će ukupni nepopunjeni dio zadnje dvije upotrjebljene posude uvije biti manji od V. 4.3 Problem dvodimenzionalnog pakiranja u posude U dvodimenzionalnom pakiranju zadani su: beskonačno velik broj pravokutnih posuda širine W i visine H i skup od n pravokutnih objekata širine wj <= W i visine hj <= H, za 1 <= j <= n. Potrebno je pospremiti bez preklapanja objekte u minimalni broj pravokutnih posuda, a objekti se ne smiju rotirati. Većina heurističkih algoritama za problem dvodimenzionalnog pakiranja u posude su pohlepnog (eng. greedy) tipa, i mogu se klasificirati u dvije grupe. Prvi su jednofazni algoritmi i oni pakiraju objekte direktno u posude. Dvofazni algoritmi započinju tako da pakiraju objekte u jednu traku odnosnu posudu koji ima određenu širinu i beskonačnu visinu. U drugoj fazi prethodno rješenja s trakom se koriste da bi se izvelo pakiranje u određene posude. 4.3.1 Heuristički pohlepni jednofazni algoritmi Većina heurističkih algoritama za dvodimenzionalni problem pakiranja u posude koriste polica. Pakiranje koje koristi police predstavlja pakiranje gdje se objekti stavljaju, s lijeva na desno, u redove koji se slažu na police. Prva polica je dno posude. Slijedeće razine su police koje se dobivaju horizontalnom crtom koja se poklapa s vrhom najvećeg objekta na prethodnoj polici. Tri su klasične strategije za takozvano „shelf“ pakiranje to jest pakiranje na police. Strategije su razvijene iz poznatih algoritama za jednodimenzionalni slučaj. Objekti se inicijalno sortiraju po visini (od najvišeg do najmanjeg) i pakiraju u odgovarajućem redoslijedu. Algoritmu je po potrebi dozvoljeno upotreba novo stvorene police. Jednofazni algoritmi koriste ove tri strategija: Next-Fit Decreasing Height (NFDH) First-Fit Decreasing Height (FFDH) Best-Fit Decreasing Height (BFDH) Ako je i trenutni objekt, a s zadnja kreirana polica, strategije možemo opisati na slijedeći način. 41 4.3.2 Strategije popunjavanja polica 4.3.2.1 Next-Fit Decreasing Height (NFDH) Slika 4.1 Primjer NFDH strategije NFDH strategija postupa tako da se objekt i stavlja najdalje lijevo što je moguće na polici s ako stane. Ako ne stane, radi se nova polica (s=s+1) i objekt se pakira u nju. 4.3.2.2 First-Fit Decreasing Height (FFDH) FFDH strategija postupa tako da se objekt i stavlja najdalje lijevo što je moguće na prvoj polici na koju stane. Ako ne stane u nijednu policu, radi se nova. Ovu strategiju koristi u prvoj fazi Hybrid First-Fit (HFF) dvofazni algoritam objašnjen dalje u tekstu. Slika 4.2 Primjer FFDH strategije 42 4.3.2.3 Best-Fit Decreasing Height (BFDH) Slika 4.3 Primjer BFDH strategije Izvor: [20] BFDH strategija postupa tako da se objekt i stavlja najdalje lijevo što je moguće na onoj polici od svih kreiranih, na koju stane objekt, a za koju je neiskorišteni prostor minimalan. Ako ne stane ni u jednu policu, radi se nova. Ovu strategiju koristi u prvoj fazi Finite/Hybrid Best Strip (FBS) dvofaznog algoritma objašnjenog dalje u tekstu. 4.3.3 Jedno-fazni algoritmi za rješavanje problema dvodimenzionalnog pakiranja u posude 4.3.3.1 Finite Next-Fit(FNF) FNF algoritam direktno stavlja objekte u posude sukladno strategiji NFDH i to na način kako je opisano u Algoritmu 1 Algoritam 1 Finite Next-Fit 1: for Svi objekti i = 1, 2, . . . , n 2: if Objekt i stane u trenutnu posudu 3: Pakiraj objekt i u trenutnu posudu 4: else 5: Kreiraj novu posudu, postavi je za trenutnu posudu, i pakiraj objekt i 6: end if 7: end for 43 4.3.3.2 Finite First-Fit (FFF) FFF koristi FFDH strategiju. Trenutni objekt se stavlja na najnižu policu prve police u koji stane, ako nijedna polica nije dovoljno velika, stvara se nova polica u prvoj odgovarajućoj posudi ili se stvar nova posuda kako je opisano slikom X i Algoritmom 2 Slika 4.4 Primjer FFF algoritma Algoritam 2 Finite First-Fit 1: for Svi objekti i = 1, 2, . . . , n učini 2: for sve posude j = 1, 2, . . . učini 3: if Objekt i stane u posudu j onda 4: Pakiraj objekt i u posudu j 5: Prekini petlju i pakiraj slijedeći objekt 6: end if 7: end for 8: if Objekt i nije stao u nijednu dostupnu posudu onda 9: Napravi novu posudu i pakiraj objekt i 10: end if 11: end for 4.3.3.3 Finite Best-Fit (FBF) FBF koristi BFDH strategiju. Za trenutni objekt se provjerava u koje police stane, te ga se stavlja u onu gdje će ostatak prostora biti minimalan (u odnosu na druge police u koje objekt stane). Ako nijedna polica nije dovoljno velika, otvara se nova posuda Algoritam 3 Finite Best-Fit 1: for Svi objekti i = 1, 2, . . . , n učini 2: for sve posude j = 1, 2, . . . učini 3: if Objekt i stane u posudu j onda 4: Izračunaj preostali kapacitet nakon što je objekt dodan 5: end if 6: end for 7: Pakiraj objekt i u posudu j, gdje je j posuda sa najmanje preostalog prostora nakon dodavanja objekta (tj. objekt „najbolje pristaje“ – best fit) 8: Ako takava posuda ne postoji, kreiraj novu posudu i dodaj objekt 9: end for 44 Oba algoritma (2 i 3) se mogu implementirati na način da im je za izvršavanje potrebno O(n ∗ log n) vremena. 4.3.4 Dvofazni algoritmi za rješavanje problema 2D pakiranja u posude 4.3.4.1 Hybrid Next-Fit (HNF) HNF koristi NFDH strategiju u prvoj fazi, tako da je jednodimenzionalni problem posuda riješen korištenjem Next-Fit Decreasing algoritma. On radi na slijedeći način: stavi trenutnu policu u trenutni posudu ako stane, a ako je kapacitet nedostatan otvori novu trenutnu posudu i stavi policu u nju. Zbog korištenja Next-Fit strategije ovaj algoritam je ekvivalentan jedno-faznom algoritmu u kojem se trenutni objekt stavi u trenutnu policu trenutne posude ako je moguće, a ako je kapacitet nedostatan radi se nova polica, bilo u trenutnoj posudi (ako ima dosta vertikalnog mjesta) ili u novoj trenutnoj posudi. Algoritam 4 Hybrid Next-Fit Prva faza: 1: for Svi objekti i = 1, 2, . . . , n učini 2: if Objekt i stane u trenutnu policu onda 3: Pakiraj objekt i u trenutnu policu 4: else 5: Kreiraj novu policu, postavi je za trenutnu, i pakiraj objekt i 6: end if 7: end for Druga faza: 1: for Sve police i = 1, 2, . . . , n učini 2: if Polica i stane u trenutnu posudu onda 3: Pakiraj policu i u trenutnu posudu 4: else 5: Kreiraj novu posudu, postavi je za trenutnu posudu, i pakiraj policu i 6: end if 7: end for 4.3.4.2 Hybrid First-Fit (HFF) U dvofaznom algoritmu Hybrid First-Fit (HFF) prvo se pronalazi rješenje koristeći strategiju FFDH. U drugoj fazi potrebno je dobivene police poredati po visinama na način da vrijedi odnos H1>H2>…>Hn. Konačno rješenje se dobiva heuristički rješavanjem jednodimenzionalnog problema pakiranja s visinama H1, H2 … Hn, gdje je Hn visina objekta, a visina H predstavlja kapacitete posuda. Ponovo se koristi FFDH strategija pakiranja tako da algoritam koristi prvu posudu i stavi u nju prvu policu, prelazi na slijedeću policu i tako stalno pokušava stavi trenutnu policu u prvu posudu u koju stane (ako takva postoji), ako polica ne stane u nijednu posudu kreira se nova posuda. 45 Slika 4.5 Primjer prve i druge faze HFF algoritma Algoritam 5 Hybrid First-Fit Prva faza: 1: for Svi objekti i = 1, 2, . . . , n učini 2: for Sve police j = 1, 2, . . . učini 3: if Objekt i stane u policu j onda 4: Pakiraj objekt i u policu j 5: Prekini petlju i pakiraj slijedeći objekt 6: end if 7: end for 8: if Objekt i nije stao u nijednu dostupnu policu onda 9: Napravi novu policu i pakiraj objekt i 10: end if 11: end for Druga faza: 1: for Sve police i = 1, 2, . . . , n učini 2: for Svi posude j = 1, 2, . . . učini 3: if Polica i stane u posudu j onda 4: Pakiraj policu i u posudu j 5: Prekini petlju i pakiraj slijedeću policu 6: end if 7: end for 8: if Polica i nije stala u nijednu dostupnu posudu onda 9: Napravi novu posudu i pakiraj policu i 10: end if 11: end for 46 4.3.4.3 Hybrid/Finite Best-Strip (FBS) FBS je jedna od varijacija HFF-a. Prva faza koristi BFDH strategiju. U drugoj fazi, jednodimenzionalni problem pakiranja posuda rješava se korištenjem Best Fit Decreasing algoritma. On radi na slijedeći način: stavi trenutnu policu u onu posudu u kojoj ima dostatno mjesta i gdje je neiskorišteni vertikalni prostor minimalan, ili otvori novu posudu ako nije moguće napraviti prethodni korak. Algoritam 6 Finite Best-Strip Prva faza: 1: for Svi objekti i = 1, 2, . . . , n učini 2: for Sve police j = 1, 2, . . . učini 3: if Objekt i stane u policu j onda 4: Izračunaj preostali kapacitet nakon što je objekt dodan 5: end if 6: end for 7: Pakiraj objekt i u policu j, gdje je j polica sa najmanje preostalog prostora nakon dodavanja objekta (tj. objekt „najbolje pristaje“ – best fit) 8: Ako takva polica ne postoji, napravi novu i dodaj objekt i 9: end for Druga faza: 1: for Sve police i = 1, 2, . . . , n učini 2: for Svi posude j = 1, 2, . . . učini 3: if Polica i stane u posudu j onda 4: Izračunaj preostali kapacitet nakon što je polica dodana 5: end if 6: end for 7: Pakiraj policu i u posudu j, gdje je j posuda sa najmanje preostalog prostora nakon dodavanja police (tj. polica „najbolje paše“ – best fit). 8: Ako takva posuda ne postoji, napravi novu i dodaj policu 9: end for Sva tri opisana hibridna algoritma mogu se implementirati tako da zahtijevaju O(n log n) vremena[referenca LODI phd]. Slijedeća algoritam ima sporije vrijeme računanja, ali je stoga efektivniji. 4.3.4.4 Floor-Ceiling (FC) Floor-Ceiling (FC) algoritam proširuje način na koji se objekti stavljaju na police. U ovom algoritmu strop police može biti i njen pod. Polica se dobiva kao i prije, tako da odgovara visini prvog (najvišeg) objekta smještenog u nju. Prethodni algoritmi su slagali objekte na pod police s lijeva u desno. Algoritam FC može slagati objekte s desna na lijeva sa njihovim vrhom na stropu police. Prvi objekt stavljen na strop police može biti samo onaj koji ne stane na pod. U prvoj fazi objekti se stavljaju na pod trenutne police, potom na strop trenutne police, te na pod slijedeće police sukladno s Best-Fit strategijom. U drugoj fazi police se stavljaju u posude, korištenjem Best-Fit Decreasing algoritma. Prva faza se može implementirati tako da zahtijeva O(n3) vremena, dok kompleksnost druge faze ovisi o izabranom algoritmu. 47 Slika 4.6 Primjer FC algoritma Algoritam 7 Floor-Ceiling Prva faza: 1: for Svi objekti i = 1, 2, . . . , n učini 2: if objekt i stane u trenutnu policu na pod onda 3: Pakiraj objekt i u trenutnu policu. 4: else if objekt i stane u trenutnu policu na strop onda 5: Pakiraj objekt i u trenutnu policu na strop 6: else kreiraj novu policu, postavi je za trenutnu i pakiraj objekt i 7: end if 8: end for Druga faza: 1: for Sve police i = 1, 2, . . . , n učini 2: for Svi Svi posude j = 1, 2, . . . učini 3: if Polica i stane u posudu j onda 4: Izračunaj preostali kapacitet nakon što je polica dodana 5: end if 6: end for 7: Pakiraj policu i u posudu j, gdje je j posuda sa najmanje preostalog prostora nakon dodavanja police (tj. polica „najbolje pristaje“ – best fit) 8: Ako takva posuda ne postoji, napravi novu i dodaj policu 9: end for 48 Problem raspoređivanja 5 Uvod Problem raspoređivanja (eng. scheduling) je proces odlučivanja u kojem pridjeljujemo pojedini resurs pojedinom zadatku u nekom vremenskom periodu. Rješenje problema predstavlja raspored koji poštuje ograničenja i daje što bolji rezultat ciljnih funkcija. Resursi mogu biti strojevi, posade ili skupine radnika, uzletno sletne staze zrakoplovnih luka, procesori računala i tako dalje. Zadaci mogu biti proizvodnja, operacije na gradilištu ili vožnje prometnih sredstava, slijetanja i polijetanja zrakoplova, programi na računalu i tako dalje. Ciljne funkcije mogu biti raznolike: skraćenje ukupnog vremena odnosno što ranijeg završetka zadnjeg zadatka u grupi zadatka koji su međuovisni ili pak smanjenje broja zadataka koji će se obavljati poslije nekog ciljnog datuma. Problem raspoređivanje star je već više od 70 godine kada je kao osnovi problem razmatran problem raspoređivanja poslove pojedinim strojevima u radionici ili (eng. Job shop scheduling, kratica JSS). Poslovi se pridjeljuju resursima prema vremenskom rasporedu pridruživanja. Neka je zadano je n zadataka J1,J2,…, Jn različitih trajanja, potrebno je rasporediti te zadatke na m istovrsnih strojeva. Ako promatramo primjer uzletno sletnih staza u zračnoj luci, poslovi su slijetanja i polijetanja zrakoplova, a strojevi su staze. Raspored pridjeljuje svakom letu svoju stazu u određenom vremenu. Ograničenja koja postoje su minimalna vremena i udaljenosti između pojedinih zadataka, a ciljna funkcija je smanjenje ukupnog kašnjenja. Postoji mnogo varijacija osnovnog problema raspoređivanja prvenstveno su vezana na ograničenja kada je zadan vremenski razmak između obavljanja poslova, kada poslovi ne moraju biti jednaki ili kada neki zadaci prethode drugima. Strojevi ne moraju biti jednaki, neki poslovi se mogu odraditi samo na pojedinim strojevima, a vremena izvršavanja istog posla ne moraju biti uvijek jednaka. 5.1 Matematička interpretacija problema Neka je dan skup: S = {3,1,1,2,2,1}. Ako želimo napraviti particiju ovog skupa na način da suma članova disjunktnih podskupova skupa S ima iste vrijednosti, onda za skup S možemo kazati da je rješenje problema particije su S1 = {1,1,1,2} i S2 = {2,3}. Particija je svaki rastav na disjunktne neprazne podskupove. Nekoliko particija za S={1,2,3} su na primjer {{1},{2,3}} {{1,2,3}} {{1},{2},{3}} Problem particije Problem particije glasi : Zadan je multiskup A={a1,a2,a3,…,an} od n pozitivnih cijelih brojeva. Treba odrediti da li postoji particija P od dva podskupa A1i A2 takva da je. ∑a = ∑a i∈A1 i i∈ A2 49 i Sam multiskup je objekt poput skupa u kojem se neki elementi mogu ponavljati. Primjer: Promatrajmo slijedeći problem za problem particije a1=2 , a2=5, a3=6 , a4=7 , a5=10 Odgovarajući problem rasporeda s minimalnim vremenom završetka glasi: t1=2 , t2=5, t3=6 , t4=7 , t5=10 Ne-preemptivni raspored za dva stroja : Ovakav raspored odgovara ovakvom rješenju za problem particije: {a2,a5} , {a1,a3, a4} 5.1.1 Problem raspoređivanja poslova na identične strojeve Neka su Pi, i=1,2,…, m identični strojevi (npr. procesori), a Ji, i=1,2,…, n nezavisni poslovi (npr. programi. Posao Ji zahtijeva vrijeme izvršavanja ti na bilo kojem stroju. Raspored (schedule) S je pridruživanja poslova strojevima. Za svaki posao Ji, S određuje vremenski interval (intervale) i stroj (strojeve) na kojima se posao treba izvršiti. Posao se ne može izvršiti na više strojeva istovremeno, već samo na jednom stroju u isto vrijeme. Neka je fi vrijeme završetka izvršavanja posla Ji .Srednje vrijeme završetka (eng. mean finish time, kratica MFT) rasporeda S definiramo: MFT ( S ) = 1 n ∑ fi n i =1 Neka je Tj vrijeme kad stroj Pj završava s izvršavanjem svih poslova (ili segmenata poslova) koji su mu pridruženi. Vrijeme završetka (eng. finish time, kratica FT) rasporeda S definiramo: FT ( S ) = max{T j } = max{ f i } 1≤ j ≤ m 1≤ i ≤ n 50 S je ne-preemptivni raspored ako se svaki posao Ji izvršava „u komadu” na istom stroju. S je preemptivni raspored ako se svaki posao Ji može „podijeliti” na segmente, a ti se segmenti mogu raspodijeliti na razne strojeve. Varijante optimizacijskih problema ovisno o vrsti rasporeda su s nepreemptivni rasporedom ili preemptivni rasporedom. Ciljnoj funkcije mogu biti minimizacija MFT-a srednjeg vremena završetka ili minimizacija FT-a minimalnog vremena završetka. 5.1.2 Raspoređivanje poslova na tekućoj vrpci Raspoređivanje poslova na tekućoj vrpci (eng. Flow Shop Scheduling) definairan je način da su zadani: n poslova od kojih svaki zahtjeva m zadataka (operacija) T1i, T2i, …, Tmi i=1,2,…,n Zadatak Tji mora se izvršiti na stroju (procesoru) Pj j=1,2,…m, vrijeme potrebno za izvršavanje zadatka Tji iznosi tij. Raspored S je pridruživanja zadataka vremenskim intervalima na strojevima zadatak, odnosno Tji mora se izvršiti na stroju Pj. Ni jedan stroj ne smije imati više od jednog pridruženog zadatka u isto vrijeme, a za svaki posao i izvršavanje zadatka Tji j>1 ne može početi prije nego što je izvršen zadatak Tj-1,i 5.1.3 Problem raspoređivanja (notacija) Zbog vrlo velikog broja varijacija problema raspoređivanja koristi se ova notacija simbolima. 51 5.1.3.1 Primjeri okolina α α ϵ {e, P, Q, R, F, O, J} e P Q R F O J jedan stroj identični paralelni strojevi (vrijeme izvršavanja zadatka nije ovisno o stroju na kojem se izvršava) uniformni paralelni strojevi (vrijeme izvršavanja zadatka je ovisno o stroju na kojem se izvršava) „unrelated” brzina stroja ovisi o zadatku koji mu je pridijeljen ali ne na uniformni način brzina stroja varira tekuća traka (redoslijed zadataka je nalik okolini tekuće trake) open shop okolina (ne postoje ograničenja nalik redoslijedu izvršavanja zadataka) job shop Za obavljanje svakog posla potrebno je više strojeva. Podaci koji opisuju proces: m broj strojeva n broj poslova pji vrijeme obrade posla i na stroju j pi vrijeme obrade posla i kada su svi strojevi identični Jedan stroj ili više paralelnih strojeva 1 Jedan stroj Pm m identičnih strojeva u paraleli Qm m paralelnih strojeva s različitim brzinama vi Rm m nepovezanih strojeva u paraleli Strojevi u slijedu Fm Tekuća traka (flow shop): svi poslovi se na strojevima obavljaju istim redoslijedom Jm „Poslovi u radionici” (job shop): svaki posao ima svoj redoslijed Om (open shop): svaki posao može se obaviti na svakom od strojeva bez ograničenja Karakteristike procesa i ograničenja 52 prmp preemptivni raspored prec slijedna ograničenja Mj ograničenja povezanosti pojedinih poslova i pojedinih strojeva Ciljna funkcija γ Cj vrijeme završetka pojedinog posla Lj kašnjenje= Cj – dj Tj zaostajanje = max(Lj, 0) Cmax = max {Cj} posljednje vrijeme završetka svih poslova u sustavu Lmax = max {Lj} Maksimalno zaostajanje 5.1.4 Linerani program za (Pm|prmp|Cmax) (Pm | prmp |Cmax ) Pm m strojeva prmp preemptivni raspored Cmax Cmax = max {Cj} posljednje vrijeme završetka svih poslova u sustavu Cilj je minimizirati Cmax = max {Cj}, posljednje vrijeme završetka svih poslova u sustavu. Varijabla xji predstavlja ukupno vrijeme obavljanja posla i m ∑x j =1 ji = pi i = 1,..., n Ukupno vrijeme obavljanja svakog od poslova manje je ili jednako Cmax m ∑x j =1 ji ≤ Cmax i = 1,..., n Ukupno vrijeme rada svakog od strojeva manje je ili jednako Cmax n ∑x i =1 ji x ji ≥ 0 ≤ Cmax j = 1,..., m j = 1,..., m i = 1,..., n 53
© Copyright 2024 Paperzz