OSNOVNE CRTE
Stvarni početak istraživanja načina rješavanja, te metoda i primjena linearnog programiranja ,vezana je za ime ruskog matemati čara-ekonomiste Kantoroviča. Njegov rad zaslužuje posebnu pažnju i zbog toga što je po uo čavanju i pristupu blizak današnjim razmatranjima. Za razliku od drugih pokušaja ,koji su išli za tim da se pomo ću linearnih sistema riješe odre đeni jednostavni problemi ,u Kantorovičevom radu ,prisutna je ideja svojstvena današnjem programiranju. On uočava važne probleme i čini određene generalizacije. Tuma čenja pojedinih problema i odgovarajućih rezultata sasvim su bliska ili identična sa današnjim interpretacijama ,a u nekim slučajevima originalnija i potpunija. Prilikom rješavanja problema koristio je metodu rješavajućih koeficijenata ,koja u današnjem zna čenju odgovara postupku sa dualnim promjenljivim. Međutim ,njegovi algoritmi nisu bili sasvim opšti ,već su se mogli primijeniti samo u određenim specijalnim slučajevima ,što je bio glavni razlog nemogu ćnosti postavljanja teorijskih osnova programiranja. Tako je tridesetih godina ,negdje pred drugi svjetski rat ,bilo dosta novih ideja i rezultata u okviru metodoloških istraživanja. Međutim ,oni se nisu mogli u potpunosti koristiti zbog toga što su to bili prvi i često usamljeni pokušaji ,koji su mogli imati praktičnu vrijednost tek poslije svestranijih ispitivanja. Drugi svjetski rat prekinuo je ova istraživanja ,ali je ,istovremeno ,otvorio neka nova pitanja za potrebe ratne privrede ,prvo u Velikoj Britaniji ,a kasnije i u SAD ,koja su imala operacioni karakter i koja su se mogla rješavati matemati čkim metodama. Svakako ,ona nisu imala onaj raniji smisao koji je dominirao u ekonomskoj teoriji i praksi ,ve ć su po analogiji sa ranije pomenutim rezultatima predstavljala pokušaje da se riješe rij eše odre đeni problemi ,kao što su Sl .1 Leonid Vitalyevich Kantorovich optimalni razmještaj vojnih objekata i jedinica u određenim uslovima ,ili obezbje đenje nesmetanog proizvodnog procesa ,odnosno otklanjanja zastoja u proizvodnji i snabdijevanju ,odre đivanje najkraćeg puta ,nalaženje optimalnog transportnog problema itd. Iz tih i takvih nastojanja koja nisu dala naro čito značajne rezultate ,u poslijeratnom periodu nastavljena su slična istraživanja ,ali sada ,u drugim uslovima ,sa orijentacijom na organizaciona pitanja u okviru preduze ća. Danas su ova razmatranja poznata pod imenom operaciona operaciona istraživanja i obuhvataju obuhvataju relativno velik broj problema i metoda pomo pomo ću kojih se postižu zna čajna rješenja u vezi s optimalnim proizvodnim programom ,optimalnim obimom zaliha ,optimalnim periodom zamjene sredstava ,optimalnim transportnim programom rasporedom i asignacijom ,redova čekanja ,kao i velik broj drugih rješenja u problematici preduzeća. U isto vrijeme Kantorovi č je radio na konkretnim problemima ekonomskog planiranja – odnosno , na koji način kombinirati dostupne proizvodne resurse da bi se postigla maksimalna koli čina proizvoda (maksimizacija proizvodnje).On je riješio taj problem uvodeći sasvim novu vrstu analize , kasnije nazvane linearno programiranje. To je tehnika za pronalaženje optimalne vrijednosti linearne funkcije kriterija koja kao ograničavajuće faktore sadrži linearne jednadžbe. Kroz slijedećih dvadeset godina Kantorovi č razvija svoju analizu dalje , i u knjizi publikovanoj 1959 godine , primjenjuje je na makroekonomske probleme. Sa svojim istraživanjima 1
Kantorovič je ostvario snažan utjecaj na ekonomsku doktrinu u tadašnjem Sovjetskom Savezu. On je postao veoma važan dio Ruske ekonomske škole i pripadao je pokretu za reformu centralističke planske ekonomije. Tokom četrdesetih godina XX stoljeća , neovisno od Ruske škole , linearno programiranje se također počelo razvijati i u Američkim ekonomskim krugovima , naro čito od strane Tjalling Koopmansa i Georga Dantziga. Koopmans je tokom rata kao statisti čar radio za Britansku pomorsku trgovačku komoru komoru , gdje se suočio s problemom optimalnog načina transporta roba u pomorskom saobra ćaju. On je problem formulirao u skladu s modelom linearnog programa. U ranim fazama Koopmans je shvatio da se linearno programiranje može veoma uspješno povezati s tradicionalnom makroekonomskom teorijom. On je isticao da se pravilna alokacija resursa može veoma uspješno postaviti i riješiti kao standardni problem linearnog programiranja , i da proizvodni model može poslužiti poslužiti kao osnova za formulaciju opšte teorije ravnoteže. ravnoteže. 1951 godine on je istakao taj pogled u svome najzna čajnijem radu koji je preto čen u teoriju popularno nazvanu "Teorija aktivnosti". Prikazuju ći je na taj na čin , on je postavio osnovnu relaciju izme đu sistema cijena i pravilnog rasporeda resursa , te premosti jaz izme đu teorije efikasnosti rasporeda resursa i deskriptivne teorije ravnoteže. Razvoj linearnog programiranja ,vezano je i za ime čuvenog matematičara Danciga (G. Dantzig) koji je svojim fundamentalnim radom "Maksimiziranje linearne forme podvrgnute ograni čenjima u vidu sistema linearnih jedna čina (nejednačina)" postavio osnove savremenog programiranja. Ovaj rad je nastao u okviru grupe SCOOP ,koju je organizovala američka armija sa zadatkom da se razmotre mogućnosti rješavanja nekih vojno-strategijskih problema matematičkim putem. U to vrijeme i nešto kasnije ,nekoliko istaknutih matematičara i ekonomista bilo je zainteresovano za postignute rezultate u linearnom programiranju , a naročito njihovu primjenu u ekonomskim istraživanjima. To interesovanje izraženo je na sastanku posve ćenom linearnom programiranju održanom u Čikagu 1949 godine na kome je podnijeto više referata koji su se Sl. 2 George Dantzig ticali teorijskih i praktičnih aspekata programiranja Interesovanje za matemati čke metode i modele naglo je poraslo poslije drugog svjetskog rata ,a naročito s razvojem linearnog programiranja ,koje omogu ćava rješavanje složenih ekonomskih problema. Ovaj razvoj nije bio slu čajan. On nastaje u vrijeme kada je ratnu privredu trebalo što prije prilagoditi mirnodopskim uslovima ,koji su postavljali nove kriterije u pogledu izbora investicija ,tržišta ,potrošnje i sl. i ,istovremeno ,postavljali nove probleme i zahtjeve za njihovo rješavanje. U takvim uslovima ,nisu se mogli prihvatiti parcijalni analiti čki postupci i odgovarajući klasični instrumentarijum ,već se prišlo sistematskom izu čavanju novih matematičkih metoda ,među kojima posebno treba ista ći linearno programiranje. Zbog zna čaja koji ono ima danas u ekonomskim istraživanjima i činjenice da se znatno razlikuje od klasi čnih metoda zasnovanih na infinitezimalnom ra čunu ,potrebno je u činiti kraći osvrt radi uočavanja nekih karakteristika ove nau čne discipline ,čiji su rezultati od neocjenjivog zna čaja za ekonomsku teoriju i praksu. Značajnu ulogu u razvoju linearnog programiranja imaju teorijsko-matemati čki radovi ,koji su i doprinijeli postavljanju osnova nau čnom programiranju. Oni su se ticali teorije linearnih nejednačina ,konveksnih skupova ,teorije dualiteta itd. Dancig navodi više autora me đu kojima posebno ističe Furijea (Fourier) , Gausa (Gauss) , Đordana (Gordan) , Minkovskog (Minkowski) , Farkaša (Farkash) , Mockina (Motzkin) i druge. U kasnijem razvoju programiranja zna čajan 2
doprinos ima fon Nojman (von Neumann) u vezi sa interpretacijom dualiteta , a tako đer i radovi Takera (Tucker) , Gejla (Gale) i Kana (Kahn) ,koji su dokazima pokazali vezu izme đu teorije igara i linearnog programiranja i otvorili nova metodološka pitanja. Posljednjih godina zapaženi su novi radovi u domenu programiranja ,posebno oni koji se ti ču mrežnog ,nelinearnog ,dinami čkog programiranja i matrice rasta. Takva orijentacija ima za cilj upotpunjavanje dosadašnjih metodoloških istraživanja i otvaranje novih mogu ćnosti za rješavanje najsloženijih ekonomskih problema.
LINEARNO PROGRAMIRANJE
Opć e formuliranje linearnih programa Formulacija standardnog problema linearnog programiranja glasi : na ći ono nenegativno rješenje ( x1 , x2 , … , xn ) , ( xi 0 , i = 1 , 2 , … , n ) sistema linearnih nejedna čina ( ograničenja , uvjeta) a11x1 + a12x2 + … + a1nxn r 1 a21x1 + a22x2 + … + a 2nxn r 2 . . . . . . . . am1x1 + am2x2 + … + a mnxn r m za koje funkcija cilja ili funkcija kriterija F = F( x1 , x2 , … , xn ) = c1x1 + c2x2 + … + cnxn dostiže maksimalnu vrijednost. Rješenje ( x1 , x2 , … , xn ) , u primjenama , najčešće ima zna čenje plana ili programa (proizvodnje , transporta) , pa je otuda ovaj problem dobio naziv "programiranje" , a naziv "linearno programiranje" potječe od toga što su ograni čenja varijabli , kao i funkcija cilja linearni. Proizvoljno rješenje sistema nejedna čina predstavlja tačku n-dimenzionalnog prostora , to jest (x1 , x2 , … , xn) R n. Svako nenegativno rješenje sistema nejedna čina naziva se dopustivim ili mogu ćim rješenjem. Svaki problem linearnog programiranja spada u jednu od triju tr iju kategorija: 1. ima optimalno rješenje 2. neizvediv je , ima višezna čna rješenja 3. skup mogućih rješenja neograničen Može se reći : problem linearnog programiranja ima rješenje ako veli čina Fmax (Fmin) ima konačnu vrijednost na skupu S dopustivih rješenja. Problem linearnog programiranja nema 3
rješenja ako je skup S prazan skup ili ako veli čina Fmax (Fmin) nema konačnu vrijednost. Pri određivanju optimalnog rješenja pojavljuju se dva kriterija optimizacije : maksimizacija ili minimizacija vrijednosti funkcije cilja. Iako postoje dva kriterija optimizacije , problem izbora optimalnog rješenja može se smatrati jedinstvenim , jer se jedan kriterij optimizacije može zamjeniti drugim , kako to utvr đuje slijedeći teorem : Teorem :
Dani kriterij optimizacije može se zamijeniti suprotnim , pri č emu emu zamjena ne utje č e na * optimalno rješenje , to jest , ako je za X S S ispunjeno * F(X ) = max F(X) Onda je -F(X * ) = min [-F(X)] i obrnuto.
Poopćeni linearni program može se izraziti na tri različita načina :
Običnim (kanonskim) zapisom Zapisom pomoću sume Matričnim zapisom
a) Obični (standardni) zapis
Kad se potpuno ispiše ,program će maksimizacije sa n varijabli i m ograničenja izgledati : Maksimizirati uz uvjet
z = c1x1 + c2x2 + … + cnxn a11x1 + a12x2 + … + a 1nxn r 1 a21x1 + a22x2 + … + a 2nxn r 2 . . . . . . . . am1x1 + am2x2 + … + a mnxn r m x j 0
(j = 1 , 2 , … , n )
Varijable odlučivanja označene su sa x j ( za j = 1 ,2 , … ,n) ,a njihovi koeficijenti u funkciji cilja sa c j ( za j = 1,2, … ,n) koji su skup zadanih konstanti. S druge strane ,oznake r i ( i = 1 ,2 , … ,m) – drugi skup konstanti – ograničenja su postavljena na program. Radi ujedna čenosti ,ali bez smanjenja ujednačenosti ,napisali smo svih m ograni čenja kao nejedna čina sa oznakom . Posebno valja istaknuti da ,u slu čaju kad se pojavi ograni čenje sa oznakom ,uvijek ga možemo pretvoriti u oblik jednostavno množe ći obje strane nejednakosti sa –1. Kona čno ,uočimo da su koeficijenti varijabli odlučivanja u ograni čenjima sa aij ,gdje dvostruka suoznaka služi da se precizno odredi odgovaraju odgovarajuće mjesto koeficijenata. Analogno ,obični je zapis programa minimizacije : 4
Minimizirati
z = c1x1 + c2x2 + … + cnxn a11x1 + a12x2 + … + a 1nxn r 1 a21x1 + a22x2 + … + a 2nxn r 2
uz uvjet
. . . . . . . . am1x1 + am2x2 + … + a mnxn r m x j 0
(j = 1 , 2 , … , n )
U funkciji cilja c j i dalje predočava skup zadanih konstanti koeficijenata kao što su r i u ograničenjima . Međutim ,sada se ograni čenja pojavljuju kao nejedna čine sa znakom .
b) Zapis pomoću sume (
)
Znatna ušteda prostora pri pisanju može se posti ći ako se linearni programi pokažu pomo ću znaka za sabiranje : n
Maksimizirati
z=
1 c x j
n
uz uvjete
j
j
1 a x ij
j
r i
(i = 1 ,2 , … ,m)
j
i
x j 0
(j = 1 ,2 , … ,n)
i slično tome. n
Minimizirati
z=
1 c x j
n
uz uvjet
j
j
1 a x ij
j
r i
(i = 1 ,2 , … ,m)
j
i
x j 0
(j = 1 ,2 , … ,n)
5
c) Matrični zapis
Da bismo vidjeli kako se primjenjuje matri čni zapis ,definirajmo prvo sljedeće četiri matrice : c1 c 2 c c n
x1 x 2 x x n
a11 a 21 a a 22 12 A a m1 a m 2
a1n
a mn a2n
r 1 r 2 r r m
Tri su od njih vektori stupci – c i x reda n 1 ,a r reda m 1. Matrica A je reda m n. Nakon tih definicija ,funkcija cilja može se izraziti jednačinom : z c' x
(1n ) ( n1)
gdje je produkt vektora c'x reda 1 1 pa je prema tome skalar. Međutim ,s obzirom na m ograničenja ,pokazuje se prednost matri čnog zapisa jer se cijeli skup ograni čenja može izraziti u jednoj nejednačini : A x r
( mn ) ( n1)
( m1)
Znak nejednakosti treba interpretirati kao nejednakost po elementima ,tj. i-ti redak matrice Ax manji je ili jednak od i-tog retka matrice r ,za svako i. Slično ,n uvjeta nenegativnosti možemo izraziti samo jednom nejedna činom : x
( n1)
0
( n1)
Ukratko ,linearni program sažeto izražen u obliku Maksimizirati uz uvjet i
z c' x
(1n ) ( n1)
A x r
( mn ) ( n1)
x
( n1)
( m1)
0
( n1)
Pomoću istih oznaka program minimizacije može se izraziti u sljede ćem jednostavnom obliku Minimizirati uz uvjet i
z c' x
(1n ) ( n1)
A x r
( mn ) ( n1)
x
( n1)
( m1)
0
( n1)
6
Ekstremne tač ke i optimalno rješenje Glavni rezultati koji proizlaze iz teorije o konveksnim skupovima su : 1. bilo za koju zadanu vrijednost od z ,funkcija cilja linearnog programa sa n varijabli uvijek definira hiperravninu koja je zatvoren konveksan skup 2. skup mogućih rješenja koji je presjek od m+n zatvorenih poluprostora tako đer je zatvoren konveksan skup – zovimo ga skup F Ta se dva rezultata mogu sada povezati. Prije nego što prije đemo na to ,prvo trebamo razlikovati pojmove unutarnje tačke ,granične tačke i ekstremne tačke. Razlika između graničnih tačaka i unutarnjih tačaka intuitivno je očigledna. Na slici 3. ta čke koje leže na sve četiri strane kvadrata granične su tačke skupa S ,a ta čke koje nisu na stranicama unutarnje su ta čke. Preciznije ,granična točka b bilo kojeg skupa S definira se pomo ću svojstva da svaka , ma kako mala , okolina od b mora sadržavati jednu ili više ta čaka koje ne pripadaju skupu S. S druge strane , unutarnju tačka skupa i sadržava samo ta čke koje pripadaju skupu S. Što se tiče ekstremnih tačaka ,one nisu ništa drugo ve ć poseban slučaj graničnih tačaka. Preciznije ,ekstremna e tačka granična tačka koja ne leži na dužini što spaja S bilo koje druge dvije tačke skupa. To jest ,ekstremna je točka tačka koja se ne može prikazati kao konveksna T kombinacija bilo kojih drugih dviju tačaka skupa. Ponovo se vraćamo na sl.3, četiri su vrha kvadrata ekstremne tačke ,dok niti jedna od ostalih ta čaka nije ekstremna. Ukratko za zadani skup S ,skup svih ekstremnih tačaka od S podskup je skupa svih grani čnih tačaka od S. Pokušavajući dostići optimum ,naš je cilj uvijek da se ciljna hiperravnina "pomi če" – mijenjajući vrijednost od z – ili do najve ćeg mogućeg položaja (da se postigne maksimum z) ili do najnižeg položaja (da se dostigne minimum z) ,dok još ostaje u skupu F. Kad se dostigne optimalni položaj ,optimalna hiperravnina H ne može uopšte sadržavati unutrašnje ta čke skupa F jer ,kad bi ih sadržavala ,mogli bi je uvijek "pomaknuti" dalje da dostigne bolji položaj. Dakle ,samo granične tačke skupa F mogu se pojaviti u presjeku H F. To nas navodi na pojam potpornih hiperravnina. Potporna hiperravnina (recimo , H) je hiperravnina koja ima jednu ili više zajedni čkih tačaka s konveksnim skupom F ,ali koja je tako smještena da skup F leži isklju čivo na jednoj strani od H. Slika 4 ilustrira taj pojam u slučaju dvodimenzionalnog prostora i trodimenzionalnog
7
Na dijagramu 4a) pravci 1 ,2 ,3 su primjeri potpornih hiperravnina. Pravac 1 (i pravac 2) ima samo jednu zajedni čku tačku s poligonom F , dok ih pravac 3 ima više. Me đutim ,u oba slučaja skup F leži isključivo s jedne strane potpornog pravca. Prema tome ,samo grani čne tačke skupa F mogu se pojaviti na svakom od tih pravaca. Može se primjetiti da svaki potporni pravac sadržava barem jednu ekstremnu tačku skupa F ,kao što su f,g i h. Ilustracija je za trodimenzionalni prostor na dijagramu b sli čna ,osim što je potporni pravac sada zamijenjen potpornom ravninom. Presjek H i F (ovog puta poliedar) ponovo se može sastojati samo od grani čnih tačaka skupa F. Kako se vidi ,samo je jedna ta čka (u) uključena i ona je ekstremna ta čka skupa F. Za opšti slučaj n-dimenzionalnog prostora ,bit je našeg razmatranja koje se odnosi na sliku 4 sadržana u slijedeća dva teorema : TEOREM I :
Za danu grani č nu tač ku u zatvorenog konveksnog skupa postoji barem jedna potporna hiperravnina u u. TEOREM II :
Za zatvoreni konveksni skup ogranič en odozdo postoji barem jedna ekstremna to č ka u svakoj potpornoj hiperravnini.
Značaj je tih teorema za linearno programiranje očigledan. Kad dostignemo optimalno rješenje ,ciljna hiperravnina – koja prikazuje optimalnu liniju jednakog profita ili jednakih troškova – bit će potporna hiperravnina. U skladu s teoremom I ,svaka grani čna točka skupa mogućih rješenja mogući je kandidat za optimalno rješenje. Ali teorem II sužava problem omogu ćujući nam da pozornost usmjerimo samo na ekstremne tač ke. Čak iako može biti neekstremnih grani čnih tačaka u istoj potpornoj hiperravnini ,one su pridružene istoj vrijednosti funkcije cilja (z) kao i ekstremne tačke u toj hiperravnini i ,u skladu s tim ,nisu bolje od ekstremnih ta čaka pa se , dakle ,mogu zanemariti bez ikakva gubitka. Ta jednostavna ali važna činjenica upotrebljava se veoma uspješno u simpleks metodi za rješavanje linearnog programa sa n varijabli koju je izvorno razvio George B. Dantzig (kako je to već napomenuto u uvodnom dijelu). Drugo je važno svojstvo linearnog programiranja koje ga razlikuje od klasi čnih problema optimizacije da će nam bilo koje dobiveno rješenje dati ne samo lokalni (relativni) optimum ,ve ć i globalni (apsolutni ) optimum. Razlog za to posebno svojstvo nalazi se u slijede ćem teoremu (teoremu globalnosti) koji daje dovoljne – iako ne nužne – uvjete za koje je lokalni optimum ujedno i globalni : Ako je skup F mogućih rješenja zatvoren konveksan skup i ako je funkcija cilja neprekidna konkavna (konveksna) funkcija na sk upu mogućih rješenja ,tada :
a) bilo koji lokalni maksimum (minimum) ujedno je i globalni maksimum (minimum) b) tač ke od F u kojima funkcija cilja dostiže optimum č ine konveksan skup
Njegov je poseban zna čaj u ovom kontekstu da se samo po sebi razumije da su ti uvjeti dovoljni uvjeti za globalni optimum zadovoljeni u linearnom programiranju ,što ne vrijedi u klasi čnoj optimizaciji. Kao što smo vidjeli skup mogu ćih rješenja u linearnom programiranju uvijek je zatvoren konveksan skup. Osim toga ,funkcija cilja ,neprekidna i linearna u varijablama odlučivanja ,može se posmatrati kao konkavna ili konveksna ovisno o tome radi li se o problemu 8
maksimizacije ili minimizacije. Dakle ,dovoljni uvjeti navedeni u teoremu doista su i ispunjeni i bilo koji nađeni optimum bit će po prirodi globalan ,u sladu sa dijelom a) teoreme. Da bismo razumjeli dio b) teoreme ,pogledajmo malo druga čije na slici 4. Ako se optimalno rješenje linearnog programa dostigne u jednoj ekstremnoj ta čki , kao što je točka f na dijagramu a) ili točka u na dijagramu b) ,tada je ,prema dogovoru da je to čka konveksan skup ,tvrdnja teoreme ispunjena. Međutim , šta ako postoji višestruki optimum? Višestruki optimum pojavljuje se kada potporna ravnina dodiruje skup mogu ćih rješenja u više od jedne ta čke , kao kad je pravac 3 (dijagrama a) potporni pravac ili kad je ravnina H (dijagram b) podudara sa jednom od stranica (ravnih ploha) poliedra F. U tim primjerima skup svih optimalnih ta čaka uključen je ili u dužinu hg ili ,kao što se može dogoditi ,u neku stranicu poliedra F. Dakle ,skup je ponovo konveksan ,kao što tvrdi teorem.
EKONOMSKA MOTIVACIJA
Linearno programiranje obuhvata i rješava velik broj ekonomskih problema. U prvom redu probleme optimalnih proizvodnih programa u različitim uslovima ,koji praktično mogu biti sveobuhvatni u okviru preduze će. Oni se mogu ticati tehni čko-tehnoloških uslova proizvodnje ,sirovina ,zaliha ,radne snage ,tržišnih uslova ,ponude i tražnje ,uvoza ,izvoza i svih drugih elemenata koji neposredno uti ču na proizvodni proces i koji se javljaju kao ograni čavajući faktori. Kvantificiranje pomenutih uslova pomo ću matematičke relacije i formiranje odgovarajućih sistema međuzavisnosti (sistem ograni čavajućih uslova) omogućavaju postizanje onih rezultata koji proizlaze iz simultanog djelovanja svih obuhva ćenih faktora. Takvo obuhvatanje faktora sa posrednim i neposrednim efektima u vidu sistema predstavlja aproksimativno izražavanje me đuzavisnosti koje postoje u preduze ću. Linearno programiranje polazi od takvih sistema i na bazi unaprijed utvr đenih kriterijuma ,koji mogu biti različiti u zavisnosti od problema ,ispituje uslove optimalnosti ,odre đujući ona rješenja koja su u danim uslovima najbolja (optimalna). Drugim rije čima ,ako se za kriterijum uzme dohodak preduzeća koji se ostvaruje od proizvodnje više proizvoda ,tada je pri unaprijed poznatim ograničavajućim uslovima moguće odrediti onaj proizvodni program koji daje maksimalan ukupan dohodak. Takav program nazivamo optimalnim u odnosu na postavljeni kriterijum. Međutim , kriterijumi mogu biti različiti ,pri istim ograničavajućim uslovima ,što znači mogu se postavljati zahtjevi ,kao što su :
maksimiziranje dobiti maksimalno korištenje proizvodnih kapaciteta maksimalan izvoz sa odgovaraju ćim deviznim efektom minimalni troškovi proizvodnje minimalni obim zaliha i dr.
Navedeni primjeri predstavljaju relativno mali broj zadataka koje linearno programiranje obuhvata i rješava. Takvih i sli čnih problema ima dosta kako u problematici preduze ća ,tako i u drugim ekonomskim područ jima. Npr. prilikom razmatranja investicionih programa mogu se tražiti optimalna rješenja sa maksimalnom efektivnoš ću investicija ,zatim optimalni odnosi akumulacije i potrošnje u strukturnom smislu. Tako đer je moguće razmatrati probleme tržišta ,probleme spoljnotrgovinske razmjene ,probleme kooperacije i specijalizacije ,probleme potrošnje i ishrane ,probleme optimalnih ulaganja i selektivne proizvodnje. Također se mogu razmatrati problemi transporta u različitim varijantama ,problemi lokacije ,asignacije ,problemi rasporeda itd. Najzad ,mogu će je rješavati složene probleme koordinacije i uskla đivanja 9
programa različitih ekonomskih jedinica ,kao i programiranje proizvodnih planova privrednih grana u okviru cijele privrede preko metoda dekompozicije. Skala problema koji se mogu rješavati metodama linearnog programiranja relativno je velika i praktično ih je nemoguće sve nabrojati. Praktično ,svaki problem strukturne prirode u kome se postavlja zahtjev da se između velikog broja alternativnih rješenja odredi ono koje je prema unaprijed postavljenim kriterijumima najbolje ,pripada grupi linearnog programiranja. Navedeni primjeri prikazuju moguće formulacije linearnog programa za neke ekonomske probleme :
Primjer
( raspored plana proizvodnje )
Cilj problema je pronaći optimalan plan proizvodnje pod uslovom da se postigne maksimalna ukupna dobit. Zadane veličine su proizvodi ( P1 ,P2 , … .Pn ) ,te grupe mašina na kojima se vrši proces proizvodnje ( A ,B ,C , … ) a koje predstavljaju nejednačine ograničenja. Problem možemo formulisati i pomoću tabele i na osnovu njega zapisati linearni program.
Gdje je :
PROIZVOD
I T A S I N B E R T O P
P1
P2
…
Pn
Kapacitet sati
Na mašini A
a11
a12
…
a1n
b1
Na mašini B
a21
a22
…
a2n
b2
Na mašini C
a31
a32
…
a3n
b3
Dohodak KM / kom.
r 1
r 2
…
r n
a11 ,a12 ,…,a3n –
potreban broj sati izrade po jedinici proizvoda r1 ,r2 ,…,rn –
dohodak za
svaki proizvod
– kapaciteti mašina izraženi u mašinskim satima b1
,b2
,b3
Postavka linearnog problema izgleda kako slijedi : Maksimizirati uz uvjet
dohodak = r 1x1 + r 2x2 + … + r nxn a11x1 + a12x2 + … + a 1nxn b1 a21x1 + a22x2 + … + a 2nxn b2 a31x1 + a32x2 + … + a 3nxn b3 x j 0
(j = 1 , 2 , … , n ) 10
Potrebno je napomenuti da je gore navedeni primjer razra đen za samo tri grupe mašina A ,B ,C ,ali slično se može izvesti i za više od tri mašine.
Primjer
( transportni problem )
Posljednje desetljeće znanost posvećuje sve veću pažnju pitanjima organizacije i planiranja , posebno u domeni prometa i transporta , jer su pitanja racionalizacije u ovoj gospodarskoj grani postala vrlo složena. Poseban slučaj opšteg problema linearnog programiranja je tzv. transportni problem. Još prije pojave radova iz linearnog programiranja , neke specijalne slu čajeve transportnog problema izučavali su ekonomisti. Prvu strogu postavku transportnog problema dao je Hitchcock 1941 godine , pa se zato transportni problem često naziva i "problem Hitchcocka". Hitchcock je formulirao transportni problem na slijedeći način : Dano je m proizvodnih centara ili skladišta , koji nude odre đ enu robu u koli č inama a1 , a2 , …,am i n potroša č a koji tu robu potražuju u koli č inama b1 , b2 , … , b n. Pretpostavlja se da je zbir ponuda jednak zbiru potražnji : a 1 + a 2 + … + a m = b1 + b 2 + …+bn. Dani su brojevi C ij koji označ avaju cijene prevoza jedinice robe od i-tog proizvođ ač a do j-tog potroša č a. Treba naći takve velič ine X ij 0 , gdje X ij označ ava količ inu tereta koji treba prevesti od i-tog proizvo đ ač a do j-tog potroša č a , tako da ukupni troškovi transporta F
m
n
i
j
C X budu minimalni. 1 1 ij
ij
Rješenje transportnog problema , kao i svakog drugog problema linearnog programiranja , počinje određivanjem početnog bazičnog rješenja (početnog plana transporta). To predstavlja prvu etapu u rješavanju transportnog problema. Ako u toj prvoj etapi nije dobiveno optimalno rješenje , prelazi se na drugu etapu , tj. na etapu gdje se nizom iteracija prelazi s po četnog na bazična rješenja koja su sve bliža optimalnom rješenju. Postoji više metoda za odre đivanje početnog bazičnog rješenja . Jedna od prvih metoda nalaženja početnog bazičnog rješenja je "dijagonalna metoda" ili "metoda sjeverozapadnog kornera" (North-West Corner Rule). Druge metode , koje su kasnije prona đene , imale su za cilj da se dođe do početnog bazičnog rješenja , koje će biti bliže optimalnom rješenju. Međutim , pri korištenju računara važnija je jednostavnost odgovaraju ćeg programa za računar , nego broj iteracija kojima se dolazi do optimalnog rješenja. Ostale metode su Vogelova , te "steping-stone metoda" i "MODI metoda" za traženje optimalnog rješenja transportnog problema. Potrošač i
a t š i r o v z I
P1
P2
…
Pn
Kapaciteti ai
S1
c11
c12
…
c1n
a1
S2
c21
c22
…
c2n
a2
…
…
…
…
…
…
Sm
cm1
cm2
…
cmn
am
Potrebe b j
b1
b2
…
bn
Gdje su sa : c11 ,c12 ,…,cmn – označeni edinični troškovi transporta od izvorišta do potroša ča xij – veličina tereta kojeg
treba prevesti iz Si u P j
11
Na slici je prikazana tablica transportnog problema , te linearni program za navedeni transportni problem možemo formulirati na slijedeći način: Minimizirati
z = c11x11 + c12x12 + … + c 1nx1n + c21x21 + … + cmnxmn
uz uvjet
x11 + x12 + … + x 1n = a1 x21 + x22 + … + x 2n = a2 . .
. .
x11 + x21 + … + x m1 = b1 x12 + x22 + … + x m2 = b2
. . . . xm1 + xm2 + … + xmn = am
. . x1n + x2n + … + x nm = bn
xij 0
x ji 0
(j = 1 , 2 , … , n )
. .
. .
. .
(i = 1 , 2 , … , m)
PREGLED METODA LINEARNOG PROGRAMIRANJA
Postoje dvije osnovne metode rješavanja problema linearnog programiranja : grafi čka (geometrijska) i algebarska. Geometrijska metoda može se iskoristiti samo u slu čaju dvije ili tri varijable , pri čemu u slučaju tri varijable prostorni model postaje ve ć neprikladan. Ako je problem linearnog programiranja dan u standardnom obliku i ako je n-m = 2 (a najviše n-m = 3) , tada se također može riješiti geometrijskom metodom (n-broj varijabli , m-broj ograni čenja).
Grafi čk a (geometrijska) metoda Iz geometrijske interpretacije ograni čenja problema linearnog programiranja zna se da je svako rješenje sistema nejednačina jedna točka prostora R n , a sku nenegativnih rješenja problema linearnog programiranja i S R n. Svaka od nejedna čina : n
1 a X ij
j
bi
i=1 2 … m
j
n
određuje podskup Si , i = 1 , 2 , … , m (skup ta čaka jedne strane hiperravnine :
1 a X ij
j
bi )
j
n
, pa je skup dopustivih rješenja S ( poliedar u R ) određen jednačinom S = S1 S2 … Sm Sm+1 … Sm+n gdje se podskupovi Sm+1 , … , S m+n odnose na uslove nenegativnosti varijabli x 1 0 , x2 0 , … , xn 0. 12
Skup mogućih rješenja geometrijski predstavlja poliedar u prostoru. Funkcija silja , koja se za F=const. interpretira kao hiperravnina , dostiže maksimum (minimum) u jednom vrhu poliedra (slučaj jedinstvenog optimalnog rješenja) ili po jednoj stranici poliedra ako je hiperravnina F=const. njoj paralelna (slu čaj beskonačno mnogo optimalnih rješenja). Grafička (geometrijska) metoda rješavanja problema linearnog programiranja pokazat će se na primjeru , ali će se iz njega izvu ći zaključak koji će biti od značenja za opštu algebarsku metodu. Primjer :
Preduzeće treba da proizvodi dva proizvoda , A i B ,na tri grupe mašina ,M1 ,M2 i M3. Normativ vremena izrade ovih proizvoda na grupama mašina ,raspoloživi fond vremena mašina ,kao i dobit po jedinici proizvoda daju se u slijede ćoj tabeli : A x1
B x2
RFV sati
M1
5
6
1.500
M2
9
2,8
1.800
M3
2
9,5
1.800
Dobit KM/kom.
30
50
Potrebno je utvrditi optimalan plan proizvodnje pod uslovom da se postigne maksimalna dobit. Funkcija kriterija F(x)=30x1+50x2 Koju treba maksimizirati pod ograni čenjima 5x1 + 6 x2 1.500 9x1 + 2,8x2 1.800 2x1 + 9,5x2 1.800 U koordinatnom pravouglom sistemu OX1X2 predstavit ćemo nejednačine ograničenja kao jednačine. To će biti prave linije : prava p1 prava p2 prava p3
5x1 + 6 x2 = 1.500 9x1 + 2,8x2 = 1.800 2x1 + 9,5x2 = 1.800
13
Funkcija kriterija F(x) predstavlja snop beskona čno mnogo paralelnih pravih. Ako povla čimo prave paralelne sa pravom F(x) (funkcije kriterija) sve dalje od koordinatnog početka ,povećavaće se i vrijednost funkcije kriterija ,da bi u ta čki M ,koja je najviše udaljena od koordinatnog početka ,a leži na pravoj F(x) ,postigla svoju maksimalnu vrijednost.
Koordinate tačke M su x1 = 108 i x 2 = 160 a vrijednost funkcije kriterija F(x) = 11.240 KM Prema tome .plan proizvodnje sadrži : Proizvod A Proizvod B
108 jedinica 160 jedinica
A maksimalna dobit iznosi F(x) = 11.240 KM Pošto su koordinate ta čke M na presjeku pravih p 1 i p2 ,tj. na presjeku (ne)jednačina ograničenja raspoloživog fonda vremena mašina M 1 i M3 ,znači da je zadovoljen uslov jednakosti ova dva ograničenja ,te je raspoloživi fond vremena ovih mašina 100 % iskorišten.
14
Simpleks (simplex) metoda Često
postoji više od jednog na čina opisivanja odre đenog algoritma. Opisi koji imaju za cilj razjašnjenje važnih postupaka zbog didakti čkih prednosti su često sasvim razli čiti od onih koji sugeriraju učinkovite realizacije na računaru. Simpleks metoda nije izuzetak. U ovom trenu osnovni cilj je ponuditi alate za objašnjavanje osnovnih principa simpleks procedure. Me đutim , pri uvođenju metoda za rješavanje velikih problema na ra čunaru , razmatranja učinkovitosti računanja i numerička tačnost zasjenjuje didaktičke prednosti. Simpleks metoda je opšta metoda , što znači da rješava svaki problem linearnog programiranja. Simpleks metoda spada u grupu iterativnih metoda. Ona polazi od nekog mogu ćeg rješenja pa ga u nizu koraka poboljšava dok ne dođe do najboljeg , optimalnog rješenja. U svakom koraku prema optimalnom rješenju procedura te metode se ponavlja , iterira. Zato se metoda lako primjenjuje na ra čunaru. Simpleks metoda je konačna iterativna metoda jer u kona čnom broju iteracija dolazi do optimalnog rješenja. Od svih metoda za rješavanje linearne optimizacije simpleks metoda je najpoznatiji i najstariji algoritam. Nekoliko je matemati čara ,kako smo ve ć napomenuli ,sa svojim radovima doprinijelo njenoj formulaciji kakvu danas poznajemo ,ali se njenim ocem ipak smatra američki matematičar Dantzig. Iako za razne specijalne slu čajeve postoje brže i bolje metode , simpleks metoda je i dan danas kraljica linearne optimizacije i po jednostavnosti i po broju korisnika. Osim toga ,to je metoda koja ostaje u okvirima linearne algebre i ima lijepu geometrijsku interpretaciju. Način rješavanja linearnog problema uz pomo ć simpleks metode prikazat ćemo pomoću jednog jednostavnog primjera. U preduzeću se izrađuju tri proizvoda ,P1 ,P2 i P 3 na raznim mašinama. Uska grla proizvodnje su grupe mašina A ,B ,C i D ,te prema njihovim kapacitetima treba odrediti plan proizvodnje. Potreban broj sati izrade po jedinici proizvoda P 1 ,P2 i P3 na svakoj grupi mašina A ,B ,C i D kapaciteti svake grupe mašina u satima i dohodak po jedinici proizvoda u KM daju se u slijedećoj tabeli:
P1
P2
P3
Kapacitet sati
na grupi A
5
1
2
2.400
na grupi B
4,5
3
2,2
3.000
na grupi C
1,5
4
3
2.700
na grupi D
3
2,5
5
3.600
Dohodak KM/kom.
14
7
10
Odrediti optimalan plan proizvodnje pod uslovom da se postigne maksimalna ukupna dobit.
15
Matematički model glasi : Z = max F(x) = 14x 1 + 7x2 + 10x3 Ograničenja 5x1 + x2 + 2x3 2.400 4,5x1 + 3x2 + 2,2x3 3.000 1,5x1 + 4x2 + 3x3 2.700 3x1 + 2,5x2 + 5x3 3.600 Nejednačine ograničenja transformisat ćemo u jednačine na taj način što ćemo svakoj nejednačini dodati po jednu dopunsku – izravnavaju ću – varijablu sa koeficijentom 1 ,a u funkciji kriterijuma sa koeficijentom 0. Dobit ćemo : Z = max F(x) = 14x 1 + 7x2 + 10x3 + 0 (x4 + x5 + x6 + x7 ) Ograničenja 5x1 + x2 + 2x3 + x4 = 2.400 4,5x1 + 3x2 + 2,2x3 + x5 = 3.000 1,5x1 + 4x2 + 3x3 + x6 = 2.700 3x1 + 2,5x2 + 5x3 + x7 = 3.600 Sada formiramo početnu simpleks tabelu. Početnu vektorsku bazu čine vektori dopunskih varijabli A4 ,A5 ,A6 i A7.
c j
14
7
10
0
0
0
0
Baza
A0
A1
A2
A3
A4
A5
A6
A7
0
A4
2.400
5
1
2
1
0
0
0
0
A5
3.000
4,5
3
2,2
0
1
0
0
0
A6
2.700
1,5
4
3
0
0
1
0
0
A7
3.600
3
2,5
5
0
0
0
1
z j - c j
0
-14
-7
-10
0
0
0
0
Nenegativne varijable su Xi = [ x4 x5 x6 x7 ] = [ 2.400 3.000 2.700 3.600 ] i označavaju neiskorištene sate grupe mašina A ,B ,C i D.
16
Varijable koje su nula X j = [ x1 x2 x3 ] = [ 0 0 0 ] i označavaju da nema proizvodnje. Promjenom vektorske baze treba pove ćati vrijednost funkcije kriterija. Kriterij za ulazak jednog od vektora van baze A j u vektorsku bazu je : Max [( z j – c j )] < 0 gdje je z j = ci xij Koeficijenti ci vektora baze su [ c4 c5 c6 c7 ] = [ 0 0 0 0 ] te je z1 = 0 z2 = 0 z3 = 0 z1 – c1 = 0-14 = -14 ; z2 – c2 = 0 – 7 = -7 ; z 3 – c3 = 0 – 10 = -10 Prema tome ,u vektorsku bazu ulazi vektor A 1 ,što smo u tabeli ozna čili osjenčenim poljem. Kriterij za izlazak jednog od vektora A i iz vektorske baze je :
min r
xr 0 x rj
0
r = 4 ,5 ,6 ,7 fiksno j=1 jer u bazu ulazi A 1
xr0 = [ x40 x50 x60 x70 ] = [ 2.400 3.000 2.7000 3.6000 ] Treba izračunati x 40 x 41
2.400 480 5
x50 x51
3.000 666,6 4,5
x 60 x 61
2.700 1.800 1,5
x 70 x 71
3.600 1.200 3
to iz baze izlazi vektor A 4. Sada treba izračunati nove vrijednosti nenegativnih varijabli . Prvi korak
Izračunaju se svi koeficijenti u redu novog vektora koji je ušao u bazu ,a u istom redu u kojem je bio vektor koji je izišao iz baze početne tabele. Red r=4 vektora A4 koji izlazi iz baze naziva se vode ći red. Kolona k=1 vektora A1 koji ulazi u bazu naziva se vodeća kolona. Koeficijent xij koji se nalazi na presjeku vode ćeg reda i vodeće kolone naziva se vode ći koeficijent ( pivot element ). U našem slučaju to je x41. Novi koeficijenti vektora A 1 koji je ušao u bazu i nalaze se u redu r=1 tabele I izra čunavaju se 17
tako da se svi koeficijenti vode ćeg reda u početnoj tabeli podijele sa vode ćim koeficijentom u početnoj tabeli ,tj.
x' rk
x'10
x 40 x 41
x rk x rj
2.400 480 5
za fiksno r=4 i j=1 , a za svako k
x'11
x 41 x 41
5 1 5
x'12
x 42 x 41
2. 5
itd.
Ovo su sada koeficijenti u redu r=1 tabele I. Drugi korak
Izračunavaju se koeficijenti u redovima vektora koji su ostali u bazi.,po formuli : x 'ik xik
x rk x rj
xij za fiksno r=4 ,fiksno j=1 i za svako k=0,1,2,…,7
x'ik = xik – x'rk xij
ili gdje su : xik
koeficijenti u početnoj tabeli
xij
koeficijenti u presjeku vodeće kolone i reda koji je ostao u bazi u po četnoj tabeli
x'rk
ranije izračunati koeficijenti vektora koji je ušao u bazu u tabeli I
Za red r=5 ,tj. vektor A 5 koeficijenti se izračunavaju na slijedeći način : X'50 = x50 – x'10 x51 = 3.000 X'51 = x51 – x'11 x51 = 4,5 X'52 = x52 – x'12 x51 = 3
– 480 4,5 = 840 – 1 4,5 = 0 – 0,2 4,5 = 2,1 itd.
………………………………………. Na analogan način se izračunavaju i koeficijenti vektora A6 i A7 koji su ostali u bazi. Treći korak
Izračunati nove ( z j – c j ) prema formuli :
18
z ' k c k ( z k c k )
x rk x rj
( z j c j ) za fiksno j=1 i svako k
z ' k c k ( z k c k ) x ' rk ( z j c j )
ili
Izračunajmo na sličan način : Z'1 – c1 = (z1 – c1) – x'11 (z1 – c1) = -14 – 1 (-14) = 0 Z'2 – c2 = (z2 – c2) – x'12 (z1 – c1) = - 7 – 0,2 (-14) = -4,2 Z'3 – c3 = (z3 – c3) – x'13 (z1 – c1) = -10 – 0,4 (-14) = -4,4
itd.
………………………………………………………….. Ove koeficijente unosimo u posljednji red tabele I.
c j
14
7
10
0
0
0
0
Baza
A0
A1
A2
A3
A4
A5
A6
A7
14
A1
480
1
0,2
0,4
0,2
0
0
0
0
A5
840
0
2,1
0,4
-0,9
1
0
0
0
A6
1.980
0
3,7
2,4
-0,3
0
1
0
0
A7
2.160
0
1,9
3,8
-0,6
0
0
1
z j - c j
6.720
0
-4,2
-4,4
2,8
0
0
0
14
7
10
0
0
0
0
c j Baza
A0
A1
A2
A3
A4
A5
A6
A7
14
A1
252,63
1
0
0
0,263
0
0
-0,105
0
A5
612,63
0
1,9
0
-0,837
1
0
-0,105
0
A6
615,8
0
2,5
0
0,079
0
1
-0,631
10
A3
568,42
0
0,5
1
-0,158
0
0
0,263
z j - c j
9.221
0
-2,0
0
2,1
0
0
1,157
19
c j
14
7
10
0
0
0
0
Baza
A0
A1
A2
A3
A4
A5
A6
A7
14
A1
252,6
1
0
0
0,263
0
0
-0,105
0
A5
144,7
0
0
0
-0,898
1
-0,76
0,374
7
A2
246,3
0
1
0
0,032
0
0,40
-0,252
10
A3
445,3
0
0
1
-0,174
0
-0,20
0,390
z j - c j
9.713,7
0
0
0
2,17
0
0,80
0,651
Pošto su svi koeficijenti u posljednjem retku simplex tabele pozitivni slijedi da je to optimalan plan proizvodnje (maksimalna funkcija cilja). Optimalna (maksimalna) vrijednost funkcije kriterija F(x) = 9.713,7 Optimalan plan sadrži proizvodnju : Proizvod P1 Proizvod P2 Proizvod P3
x1 = 252,6 jedinica x2 = 246,3 jedinice x3 = 445,3 jedinice
Iskorištenje kapaciteta : Grupa mašina A Grupa mašina B Grupa mašina C Drupa mašina D
100 % 95 % 100 % 100 %
x4 = 0 x5 = 144,7 sati x6 = 0 x7 = 0
20
Fourier – Motzkinova metoda eliminacije Fourier – Motzkinova metoda jedna je od metoda za rješavanje sistema nejedna čina. Važnost joj je više teorijska nego praktična i simpleks metoda ju je u potpunosti zasjenila što se numerike tiče. To je metoda eliminacije za jedna čine jer je osnovna metoda rješavanja "zapisivanje" jedne nepoznate ,iz jedne od jedna čina ,pomoću ostalih nepoznatih i njena eliminacija u drugim nejednačinama. Pojam "izraziti" je ovdje nejasan i neprecizan jer iz uslova zapisanog u formi nejednakosti nije moguće dobiti zavisnost među varijablama u funkcionalnom obliku. Za sada dopustimo da metoda govori sama za sebe. Ovdje ćemo je ilustrirati na sistemu nejedna čina s dvije nepoznanice. Primjer
x + y 5 -x + y 3 -3x + y 7 -x – 3y 9 3 x Gornji sistem nejednačina određuje poligon u ravnini prikazan na slici
Svaku nejednačinu možemo pomnožiti pozitivnim brojem i dobiti ekvivalentan sistem nejednačina u obliku x 5 – y x 3 y – 3 x 1 7 y x 3 3 -3y – 9 x 21
u kojem je nepoznata x separirana od ostalih varijabli ,to je u našem slu čaju samo nepoznanica y. Ekvivalentan zapis gornjeg sistema je 1 7 max( y 3, y ,3 y 9) x min(5 y,3) 3 3 Nepoznatu x sada možemo eliminirati nakon čega se dobiva sistem od šest nejedna čina po y y – 3 5 – y y – 3 3 1 7 y 5 y 3 3 1 7 y 3 3 3 -3 y – 9 5 – y -3 y – 9 3 Broj nejednačina prethodnog sistema jednak je proizvodu broja nejedna čina koje ograničavaju x odozgo s brojem nejedna čina koje ograni čavaju x odozdo. U ovom primjeru je to 2 3 = 6. Sada dobivamo ograničenje sa y kao presjek svih intervala -4 y 4 Dalje se zaključuje ovako : Za svaku vrijednost y [-4 , 4 ] maksimalnu vrijednost na lijevoj strani postiže se u najviše dva argumenta (izraza). Npr. izraz 1/3 y – 7/3 i izraz y – 3 i ta vrijednost iznosi 1. Na taj na čin interval [-4 , 4] razbija se na uniju zatvorenih intervala koji se nadovezuju jedan na drugi. Rubne ta čke tih intervala su one vrijednosti od y za koje dva argumenta od max imaju jednake vrijednosti. Te su vrijednosti -4 ,-2 ,-3/2 ,1 ,2 ,4 Na svakom od tih podintervala sada imamo donju i gornju ogradu za x ovisno o y. Rješenje je za za za za za
-4 y -2 -2 y -3/2 -3/2 y 1 1 y 2 2 y 4
je je je je je
-3y – 9 x 3 1/3y – 7/3 x 3 1/3y – 7/3 x 3 y – 3 x 3 y – 3 x 5 - y
22
PREGLED SOFTWAREA ZA LINEARNO PROGRAMIRANJE
George Dantzig se s pravom naziva ocem linearnog programiranja. S njim zapo činje rješavanje linearnog problema i to pronalaženjem prvog generalnog algoritma (simpleks algoritam) za njegovo rješavanje ,1947 godine. Prvi problem koji su Laderman i Stigler riješili simpleks algoritmom (metodom) odnosio se na problem ishrane ,sadržavao je 77 varijabli. Devet matematičara zajednički su ,uz pomoć kalkulatora ,zajedni čki radili na njegovom rješavanju i trebalo im je otprilike 120 radnih sati za njegovo rješenje. Prvi pokušaj rješavanja linearnog problema uz pomo ć računara ,primjenom simpleks metode bila je od strane NBST-a (National Institute of Standards and Technology). Orden (1952) i Hoffman (1953) su na računaru SEAC testirali rješavanje linearnog problema sa 48 ograni čavajućih jednačina i 71 varijablom ,čije je izračunavanje trajalo 18 sati i izra čunato na 73-oj simpleks iteraciji (koraku). Kao što vidimo prijašnji računari su bili spori za rješavanje linearnog problema koji je sadržavao mnogo varijabli i ograničavajućih jednačina. Savremenim razvojem tehnike i tehnologije (prvenstveno računarske i softwarske) ,taj problem se znatno prevazišao. Danas ,mi imamo širok spektar programa (softwarea) ,što komercijalnih što besplatnih ,koji su namjenjeni rješavanju linearnog programa. Oni se zasnivaju na nekom od algoritama ,ali su ve ćinom to modificirane forme simpleks algoritma. Takvi programi linearne probleme rješavaju za čuđujućim brzinama ,što je i sama svrha upotrebe ra čunara u linearnom programiranju. Na slijedećoj tabeli su dati neki ,danas naj češće korišteni programi za podršku linearnom programiranju : ALGORITAM PROIZVOD
Simplexbased
Interiorpoint
Branch- andbound
Branchand-cut
Presolve
da
da
da
da
da
-
-
-
-
da
Aspen MIMI
da
da
da
-
da
C-WHIZ
da
-
da
da
da
DATAFORM
da
-
-
-
-
DecisionPro
da
-
da
-
-
DecisionScript
da
-
da
-
-
FORTMP Optimization System
da
da
da
da
da
-
-
-
-
-
GAUSS
da
-
-
-
-
ILOG CPLEX Suite
da
da
da
da
da
ILOG OPL Studio
da
da
da
da
da
LAMPS
da
-
da
-
da
Large-Scale LP Solver DLL
da
-
da
-
-
Large-Scale LP Solver Engine for MS Excel
da
-
da
-
-
LINDO with Callable Library
da
da
da
da
da
LINGO
da
da
da
da
da
LOQO
-
da
-
-
-
LP-TOOLKIT
da
da
da
da
da
LPS-867
da
-
-
-
-
AIMMS 3 AMPL
GAMS
23
LSSOL 1.05
da
-
-
-
-
MathPro 2000
da
da
da
da
da
MatLab
da
da
da
da
da
Mathematica
da
da
-
-
-
MINOS 5.5
da
-
-
-
-
Modellium
da
-
-
-
-
MOSEK Optimization Tools
da
da
da
da
da
MPL Modeling System
da
da
da
da
da
NAG C Library
-
-
da
-
-
NAG Fortran Library
-
-
da
-
-
NAG SMP Library
-
-
da
-
-
OML
da
-
da
da
da
OMP Optimization
da
da
da
da
da
OptiMax 2000
da
da
da
da
da
Optimization Solutions & Library
da
da
da
da
da
-
da
-
-
da
Premium Solver Platform for MS Excel
da
-
da
-
da
SAS Software
da
da
da
-
da
SNOPT 6.0
da
-
-
-
-
Solver DLL Platform
da
-
da
-
da
SOPT (Smart Optimizer)
da
da
da
-
da
Visual XPRESS
da
da
da
da
da
What's Best
da
da
da
da
da
XA
da
da
da
da
da
XPRESS Solver Engine for MS Excel
da
da
da
da
da
XPRESS-EMOSL (Entity Modeling & Optimser Subroutine Library)
da
da
da
da
da
-
-
-
-
-
XPRESS-MP Optimizer
da
da
da
da
da
XPRESS-MP Optimizer Subroutine Library XOSL
da
da
da
da
da
XPRESS-XBSL (XPRESS Builder Subroutine Library
da
da
da
da
da
PCx
XPRESS-MP Modeler
Napomena :
Ovo je samo jedan dio komercijalnog softwera za linearno programiranje koji se može na ći na tržištu. Cijena ovih programskih paketa nije mala i kre će se negdje od $100 pa do $4.000 . Postoje i software-i koji su manjih mogu ćnosti i namjenjeni su prvenstveno studentima ,a besplatni su. Njih obi čno razvijaju samostalno studenti ,te se baziraju na nekim od programskih jezika C++ ,Fortran ,Delphi i sl.
24
LINEARNO PROGRAMIRANJE U PROGRAMSKOM PAKETU MATLAB
Osnovne crte MATLAB je jezik za tehni čko i matematičko modeliranje visokih performansi. On obuhvata okruženje za izračunavanja ,vizualizaciju i programiranje gdje se problemi i njihova rješenja izraženi u nekoliko matemati čkih oblika. MATLAB je interaktivan sistem kojem je osnovni podatkovni element niz ,kojeg prije upotrebe nije potrebno dimenzionisati. Zbog toga nam je dopušteno da rješavamo mnoge matemati čke i tehničke probleme ,naročito one koji su formulisani u matričnom i vektorskom obliku. Naziv MATLAB je danas postalo standard za tzv. "matrič ne laboratorije" . MATLAB je originalno i pisan da pruži brži pristup matričnom rješavanju problema ,razvijen u sklopu LINPACK i EISPACK projekta. MATLAB je razvijan čitav niz godina od strane mnogih stru čnjaka ,ali i korisnika. Na univerzitetskoj nastavi ,to je standardni alat za uvodne i napredne kurseve iz oblasti matematike ,inženjerstva ,ekonomije i ostalih znanstvenih disciplina. U industriji ,MATLAB je alat za visoko-produktivna istraživanja ,razvoj i analizu proizvodnih procesa. MATLAB pripada familiji aplikacija koje se mogu proširivati sa specifi čnim rješenjima zvanim "toolbox" (alatni paketi). Za matematičko ,te samim tim i linearno programiranje ,razvijen je velik broj alatnih paketa ,ali samo jedan dolazi ugrađen u MATLAB nazvan "Optimization toolbox". On sadrži kolekciju funkcija koji proširuju mogućnosti MATLAB-a u područ ju numeričke analize . Alatni paket uključuje u sebi procedure (funkcije) za mnoge vidove optimizacija kao što su:
linearna i nelinearna minimizacija linearno programiranje kvadratno programiranje konveksno i višekriterijalno programiranje izračunavanje nelinearnih sistema jedna čina
Također ,svaki korisnik može proširiti mogu ćnosti optimizacijskog paketa pišu ći specifičan kod koji se ugrađuje u funkciju sa ostalim alatni paketima. Kako se u MATLAB-u može rješavati širi spektar optimizacijskih problema ,postoji i čitav niz funkcija (naredbi) za njihovo modeliranje i rješavanje. Me đu osnovnim naredbama MATLABovog "Optimization toolbox-a" ubrajaju se slijede će : NAREDBA fminbnd fmincon fminmax fminsearch linprog quadprog
UPOTREBA Pronalazi minimum funkcije jedne varijable Pronalazi minimum nelinearnih funkcija više varijabli Rješava problem minimum-maximum Pronalazi minimum funkcije više varijabli Rješava standardni problrm minimuma Rješava probleme kvadratnog programa 25
Za linearno programiranje najzna čajnija je naredba linprog koja rješava sve modele linearnog programa ,kako standardni problem minimuma tako i problem maksimuma.
Sintaksa naredbe LINPROG
MATLAB koristi slijedeću formu zapisa linearnog programa :
min f T x x
uz uslov
A x b Aeq x = beq x lb x ub gdje su f ,x ,b ,b eq ,lb i ub vektori ,a A i Aeq matrice. Osnovna sintaks anaredbe linprog ,koja služi za rješavanje linearnog problema je :
x = linprog (f , A , b , A eq , beq , lb , ub ) Međutim ,postoje i ostali oblici zapisivanja naredbe linprog zavisno od toga kakve rezultate želimo da dobijemo i kakve forme linearnog problema imamo. Ti oblici su dati na slijede ći način: x = linprog (f , A , b) x = linprog (f , A , b , A eq , beq) x = linprog (f , A , b , A eq , beq , lb , ub , x0) x = linprog (f , A , b , A eq , beq , lb , ub , x0 , options) [x , fval] = linprog ( … ) [x , fval , exitflag] = linprog ( … ) [x , fval , exitflag , output] = linprog ( … ) [x , fval , exitflag , output , lambda] = linprog ( … ) Vidimo da su te naredba više ili manje samo specifi čni oblici zapisivanja linearnog problema u MATLAB-u. Neke od njih se koriste dosta rijetko i to sve zavisno od toga kakvu formu izlaznih podataka želimo da prikažemo u vezi sa zadanim problemom. Sada ćemo objasniti značenje najčešće korištenih MATLAB-ovih formi naredbe linprog ,te ih 26
prikazati kroz primjere. Najjednostavniji zapis naredbe linprog je slijedeći : x = linprog (f , A , b) koja izračunava minimum funkcije cilja f x uz ograni čenja A x <= b. Značenje simbola je : f – funkcija cilja x – varijable funkcije cilja A – matrica koju čine koeficijenti varijabli iz ograničavajućih nejednačina b – vektor stupac Primjer
Pretpostavimo da imamo zapisan slijede ći linearni program : min f = 18 x1 + 12 x2 + 16 x3 0,12 x1 + 0,20 x2 + 0,80 x3 2,4 0,50 x1 + 0,80 x2 + 0,16 x3 3,2 Da bismo ovaj problem riješili u MATLAB-u moramo prvo definisati matrice i vektore koji čine funkciju cilja f ,te ostala ograni čenja A i b. To postižemo na slijedeći način: >> f =[18 12 16]; >> A=[0.12 0.20 0.80 ; 0.50 0.80 0.16]; >> b=[2.4 ; 3.2]; Matrice se definišu uvijek između znaka […] ,te se slijede ći od prethodnog retka odvaja znakom " ; ". Nakon definisanja potrebnih matrica za izračunavanje linearnog programa ,možemo pristupiti zadavanju naredbe linprog : >> x=linprog (f,A,b) te nakon pritiskanja tipke "enter" dobijamo odgovarajući rezultat : Exiting: One or more of the residuals, duality gap, or total relative error has stalled: the dual appears to be infeasible (and the primal unbounded). (The primal residual < TolFun=1.00e-008.) x= 1.0e+009 * -3.5336 -2.2151 -3.6908 27
Možemo primijetiti da smo dobili neka upozorenja od strane MATLAB-a o egzistenciji rješenja ,gdje nam govori o njihovom nepostojanju i bezgrani čnosti. Malo dole niže ta rješenja su dana ali u sasvim nezadovoljavaju ćoj formi ,jer su prije svega negativna. Ovdje se može postaviti pitanje iz kog razloga MATLAB izdaje negativne forme rješenja linearnog problema kad se zna da se ekonomska zna čenja linearnog problema odnose prvenstveno na prvi kvadrant tj. brojevi moraju biti pozitivni. To je prvenstveno iz tog razloga što rješavanje linearnog problema ne leži samo u sferi ekonomskih istraživanja ,ve ć i u ostalim znanstvenim disciplinama gdje su ona dopuštena. Iz tih razloga kod formulacije linearnog problema moramo dati do znanja MATLAB-u da se radi o nenegativnim varijablama , to možemo učiniti slijedećom sintaksom linprog naredbe : x = linprog (f , A , b , [] , [] , lb) Prije nego što pređemo na primjer potrebno je objasniti zna čenje dvostrukih praznih zagrada []. One su navedene jer ne postoje matrice koeficijenata varijabli koje stoje u čistim ograničavajućim jednačinama tj. ne postoje matrica Aeq i vektor beq. Izostavljanje ovih veličina ne možemo izvršiti samo prostim izostavljanjem ,ve ć njihova mjesta koja su prazna moramo izostavljati uz pomoć zagrada []. Inače ,sva izostajanja u MATLAB-ovim naredbama vršimo pomoću oznake za praznu matricu ,a to je upravo oznaka velike zagrade. Primjer
Ako se sada ponovo vratimo na naš primjer ,ali uz definiciju vektora lb koji u svojoj suštini je nul-vektor (elementi su mu samo nule ) dobit ćemo slijedeće rješenje : >> f = [18 12 16]; >> A=[0.12 0.20 0.80;0.50 0.80 0.16]; >> b= [2.4;3.2]; >> lb=[0;0;0]; >> x=linprog(f,A,b,[],[],lb)
Optimization terminated successfully. x= 1.0e-012 * 0.0972 0.0073 0.1146
Sada nam je MATLAB dao do znanja da je optimizacija ura đena do kraja i naveo veli čine ograničavajućih varijabli koje su pozitivni brojevi. To je ujedno i rješenje linearnog problema.
28
Sama struktura linearnog problema je u MATLAB-u definisana standardnim problemom minimuma. To nikako ne zna či da se on ne može primijeniti u rješavanju standardnog problema maksimuma. Naredba je ista samo što se mora uzvršiti odgovaraju ća preformulacija u funkciji cilja f. Naime ,matrica funkcije cilja se mora postaviti sa negativnim predznakom i na taj na čin dati doznanja MATLAB-u da se radi o problemu maksimizacije. Sintaksa naredbe linprog za problem maksimizacije bi se mogla zapisati na slijedeći način : x = linprog (-f , A , b , [] , [] , lb) Primjer
Vratimo se na primjer koji smo riješili bez upotrebe MATLAB-a kad smo objašnajvali simplex metod rješavanja linearnog programa. Tamo smo imali slije ću formu linearnog programa : max F(x) = 14x1 + 7x2 + 10x3 5x1 + x2 + 2x3 2.400 4,5x1 + 3x2 + 2,2x3 3.000 1,5x1 + 4x2 + 3x3 2.700 3x1 + 2,5x2 + 5x3 3.600 Postavka i rješenja navedenog problema je slijede ća : >> f= -[14 7 10]; >> A= [5 1 2;4.5 3 2.2;1.5 4 3;3 2.5 5]; >> b= [2400;3000;2700;3600]; >> lb= [0;0;0]; >> x=linprog(f,A,b,[],[],lb)
Optimization terminated successfully. x= 252.6316 246.3158 445.2632
Proces pronalaženja optimalnog rješenja je dovršen u potpunosti. Može se primijetiti da se rješenja u potpunosti slažu sa rješenjima koja smo dobili rješavaju ći problem simpleks tabelom klasičnim putem.
29
Do sad smo se prvenstveno bazirali na probleme iz linearnog programiranja koji su u ograničenjima sadržavali nejedna čine . Često puta u linearnom programu se mogu pojaviti i ograničenja u vidu čistih jednakosti ,te njihovo rješavanje u MATLAB-u iziskuje dodatnu modifikaciju u naredbi linprog. Njihovim definisanjem će se pojaviti one matrice koje smo prethodno izostavili ,a koje su se odnosile na ovakve vidove ograni čenja. To su prvenstveno matrica koeficijenata varijabli u jednakostima A eq i vektor ograničenja u jednačinama ograničenja beq. Njihovim uvođenjem forma naredbe linprog izgleda na slijedeći način : x = linprog (-f , A , b , A eq , beq , lb) i to je ujedno najopštija forma linprog naredbe koja se koristi u "Optimization toolbox-u" ,a odnosi se na pitanja linearne optimizacije. Primjer
Na ovom primjeru ćemo vidjeti linearni program koji sadrži i jedna čine i nejednačine u ograničavajućem dijelu linearnog programa. Formulacija linearnog problema izgleda na slijedeći način: max f = 4 x 1 + 2 x2 + x3 2 x1 + x2 1 x1 + 2 x3 2 x1 + x2 + x3 =1 x1 , x2 , x3 0 Definisanje i rješenje problema u MATLAB-u izgleda na slijede ći način : >> f = -[4 2 1]; >> A= [2 1 0;1 0 2]; >> b = [1;2]; >> Aeq = [1 1 1]; >> beq = [1]; >> lb = [0;0;0]; >> x=linprog(f,A,b,Aeq,beq,lb)
Optimization terminated successfully. x= 0.5000 0.0000 0.5000
30
Da bismo u potpunosti objasnili sve argumente naredbe linprog ,a koji se odnose na matrice i vektore linearnog programa potrebno je navesti zna čenje argumenta "ub". Ovaj argument se navodi kod nejednakosti koje čine varijable pojedinačno i one kreiraju vektor-stupac (ub). U slučaju da ograničenje jedne varijable nedostaje potrebno je u vektoru "ub" navesti nul-elemenat. Primjer
Postavimo linearni program sli čno kao u prethodnom primjeru ,uz dodatak još nekoliko ograničavajućih nejednačina : max f = 4 x 1 + 2 x2 + x3 1 2 x1 + x2 x1 + 2 x3 2 x1 + x2 + x3 =1 x1 1 1 x2 x3 2
x1 , x2 , x3 0 Primjer ćemo uz pomoć MATLAB-a definisati i riješiti na slijedeći način : >> f= -[4 2 1]; >> A= [2 1 0;1 0 2]; >> b= [1;2]; >> Aeq=[1 1 1]; >> beq=[1]; >> lb=[0;0;0]; >> ub=[1;1;2]; >> x=linprog(f,A,b,Aeq,beq,lb,ub)
Optimization terminated successfully. x= 0.5000 0.0000 0.5000
31
Do sad smo pronalazili rješenja linearnog programa u vidu izdavanja rezulatat o vrijednosti varijabli ,ali nišata ne znamo o vrijednosti funkcije cilja. Njeno izra čunavanje za manji broj varijabli nije teško ni upotrebom obi čnog digitrona ,ali za ve ći broj varijabli već bi predstavljalo neracionalno korištenje vremena. Iz tog razloga u MATLAB-u postoji argument naredbe linprog koji mu daje do znanja da želimo dobiti rezultat za funkciju cilja ,a sintaksa je dana na slijede ći način : [x , fval] = linprog (f , A , b , A eq , beq , lb , ub) gdje argument "fval" označava da želimo povratnu vrijednost funkcije cilja. Primjer
Za prikazivanje ove forme naredbe linprog koristimo formu prethodnog primjer : >> f= -[4 2 1]; >> A= [2 1 0;1 0 2]; >> b= [1;2]; >> Aeq=[1 1 1]; >> beq=[1]; >> lb=[0;0;0]; >> ub=[1;1;2]; >> [x , fval] =linprog(f,A,b,Aeq,beq,lb,ub)
Optimization terminated successfully. x= 0.5000 0.0000 0.5000 fval = -2.5000
Funkcija cilja je dana kao negativna vrijednost ,što ne treba predtsavljati zabunu ako se sjetimo da smo u slučaju problema maksimuma njenu matricu definisali kao negativnu. Dakle kod standardnog problema maksimuma kod rezultata za funkciju kriterijuma trebamo zanemariti znak munus.
32
Posljednji važan argument naredbe linprog ,a koji se često navodi pri rješavanju linearnog programa jeste "exitflag". On pokazuje da li funkcija konvergira prema rje šenju ili divergira od rješenja. Sintaksa naredbe je dana na slijede ći način: [x , fval , exitflag] = linprog (f , A , b , Aeq , beq , lb , ub) Argument "exitflag" može imati slijedeće vrijednost ,te u zavisnosti od njih i odgovaraju ća značenja : Exitflag > 0 Exitflag = 0 Exitflag < 0
funkcija konvergira prema rješenju x broj iteracija za njihovo rješenje je prevelik funkcija divergira od rješenja
Primjer
Pogledajmo prethodni primjer s uključenim argumentom "exitflag" : >> f= -[4 2 1]; >> A= [2 1 0;1 0 2]; >> b= [1;2]; >> Aeq=[1 1 1]; >> beq=[1]; >> lb=[0;0;0]; >> ub=[1;1;2]; >> [x , fval] =linprog(f,A,b,Aeq,beq,lb,ub)
Optimization terminated successfully. x= 0.5000 0.0000 0.5000 fval = -2.5000 exitflag = 1
33
Geometrijsko rješavanje linearnog programa Rješavanje problema linearnog programiranja sa dvije nepoznate varijable u funkciji kriterija može se rješavati geometrijskim putem u programskom paketu MATLAB. Potrebno je napomenuti da ne postoji ugrađena standardna funkcija za rješavanje linearnog programa geometrijskom metodom , već takvu proceduru moramo razviti samostalno. To se postiže zahvaljujući programskom jeziku kojim nam MATLAB omogućava svoju nadogradnju (razvijanje vlastitih matematičkih funkcija za rješavanje konkretnih problema). Da bismo razvili proceduru za geometrijsko rješavanje linearnog programa , kao i za traženje ekstremnih tačaka konveksnog skupa koje predstavljaju mogu će rješenje linearnog programa , definisat ćemo slijedeće funkcije :
vr (definiše jedinične vektore e m-dimenzionalnog Euklidskog prostora) delcols (briše duplicirane kolone matrice d)
U slijedeća dva okvira su dani kodovi za te dvije funkcije: function e = vr(m,i) %Koordinate jediničnih vektora e Euklidskog vektorskog %prostora e = zeros(m,1); e(i) = 1; function d = delcols(d) % Briše duplicirane kolone u matrici d d = union(d',d','rows')'; n = size(d,2); j = []; for k =1:n c = d(:,k); for l=k+1:n if norm(c - d(:,l),'inf') <= 100*eps j = [j l]; end end end if ~isempty(j) j = sort(j); d(:,j) = [ ]; end
34
Standardna forma problema linearnog programiranja je formulisana na ve ć poznati način : T
min z = c x
ograničenja
Ax = b x0
Funkcija vert = feassol(A , b) izra čunava sva moguća rješenja linearnog programa. function vert = feassol(A, b) [m, n] = size(A); warning off b = b(:); vert = []; if (n >= m) t = nchoosek(1:n,m); nv = nchoosek(n,m); for i=1:nv y = zeros(n,1); x = A(:,t(i,:))\b; if all(x >= 0 & (x ~= inf & x ~= -inf)) y(t(i,:)) = x; vert = [vert y]; end end else error('Broj jednačina je veći od broja varijabli.') end if ~isempty(vert) vert = delcols(vert); else vert = []; end Da bismo ilustrirali navedenu funkciju pretpostavit ćemo slijedeći sistem ograničavajućih nejednačina : x1 + x2 6 x2 3 x1, x2 0
Da bismo ovaj sistem pretvorili u standardni formu linearnog programa postavili smo dodatne varijable x3 i x4. Na taj način smo dobili matricu A i vektor b kako slijedi: 35
A = [1 1 1 0; 0 1 0 1]; b = [6; 3]; vert = feassol(A, b)
Nakon izračunavanja dobili smo rezultat na slijedeći način vert =
0 0 6 3
0 3 3 0
3 3 0 0
6 0 0 3
Da bismo dobili posebno vrijednost za varijable x 1 i x2 potrebno je pristupiti odvajanju prva dva reda iz matrice vert , što ćemo postići na slijedeći način: vert = vert(1:2, :) ver t
=
0 0 3 6 0 3 3 0
Za pronalaženje ekstremnih ta čaka bilo kojeg konveksnog skupa potebno je razviti funkciju u programskom paketu koja će dati doznanja MALAB-u da se traže takve vrijednosti. Jedna od načina za definisanje takve procedure (algoritma) je dana u slijede ćem fragmentu koda:
function vert = extrpts(A, rel, b) [m, n] = size(A); nlv = n; for i=1:m if(rel(i) == '>') A = [A -vr(m,i)]; else A = [A vr(m,i)]; end if b(i) < 0 A(i,:) = - A(i,:); b(i) = -b(i); end end
36
warning off [m, n]= size(A); b = b(:); vert = [ ]; if (n >= m) t = nchoosek(1:n,m); nv = nchoosek(n,m); for i=1:nv y = zeros(n,1); x = A(:,t(i,:))\b; if all(x >= 0 & (x ~= inf & x ~= -inf)) y(t(i,:)) = x; vert = [vert y]; end end else error('Broj jednačina je veći od broja varijabli') end vert = delcols(vert); vert = vert(1:nlv,:);
Pretpostavimo da imamo slijede ći slučaj konveksnog skupa kojeg čine ograničenja linearnog programa: -x1 + x2 1 -0.1x1 + x2 2 x1 , x2 0 za izračunavanje ekstremnih tačaka ovakvog konveksnog skupa upotrijebit ćemo slijedeće naredbe : >> A = [-1 1; -0.1 1]; >> rel = '<<'; >> b = [1; 2]; >> vert = extrpts(A, rel, b) i dobiti rješenje u obliku : vert =
0 0 0 1.0000
1.1111 2.1111
37
Rješenje linearnog problema sa dvije varijable x 1 i x2 može biti pronađen i geometrijskim putem kroz tri koraka. Prvo , nacrtati konveksan skup (poliedar) koji je ome đen slijedećim sistemom nejednakosti A x b ili A x b. Slijedeće , ucrtati pravac z = c1 x1 + c2 x2 u koordinatnom sistemu. Na posljetku pomjerati liniju funkcije cilja z sve do ekstremne ta čke konveksnog skupa koja predstavlja minimum ili maksimum linearnog programa , ve ć ovisno od toga kako je problem postavljen. Ako ne postoji takva ekstremna ta čka konveksnog skupa dati izvještaj o nepostojanju egzistencije rješenja linearnog programa. Funkcija drawfr implementira ovih nekoliko koraka :
function drawfr(c, A, rel, b) clc [m, n] = size(A); if n ~= 2 str = 'Broj varijabli mora biti veći od jedan'; msgbox(str,'Error Window','error') return end vert = extrpts(A,b,rel); if isempty(vert) disp(sprintf('\n Prazan konveksan skup')) return end vert = vert(1:2,:); vert = delcols(vert); d = extrdir(A,b,rel); if ~isempty(d) msgbox('Ne postoji rješenje problema','Warning Window','warn') disp(sprintf('\n Ekstremne tačke konveksnog skupa')) disp(sprintf('\n Ekstremne tačke konveksnog skupa')) vert return end t1 = vert(1,:); t2 = vert(2,:); z = convhull(t1,t2); hold on patch(t1(z),t2(z),'r') h = .25; mit1 = min(t1)-h; mat1 = max(t1)+h; mit2 = min(t2)-h; mat2 = max(t2)+h;
38
if c(1) ~= 0 & c(2) ~= 0 sl = -c(1)/c(2); if sl > 0 z = c(:)'*[mit1;mit2]; a1 = [mit1 mat1]; b1 = [mit2 (z-c(1)*mat1)/c(2)]; else z = c(:)'*[mat1;mit2]; a1 = [mit1 mat1]; b1 = [(z-c(1)*mit1)/c(2) mit2]; end elseif c(1) == 0 & c(2) ~= 0 z = 0; a1 = [mit1 mat1]; b1 = [0,0]; else z = 0; a1 = [0 0]; b1 = [mit2 mat2]; end h = plot(a1,b1); set(h,'linestyle','--') set(h,'linewidth',2) str = 'Rješenje je linija sa slijede ćim svojstvima '; title([str,num2str(z)]) axis([mit1 mat1 mit2 mat2]) h = get(gca,'Title'); set(h,'FontSize',11) xlabel('x_1') h = get(gca,'xlabel'); set(h,'FontSize',11) ylabel('x_2') h = get(gca,'ylabel'); set(h,'FontSize',11) grid hold off
Pretpostavimo slijedeći linearni programa: >> c = [-3 5]; >> A = [-1 1;1 1;1 1;3 –1;1 –3]; >> rel = '<><<<'; >> b = [1;1;5;7;1]; >> drawfr(c, A, rel, b)
39
dobit ćemo slijedeći poliedar u pravouglom koordinatnom sistemu
Na slici se vidi da je rješenje za standardni problem minimuma u tački : 2.5 0.5
x
a za standardni problem minimuma u : 2
x
3
40
ZAKLJU Č AK
Linearno programiranje se može posmatrati kao dio cjelokupnog napretka prošlog stolje ća ,koje je omogućilo ekonomskoj znanosti rješavanje složenih problema ,i koje je utrlo put donošenju odluka i ispunjenju ciljeva u praktičnim situacijama koje se name ću kao veoma kompleksne. Današnji pomoćni alati za dostizanje tih ciljeva su na čini koji su bili formulirani kroz aspekta:
detaljno razrađene matematičke modele tehnologije za rješavanje tih modela ( algoritmi ) tehnike za izvšavanje razra đenih algoritama ( upotreba softwarea )
Takve vještine se po činju razvijati 1947 godine ,nedugo nakon drugog svjetskog rata ,i danas idu u korak s razvojem snažnih ra čunalnih sistema. Današnji napredak u ekonomiji i nauci o odlučivanju ,te veliki doprinos u njenom proučavanju duguje upravo pionirima koji su zapo čeli čitavo proučavanje linearnog programiranja. Neka od tih imena su : von Neummann , Kantorovich , Leontief , Koopmans. Prva dvojica su bili poznati matemati čari. Posljednja tri su primili Nobelovu nagradu za ekonomiju , što samo pokazuje koliki je zna čaj ove problematike u primjenjenoj ekonomiji. U godinama od kada je ustanovito 1947 godine od strane autora (u vezi sa planiranjem vojnih aktivnosti) , linearno programiranje i njegove tehnike rješavanja su široko u upotrebi. U akademskim krugovima aktivnostima nau čnika (prvenstveno onih koji se bave operacijskim istraživanjima i menadžmentom) ,izdan je širok spektar publikacija iz oblasti numeri čke analize ,linearnog programiranja i njegove primjene u ekonomskim istraživanjima. Na kraju , u vidu zaključka , možemo reći da se linearno programiranje danas primjenjuju u skoro svim ekonomskim istraživanjima i da je veliki broj novih naučnih rezultata ostvaren zahvaljujući njima. Stoga se danas više ne mogu zamisliti istraživanja u domenu dinami čke i granične analize problematike privrednog razvoja i me đusektorskih odnosa , programiranja i dinamičkih sistema bez primjene odgovaraju ćih matematičkih metoda i modela.
41
POPIS LITERATURE :
Alpha C. Chiang :
Osnovne metode matematič ke ekonomije , MATE , Zagreb 1994.
Robert J. Vanderbei : Linear programming : Foundations and Extensions , Princeton University , 2000. George B. Dantzig : Linear Programming (Operatons research vol.50) , INFORMS , 2002. Robert E. Bixby :
Solving real-world linear programs : a decade and more of progress ,
INFORMS , 2002. Mathworks press :
Using MATLAB 6.0 , Internet
izdanje (www.mathworks.com)
Mathworks press : Optimization toolbox , Internet izdanje (www.mathworks.com) Edward Neuman : Linear programming with MATLAB , Southern Illinois University Lavoslav Čaklović : Geometrija linearnog programiranja , Internet izdanje Grupa autora :
Ekonomska enciklopedija , Savremena administracija , Beograd 1984.
Dragoslav Mirković : Linearno programiranje – riješeni problemi , Svjetlost , Sarajevo 1987. Husein Pašagi ć :
Matematič ke metode u prometu , Fakultet prometnih znanosti ,
Zagreb 2003.
42