Pređi na sadržaj

Celobrojno programiranje

S Vikipedije, slobodne enciklopedije

Celobrojno programiranje je problem matematičke optimizacije ili izvodljivost programa u kojem sve ili neke promenljive su ograničene da budu celobrojne. U mnogim sredinama termin se odnosi na celobrojno linerano programiranje (CLP), u kojem objektna funkcija i ograničenja (osim celobrojnog ograničenja) su linearni.

Celobrojno programiranje je NP-problem. Poseban slučaj je jedan od Karpovih 21 kompletnih problema, tj. 0-1 celobrojno linearno programiranje, u kome su nepoznate binarni brojevi, a ograničenja moraju biti zadovoljena,

Kananočka i standardna forma za CLP[uredi | uredi izvor]

Celobrojno programiranje u kanoničkoj formi je predstavljeno kao:[1]

,

i CLP u standardnoj formi je predstavljen kao

gde su vektori i matrica, koja ima celobrojne vrednosti. Primetiti da je slično linearnom programiranju, CLP koji nije u standardnoj formi se može prevesti u standardnu formu eliminisanjem nejednakosti uvođenjem slabe promenjive () i zamenom promenjivih koje nisu znakom ograničene sa razlikom dveju promenjivih ograničenih znakom.

Primer[uredi | uredi izvor]

IP polytope with LP relaxation

Graf sa desne strane pokazuje problem.

Izvodljive celobrojne tačke prikazane su crvenom, a crvene isprekidane linije prikazuju njihovz konveksnu ljusku, koja je najmanji poliedar koji sadrži sve ove tačke. Plave linije zajedno sa koordinatama iksa definiše poliedar LP relaksacije, koja je data nejednakošću bez celovitog ograničenja. Cilj optimizacije je pomeriti crnu isprekidanu liniju što više nagore, dok dodiruje poliedar. Optimalna rešenja celobrojnog problema su tačke i koje obe imaju stvarnu vrednosti 2. Jedinstveni optimum relaksacije je sa stvarnim vrednostima 2.8. Primetiti da ako je rešenje zaokruženo na najbliži ceo broj, nije izvodljivo za CLP.

Dokaz NP-problema[uredi | uredi izvor]

Sledi smanjenje sa minimalnog čvora prekrivača na celobrojno programiranje koje će koristiti kao dokaz za NP-problem.

Neka bude neorijentisani graf. Definisati linearni program na sledeći način:

S obzirom na ograničenja na 0 ili 1, bilo koje izvodljivo rešenje celobrojnog programiranja je podskup čvorova. Prvo ograničenje upućuje da je makar jedna krajnja tačka svake grane uključena u podskup. Zbog toga rešenje opisuje prekrivača čvora. Pored toga dati neki čvor pokrivača C, može biti 1 za bilo koje i do 0 za bilo koje pa nam daje izvodljivo rešenje za celobrojno programiranje. Tako možemo zaključiti da ako se smanji suma takođe ćemo naći minimum čvora prekrivača.[2]

Varijante[uredi | uredi izvor]

Mešano celobrojno linearno programiranje (MCLP) uključuje probleme u kojima samo neke promenjive , , ograničene da budu celobrojne, dok je drugim dozvoljeno da budu necelobrojne.

0-1 linearno programiranje uključuje probleme u kojima promenjive mogu biti 0 ili 1. Primetiti da bilo koja zaokružena celobrojna promenjiva može biti prikazana kao kombinacija binarnih promenjivih.[3] Na primer, data celobrojna promenjiva, , može biti izražena koristeći binarnih promenjivih:

Primeri problema koji se mogu formulisati kao CLP[uredi | uredi izvor]

Veliki broj problema se može formulisati kao CLP. Tu spadaju

Pošto je krajnja verzija celobrojno linearnog programiranja u NP (rešenja se mogu naći u polinomijalnom vremenu) i tu su NP-potpuni problemi koji se mogu polinomijalno smanjiti na CLP, poslednja verzija celobrojnog linearnog programiranja je NP-kompletni problem.

Aplikacije[uredi | uredi izvor]

Postoje dva glavna razloga za korišćenje celobrojnih konstanti prilikom modeliranja problema kao linearnog programa:

  1. Celobrojne promenjive predstavljaju kolićine koje mogu biti samo celi brojevi. Na primer, ne moguće je napraviti 3.7 automobila.
  2. Celobrojne vrednosti predstavnjaju odluke pa treba da imaju samo rešenja sa vrednošću 0 ili 1 .

Ova razmatranja se često javljaju u praksi, i zbog toga celobrojno linearno programiranje može da se koristi u mnogim oblastima aplikacija, od kojih su neki ukratko opisani u nastavku.

Proizvodno planiranje[uredi | uredi izvor]

Mešano celobrojno programiranje ima razne aplikacije u industrijskoj proizvodnji, uključujući posao-kupovine modelovanja. Jedan važan primer se dešava u poljoprivrednom proizvodnom planiranju koje uključuje određivanje proizvodnje prinosa za nekoliko useva koje mogu da dele izvore (na primer, zemlju, rad, kapital, semenje, đubrivo, itd). Moguć cilj je maksimalizovati ukupnu proizvodnju, bez prekoračenja raspoloživih resursa. U nekim slučajevima, ovo se može izraziti u smislu linearnog programiranja, ali promenjive moraju da budu celobrojne.

Planiranje[uredi | uredi izvor]

Ovi problemi uključuju servisiranje i raspoređivanje vozila u saobraćajnim mrežama. Na primer, problem može da uključi dodeljivanje autobusa ili podzemnih železnica na pojedinim pravcima tako da satnica bude ispunjena, i takođe da ih opremi sa vozačima. Ovde binarne promenjive odluke pokazuju da li je autobus ili metro dobio rutu vožnje i da li je vozač dobio određeni voz ili metro.

Telekomunikacione mreže[uredi | uredi izvor]

Cilj ovih problema je osmisliti i instalirati mrežu linija tako da unapred definisani uslovi komunikacije budu ispunjeni i ukupan trošak mreže bude minimalan.[4] Ovo zahteva optimizaciju i topologije mreže zajedno sa postavljanjem kapaciteta različitih linija. U mnogim slučajevima, kapaciteti su ograničeni da budu celobrojne veličine. Obično postoje, u zavisnosti od tehnologije koja se koristi, dodatne restrikcije koje mogu biti modelovanje kao linearne nejednakosti sa celobrojnim vrednostima ili binarnim promenjivima.

Mobilne mreže[uredi | uredi izvor]

Zadatak planiranja frekvencije u mobilnoj GSM mreži uključuje raspodelu dostupnih frekvencija kroz antenu tako da korisnik može da se usluži, i da je interferencija svedena na minimum između antena.[5] Ovaj problem može biti formulisan kao celobrojno linearno programiranje u kojem binarne promenjive pokazuju da li je frekvencija dodeljena.

Algoritmi[uredi | uredi izvor]

Naivan način za rešenje CLP je jednostavno brisanje ograničenja da je x integral, rešenje odgovarajućeg LP (koje se zove LP relaksacija CLP), i zatim zaokružiti unos rešenja na LP relaksaciju. Ali, ne samo da ovo rešenje možda neće biti optimalno, možda čak niće biti ni izvodljivo, to ono što može narušiti neka ograničenja.

Korišćenje ukupne nemodularnosti[uredi | uredi izvor]

Dok u većini rešenja LP neće biti zasigurno optimalno, ako CLP ima oblik takvu da gde i imaju sve celobrojne ulaze i je skroz unimodularan, onda svako onsovno izvodljivo rešenje je integral. Shodno tome, rešenje dobijeno simpleks algoritmom će sigurno biti integral. Da bi dokazali da svako izvodljivo rešenje je integral, neka bude proizvoljno osnovno i izvodljivo rešenje. Pošto je izvodljivo, znamo da . Neka bude element koji odgovara bazi kolona za osnovna rešenja . Po definiciji baze , postoji neki koren podmatrice od sa linearnom nezavisnošću kolone takve da .

Pošto kolone su linearno nezavisne i je koren, je nevažan, i zato po pretpostavci, je unimodularno i . Takođe, pošto je nevažna, invertibilna je i zato . Po definiciji, . Primetite da označava adjugovanu matricu i integral je zato što je integral. Zbog toga,

Prema tome, ako je matrica CLP-a skroz unimodularna, ona će umesto korišćenja CLP algoritma koristiti simpleks algoritam da bi se rešila LP relaksacija, a da bi rešenje bilo celobrojno.

Tačni algoritmi[uredi | uredi izvor]

Kada matrica nije skroz unimodularna, postoje raznovrsni algoritmi koji se mogu iskoristiti da se tačno reši celobrojno linearno prograrmiranje. Jedna grupa algoritama je metoda sečenja aviona koja radi tako što reši LP relaksaciju i onda dodaje lenaerna ograničenja, koja vode rešenja napred, tako da budu celobrojna i bez izuzimanja bilo koje izvodljive tačke.

Druga grupa algoritama su varijante metode separacija i evaluacija. Na primer, metod grana i rez koji koristi metod separacije i evaluacije i metodu sečenja aviona. Metod separacije i evaluacije ima neke prednosti u odnosu na algoritme koji samo koriste metodu sečenja aviona. Jedna od prednosti je da se algoritam može završiti ranije i sve dok ne bude bar jedno vidljivo integral rešenje pronađeno, iako nije neophodno da bude optimalno, rešenje treba da se vrati. Dalje, metoda separacije i evaluacije mogu se koristiti da vrate više optimalnih rešenja.

Lenstra je 1983 pokazao[6] da, kada je broj promenjivih fiksiran, celobrojno programiranje se može rešiti u polinomijalnom vremenu.

Heuristički metodi[uredi | uredi izvor]

Pošto je celobrojno linearno programiranja NP-teško, mnogi primeri problema su složeni i zbog toga neke heurističke metode moraju da se koriste. Na primer, tabu pretraga se može koristiti za nalaženje rešenja za CLP.[7] Da bi se koristio tabu pretraga za rešavanje CLP-a, kretanja mogu biti definisana kao inkrementiranje ili dekrementiranje celobrojno ograničene promenjive izvodljivog rešenja, dok bi ostale celobrojno ograničene promenjive bile konstantne. Neograničene promenjive su onda rešene. Kratkoročna memorija se može sastojati od prethodnih probanih rešenja dok srednjoročna memorija se može sastojati od vrednosti za celobrojno ograničene promenjive koje su rezultirale visoko objektivnim vrednostima (pod pretpostavkom da je CLP problem maksimizacije). Na kraju, dugoročna memorija može voditi do pretrage celobrojnih vrednosti, koja nisu prethodno probana.

Druge heurističke metode koje mogu primeniti CLP

  • Planinarenje
  • Simulirano žarenje
  • Reaktivna pretraga optimizacije
  • Mravlji algoritam
  • "Hopfield" neuralne mreže

Takođe postoji veliki broj drugih specifičnih heurističkih problema, kao na primer problem trggovačkog putnika. Primetite da mane heurističkih metoda jesu to da ako ne nađu rešenje, onda se ne može znati da li je to zato što nema izvodljivog rešenja ili zato što algoritam ne može da pronađe rešenje. Dalje, obično je nemoguće da se izračuna koliko je blizu optimalnog rešenja, rešenje koje je dobijenom ovom metodom.

Reference[uredi | uredi izvor]

  1. ^ Papadimitriou, C. H.; Steiglitz, K. (1998). Combinatorial optimization: algorithms and complexity. Mineola, NY: Dover. ISBN 978-0-486-40258-1. 
  2. ^ Erickson, J. (2015). „Integer Programming Reduction” (PDF). 
  3. ^ Williams, H.P. (2009). Logic and integer programming. International Series in Operations Research & Management Science. 130. ISBN 978-0-387-92280-5. 
  4. ^ Borndörfer, R.; Grötschel, M. (2012). „Designing telecommunication networks by integer programming” (PDF). 
  5. ^ Sharma, Deepak (2010). „Frequency Planning”. 
  6. ^ H.W. Lenstra, "Integer programming with a fixed number of variables", Mathematics of operations research, Vol 8, No 8, November 1983
  7. ^ Glover, F. (1989). „Tabu search-Part II”. ORSA Journal on computing. 1 (3): 4—32. doi:10.1287/ijoc.2.1.4. 

Literatura[uredi | uredi izvor]

Spoljašnje veze[uredi | uredi izvor]