Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku

Similar documents
Linearno programiranje i primjene

ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA. Šefket Arslanagić, Sarajevo, BiH

Algoritam za množenje ulančanih matrica. Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek

TEORIJA SKUPOVA Zadaci

Quasi-Newtonove metode

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU

KVADRATNE INTERPOLACIJSKE METODE ZA JEDNODIMENZIONALNU BEZUVJETNU LOKALNU OPTIMIZACIJU 1

Mathcad sa algoritmima

Projektovanje paralelnih algoritama II

Metode izračunavanja determinanti matrica n-tog reda

Mirela Nogolica Norme Završni rad

Geometrijski smisao rješenja sustava od tri linearne jednadžbe s tri nepoznanice

Hornerov algoritam i primjene

Nelder Meadova metoda: lokalna metoda direktne bezuvjetne optimizacije

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku DIOFANTSKE JEDNADŽBE

Šime Šuljić. Funkcije. Zadavanje funkcije i područje definicije. š2004š 1

LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE

Ivan Soldo. Sažetak. U članku se analiziraju različiti načini množenja matrica. Svaki od njih ilustriran je primjerom.

KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ URL:

pretraživanje teksta Knuth-Morris-Pratt algoritam

Formule za udaljenost točke do pravca u ravnini, u smislu lp - udaljenosti math.e Vol 28.

Nilpotentni operatori i matrice

Teorem o reziduumima i primjene. Završni rad

Ariana Trstenjak Kvadratne forme

Slika 1. Slika 2. Da ne bismo stalno izbacivali elemente iz skupa, mi ćemo napraviti još jedan niz markirano, gde će

Maja Antolović Algoritmi u teoriji brojeva

Sveučilište Josipa Jurja Strossmayera u Osijeku Odjel za matematiku

Tina Drašinac. Cramerovo pravilo. Završni rad

Metoda parcijalnih najmanjih kvadrata: Regresijski model

Fajl koji je korišćen može se naći na

Karakteri konačnih Abelovih grupa

NIZOVI I REDOVI FUNKCIJA

Simetrične matrice, kvadratne forme i matrične norme

Funkcijske jednadºbe

Neprekidan slučajan vektor

Pellova jednadžba. Pell s equation

KRITERIJI KOMPLEKSNOSTI ZA K-MEANS ALGORITAM

Metode praćenja planova

O aksiomu izbora, cipelama i čarapama

Uvod u relacione baze podataka

Red veze za benzen. Slika 1.

Metode rješavanja kvadratičnog problema pridruživanja

Strojno učenje. Metoda potpornih vektora (SVM Support Vector Machines) Tomislav Šmuc

Strojno učenje. Metoda potpornih vektora (SVM Support Vector Machines) Tomislav Šmuc

Matrične dekompozicije i primjene

Iterativne metode za rješavanje linearnih sustava

Matea Ugrica. Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni diplomski studij matematike i računarstva

Vektori u ravnini i prostoru. Rudolf Scitovski, Ivan Vazler. 10. svibnja Uvod 1

Sveučilište J.J.Strossmayera u Osijeku Odjel za matematiku. Sveučilišni preddiplomski studij matematike

Položaj nultočaka polinoma

Rekurzivni algoritmi POGLAVLJE Algoritmi s rekurzijama

Matrice traga nula math.e Vol. 26. math.e. Hrvatski matematički elektronički časopis. Matrice traga nula. komutator linearna algebra. Sažetak.

Uvod u numericku matematiku

Kvantitativne metode za poslovno odlučivanje IV. Linearno programiranje

PRIMJENA LINEARNOGA PROGRAMIRANJA NA PROBLEME PROMIDŽBE. Diplomski rad

Prsten cijelih brojeva

Osobine metode rezolucije: zaustavlja se, pouzdanost i kompletnost. Iskazna logika 4

PRIKAZ BALASOVOG ALGORITMA ZA 0-1 PROGRAMIRANJE

SITO POLJA BROJEVA. Dario Maltarski PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK. Diplomski rad. Voditelj rada: Doc. dr. sc.

Fibonaccijev brojevni sustav

1 Konveksni skupovi i konveksne funkcije

ALGORITAM FAKTORIZACIJE GNFS

Vedska matematika. Marija Miloloža

Iskazna logika 1. Matematička logika u računarstvu. oktobar 2012

ALGORITMI PODIJELI PA VLADAJ

Sortiranje podataka. Ključne riječi: algoritmi za sortiranje, merge-sort, rekurzivni algoritmi. Data sorting

Linearni operatori u ravnini

NTRU KRIPTOSUSTAV. Valentina Pribanić PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK. Diplomski rad

BROJEVNE KONGRUENCIJE

HRVATSKA MATEMATIČKA OLIMPIJADA

Matematika i statistika

Mostovi Kaliningrada nekad i sada

Matematika (PITUP) Prof.dr.sc. Blaženka Divjak. Matematika (PITUP) FOI, Varaždin

DISTRIBUIRANI ALGORITMI I SISTEMI

Grupiranje podataka u skupine 1 Rudolf Scitovski, Odjela za matematiku, Sveučilište u Osijeku 2

Uvod u analizu (M3-02) 05., 07. i 12. XI dr Nenad Teofanov. principle) ili Dirihleov princip (engl. Dirichlet box principle).

Sveučilište J.J. Strossmayera u Osijeku. Odjel za matematiku. David Komesarović. Mooreovi grafovi. Diplomski rad. Osijek, 2017.

BROWNOV MOST I KOLMOGOROV-SMIRNOVLJEVA STATISTIKA

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni nastavnički studij matematike i informatike. Sortiranje u linearnom vremenu

Konformno preslikavanje i Möbiusova transformacija. Završni rad

PARALELNI ALGORITMI ZA PROBLEM GRUPIRANJA PODATAKA

Turingovi strojevi Opis Turingovog stroja Odluµcivost logike prvog reda. Lipanj Odluµcivost i izraµcunljivost

Mersenneovi i savršeni brojevi

Sveučilište J.J. Strossmayera u Osijeku Odjel za matematiku. Velibor Gojić. Blok dizajni. Diplomski rad. Osijek, 2014.

Pitagorine trojke. Uvod

AKSIOME TEORIJE SKUPOVA

1. M.S. Shrikhande, S.S. Sane, Quasi-symmetric designs, Cambridge University

GENERALIZIRANI LINEARNI MODELI. PROPENSITY SCORE MATCHING.

AKSIOM IZBORA I EKVIVALENCIJE

Mehurasto sortiranje Brzo sortiranje Sortiranje učešljavanjem Sortiranje umetanjem. Overviev Problemi pretraživanja Heš tabele.

Kvaternioni i kvaternionsko rješenje kvadratne jednadžbe

POOPĆENJE KLASIČNIH TEOREMA ZATVARANJA PONCELETOVOG TIPA

Procjena funkcije gustoće

Zanimljive rekurzije

ANALYSIS OF THE RELIABILITY OF THE "ALTERNATOR- ALTERNATOR BELT" SYSTEM

Primjena optimizacije kolonijom mrava na rješavanje problema trgovačkog putnika

Razni načini zadavanja vjerojatnosti

Metrički prostori i Riman-Stiltjesov integral

Pogled u povijest razvoja algoritama

Nekoliko kombinatornih dokaza

Transcription:

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Mateja Dumić Cjelobrojno linearno programiranje i primjene Diplomski rad Osijek, 2014.

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Mateja Dumić Cjelobrojno linearno programiranje i primjene Diplomski rad Mentor: izv. prof. dr. sc. Domagoj Matijević Komentor: Ninoslav Čerkez, IN2 d.o.o. Osijek, 2014.

Sadržaj 1 Uvod 2 2 Problem linearnog programiranja 4 2.1 Osnovni pojmovi................................. 4 2.2 Poliedar u R n, ekstremna točka i bazično dopustivo rješenje......... 6 2.3 Simpleks metoda................................. 8 2.3.1 Tableau implementacija Simpleks metode................ 9 3 Cjelobrojno linearno programiranje 14 3.1 Tehnike modeliranja IP problema........................ 16 3.2 Jaka formulacija IP problema.......................... 18 4 Metode za rješavanje IP problema 21 4.1 Cutting plane algoritam............................. 21 5 Teorija složenosti 25 5.1 Problem svod enja i transformacije........................ 25 5.2 N P-teški i N P-potpuni problemi........................ 26 6 Problem optimalnog troška putovanja 29 6.1 Opis problema................................... 29 6.2 Modeliranje problema............................... 30 6.3 Varijable i oznake u modelu........................... 31 6.4 IP formulacija problema............................. 31 6.5 Rješavanje problema............................... 32 6.6 Arhitektura baze podataka............................ 33 6.7 Aplikacija..................................... 33 7 Literatura 35 8 Sažetak 36 9 Title and summary 37 10 Životopis 38 1

1 Uvod Linearno programiranje, kao jedna od metoda optimizacije, omogućava nam modeliranje svakodnevnih problema za koje je potrebno pronaći optimalno rješenje. Zbog mogućnosti da se veliki raspon problema zapiše u obliku problema linearnog programiranja (ili kraće: LP problema), metode za rješavanje ovih problema ubrzano se razvijaju od njegovih samih početaka. Problem linearnog programiranja dan je funkcijom više varijabli koju je potrebno optimizirati te uvjetima na te varijable. Područje koje čine sve one vrijednosti varijabli koje zadovoljavaju dane uvjete nazivamo dopustivo područje rješenja LP problema. Ponekad kao dopustivo područje rješenja za LP problem imamo neki diskretni skup, te nam rješenja ne mogu poprimiti bilo koji broj iz skupa realnih brojeva. Na primjer, ukoliko računamo koliko je potrebno radnika, a koliko strojeva da bi se optimizirala proizvodnja nekog proizvoda, onda nam ne odgovara dobiti racionalni broj radnika ili racionalni broj strojeva, a zaokruživanjem na manji ili na veći broj ne moramo nužno dobiti rješenje koje zadovoljava sve dane uvjete u što ćemo se i uvjeriti u radu. Općenito, u diskretnom optimizacijskom problemu tražimo x F, pri čemu je F diskretan skup, koji optimizira funkciju cilja f(x). Preciznije rečeno x predstavlja točku minimuma ili maksimuma funkcije f(x) ovisno promatramo li minimizacijski ili maksimizacijski problem, tj: f(x ) f(x), x F ili f(x ) f(x), x F. Diskretni problem optimizacije ima važnu ulogu u znanosti i inžinjerstvu, što ćemo imati priliku vidjeti kroz primjere dane u ovom radu. Logičan i sistematičan način proučavanja diskretnog problema optimizacije leži u iskazivanju tog problema u obliku cjelobrojnog linearnog programiranja (integer linear programming, u daljnjem tekstu: IP) koje je središnja tema proučavanja ovog rada. Cjelobrojno linearno programiranje zapravo predstavlja specijalni slučaj linearnog programiranja, te kako bi ga uopće mogli definirati prvo ćemo uvesti odred ene definicije i tvrdnje vezane uz samo linearno programiranje te se pobliže upoznati sa simpleks metodom, kao jednom od metoda koja u praksi daju dobre rezultate prilikom rješavanja LP problema. Osim toga, vidjet ćemo da odred ene tvrdnje koje nam olakšavaju rješavanje LP problema, zbog diskretnosti dopustivog područja rješenja IP problema nisu primjenjive prilikom rješavanja IP problema. Ta činjenica, kao i činjenica nepostojanja algoritma za rješavanje IP problema u polinomijalnom vremenu, će nas dovesti do zaključka da su IP problemi teži od LP problema te do definiranja nove klase unutar teorije složenosti: klase N P-teških problema. Pripadnost nekog problema klasi N P-teških problema predstavlja svojevrsno ograničenje jer ne možemo sa sigurnošću tvrditi da je moguće pronaći algoritam koji će uspjeti pronaći rješenje za te probleme, no ona za sobom ne povlači nužno i nerješivost problema. Naprotiv, postoje mnoge metode koje u praksi vrlo lako rješavaju takve probleme pri tom dajući rješenja koja su prihvatljiva u praktične svrhe. Neke od takvih metoda za rješavanje IP 2

problema ćemo spomenuti u ovom radu, a detaljnije obraditi cutting plane metodu koja se ubraja u takve. U radu ćemo modelirati i jedan od problema iz svakodnevnog života, a koji se može modelirati pomoću IP problema. Radi se o problemu odred ivanja optimalnog broja prijevoznih sredstava potrebnih za prijevoz djelatnika neke firme na službeni put u cilju optimiziranja putnih troškova. Prilikom modeliranja ovog problema bilo je važno pronaći model koji ispunjava sve zahtjeve, a ujedno ne sadrži preveliki broj varijabli, kako bi problem bio rješiv u prihvatljivom vremenu. Sam rad je podijeljen na nekoliko djelova. U prvom djelu rada susrest ćemo se s pojmovima koju su vezani općenito uz linearno programiranje, a koji su nam potrebni za detaljnije proučavanje cjelobrojnog linearnog problema. Zatim, u drugom djelu upoznat ćemo se s cjelobrojnim linearnim programiranjem kao specijalnim oblikom linearnog programiranja, tehnikama za modeliranje takvih problema te pokušati otkriti kako dobro formulirati problem cjelobrojnog linearnog problema. Treći dio nam donosi metode koje se koriste za rješavanje cjelobrojnih problema te se detaljnije bavi s jednom od njih. Metoda koja je detaljnije obrad ena u radu je cutting plane algoritam koji predstavlja svojevrsno rezanje, odnosno smanjivanje dopustivog područja rješenja sve dok se ne pronad e optimalno cjelobrojno rješenje. U zadnjem teorijskom djelu pobliže ćemo razmotriti činjenicu da su problemi cjelobrojnog programiranja općenito teško rješivi problemi. U posljednjem poglavlju ovog rada opisan je jedan konkretni problem koji je moguće modelirati i riješiti kao problem cjelobrojnog linearnog programiranja. Problem koji je iznesen je problem optimalnog troška putovanja prilikom odlaska djelatnika na službena putovanja. Formulacija ovog problema kao i rješenje dano u obliku web aplikacije rad eni su u suradnji s kolegicom Rebekom Čordaš pod vodstvom mentora izv. prof. dr. sc. D. Matijevića, dok ideja samog problema dolazi od strane kompanije IN2. 3

2 Problem linearnog programiranja Linearno programiranje je optimizacijska metoda kojom se traži optimalna vrijednost linearne funkcije više varijabli uz odred ene uvjete na te varijable. Svoje početke doživljava za vrijeme Drugog svjetskog rata gdje se razvija zbog potrebe minimizacije troškova vojske. Osobiti razvoj doživljava nakon otkrića Simpleks metode (Dantzig, 1947.), numeričke metode za rješavanje linearnog problema, koja i danas predstavlja osnovnu metodu za rješavanje problema linearnog programiranja. Razvojem računala, koja su uvelike ubrzala rješavanje linearnog problema, linearno programiranje postaje jedna od nezaobilaznih metoda prilikom rješavanja problema optimizacije (npr. problem transporta, optimalne prehrane, problem potrošnje energije i sl.). U ovom poglavlju donosimo osnovne definicije i tvrdnje vezane uz linearno programiranje, koje će nam kasnije omogućiti detaljnije proučavanje problema cjelobrojnog programiranja. 2.1 Osnovni pojmovi Za početak definirajmo problem linearnog programiranja: Definicija 1. Optimizacijski problem: uz uvjete: f(x) = c τ x min (i) a τ i x b i, i M 1 (ii) a τ i x b i, i M 2 (iii) a τ i x = b i, i M 3 pri čemu je f : R n R te c R n, a i R n, b i R, i M N, M skup indeksa za koji vrijedi M 1 M 2 M 3 = M i M i Mj, i j zovemo problem linearnog programiranja (kraće: LP problem). Funkciju f zovemo funkcija cilja, a vektor c vektor cijene. Vektor x R n sa svojstvima (i) (iii) zovemo dopustivo rješenje. Skup svih dopustivih rješenja zovemo dopustivo područje. Za dopustivo rješenje kažemo da je optimalno dopustivo rješenje ako je: f(x ) = c τ x c τ x = f(x) 4

Napomena 2.1. Uočimo kako vrijedi sljedeće: (i) maksimizacijski problem c τ x max može se svesti na minimizacijski problem c τ x min (ii) a τ i x = b i (a τ i x b i ) (a τ i x b i ) (iii) a τ i x b i a τ i x b i (iv) Svaki LP problem može se zapisati kao: c τ x min uz uvjete: Ax b pri čemu je A R m n, x R n, b R m, c R n te n broj varijabli, a m broj uvjeta. Definicija 2. Ako su A R m n, b R m, c R n onda se minimizacijski problem: c τ x min uz uvjet: Ax = b, x 0 zove standardni oblik LP problema ili kraće: SOLP. Uvjet x 0 zovemo uvjet nenegativnosti. Propozicija 2.2. Svaki LP problem može se prikazati kao SOLP. Ako neka varijabla ne zadovoljava uvjet nenegativnosti onda je zovemo slobodna varijabla. U skladu s definicijom SOLP-a zaključujemo da u SOLP-u nema slobodnih varijabli. 5

2.2 Poliedar u R n, ekstremna točka i bazično dopustivo rješenje Definicija 3. Neka su A R m n, b R m. Skup zovemo poliedar u R n. {x R n : Ax = b, x 0} R n Definicija 4. Neka je a R n, a 0, b R. Skup {x R n : a τ x = b} zovemo hiperravnina s vektorom normale a. Definicija 5. Neka je P poliedar u R n. Vektor x P je ekstremna točka poliedra P ako ne postoje vektori y, z P, y x i z x i skalar λ [0, 1] takvi da je x = λy + (1 λ)z. Ekstremnu točku interpretiramo kao onu točku poliedra koja se ne može zapisati kao netrivijalna kombinacija točaka iz poliedra, odnosno ako neka točka leži na segmentu neke dvije točke sadržane u poliedru tada ta točka nije ekstremna točka. Definicija 6. Neka je P poliedar iz R n. Vektor x R n je vrh poliedra ako postoji c R n takav da je c τ x < c τ y za y P takav da y x. Vrh poliedra je ona točka poliedra kroz koju možemo odrediti hiperravninu sa svojstvom da se sve točke poliedra osim nje same nalaze s iste strane hiperravnine. Kako bi definirali bazično i bazično dopustivo rješenje potrebne su nam sljedeće dvije definicije: Definicija 7. Ako za vektor x vrijedi a τ i 0 x = b i0 za neki i 0 M, gdje je M skup indeksa, onda kažemo da je uvjet s indeksom i 0 aktivan u x. Indeks i 0 zovemo aktivni indeks. Definicija 8. Za vektore a 1, a 2,, a k kažemo da su linearno nezavisni ako za sve skalare λ 1,, λ k R vrijedi: λ 1 a 1 + λ 2 a 2 + + λ k a k = 0 λ 1 = = λ k = 0. U suprotnom kažemo da su vektori a 1, a 2,, a k linearno zavisni. Definirajmo sada i bazično i bazično dopustivo rješenje: Definicija 9. Neka je P poliedar u R n zadan na sljedeći način: a τ i x b i, i M 1 a τ i x b i, i M 2 a τ i x = b i, i M 3 te neka je I = {i M 1 M 2 M 3 : a τ i x = b i } skup indeksa aktivnih u vektoru x R n. 6

za vektor x R n kažemo da je bazično rješenje (kraće: BR) ako vrijede sljedeća dva uvjeta: (i) svi uvjeti koji sadrže jednakosti aktivni su u x (ii) skup {a i : i I} sadrži n linearno nezavisnih vektora bazično rješenje x R n koje zadovoljava sve uvjete zovemo bazično dopustivo rješenje (kraće: BDR). Sljedeći teorem nam donosi poveznicu izmed u vrha i ekstremne točke poliedra te bazičnog dopustivog rješenja. Teorem 2.3. Neka je P poliedar i neka je x P. Sljedeće tri tvrdnje su ekvivalentne: (i) x je vrh poliedra (ii) x je ekstremna točka poliedra (iii) x je bazično dopustivo rješenje Kako bi mogli konstruirati bazično dopustivo rješenje potrebne su nam još neke definicije i tvrdnje. Neka je zadan poliedar: P = {x R n : Ax = b, x 0}, A R m n, b R m, m < n. Pretpostavimo da je rang(a) = m < n 1, odnosno da je matrica punog ranga 2 i neka je x bazično dopustivo rješenje. Kako je x R n odnosno ima n komponenti zaključujemo kako i uvjeta nenegativnosti ima n, dok sustav linearnih jednadžbi Ax = b se sastoji od m jednadžbi. Prema definiciji BDR-a treba postojati n linearno nezavisnih uvjeta koji su aktivni u x. Zbog definicije poliedra svi uvjeti Ax = b moraju biti zadovoljeni, čime dobivamo m aktivnih indeksa u x pa zaključujemo da med u uvjetima nenegativnosti mora biti n m aktivnih indeksa, odnosno vektor x mora imati n m komponenti jednakih 0. Teorem 2.4. Neka je P = {x R n : Ax = b, x 0}, A R m n, b R m, m < n te rang(a) = m. Vektor x R n je bazično rješenje onda i samo onda ako je Ax = b te ako postoje indeksi B(1), B(2)..., B(m) takvi da vrijedi: (i) stupci A B(1),..., A B(m) su linearno nezavisni (ii) ako je i / {B(1),..., B(m)}, onda je x i = 0. 1 rang(a) je oznaka za rang matrice i predstavlja broj linearno nezavisnih stupaca matrice 2 matrica je punog ranga ako je broj linearno nezavisnih stupaca jednak broju linearno nezavisnih redaka 7

Procedura za konstrukciju bazičnog rješenja (i) odabrati m linearno nezavisnih stupaca matrice A, označimo ih s A B(1),..., A B(m) (ii) staviti x i = 0, i / {B(1),..., B(m)} (iii) riješiti sustav: pri čemu je: Bx B = b B = [ ] A B(1),..., A B(m), xb = x B(1). x B(m) (iv) vektor x = [x 1,..., x n ] τ { 0, j / {B(1),..., B(m)} x j = x B(i), j = B(i) je bazično rješenje. Varijable x B(1),..., x B(m) nazivamo bazičnim varijablama, vektore A B(1),..., A B(m) bazičnim vektorima, a indekse B(1),..., B(m) bazičnim indeksima. Matrica B predstavlja matricu baze. Uvedimo još definiciju degenerativnog bazičnog rješenja. Definicija 10. Neka je P = {x R n : a τ i x b i, i = 1,..., m}. Za bazično rješenje x R n kažemo da je degenerativno ako je više od n uvjeta aktivno u x. Definicija 11. Neka je P = {x R n : Ax = b, x 0}, A R m n, b R m poliedar u standardnom obliku te neka je x bazično rješenje. Vektor x je degenerativno bazično rješenje ako je više od n m komponenti od x jednaka 0. 2.3 Simpleks metoda Simpleks metoda je jedna od metoda za rješavanje LP problema. Ubraja se u numeričke iterativne metode, a razvio ju je George Dantzig krajem 20. stoljeća. Prilikom rješavanja LP problema kreće se od početnog bazičnog rješenja, koje mora biti dopustivo, te koje se kroz niz koraka (iteracija) poboljšava dok se ne postigne optimalno rješenje u skladu s postavljenim ciljevima. 8

Neka je P = {x R n : Ax = b, x 0} R n poliedar te neka je zadan LP problem: c τ x min uvjeti: Ax = b, x 0. Osnovna ideja simpleks metode dana je sljedećim algoritmom: Algoritam - Simpleks metoda (i) odaberimo jedno BDR (ii) ponavljati: provjeriti sve bridove poliedra P koji izlaze iz odabranog BDR-a ako: postoji brid po kojem možemo smanjiti vrijednost funkcije cilja idemo po tom bridu sve dok ne dod emo do sljedećeg BDR-a, ako takvo BDR ne postoji poliedar je neomed en i vrijednost funkcije cilja je inače: vrati BDR Brojni su načini za implementaciju simpleks metode. Neki od njih su korištenje sustava ograničavajućih jednadžbi (dopustivost i optimalnost) 3 te tableau implementacija koju ćemo u kratkim crtama obraditi u ovom radu. 2.3.1 Tableau implementacija Simpleks metode Neka su A R m n, b R m i neka je zadan LP problem u SOLP obliku: c τ x min uvjeti: Ax = b, x 0, x R n. Označimo s B R m m pripadnu matricu baze nekog BDR-a. regularna. Osim toga vrijedi: Znamo da je tada B Ax = b B 1 Ax = B 1 b. Proširenu matricu B 1 [b A] R m (n+1), kojom zapisujemo uvjete LP problema nazivamo simplex tablaeu. Stupac B 1 b se naziva nulti redak simplex tablaeua, a stupci B 1 A j, j 1,..., m predstavljaju j-ti stupac tablaeua. Simplex tablaeu se obično dodaje tzv. nulti redak [ c τ B B 1 b, c τ c τ B B 1 A] te dobivamo prošireni tablaeu: 3 detaljnije: pogledati u [1] 9

c τ B B 1 b B 1 b c τ c τ B B 1 A B 1 A Vektor c τ c τ B B 1 A nazivamo vektor utjecaja. Na osnovu sljedećeg teorema, a pomoću vektora utjecaja, možemo zaključiti kada je simpleks tablaeu završen, odnosno kada je pronad eno optimalno rješenje. Teorem 2.5. Neka je x bazično dopustivo rješenje, a B odgovarajuća matrica baze i c vektor utjecaja (i) ako je c 0, onda je x optimalno rješenje (ii) ako je x optimalno i nedegenerativno rješenje, onda je c 0. Rješavanje simplex tablaeua je iterativni postupak, a jedna iteracija je dana sljedećim postupkom. 1. pronaći nedegenerativno BDR, pripadnu matricu baze B te izračunati pripadni simplex tablaeu 2. pogledati vektor utjecaja, ukoliko su mu sve komponente pozitivne tada smo dobili optimalno rješenje, a inače odabrati indeks j takav da je j-ta komponenta c j vektora utjecaja negativna. 3. pregledati j-ti stupac tablaeua u = B 1 A j, koji nazivamo pivot stupac, ukoliko su mu sve vrijednosti negativne, tada je optimalna vrijednost funkcije cilja i algoritam završava x 4. pronaći indeks l takav da je: argmin B(i) ui >0,i=1,...,m u i, tada stupac A B(l) izlazi iz baze, a umjesto njega u bazu ulazi stupac A j. 5. l-ti redak, kojeg zovemo pivot redak potrebno je pomnožiti sa skalarom takvim da element koji se nalazi na presjeku pivot retka i pivot stupca (pivot element) postane 1, ostalim recima je potrebno dodati pivot redak pomnožen s takvim skalarom da svi elementi pivot stupca, osim pivot elementa nakon toga postanu 0. Uočimo kako u gornjem postupku nije točno odred eno koji stupac odabrati ukoliko postoji više negativnih komponenti vektora utjecaja. Ukoliko dod e do krivog odabira simpleks metoda ne mora završiti u konačnom broju koraka. Kako bi se to izbjeglo koristi se tzv. Blandovo pravilo koje glasi: 1. Med u svim nebazičnim varijablama pogodnim za ulazak u bazu, odabiremo onu s najmanjim indeksom 10

2. Med u svim bazičnim varijablama pogodnim za izbacivanje iz baze odabiremo onu s najmanjim indeksom. Da se tada radi o dobrom izboru jamči nam sljedeći teorem: Teorem 2.6. Ako krenemo od nedegenerativnog BDR-a i koristimo Blandovo pravilo simpleks metoda će završiti u konačno mnogo koraka. Riješimo jedan LP problem pomoću simpleks tablaeua. Primjer 2.1. Pronad i optimalno rješenje sljedećeg LP problema: x 1 2x 2 min 4x 1 + 6x 2 9 x 1 + x 2 4 x 1, x 2 0 Rješenje: Prvo zapišimo dani LP problem u SOLP obliku: x 1 2x 2 min 4x 1 + 6x 2 + x 3 = 9 x 1 + x 2 + x 4 = 4 x 1, x 2, x 3, x 4 0 Odnosno ukoliko zapišemo LP problem u obliku: c τ x min Ax = b, x 0 imamo: [ ] [ ] 4 6 1 0 9 A =, b =, c τ = [ 1 2 0 0 ] 1 1 0 1 4 Za početno bazično dopustivo rješenje uzmimo x = (0, 0, 9, 4). Pripadna matrica baze je: [ 1 ] 0 B = 0 1 = I Dobivamo sljedeći simpleks tablaeu: 11

0 1-2 0 0 x 3 = 9-4 6 1 0 x 4 = 4 1 1 0 1 Vidimo da je jedino druga komponenta vektora utjecaja negativna tako da je drugi stupac pivot stupac, oba elementa pivot stupca su pozitivna pa računanjem omjera zaključujemo da je prvi redak pivot redak. Stoga u bazu nam ulazi x 2 a izlazi x 3. Pivot redak treba pomnožiti s 1/6, te nakon toga pomnožen s 2 dodajemo nultom retku odnosno pomnožen s 1 drugom retku. Nakon navedenih operacija, simpleks tablaeu ima sljedeće vrijednosti: 3-1 3 0 1 3 0 x 2 = 3 2-2 3 1 1 x 4 = 5 2 6 0 5 0-1 1 3 6 Vektor utjecaja opet ima samo jednu negativnu komponentu pa lako zaključujemo da je pivot stupac prvi stupac, a kako u tom stupcu je samo jedan element pozitivan zaključujemo da je pivot redak drugi redak. U skladu s tim iz baze izlazi x 4, a ulazi x 1. Pivot redak pomnožimo s 3/5, a zatim pomnožen s 1/3 dodamo nultom stupcu, odnosno s 2/3 prvom stupcu. Dobivamo sljedeći tablaeu: 7 3 0 0 2 10 x 2 = 5 2 0 1 1 10 x 1 = 3 2 1 0-1 10 1 5 2 5 3 5 Uočimo kako vektor utjecaja ima sve komponente pozitivne, što znači da je algoritam završio. Optimalno rješenje, dano u polaznim varijablama je: x = (3/2, 5/2), a vrijednost funkcije cilja iznosi 7/2. Za kraj odredimo još vremensku složenost simpleks metode implementirane preko tablaeua. U svakoj iteraciji potrebno je izračunati vrijednosti tableau. Ukoliko pretpostavimo da se problem sastoji od n varijabli i m uvjeta, tada se simpleks tablaeu sastoji od (m + 1) (n + 1) polja, odnosno za izračun vrijednosti tablaeua potrebno je O (mn) vremena. Zatim, potrebno je proći kroz nulti redak tablauea i provjeriti postoji li negativna komponenta unutar vektora utjecaja te odrediti pivot stupac primjenjujući pri tom Blandovo pravilo. Za navedene radnje potrebno je O (n) vremena. Nakon odred ivanja pivot stupca, potrebno je obaviti O (m) izračuna kako bi se odredio pivot redak. Zaključujemo da unutar jedne iteracije simpleks metode je potrebno O (mn) + O (m) + O (n) = O (mn) vremena. Potrebno je još odrediti broj ponavljanja iteracija, odnosno broj pivotiranja. Najbolji slučaj bi bio onaj u kojem smo krenuli od optimalnog BDR-a, odnosno simpleks metoda bi završila već nakon izračuna prvog tablaeua, dok najgori slučaj je onaj u kojem je potrebno 12

proći kroz sve vrhove poliedra kako bi došli do optimalnog rješenja. Da uistinu postoji problem u kojem će doći do slučaja kada će se posjetiti svi vrhovi prije pronalaska onog optimalnog dokazali su Klee i Minty. Naime, Klee i Minty su 1972. godine uspjeli konstruirati primjer u kojem poliedar definiran uvjetima problema ima eksponencijalno mnogo vrhova te u kojem je potrebno posjetiti sve vrhove kako bi se došlo do optimalnog rješenja (vidi [2]). Kako poliedar ima eksponencijalno mnogo vrhova, i kako se prilikom rješavanja problema posjeti svaki od njih, zaključujemo da broj ponavljanja jedne iteracije simpleks metode takod er eksponencijalan te time da je i vrijeme izvršenja algoritma eksponencijalno. Zbog mogućnosti pronalaska takvih primjera, simpleks algoritam spada u klasu algoritama s eksponencijalnim vremenom izvršenja. No bitno je napomenuti da su takvi primjeri u praksi vrlo rijetki, te da simpleks algoritam u praksi ima vrlo dobre performanse. 13

3 Cjelobrojno linearno programiranje Cjelobrojno linearno programiranje je oblik linearnog programiranja u kojem su neke varijable restringirane na cjelobrojne vrijednosti. S obzirom na restrikcije na odred ene varijable razlikujemo problem mješovitog cjelobrojnog programiranja i problem cjelobrojnog programiranja. Definicija 12. Neka su dane matrice A, B R m n, i vektori c, d R n, b R m tada problem: c τ x + d τ y min uz uvjete: Ax + By = b x, y 0, x Z n, y R n nazivamo problem mješovitog cjelobrojnog programiranja (ili kraće: MILP). Vektor y iz definicije 12 nazivamo još i kontinuirana varijabla, te ukoliko ona ne postoji problem mješovitog cjelobrojnog programiranja prelazi u problem cjelobrojnog programiranja. Pa dolazimo do sljedeće definicije: Definicija 13. Neka je dana matrica A R m n i vektori c R n, b R m. Tada problem: c τ x min uz uvjete: Ax = b x 0, x Z n nazivamo problem cjelobrojnog programiranja (ili kraće: IP). Ukoliko vektor x iz definicije 13 postiže isključivo vrijednosti 0 ili 1 tada taj problem nazivamo binarni problem cjelobrojnog programiranja (eng. zero-one or binary integer programming ili skraćeno ZOIP). Osim toga uobičajena je i pretpostavka da matrice A, B, te vektori b, c, d iz definicija 12 i 13 imaju cjelobrojne komponente. S obzirom da je skup mogućih rješenja problema binarnog i cjelobrojnog linearnog programiranja manji lako bi se moglo pomisliti da se ti problemi rješavaju barem toliko efikasno koliko problemi linearnog programiranja ako ne i lakše. No nažalost to nije tako. Iako se na prvi pogled čini da mogućih rješenja LP problema ima beskonačno mnogo, odnosno da rješenje može biti bilo koja točka unutar dopustivog područja, u prethodnom poglavlju smo već napomenuli kako optimalno rješenje nekog LP problema je nužno i vrh poliedra 14

odred enog uvjetima promatranog problema (vidi teorem 2.3 ) te je stoga potrebno ispitati samo vrhove tog poliedra. Osim toga, ukoliko imamo dvije točke koje su dopustive, onda bilo koja točka koja se nalazi na njihovoj poveznici je dopustiva (jer je svaki poliedar P iz R n konveksan 4 skup) 5. Prilikom rješavanja LP problema, kao brid po kojem ćemo se kretati prema sljedećem BDR-u odabiremo onaj koji smanjuje vrijednost funkcije cilja što nam dodatno olakšava pronalazak optimalnog rješenja. No situacija s IP problemima je znatno različita. Promotrimo to na sljedećem jednostavnom IP problemu: 2x 1 x 2 min uz uvjete: 3x 1 + 2x 2 20 2x 1 + 3x 2 16 x 1, x 2 0, x 1, x 2 Z. Dopustivo područje ovog IP problema na slici 3.1 prikazano je u osjenčanom djelu pomoću rombova koji predstavljaju točke s cjelobrojnim komponentama. Slika 3.1: Dopustivo područje zadanog IP problema 4 skup K je konveksan ukoliko za svaki x, y K i svaki λ (0, 1) vrijedi λx + (1 λ) y K 5 dokaz ove tvrdnje je dan u [1] 15

Prvo što uočavamo je postojanje vrhova poliedra koji nisu cjelobrojni, točnije samo vrh (0, 0) je cjelobrojan no on nije optimalno rješenje jer funkcija cilja npr. u točki (1, 1), koja je dopustiva, postiže manju vrijednost. Stoga zaključujemo da provjerom vrijednosti funkcije cilja samo u vrhovima ne dolazimo do rješenja IP problema, štoviše ne postoji neka generalna tvrdnja koja nam otkriva lokaciju optimalnog rješenja ili znatno smanjuje potragu za njim kao što to čini tvrdnja teorema 2.3 u rješavanju LP problema. Nadalje, cijela poveznica dviju dopustivih točaka IP problema nije sadržana u dopustivom području, koje kod IP problema nije konveksan skup, što znači da je potrebno prvo otkriti cjelobrojne točke problema te se kretati isključivo po skupu pronad enih točaka kako bi se očuvala dopustivost rješenja, no uzorak za takvo kretanje nije uvijek lako pronaći. Jedna od ideja koja bi nam se mogla javiti za rješavanje IP problema je zasigurno sljedeća: prvo riješiti LP problem izveden iz IP problema na način da je izostavljen uvjet cjelobrojnosti na varijable, te rješenje takvog problema zaokružiti na cjelobrojne vrijednosti. No, ukoliko taj način razmišljanja primjenimo na prethodni primjer lako ćemo utvrditi da on ne dovodi do optimalnog rješenja. Naime, optimalno rješenje danog problema u kojem je izostavljen uvjet cjelobrojnosti je točka (20/3, 0). Uočavamo da je druga komponenta cjelobrojna, te da je zaokruživanje potrebno napraviti samo na prvoj. Ukoliko prvu komponentu zaokružimo na 7 dobivamo točku (7, 0) koja nije dopustiva, a ako zaokružimo na 6 dobivamo točku (6, 0) koja iako je dopustiva nije optimalno rješenje jer funkcija cilja danog IP problema u točki (6, 1), koja je ujedno i optimalna za ovaj IP problem, postiže manju vrijednost. Iz gornjeg razmatranja možemo zaključiti kako je rješavanje cjelobrojnog i binarnog programiranja općenito teže i zahtjevnije od rješavanja problema linearnog programiranja. Jedini slučaj u kojem je rješavanje problema cjelobrojnog programiranja jednako teško kao i rješavanje linearnog problema je onda kada LP problem izveden iz danog IP problema na način da je jedino izostavljen uvjet cjelobrojnosti varijabli, daje cjelobrojno rješenje. U tom slučaju optimalno rješenje LP problema je ujedno i rješenje IP problema jer takvo rješenje zadovoljava i izostavljeni uvjet. No taj slučaj je u praksi, kako je i za očekivati, vrlo rijedak. 3.1 Tehnike modeliranja IP problema Važna upotreba binarnog linearnog programiranja je u modeliranju problema izbora izmed u dvije alternative. Komponenta optimalnog rješenja x može biti postavljena na 0 ili 1 ovisno o odabiru alternative. Primjer 3.1. 0 1 ruksak problem Na raspolaganju imamo n stvari, j-ta stvar ima težinu w j i vrijednost c j. Potrebno je u ruksak spremiti stvari čija ukupna težina ne prelazi K, a koje daju najveću moguću ukupnu vrijednost spremljenog u ruksak. 16

Rješenje: U svrhu modeliranja ovog problema definiramo binarnu varijablu x j koja poprima vrijednost 1 ukoliko je j-ta varijabla odabrana, a inače 0. Tada problem možemo formulirati na sljedeći način: n c j x j max uz uvjete: j=1 n w j x j K j=1 x j {0, 1}, j = 1,... n. U diskretnim problemima optimizacije česta pojava su uvjeti koji su med usobno zavisni. Na primjer, odluka A može biti donesena jedino ako je odluka B donesena. Kako bi modelirali takvu situaciju uvodimo binarnu varijablu x, odnosno y, koja poprima vrijednost 1 ukoliko je donesena odluka A, odnosno odluka B, a inače je 0. Tada ovisnost tih dviju odluka modeliramo uvjetom: x y. Razmotrimo ispravnost gornjeg uvjeta: ukoliko je y = 0 (tj. odluka B nije donesena) tada je zasigurno i x = 0 odnosno odluka A ne može biti donesena, a ako je y = 1 tada x = 0 ili x = 1 što znači da odluka A može i ne mora biti donesena. Primjer 3.2. (Problem lokacije postrojenja) Pretpostavimo da imamo n potencijalnih lokacija postrojenja i listu od m klijenata koje je potrebno opskrbiti iz tih postrojenja. Osim toga, poznati su trošak otvaranja postrojenja na lokaciji j i on iznosi c j, te trošak opskrbe klijenta i iz postrojenja j koji iznosi d ij. Cilj je odabrati skup lokacija postrojenja koji minimizira ukupni trošak opskrbe, pod uvjetom da je svakom klijentu pridjeljeno točno jedno postrojenje koje će ga opskrbljivati. Rješenje: Kako bi modelirali ovaj problem, uvodimo binarnu varijablu y j koja iznosi 1 ako je j-ta lokacija odabrana, odnosno 0 ukoliko nije odabrana. Potrebno je uvesti i binarnu varijablu x ij koja je jednaka 1 ako se i-ti klijent opskrbljuje s j-te lokacije, odnosno 0 ako mu nije pridružena j-ta lokacija. Tada gornji problem možemo zapisati u sljedećem obliku: n c j y j + j=1 m n d ij x ij min i=1 j=1 17

uz uvjete: n x ij = 1, i j=1 x ij y j, i, j x ij, y j {0, 1}, i, j 3.2 Jaka formulacija IP problema U linearnom programiranju, dobra formulacija problema je ona koja ima mali broj varijabli i uvjeta, jer kompleksnost problema polinomijalno raste s porastom varijabli i uvjeta. No, zbog postojanja više efikasnih algoritama za rješavanje LP problema sama formulacija ne utječe drastično na mogućnost pronalaska rješenja. No kod cjelobrojnog linearnog programiranja situacija je prilično drugačija, te je od ključne važnosti odabir dobre formulacije. Zbog toga u ovom poglavlju će biti iznesene smjernice za jaku formulaciju cjelobrojnog linearnog programiranja. Kao ključni dio te formulacije uvest ćemo pojam relaksacije linearnog programiranja. Definicija 14. Neka je dan MILP: c τ x + d τ y min uz uvjete: Ax + By = b x, y 0, x Z n, y R n pri čemu su A, B R m n dane matrice, a c, d R n, b R m dani vektori. Relaksacija linearnog programiranja danog MILP-a se definira kao: c τ x + d τ y min uz uvjete: Ax + By = b x, y 0, x, y R n, gdje je relaksiran zahtjev da je vektor x cjelobrojan. Nadalje, ako je cjelobrojna varijabla x j iz MILP-a poprimala isključivo vrijednosti 0 i 1, tada je relaksacija na x j dana kao x j 0, 1. Napomena 3.1. Ukoliko je optimalno rješenje relaksacije linearnog programiranja dopustivo za MILP, tada je ono ujedno i njegovo optimalno rješenje. 18

Primjer 3.3. (Problem lokacije postrojenja - alternativna formulacija problema) U primjeru 3.2. susreli smo se s IP problemom lokacije postrojenja. Razmotrimo sada i alternativnu formulaciju ovog problema: n c j y j + j=1 m n d ij x ij min i=1 j=1 uz uvjete: n x ij = 1, i j=1 m x ij my j, j i=1 x ij, y j {0, 1} i, j Alternativna formulacija od one iz primjera 3.2 razlikuje se samo u drugom uvjetu, pa provjerimo jesmo li promjenom tog uvjeta narušili originalnu formulaciju. Ukoliko je y j = 0 uvjet m i=1 x ij my j j osigurava da su x ij = 0 i, j, odnosno ako je y j = 1 tada omogućava da x ij = 1 i, j. Pa zaključujemo da je ovaj uvjet ekvivalentan uvjetu x ij y j, i = 1,..., m, odnosno zaključujemo da je optimalno rješenje u obje formulacije ovog problema jednako. Ono po čemu se razlikuju ove dvije formulacije je broj uvjeta. U originalnoj formulaciji imamo m + mn uvjeta, dok je taj broj u alternativnoj formulaciji manji i iznosi m + n uvjeta. Kako bi usporedili ove dvije formulacije, razmotrimo njihove relaksacije, odnosno uvjet x ij, y j {0, 1} i, j zamijenimo s uvjetom 0 x ij 1, 0 y ij 1 i, j. Označimo s P OF skup dopustivih rješenja relaksacije originalne formulacije problema lokacije postrojenja, a s P AF skup dopustivih rješenja relaksacije alternativne formulacije. Ti skupovi su poliedri koji imaju sljedeći zapis: { } n P OF = (x, y) R n : x ij = 1, x ij y j, 0 x ij 1, 0 y j 1, i, j P AF = { (x, y) R n : j=1 n x ij = 1, j=1 } m x ij my j, 0 x ij 1, 0 y j 1, i, j i=1 Uočimo da je P OF P AF, odnosno skup dopustivih rješenja relaksacije originalne formulacije je bliži skupu dopustivih rješenja originalnog problema, od skupa dopustivih rješenja relaksacije alternativne formulacije. 19

Označimo optimalnu cijenu problema cjelobrojnog programiranja lokacije postrojenja s C IP, a optimalne cijene relaksacija tog problema koje smo gore uveli s C OF i C AF. Tada zbog P OF P AF i činjenice da optimalno rješenje IP problema pripada poliedru P OF vrijedi: C AF C OF C IP. Dane nejednakosti nam ukazuju na to da što je dopustivo područje relaksiranog problema bliže dopustivom području rješenja IP problema i optimalno rješenje relaksiranog problema je bliže optimalnom rješenju IP problema. Općenito je moguće da linearna relaksacija originalne formulacije (koja ima veći broj varijabli od alternativne formulacije) ima cjelobrojno rješenje, koje je onda i rješenje IP problema, dok linearna relaksacija alternativne formulacije nema. U tom slučaju je, unatoč većem broju varijabli, lakše pronaći rješenje pomoću originalne formulacije problema. Pitanje koje se nakon ovog razmatranja nameće je: koja je idealna formulacija IP problema? Neka je T = { x 1,..., x k} skup dopustivih rješenja IP problema. Pretpostavimo da je skup T ograničen i konačan, te razmotrimo konveksnu ljusku skupa T: { k } k conv(t ) = λ i x i : λ i = 1, λ i 0, x i T. i=1 i=1 Konveksna ljuska conv(t ) je poliedar (pogledaj u [1] ) koji ima cjelobrojne ekstremne točke. Osim toga, skup dopustivih rješenja bilo koje linearne relaksacije zadovoljava conv(t ) P. Ako eksplicitno znamo conv(t ) i ako je možemo izraziti u sljedećem obliku: tada IP problem: conv(t ) = {x : Dx d} c τ x min, x T možemo riješiti tako da pronad emo ekstremnu točku koja je ujedno i rješenje LP problema: c τ x min, x conv(t ). Kako bi efikasno riješili IP problem poželjno je pronaći formulaciju čija linearna relaksacija čini konveksnu ljusku skupa dopustivih rješenja IP problema. Takvu formulaciju je često teško postići. Cilj prilikom modeliranja IP problema je svakako pronaći onu formulaciju čija relaksacija je bliska aproksimacija konveksne ljuske skupa dopustivih rješenja IP problema. U skladu s time potrebno je procjeniti kvalitetu formulacije problema, odnosno moći utvrditi koja od mogućih formulacija IP problema je bolja. Zbog toga uvodimo pojam jaka formulacija IP-problema, odnosno definiramo kada je formulacija A jača od formulacije B. Definicija 15. Neka su A i B dvije formulacije istog IP problema. Ako s P A i P B označimo skupove dopustivih rješenja odgovarajuće linearne relaksacije, tada formulaciju A smatramo barem toliko jakom kao formulacija B ukoliko: P A P B. 20

4 Metode za rješavanje IP problema Za razliku od LP problema, IP problemi su teško riješivi. Efikasan algoritam koji je primjenjiv na svaki IP problem ne postoji, no razvijeni su brojni algoritmi koji omogućavaju lakše rješavanje IP problema od kojih neki osiguravaju da se pronad e rješenje, neki da se pronad e suboptimalno rješenje u prihvatljivo mnogo koraka, ali ni jedan, generalno, ne osigurava da rješenje bude dovoljno dobro i da se pronad e u prihvatljivom vremenu. Postoje tri glavne kategorije algoritama za rješavanje IP problema: (i) Egzaktni algoritmi: osiguravaju pronalazak optimalnog rješenja, ali imaju eksponencijalno vrijeme izvršavanja. Med u njih se ubrajaju sljedeći algoritmi: cutting plane, branch and bound, branch and cut metode i metoda dinamičkog programiranja (ii) Algoritmi aproksimiranja: u polinomijalnom vremenu daju suboptimalno rješenje zajedno s granicom na stupanj suboptimalnosti (iii) Heuristički algoritmi: daju suboptimalno rješenje ali bez jamstva na njegovu kvalitetu. Vrijeme izvršavanja ovih algoritama nije uvijek polinomijalno, ali empirijski je pokazano da dosta ovih algoritama pronad e dobro rješenje vrlo brzo. Jedan od algoritama koji se ubraja u ovu skupinu je metode lokalnog traženja minimuma odnosno maksimuma. Unutar ovog rada obradit ćemo jednu metodu rješavanja IP problema - cutting plane koja se ubraja u egzaktne algoritme. 4.1 Cutting plane algoritam Neka je A R m n, c R n i b R m. Promotrimo IP problem dan s: i njegovu linearnu relaksaciju: c τ x min Ax = b x 0, x Z n (1) c τ x min Ax = b x 0. Glavna ideja ovog algoritma je rješavanje IP problem rješavanjem niza LP problema. Prvo riješimo linearnu relaksaciju IP problema danu s (2) te pronad emo njezino optimalno rješenje x. Ukoliko je x cjelobrojan tada je to ujedno i optimalno rješenje IP problema. Ukoliko nije, tada pronad emo nejednakost koju sva cjelobrojna rješenja IP problema (1) zadovoljavaju, a x ne zadovoljava. Tu nejednakost dodajemo linearnoj relaksaciji IP problema 21 (2)

te to iterativno ponavljamo dok ne pronad emo rješenje. Algoritam - cutting plane algoritam (i) Pronaći optimalno rješenje x linearne relaksacije problema dane s (2) (ii) Ukoliko je x Z n, x je optimalno rješenje IP problema (1) (iii) Ukoliko x nije cjelobrojan, dodati linearnu nejednakost relaksaciji (2) koju sva cjelobrojna rješenja IP problema (1) zadovoljavaju, a x ne; idi na korak (i) Vrijeme izvršenja ovog algoritma bitno ovisi o izboru nejednakosti kojom režemo ravninu, odnosno skup mogućih rješenja. U nastavku ćemo donijeti način na koji je potrebno birati nejednakosti kako bi dobili rješenje IP problema u konačno mnogo koraka. Neka je x optimalno rješenje relaksacije IP problema dane s (2) koje ima barem jednu bazičnu varijablu koja je racionalna. Neka je N skup indeksa nebazičnih varijabli. Bilo koje rješenje IP problema takvo da je x i = 0 za svaki i N je ujedno i rješenje LP problema i jednako je BDR-u x. Kako x nije dopustivo rješenje IP problema, tada sva dopustiva rješenja zadovoljavaju nejednakost: x j 1. j N Primjetimo da gornju nejednakost zadovoljavaju sva cjelobrojna rješenja IP problema (1), dok optimalno rješenje x ne zadovoljava. Stoga je ta nejednakost upravo ona koju treba dodati relaksaciji (2). Prvi konačni algoritam za rješavanje IP problema bio je Gomoryjev cutting plane algoritam iz 1958. godine. Ovaj algoritam koristi odred ene informacije koje se dobiju prilikom rješavanja simpleks tableaua. Postupak rješavanja IP problema pomoću ovog algoritma je sljedeći: Neka je x optimalno BDR i neka je B matrica pripadne baze. Dodatno, skup nebazičnih varijabli označimo s N. Vektor x rastavimo na vektor x B koji je sastavljen od bazičnih varijabli i vektor x N koji je sastavljen od nebazičnih varijabli. Iz simpleks tableaua lako iščitavamo B 1 Ax = B 1 b. S A N označimo matricu koju dobijemo tako da iz matrice A izvadimo stupce A i, i N. Iz zadnjeg koraka simpleks tableaua, tj. onog koraka u kojem smo došli do optimalnog rješenja, iščitamo koeficijente uvjeta: x B + B 1 A N x N = B 1 b. Neka je ā ij = (B 1 A j ) i i ā i0 = (B 1 b) i. Iz optimalnog tableau-a uzimamo jednakost u kojoj je ā i0 racionalan: x i + j N ā ij x j = ā i0. 22

Zbog danih uvjeta znamo da x j 0 j, te dobivamo: x i + j N ā ij x j x i + j N ā ij x j = ā i0. Kako x j treba biti cjelobrojan za svaki j zaključujemo: x i + j N ā ij x j ā i0. Ova nejednakost vrijedi za sva cjelobrojna rješenja, ali ju x ne zadovoljava. To zaključujemo zbog: x i = ā i0, x j = 0 j N i ā i0 < ā i0 (jer a i0 je racionalan po pretpostavci). Pokazano je da sustavno dodavanje ovih rezova i korištenje odred enih pravila koje sprječavaju nastanak ciklusa generalno vodi k rješenju IP problema u konačno mnogo koraka. No, u praksi, ova metoda zbog vremena izvršenja koje može biti eksponencijalno često nije primjenjiva. Primjer 4.1. (Ilustracija Gomoryjevog cutting plane algoritma) 6 Promotrimo sljedeći primjer IP problema: x 1 2x 2 min 4x 1 + 6x 2 9 x 1 + x 2 4 x 1, x 2 0, x 1, x 2 Z Dani problem prvo ćemo zapisati u standardnom obliku: x 1 2x 2 min 4x 1 + 6x 2 + x 3 = 9 x 1 + x 2 + x 4 = 4 x 1, x 2, x 3, x 4 0 x 1, x 2, x 3, x 4 Z. Rješavanjem linearne relaksacije gornjeg problema u terminima originalnih varijabli dobivamo optimalno rješenje x 1 = (3/2, 5/2) (pogledaj primjer 2.1 ). Jedna od jednakosti iz optimalnog tableaua, u kojoj je vrijednost u nultom stupcu racionalni broj je 6 primjer preuzet iz [1] x 2 + 1 10 x 3 + 2 5 x 4 = 5 2. 23

Primjenjujući Gomoryjev algoritam zaključujemo da je rez: Linearnoj relaksaciji dodajemo uvjet: x 2 2. x 2 + x 5 = 2, x 5 0 Rješavanjem relaksacije s novim uvjetom dobivamo optimalno rješenje: x 2 = (3/4, 2). Jedna od jednakosti iz optimalnog tableau-a je: x 1 1 4 x 3 + 6 4 x 5 = 3 4. Novi Gomeryjev rez je: x 1 x 3 + x 5 0, odnosno u terminima originalnih varijabli x 1, x 2 : 3x 1 + 5x 2 7. Rješavanjem LP relaksacije s dodanim novim rezom pomoću simpleks tablaeua dolazimo do novog optimalnog rješenja x 3 = (1, 2) koje je ujedno i cjelobrojno pa je i optimalno rješenje IP problema. Problem s uvod enjem ovakvih rezova je što dolazi samo do malih smanjenja dopustivog područja rješenja, pa u praksi ovaj algoritam nema dobre performance. U skladu s tim uvedene su različite vrste rezova koje u većoj mjeri smanjuju dopustivo područje, no zbog potrebe poznavanja pojmova iz teorije grafova, ovo ćemo u radu uzeti samo na razini informacije da takvi rezovi postoje. 24

5 Teorija složenosti Unatoč postojanju brojnih algoritama za rješavanje IP problema još uvijek nije pronad en niti jedan koji omogućuje rješavanje ovakvih problema u polinomijalnom vremenu. Ova činjenica vrijedi i za mnoge druge diskretne probleme optimizacije. Teorija složenosti bavi se proučavanjem resursa (najčešće vremena i memorije/prostora) koji su potrebni za izračunavanje odred enog problema. Teorija složenosti proučava i relacije izmed u odred enih klasa problema koje imaju usporedive zahtjeve za izvršenje tzv. klase složenosti 7. Jedna od najvažniji takvih klasa je klasa P definirana kao klasa svih onih problema koji su riješivi pomoću algoritma čije je vrijeme izvršenja polinomijalno. U ovom poglavlju upoznat ćemo se s osnovnim pojmovima teorije složenosti koje ćemo iznijeti više na način da su intuitivno jasni nego što ćemo dati striktne i stroge matematičke izraze i tvrdnje. Cilj ovog poglavlja je iznijeti u kolikoj mjeri IP problemi mogu biti kompleksni za rješavanje. 5.1 Problem svod enja i transformacije Redukcija odnosno svod enje, je jedna od osnovnih metoda koja se koristi unutar matematike, a u sebi podrazumijeva da se novi problem pokuša svesti na neki već postojeći koji znamo riješiti. Idealan slučaj je kada je taj novi problem moguće svesti na neki već postojeći koji znamo efikasno riješiti. Osnovni koncept problema svod enja unutar teorije složenosti je vrlo sličan tom postupku. Jedan jednostavan primjer redukcije unutar linearnog programiranja je svod enje maksimizacijskog linarnog problema na minimizacijski problem pomoću odred enih pravila (vidi: Napomena 2.1), kada rješavanjem minimizacijskog problema dolazimo do rješenja početnog maksimizacijskog problema. Sljedeća definicija donosi najjednostavniji tip redukcije u kojoj se instanca problema Π 1 zamjenjuje ekvivalentnom instancom problema Π 2. Kako bi izbjegli općenitu definiciju ekvivalentnosti, usredotočiti ćemo se na problem prepoznavanja 8, odnosno problem koji ima binarni odgovor (da ili ne). Definicija 16. Neka su Π 1 i Π 2 dva problema prepoznavanja. Kažemo da se problem Π 1 transformira u problem Π 2 (u polinomijalnom vremenu) ukoliko postoji algoritam s polinomijalnim vremenom izvršenja koji za danu instancu I 1 problema Π 1 rezultira instancom I 2 problema Π 2 sa svojstvom da je instanca I 1 da instanca problema Π 1 ako i samo ako je I 2 da instanca problema Π 2. 7 eng. complexity classes 8 eng. recognition problem 25

Redukcija se najčešće koristi za dokazivanje da je neki problem lagan na način da se svede na neki problem za koji je dokazano da je lagan. Ta upotreba redukcije unutar teorije složenosti dana je sljedećim teoremom. Teorem 5.1. Ako se problem Π 1 transformira u problem Π 2 u polinomijalnom vremenu, onda ako je Π 2 P tada je i Π 1 P. Dokaz: Pretpostavimo da se problem Π 1 ima m, a problem Π 2 n varijabli. Pretpostavka teorema je da je problem Π 1 moguće transformirati u problem Π 2 u polinomijalnom vremenu, odnosno za transformaciju je potrebno O ( m k) pri čemu je k R neka konstanta. Druga pretpostavka je da je problem Π 2 P odnosno da postoji algoritam koji pronalazi rješenje problema Π 2 u polinomijalnom vremenu, tj vrijeme izvršenja tog algoritma ima asimptotsku složenost izvršenja danu s O ( n l) pri čemu je l R neka konstanta. Potrebno je pokazati da postoji algoritam koji daje rješenje problema Π 1 u polinomijalnom vremenu. Uzimajući u obzir dane pretpostavke, možemo konstruirati algoritam za rješavanje problema Π 1 na sljedeći način: prvo problem Π 1 transformiramo u problem Π 2 za što je potrebno O ( m k) vremena, te zatim rješimo problem Π 2 za što je potrebno O ( n l) vremena. Ukoliko je m > n konstruirani algoritam ima vrijeme izvršenja O ( m max{k,l}), a ako je n > m tada je vrijeme izvršenja O ( n max{k,l}). Kako se u oba slučaja radi o polinomijalnom vremenu izvršenja zaključujemo Π 1 P, što je i trebalo pokazati. Redukciju problema Π 1 na problem Π 2 možemo interpretirati na dva načina. Prvi način, koji je ujedno i uobičajen u matematici, je da problem Π 1 nije teži od problema Π 2. Druga interpretacija je da problem Π 2 je barem težak kao i problem Π 1, u smislu da ukoliko postoji algoritam za problem Π 2 čije je vrijeme izvršenja polinomijalno tada postoji i za Π 1. Iz teorema 5.1 vidimo i da ukoliko Π 1 / P i ako postoji redukcija od Π 1 na Π 2 tada možemo zaključiti Π 2 / P. Teorem 5.1 možemo primjeniti i na niz transformacija odnosno redukcija. Naprimjer ako imamo problem Π 1 koji je moguće transformirati u Π 2 koji je moguće transformirati u Π 3, tada ukoliko je Π 1 P tada je Π 2 P ali i Π 3 P. 5.2 N P-teški i N P-potpuni problemi Kod definiranja N P-teških problema krećemo od činjenice da se ZOIP problem čini težak te da se sumnja u postojanje algoritma koji bi generalno rješavao ZOIP probleme u polinomijalnom vremenu. Nadalje, za one probleme koji su barem teški kao i ZOIP takod er postoji mogućnost da nisu rješivi u polinomijalnom vremenu. Sljedećom definicijom se definiraju takvi problemi. 26

Definicija 17. Kažemo da je problem N P-težak ukoliko se ZOIP može transformirati u njega u polinomijalnom vremenu. Postojanje algoritma s polinomijalnim vremenom izvršenja za N P-težak problem vodilo bi postojanju algoritma s polinomijalnim vremenom izvršenja za ZOIP, što se ne smatra vrlo vjerojatnim. Stoga se pripadanje klasi N P-teških problema smatra prilično jakim dokazom da problem nije riješiv u polinomijalnom vremenu. Postoji veliki broj problema diskretne optimizacije koji pripadaju klasi N P-teških problema, a neki od njih su spomenuti i u ovom radu kao što su: problem ruksaka i problem optimalne lokacije postrojenja. Sljedeća definicija se odnosi na probleme koji nisu teži od ZOIP problema. Definicija 18. Kažemo da problem pripada klasi N P problema ukoliko se može transformirati u ZOIP u polinomijalnom vremenu. Može se pokazati da je klasa P polinomijalno rješivih problema sadržana u klasi N P, no nije poznato je li ta inkluzija striktna. Pitanje jednakosti ovih dviju klasa je jedno od otvorenih pitanja u teoriji složenosti. Ukoliko se pokaže da je P = N P tada bi to značilo da je ZOIP, kao i svi ostali problemi iz N P klase, rješiv u polinomijalnom vremenu i obrnuto ako bi se pokazalo da ZOIP pripada klasi P tada bi i svaki drugi problem iz N P pripadao klasi P. Zaključujemo: P = N P ako i samo ako je ZOIP riješiv u polinomijalnom vremenu. Definirajmo i probleme koji su jednako teški kao i ZOIP problemi. Definicija 19. Za problem Π kažemo da je N P-potpun ukoliko pripada N P klasi i ako je N P-težak, odnosno ako Π se može transformirati u ZOIP i ZOIP se može transformirati u Π. N P-potpuni problemi se mogu interpretirati kao najteži problemi u N P. Kako su svi N P-potpuni algoritmi med usobno ekvivalenti tada postojanje algoritma s polinomijalnim vremenom izvršenja za jedan od njih bi značilo postojanje takvog algoritma i za svaki od njih, štoviše i za svaki problem koji pripada N P klasi. Kako bi pokazali da je problem Π N P-težak možemo pokušati transformirati ZOIP u Π (definicija 17 ) ili iskoristiti sljedeći teorem. Teorem 5.2. Pretpostavimo da je problem Π 0 N P-težak te da se može transformirati u polinomijalnom vremenu u problem Π. Tada je i problem Π N P-težak. Dokaz teorema 5.2. se provodi transformacijom ZOIP problema u problem Π 0 (zbog činjenice da je Π 0 N P-težak to je moguće), te zatim transformacijom Π 0 u Π. Na taj način je ZOIP transformiran u Π što znači da je Π N P težak. Zbog činjenice da postoji veliki broj problema koji su N P-teški korist teorema 5.2. je velika, jer je ponekad puno lakše neki od tih problema transformirati u problem za koji želimo pokazati da je N P-težak nego transformirati ZOIP. 27

Sljedeće pitanje koje nam se nameće je: što ako je problem N P težak? Pripadnost N P- teškim problemima ne znači da je nemoguće pronaći algoritam s polinomijalnim vremenom izvršenje, jer postoji mogućnost da ZOIP pripada klasi P, ali znači da ukoliko se ne želimo suočiti s problemom pitanja je li P = N P trebamo odustati od traženja takvog algoritma. N P-teški problemi mogu se gledati kao odred eno ograničenje s obzirom da ne možemo sa sigurnošću tvrditi da postoji algoritam koji će uspjeti pronaći rješenje za te probleme. No, pripadnost klasi N P-teških problema ne znači da je taj problem nerješiv, štoviše u praksi se brojni problemi iz ove klase pomoću raznih algoritama rješavaju prilično lako. Iako su ponekad ta rješenja aproksimativna i bez jamstva ispravnosti, često su dovoljno dobra za korištenje u praktične svrhe. 28

6 Problem optimalnog troška putovanja Praktični dio ovoga rada ostvaren je zajedno s kolegicom Rebekom Čordaš s Odjela za matematiku sveučilišta J.J. Strossmayera u Osijeku, a u suradnji s Ninoslavom Čerkezom izvršnim direktorom u upravljanju kadrovima u kompaniji IN2 pod vodstvom mentora izv. prof. dr.sc. Domagoja Matijevića. Cilj praktičnog djela bilo je modelirati problem optimalnog rasporeda sudionika u vozila prilikom odlaska na službena putovanja. Ovaj problem modelirali smo pomoću cjelobrojnog linearnog programiranja s čijim osnovama smo se susreli u prethodnim poglavljima ovog rada. Prilikom rješavanja ovog problema korišten je Gurobi optimizer koji se koristi i za rješavanje problema mješovitog cjelobrojnog programiranja. Gurobi optimizer koristi najnaprednije i najnovije algoritme za rješavanje problema pri tom pokušavajući iskoristiti prednosti višejezgrenog procesora i moderne tehnologije 9. Osim modeliranja ovog problema te njegovog rješavanja pomoću Gurobi optimizera napravljena je web bazirana aplikacija pomoću koje se podaci o firmama, djelatnicima i kongresima unose u bazu. Osim toga ova aplikacija omogućava pozivanje pravljenja optimalnog rasporeda te njegov prikaz. 6.1 Opis problema Firma IN2 brine o stalnom usavršavanju svojih zaposlenika te ih u skladu s tim redovito šalje na razna dogad anja poput radionica, konferencija i sl. koje mogu doprinijeti njihovom stručnom usavršavanju. Zbog čestih putovanja njihovih djelatnika javilo se pitanje optimalnog rasporeda sudionika prilikom odlaska na neki od tih dogad aj kako bi se smanjili troškovi putovanja. Prilikom odred ivanja optimalnog rasporeda potrebno je uzeti u obzir sljedeće stvari: pojedini djelatnici imaju dodijeljeno službeno vozilo, te će prilikom odlaska na neko dogad anje koristiti to vozilo postoje vozila u vlasništvu firme koja su raspoloživa za korištenje prilikom putovanja zaposlenici mogu koristiti svoje privatna vozila, ukoliko nema raspoloživih službenih moguće je koristiti javni prijevoz svaki djelatnik može imati planiran svoj period boravka na dogad aju; ovisno o preferencijama, poziciji u firmi, privatnim razlozima... odnosno ne mora biti prisutan na dogad aju tijekom cijelog trajanja 9 detaljnije na: http://www.gurobi.com/products/gurobi-optimizer/gurobi-overview 29

Ulazni parametri za promatrani problem su: popis sudionika dogad aja za koji je potrebno napraviti optimalni raspored, te firma kojoj djelatnik pripada popis djelatnika koji imaju dodijeljeno vozilo popis službenih vozila koje su na raspolaganju za odlazak na kongres te termini u kojima su raspoloživi podatak o planiranom vremenu odlaska na kongres i povratka s kongresa pojedinog zaposlenika Kao rezultat potrebno je dobiti optimalni broj automobila koji idu na kongres zajedno s terminima njihovog odlaska, odnosno povratka te raspored djelatnika po automobilima. Ovakav rezultat ujedno osigurava i optimalan trošak putovanja. 6.2 Modeliranje problema Prije same formulacije problema potrebno je uvesti odred ene pretpostavke na ulazne parametre: broj djelatnika koji sudjeluje na kongresu iznosi m kongres traje r dana prilikom odluke o terminu odlaska, odnosno povratka na kongres moguće je odabrati datum i dio dana u kojem će se ići, odnosno vraćati se (prijepodne ili poslijepodne); na taj način je napravljena diskretizacija vremena odlaska i povratka s kongresa na sljedeći skup vremenskih jedinica {1, 2,..., 2r} na raspolaganju je n + 2r vozila od čega je l dodijeljenih vozila, h službenih vozila koja su na raspolaganju, n l h privatnih vozila te 2r vozila koja predstavljaju javni prijevoz čiji kapacitet za potrebe problema postavljamo na beskonačno problem je moguće podijeliti na potprobleme s obzirom na pripadnost djelatnika pojedinoj firmi; ti potproblemi su nezavisni. 30

6.3 Varijable i oznake u modelu Input: c j, j {1,..., n} - kapacitet j-tog vozila, poznate vrijednosti z ik, i {1,..., m}, k {1,..., 2r} - niz poznatih konstanti, ima vrijednost 1 ukoliko i - ta osoba ide u k - to vrijeme, odnosno 0 ukoliko ne ide. z ik, i {1,..., m}, k {1,..., 2r} - niz poznatih konstanti, ima vrijednost 1 ukoliko se i-ta osoba vraća s kongresa u k-to vrijeme, odnosno 0 ukoliko se ne vraća. Varijable: v jk, j {1,..., n}, k {1,..., 2r} - binarna varijabla kojom modeliramo ide li j-ti automobil u k-to vrijeme na kongres, poprima vrijednost 0 ukoliko ne ide, odnosno 1 ukoliko ide. v jk, j {1,..., n}, k {1,..., 2r} - binarna varijabla koja modelira vraća li se j-ti automobil u k-to vrijeme s kongresa, poprima vrijednost 0 ukoliko se ne vraća, odnosno 1 ukoliko se vraća. a k, k {1,..., 2r} - binarna varijabla kojom modeliramo korištenje javnog prijevoza u k-toj jedinici vremena, ima vrijednost 0 ukoliko niti jedan zaposlenik u k-tom trenutku ne koristi javni prijevoz, odnosno 1 ukoliko netko od zaposlenika u k-tom trenutku putuje javnim prijevozom 6.4 IP formulacija problema Problem koji modeliramo je pronalazak optimalnog rasporeda po vozilima prilikom odlaska na kongres. U ovom poglavlju iznijet ćemo formulaciju tog problema te objasniti po kojoj funkciji minimiziramo, te što koji uvjet u modelu predstavlja. Funkcija cilja: n 2r 2r min v jk + 2 a k (3) uvjeti: 2r k=1 j=1 k=1 2r k=1 2r k=1 v jk 1, j {1,..., n} (4) v jk v jk = 0, j {1,..., n} (5) k=1 31

2r v jk v jt 0, j {1,..., n}, k {1,..., 2r} (6) t=k m z ik i=1 m z ik i=1 n v jk c j + a k m, k {1,..., 2r} (7) j=1 n v jk c j + a k m, k {1,..., 2r} (8) j=1 Funkcija cilja našeg modela sastoji se iz dvije sume. Kao rezultat prve sume dobivamo broj automobila koji odlazi na kongres, dok druga suma predstavlja mogućnost korištenja javnog prijevoza. U drugoj sumi dodana je i težina varijabli koja označava koristi li se javni prijevoz ili ne, kako bi se preferirao prijevoz službenim ili privatnim vozilima. U ovom modelu minimiziramo broj automobila koji idu na kongres, čime se ujedno pronalazi i optimalan troška putovanja. Ovakva formulacija problema ima restrikciju na broj odlaska vozila na kongres odnosno vozilo na pojedini kongres može otići samo jednom tj. ne može otići pa se vratiti te ponovno otići. Ta restrikcija je dana uvjetom (4) koji osigurava da zbroj po svim mogućim vremenima odlaska j-tog automobila iznosi najviše 1. Sljedeći uvjet, uvjet (5) osigurava da ukoliko j-ti automobil ide na kongres, da se on tada mora s njega i vratiti. Uvjetom (6) je sprječena mogućnost da se neki automobil s kongresa vrati prije nego što je tamo otišao, odnosno da je nemoguće da vremenski trenutak u kojem se vraća bude manji od vremenskog trenutka u kojem odlazi. Uvjeti (7) i (8) su uvjeti na kapacitet vozila kojima se putuje. Drugi dio desne nejednakosti ovih uvjeta označava da se u k-tom trenutku koristi javni prijevoz s kapacitetom m koji ovdje predstavlja dovoljno velik broj (uočimo: m djelatnika ide na kongres) kako bi svi koji ne putuju automobilom mogli ići javnim prijevozom, što je u skladu s pretpostavkom da javni prijevoz ima kapacitet beskonačno. 6.5 Rješavanje problema U uvodu ovog poglavlja spomenuto je kako je korišten Gurobi Optimizer prilikom rješavanja ovog IP problema. Za implementaciju modela u Gurobi korišten je programski jezik C + +. Podaci potrebni za izračun rješenja dobiveni su iz baze podataka pomoću php-a. Kao output Gurobi vraća vrijeme kada odred eno vozilo ide, odnosno vraća se s kongresa, a ukoliko ne ide tada tom vozilu kao vremensku jedinicu pridružuje 0. Nakon što Gurobi vrati rješenje, onaj dio u kojem se djelatnici raspored uju po vozilima se vrši na razini same aplikacije. Kao metoda koju je Gurobi koristio prilikom rješavanja ovog problema navedena je simpleks metoda. 32

6.6 Arhitektura baze podataka Baza podataka potrebna za rad ove aplikacije sastoji se od 8 tablica. Struktura baze podataka, nazivi tablica te njihovih atributa dane su sljedećom slikom: Slika 6.2: Struktura baze podataka 6.7 Aplikacija Za izradu ove web aplikacije korišteni su: HTML, PHP, JavaScript, C + +, MySQL i Gurobi Optimizer. Za unos podataka u bazu koristi se 8 formi, kojima je moguće pristupiti preko linkova koji se nalaze s lijeve strane prozora. Osim linkova za pristup formama imamo i link Upit preko kojega pristupamo rješavanju optimizacijskog problema. Prije samog poziva za rješenje problema, odabiremo za koju firmu i kongres (od onih za koje podaci postoje u bazi) želimo pronaći optimalni raspored. Osim pojedinačne firme moguće je napraviti raspored generalno za neki kongres, odnosno odjednom za sve firme unesene u bazu. Prilikom poziva optimalnog rasporeda preko C + + se poziva Gurobi, koji vraća vremena polaska i povratka vozila, zatim se unutar php skripte napravi raspored djelatnika po tim vozilima te se taj raspored spremi u bazu. Nakon toga, na zaslonu se pojavi raspored za putovanje. Aplikacija omogućuje i promjenu trenutnog rasporeda na način da se putnici iz vozila koja putuju istog dana mogu med usobno zamijeniti ili se neka osoba može premjestiti u vozilo koje putuje tog istog dana bez zamjene ukoliko u njemu ima mjesta. Promjene je moguće spremiti te na taj način promijeniti prvotni raspored, no time nije narušena optimalnost putovanja, jer se broj vozila kao i njihovi polasci na taj način ne mijenjaju. 33

Izgled aplikacije vidljiv je na sljedećim slikama: Slika 6.3: Unos kongresa Slika 6.4: Prikaz rasporeda djelatnika po vozilima 34