OPTIMIZACIJA PROMETNIH PROCESA

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
22
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