Simpleks metoda za rješavanje modela linearnog ... principi simpleks metode • Simpleks metoda...
Transcript of Simpleks metoda za rješavanje modela linearnog ... principi simpleks metode • Simpleks metoda...
Simpleks metoda za rješavana problema linearnog
programiranja
(15.3. i 22.3. 2017)
Doc. dr. sc. Tunjo Perić
Osnovni principi simpleks metode
• Simpleks metoda spada u kategoriju numeričkih iterativnih
metoda.
• Pri rješavanju problema polazi se od početnog bazičnog
rješenja, koje mora biti dopustivo.
• Početno se bazično rješenje poboljšava kroz niz koraka
(iteracija) dok se ne postigne optimalno rješenje u skladu s
postavljenim ciljem.
• Simpleks metoda predstavlja opći algoritam za rješavanje svih
oblika problema LP.
• Algoritam simpleks metode sastoji se iz dva koraka:
• Korak 1. Određivanje početnog bazičnog dopustivog rješenja i
• Korak 2. Poboljšanje dobivenog bazičnog rješenja kroz konačan broj
iteracija.
• Da bismo odredili početno bazično dopustivo rješenje
potrebno je najprije opći model LP prevesti na kanonski oblik
(sva ograničenja moraju biti oblika jednakosti (=)).
• Prevođenje općeg/standardnog oblika linearnog modela na
kanonski oblik ovisi o obliku ograničenja i vrsti linearnog
problema.
• Lijevoj strani ograničenja oblika manje ili jednako
dodaju se dopunske varijable s koeficijentom 0 uz tu
varijablu u funkciji cilja, kako za problem maksimuma tako i
za problem minimuma.
• Lijevoj strani ograničenja oblika jednakosti (=) dodaje se tzv.
artificijelna (umjetna) varijabla s koeficijentom –M uz tu
varijablu u funkciji cilja za problem maksimuma, odnosno M
za problem minimuma. “M” je nespecificirano veliki broj.
( )
• Lijevoj strani ograničenja oblika veće ili jednako ( ) dodaje se dopunska varijabla s predznakom minus (–), s koeficijentom 0 u funkciji cilja te artificijelna varijabla s koeficijentom u funkciji cilja –M za problem maksimuma odnosno M za problem minimuma.
• Tablično prikazano prevođenje općeg na kanonski oblik problema LP izgleda ovako:
• Artificijelne (umjetne) varijable (ART) uvode se samo kao računsko sredstvo u simpleks metodi s ciljem osiguranja dopustivog bazičnog rješenja.
Oblik ograničenja
Dopunske i umjetne varijable
Koeficijenti u funkciji cilja
max min
DOP ART DOP ART
<= + DOP 0 0
= + ART -M M
>= - DOP+ART 0 -M 0 M
• Bazično rješenje formiraju bazične varijable, koje se
nalaze uz bazične vektore. Bazu tvore linearno nezavisni
jedinični vektori koje nazivamo bazičnim vektorima.
• Da bi se osigurao izlazak svih artificijelnih varijabli iz
bazičnog rješenja, u funkciji cilja im se pridružuje koeficijent
–M kod problema maksimuma, odnosno M kod problema
minimuma.
• Bazu vektorskog prostora čine m jediničnih vektora,
koji su međusobno linearno nezavisni. Bazično rješenje
čine m bazičnih varijabli koje se nalaze uz jedinične
vektore koji formiraju jediničnu matricu.
• Vektor b se izražava kao linearna kombinacija vektora baze.
Budući da se uz bazične vektore nalaze bazične varijable, onda
nije teško pročitati vrijednost svake bazične varijable.
Vrijednost bazične varijable jednaka je vrijednosti koeficijenta
u vektoru b koji odgovara retku u kojem se nalazi jedinica u
bazičnom vektoru.
mR
• Dobiveno rješenje je neupotrebljivo dokle god su u bazi
vektori koji se nalaze uz artificijelne varijable (artificijelni
vektori). Nakon izlaska iz baze svih artificijelnih vektora dobiva
se prvo upotrebljivo rješenje.
• Bazično dopustivo rješenje čini skup od m bazičnih varijabli
(odnosno onoliko koliko ima ograničenja), čije vrijednosti moraju
biti pozitivne.
• Dopustivo bazično rješenje može biti:
• Nedegenerirano – ima točno m pozitivnih vrijednosti bazičnih
varijabli,
• Degenerirano – ima manje od m pozitivnih vrijednosti
bazičnih varijabli.
• Varijable u simpleks metodi klasificiraju se na bazične i
nebazične.
• Nebazičnim varijablama smo u programu dodijelili
vrijednost nula.
• Bazične varijable nalaze se uz bazične vektore. One
predstavljaju dopustivo bazično rješenje. Imaju vrijednosti
veće od nula i ima ih onoliko koliko ima ograničenja.
• Dopustivo bazično rješenje ima sljedeće osobine:
• Sadrži sve pozitivne vrijednosti varijabli osim kod degeneracije,
• Svaka varijabla iz dopustivog bazičnog rješenja može se pojaviti samo
u jednom ograničenju sa strukturnim koeficijentom 1, tj. strukturni
koeficijenti u ograničenjima uz bazične varijable čine jediničnu
matricu,
• Početno dopustivo bazično rješenje čine: (1) dopunske varijable
uvedene u ograničenja nejednakosti oblika i (2) artificijelne
varijable uvedene u ograničenja jednakosti i nejednakosti oblika .
• Svaka iteracija simpleks metode sastoji se iz tri koraka:
• Korak 1. Utvrđivanje je li dobiveno rješenje optimalno i ako nije
određuje se nebazična varijabla koja će ući u bazično rješenje, pri čemu
vektor koji se nalazi uz tu varijablu ulazi u bazu: (1) ako se radi o
linearnom modelu za maksimum logično je (ali ne i neophodno) uvesti
u bazično rješenje varijablu koja najviše povećava vrijednost funkcije
cilja, (2) ako se radi o linearnom modelu za minimum logično je uvesti
u bazično rješenje varijablu koja najviše smanjuje vrijednost funkcije
cilja.
• Korak 2. Određivanje varijable koja napušta bazično rješenje (postaje
nebazična), pri čemu vektor koji se nalazi uz tu varijablu napušta bazu.
• Korak 3. Transformacija strukturnih koeficijenata i koeficijenata u
funkciji cilja nakon čega se vraćamo na korak 1.
• Simpleks metoda se može provoditi:
• Rješavanjem sustava ograničavajućih jednadžbi,
• Tablično i
• Matrično.
Suština simpleks metode
• Simpleks metoda je algebarska procedura. Međutim, temeljni
koncepti su geometrijski. Razumijevanje osnovnih
geometrijskih koncepata osigurava jak intuitivni osjećaj o
tome kako radi simpleks metoda i što je čini tako efikasnom.
• Riješimo geometrijski sljedeći primjer:
1 2
1
2
1 2
1 2
max 3 5
p.o. 4
2 12
3 2 18
0, 0
z x x
x
x
x x
x x
x1(4, 0) (6, 0)(0, 0)
(4, 3)
(4, 6)(2, 6)(0, 6)
(0, 9)
3x1 + 2x2 = 18
2x2 = 12
x1=4
x2 = 0
Skup dopustivih
rješenja
1 2
1
2
1 2
1 2
max 3 5
p.o. 4
2 12
3 2 18
0, 0
z x x
x
x
x x
x x
x2
Z(2, 6)=36Z(0, 6)=30
Z(4, 3)=27
Z(4, 0)=12Z(0, 0)=0
U ovom primjeru svaka ekstremna točka leži na presjeku dvaju
ograničenja.
Za bilo koji problem LP s n varijabli odlučivanja dvije
ekstremne dopustive točke su susjedne jedna drugoj ako dijele
n-1 ograničenja (uključena su i ograničenja nenegativnosti
varijabli). Dvije susjedne dopustive ekstremne točke povezane su
linijskim segmentom koji predstavlja rub skupa dopustivih rješenja.
Budući da je u našem primjeru n = 2, dvije dopustive ekstremne
točke su susjedne ako imaju jedno ograničenje zajedničko. Npr. (0,
0) i (0, 6) su susjedne pošto imaju zajedničko ograničenje x1 0.
Svaka dopustiva ekstremna točka ima dvije susjedne dopustive
ekstremne točke.
Test optimalnosti. Razmotrimo bilo koji problem LP koji ima
najmanje jedno optimalno rješenje. Ako dopustiva ekstremna
točka nema susjednu dopustivu ekstremnu točku koja je bolja
(mjereno prema z), onda ona mora biti optimalno rješenje.
U našem primjeru točka (2, 6) mora biti optimalno rješenje pošto je
njezino z = 36 veće od z = 30 za (0, 6) i z = 27 za (4, 3).
Ovaj test optimalnosti se koristi kod simpleks metode za određivanje
kad je postignuto optimalno rješenje.
Rješavanje primjera:
Inicijalizacija: odabrati (0, 0) kao početno dopustivo rješenje.
Testiramo rješenje (0, 0) i zaključujemo da nije optimalno rješenje:
susjedna dopustiva ekstremna točka daje veću vrijednost za z.
Iteracija 1: kretati se prema boljoj susjednoj dopustivoj ekstremnoj
točki u sljedeća 3 koraka:
1. Razmatrajući dva ruba skupa dopustivih rješenja (linijski
segment koji spaja dvije ekstremne točke) kretati se rubom duž
osi x2 pošto os x2 povećava z po bržoj stopi od kretanja duž osi
x1 (z = 3x1 + 5x2).
2. Stati na prvoj ekstremnoj točki koja je nastala kao presjek
ograničenja x1 = 0 i 2x2 = 12. To je točka (0, 6).
3. Test optimalnosti: zaključujemo da (0,6) nije optimalno rješenje.
Susjedna dopustiva ekstremna točka je bolja.
Iteracija 2: kretati se prema boljoj susjednoj dopustivoj ekstremnoj
točki (2, 6) primjenom sljedeća 2 koraka:
• Kretati se duž ruba dopustivih rješenja (linijski segment koji spaja
dvije ekstremne točke) te se zaustaviti na ekstremnoj točki koja je
nastala kao presjek ograničenja 3x1 + 2x2 = 18 i 2x2 = 12. To je
točka (2, 6).
• Test optimalnosti: Budući da ne postoji susjedna dopustiva
ekstremna točka koja daje veću vrijednost za z, zaključujemo da je
(2, 6) optimalno rješenje. Time je proces rješavanja završen.
Osnovni koncepti simpleks metode
• Koncept rješavanja 1: Simpleks metoda se fokusira samo na
dopustive ekstremne točke (rješenja). Za svaki problem s najmanje
jednim optimalnim rješenjem, nalaženje optimalnog rješenja
zahtijeva samo nalaženje najbolje dopustive ekstremne točke
(rješenja).
• Koncept rješavanja 2: Simpleks metoda je iterativni algoritam koji
se sastoji od određivanja početnog dopustivog ekstremnog
rješenja, provođenja testa optimalnosti u smislu je li postignuto
optimalno rješenje te provođenja iteracija za nalaženje boljeg
dopustivog ekstremnog rješenja.
• Koncept rješavanja 3. Kad god je moguće, simpleks metoda bira
početno dopustivo rješenje u kojem sve varijable odlučivanja
imaju vrijednost jednaku nuli. Takav odabir je moguć kad sve
varijable odlučivanja imaju ograničenje nenegativnosti, pošto
presjek tih ograničenja daje svim varijablama odlučivanja
vrijednost 0. Ako to rješenje nije moguće, potrebna je specijalna
procedura za nalaženje početnog dopustivog ekstremnog rješenja.
• Koncept rješavanja 4: Svaki put kad simpleks metoda radi jednu
iteraciju krećući se od jednog dopustivog ekstremnog rješenja
prema boljem, ona uvijek bira dopustivo ekstremno rješenje koje je
susjedno tom rješenju.
• Koncept rješavanja 5: Simpleks metoda identificira stopu
poboljšanja z koja bi se dogodila krećući se duž ruba (linijskog
segmenta) skupa dopustivih rješenja. Bira se rub (linijski segment)
s najvećom pozitivnom stopom poboljšanja te se provodi test
optimalnosti na dopustivom ekstremnom rješenju koje se nalazi na
tom rubu. U našem primjeru početno dopustivo ekstremno rješenje
je (0, 0), a možemo se kretati rubom x1 (stopa poboljšanja z je 3) ili
rubom x2 (stopa poboljšanja z je 5). Biramo rub s najvećom
stopom poboljšanja z.
• Koncept rješavanja 6. Test optimalnosti sadrži jednostavnu
provjeru postoji li rub s pozitivnom stopom poboljšanja z. Ako je
odgovor ne, dobili smo optimalno rješenje.
Osobine bazičnog rješenja
• Rješavanje problema LP s više od dvije varijable zahtijeva
primjenu linearne algebre u procesu pronalaženja optimalnog
rješenja, ako ono postoji.
• Da bismo algebarski mogli rješavati probleme LP potrebno je
najprije sustav nejednakosti u ograničenjima pretvoriti u sustav
jednakosti (ograničenje nenegativnosti varijabli odlučivanja se ne
mijenja). Kažemo da model iz standardnog ili općeg oblika
prevodimo u kanonski oblik.
• Postupak rješavanja zahtijeva pronalaženje početnog bazičnog
dopustivog rješenja te kroz iterativni postupak u konačnom broju
koraka kretati se od jednog do drugog bazičnog dopustivog
rješenja (susjednog, koje daje bolju vrijednost funkciji z).
• Postupak rješavanja slijedi geometrijski pristup, koji je prethodno
prikazan.
• Svako bazično rješenje ima sljedeće osobine:
1. Svaka varijabla je označena kao bazična ili nebazična varijabla.
2. Broj bazičnih varijabli jednak je broju funkcionalnih ograničenja
(sada jednadžbi). Funkcionalna su sva ograničenja osim
ograničenja nenegativnosti varijabli. Prema tome, broj nebazičnih
varijabli jednak je ukupnom broju varijabli umanjenom za broj
funkcionalnih ograničenja.
3. Nebazične varijable imaju vrijednost jednaku nuli.
4. Vrijednosti bazičnih varijabli dobivene su kao simultano rješenje
sustava jednadžbi (funkcionalna ograničenja u kanonskom
obliku). Skup se bazičnih varijabli naziva bazično rješenje.
5. Ako bazične varijable zadovoljavaju ograničenja nenegativnosti,
bazično rješenje je bazično dopustivo rješenje.
Algebra simpleks metode
• Za objašnjenje algebre simpleks metode koristimo se našim
prethodnim primjerom:
• Iz prehodnog sustava jednadžbi vidljivo je da ako stavimo da je x1
= 0 i x2 = 0, onda je s1 = 4, s2 = 12 i ss = 18. Prema tome, početno
bazično rješenje je (0, 0, 4, 12, 18). Vidljivo je da se ovo bazično
rješenje može odmah pročitati pošto svaka jednadžba ima jednu
bazičnu varijablu s koeficijentom 1, pri čemu su koeficijenti uz
tu varijablu u ostalim jednadžbama jednaki nuli.
1 2
1
2
1 2
1 2
max 3 5
p.o 4
2 12
3 2 18
0, 0
z x x
x
x
x x
x x
1 2 1 2 3
1 1
2 2
1 2 3
max 3 5 0 0 0
p.o. + =4
2 + =12
3 2 +
z x x s s s
x s
x s
x x s
1 2 1 2 3
=18
, , , , 0, x x s s s
• Kad se skup bazičnih varijabli mijenja, simpleks metoda koristi
algebarsku proceduru (Gauss-ova eliminacija) za pretvaranje
jednadžbi u pogodan oblik, tako da se uz svaku bazičnu varijablu
nalazi koeficijent 1. Koeficijenti uz bazičnu varijablu u ostalim
jednadžbama moraju se načiniti jednakim 0.
• Test optimalnosti: Funkcija cilja je z = 3x1 + 5x2. Njena vrijednost
je 0 za početno bazično dopustivo rješenje. Koeficijenti uz
nebazične varijable ukazuju na stopu poboljšanja z. Stope
poboljšanja z su pozitivne i iznose 3 i 5. Prema tome, bazično
rješenje (0, 0, 4, 12, 18) nije optimalno i može se poboljšati.
• Određivanje pravca kretanja: Povećanje jedne nebazične
varijable (pri čemu se prilagođavaju vrijednosti bazičnih varijabli
kako bi i dalje zadovoljavali sustav jednadžbi) odgovara kretanju
duž jednog ruba od tekućeg dopustivnog ekstremnog rješenja.
Prema konceptima optimalnosti 4 i 5, odabir varijable koju ćemo
poboljšati vrši se na taj način da se bira varijabla s najvećom
stopom poboljšanja (x2).
• x2 nazivamo varijablom koja ulazi u bazično rješenje (postaje
bazična). Povećanje te nebazične varijable pretvorit će tu varijablu
u bazičnu za novo bazično dopustivo rješenje.
• Određivanje gdje stati. Povećanje x2 povećava z, pri čemu želimo
ići toliko daleko koliko je moguće bez napuštanja skupa dopustivih
rješenja. Zahtjev da se zadovolje funkcionalna ograničenja u
kanonskom obliku znači da povećanje x2 odnosno uvođenje u bazu
vektora uz varijablu x2 (dok je vrijednost nebazične varijable x1 =
0), mijenja vrijednosti nekih od bazičnih varijabli kako je to niže
prikazano:
1
1 1 1
2 2 2 2
1 2 3 3 2
1 2 3 4 5
0, tako da je
4 4
2 12 12 2
3 2 18 s 18 2
, , , , 0
x
x s s
x s s x
x x s x
x x x x x
• Nebazične varijable (uključujući i varijablu koja ulazi u bazično
rješenje) su nenegativne. Mi želimo provjeriti na koliko možemo
povećati x2 bez narušavanja uvjeta nenegativnosti za bazične
varijable.
• Prema tome x2 se može povećati na 6, tako da s2 bude jednako
nuli. Povećanje x2 preko 6 dovelo bi do toga da s2 bude negativno.
• Ta računanja odnose se na test minimalnog kvocijenta. Cilj ovog
testa je odrediti koja bazična varijabla će prva imati vrijednost 0
kad se povećava varijabla koja postaje bazična. Smanjenje
vrijednosti bazične varijable na 0 pretvorit će je u nebazičnu
varijablu u sljedećem bazičnom dopustivom rješenju.
1 2
2 2 2
3 2 2
4 0 nema gornje granice na
1212 2 0 6 minimum
2
1818 2 0 9.
2
s x
s x x
s x x
Presjek ova dva
intervala daje x2 6.
• Rješavanje za dobivanje novog bazičnog mogućeg rješenja.
Povećanje x2 = 0 na x2 = 6 pomiče nas s početnog bazičnog
dopustivog rješenja na novo bazično dopustivo rješenje:
• Svrha ovog koraka je pretvoriti sustav jednadžbi u prihvatljivu
formu (za primjenu Gauss-ove eliminacije) za provođenje testa
optimalnosti i, ako je potrebno, sljedeću iteraciju s novim
dopustivim bazičnim rješenjem. U tom procesu ovaj oblik također
će identificirati vrijednosti s1 i s3 za novo rješenje.
• Napišimo naš model u sljedećem obliku:
1 2 1 2
1 2 3 1 2 3
Početno DB rješenje Novo DB rješenje
Nebazične varijable 0, 0 0, 0
Bazične varijable 4, 12, 18 ?, 6, ?
x x x s
s s s s x s
• Umjesto s2 bazična postaje varijabla x2. Primjenom Gaussovih
eliminacija dobit ćemo da su svi koeficijenti uz varijablu x2
jednaki 0, osim u retku (2) gdje treba biti jedinica. Na taj način
transformirani sustav izgleda ovako:
1 2
1 1
2 2
1 2 3
(0) 3 5 0
(1) + 4
(2) 2 + 12
(3) 3 2 =18
z x x
x s
x s
x x s
1 2
1 1
2 2
1 2
5(0) 3 + 30
2
(1) + 4
1(2) + 6
2
(3) 3
z x s
x s
x s
x s
3 6s
• Ključni koncept za ovu metodu jesu elementarne algebarske
operacije za reduciranje originalnog sustava jednadžbi u
odgovarajuću formu za Gauss-ovu eliminaciju, gdje je svaka
bazična varijabla eliminirana iz svih osim jedne jednadžbe (njezine
jednadžbe), a njezin koeficijent je 1 u toj jednadžbi.
• Test optimalnosti za novo bazično moguće rješenje: Jednadžba
(0) daje vrijednosti funkcije cilja za dane nebazične varijable:
• Povećavajući bilo koju od nebazičnih varijabli od 0 rezultirat će
kretanjem prema dva susjedna bazično moguća rješenja. Pošto x1
ima pozitivan koeficijent, povećanje x1 će rezultirati susjednom
bazičnom mogućem rješenju koje je bolje od postojećeg rješenja.
Prema tome, postojeće rješenje nije optimalno.
• Iteracija 2 i rezultirajuće optimalno rješenje:
1 2
530 3 .
4z x s
• Budući da je z se može povećati povećanjem
x1, ali ne s2. Prema tome, korak 1 bira x1 kao varijablu koja ulazi u
bazično rješenje. Analogno prethodnom, iz bazičnog rješenja izlazi
varijabla s3. Dakle u bazu ulazi vektor koji se nalazi uz varijablu
x1, a iz baze izlazi vektor uz varijablu s3.
• Primjenom Gauss-ovih eliminacija dobivamo:
• Prema tome, novo bazično moguće rješenje je
1 2
530 3 ,
2z x s
2 3
1 2 3
2 2
1 2 3
3(0) + =36
2
1 1(1) + 2
3 3
1(2) + = 6
2
1 1(3) 2
3 3
z s s
s s s
x s
x s s
1 2 1 2 3( , , , , ) (2,6,2,0,0)x x s s s
• Primjenom testa optimalnosti za novo dopustivo bazično rješenje,
vidimo da bi u jednadžbi (0)
povećanje varijabli s2 i s3 ne bi dovelo bi do povećanja vrijednosti
z, pa ne postoji niti jedno susjedno dopustivo bazično rješenje koje
bi povećavalo z. Prema tome z je postiglo svoju optimalnu
vrijednost na danom skupu dopustivih rješenja.
• Dakle, kod problema maksimuma kriterij optimalnosti za ulazak
nebazične varijable u bazično rješenje je najveća negativna
vrijednost (u apsolutnom iznosu) uz nebazičnu varijablu u retku 0.
• Kriterij za izlazak bazične varijable iz bazičnog rješenja je
minimalna vrijednost omjera odgovarajuće desne strane
ograničenja i odgovarajućeg koeficijenta uz varijablu koja ulazi u
bazično rješenje.
• Optimalno rješenje je postignuto kad više nema negativnih
vrijednosti uz nebazične varijable u retku 0.
2 3
336
2z s s
Rješavanje standardnog problema LP za maksimum pomoću
simpleks tablice
• Primjer: Poduzeće Delta proizvodi pisaće stolove, kuhinjske
stolove i stolce. Za proizvodnju je potrebno osigurati drvenu građu
i dva tipa obučenih radnika: završna obrada i stolarstvo. Potrebni
podaci dani su u sljedećoj tablici:
Raspoloživo je 48 ft drvene građe, 31 sati rada završne obrade i 19 sati rada
stolarstva. Pisaći stol se prodaje za $30, kuhinjski stol za $20, a stolac za $10.
Poduzeće vjeruje da je potražnja za pisaćim stolovima i stolcima neograničena, a
da se najviše može prodati 3 kuhinjska stola.
Resursi Pisaći stol Kuhinjski stol Stolac
Drvena građa (ft) 8 4 1
Završna obrada (h) 5 3 2
Stolarstvo (h) 3 2 1
Pošto su raspoloživi resursi već kupljeni, poduzeće želi
maksimizirati ukupan prihod od prodaje proizvedenog namještaja.
• Rješenje.
Varijable odlučivanja su:
x1 = broj proizvedenih pisaćih stolova,
x2 = broj proizvedenih kuhinjskih stolova,
x3 = broj proizvedenih stolaca.
Lako se vidi da poduzeće treba riješiti sljedeći problem LP:
max z = 30x1 + 20x2 + 10x3
p.o. 8x1 + 4x2 + x3 48
5x1 + 3x2 + 2x3 31
3x1 + 2x2 + x3 19
x2 3
x1, x2, x3 0
• Prethodni model napisan u kanonskom obliku izgleda ovako:
max z = 30x1 + 20x2 + 10x3 + 0 s1 + 0 s2 + 0 s3 + 0 s4
p.o. 8x1 + 4x2 + x3 + s1 = 48
5x1 + 3x2 + 2x3 + s2 = 31
3x1 + 2x2 + x3 + s3 = 19
x2 + s4 = 3
x1, x2, x3, s1, s2, s3 0
• Podatke iz modela u kanonskom obliku upišimo u simpleks
tablicu:
Tablica 1. Početna simpleks tablica
• Iz tablice 1 vidimo da su bazične varijable s1, s2, s3 i s4 s vrijednostima 48, 31,
19 i 3, respektivno. Vrijednost funkcije cilja je 0. Vrijednosti nebazičnih
varijabli jednake su nuli (uvijek je vrijednost nebazičnih varijabli jednaka nuli).
Budući da u retku 0 imamo negativne koeficijente uz nebazične varijable,
početno bazično dopustivo rješenje nije optimalno i može se poboljšati
prevođenjem nebazične varijable s najvećim negativnim koeficijentom u retku
nula u bazičnu. To je varijabla x1.
Nebazična postaje varijabla s1, pošto ona osigurava minimalni kvocijent
odgovarajućih elemenata vektora b i odgovarajućih elemenata vektora x1.
Redakci
cj - 30 20 10 0 0 0 0 -
Baza z x1 x2 x3 s1 s2 s3 s4 bi
0 - z 1 -30 -20 -10 0 0 0 0 0
1 0 s1 0 8 4 1 1 0 0 0 48
2 0 s2 0 5 3 2 0 1 0 0 31
3 0 s3 0 3 2 1 0 0 1 0 19
4 0 s4 0 0 1 0 0 0 0 1 3
• Sada je potrebno Gauss-Jordanovim postupkom transformirati
početnu simpleks tablicu na način da koeficijenti uz varijablu x1
koja ulazi u bazično rješenje budu jednaki 1 u retku 1, a u ostalim
recima 0.
Tablica 2. Simpleks tablica nakon 1. iteracije
Dakle, bazična postaje varijabla x3, a nebazična postaje varijabla s2.
Nakon primijenjenog Gauss-Jordanovog postupka nad elementima
tablice 2, dobivena je sljedeća simpleks tablica.
Redak ci
cj - 30 20 10 0 0 0 0biBaza z x1 x2 x3 s1 s2 s3 s4
0 - z 1 0 -5 -6.25 3.75 0 0 0 180
1 30 x1 0 1 0.5 0.125 0.125 0 0 0 6
2 0 s2 0 0 0.5 1.375 -0.625 1 0 0 1
3 0 s3 0 0 0.5 0.625 -0.375 0 1 0 1
4 0 s4 0 0 1 0 0 0 0 1 3
Tablica 3. Simpleks tablica nakon 2. iteracije
U retku 0 koeficijent uz varijablu x2 je negativan pa ta varijabla
postaje bazična. Nebazična postaje varijabla s3. Nakon provedenog
postupka Gauss-Jordanove eliminacije, dobivena je sljedeća
tablica.
Redak ci
cj - 30 20 10 0 0 0 0 0
Baza z x1 x2 x3 s1 s2 s3 s4 bi
0 - z 1 0 -2.7273 0 0.9091 4.5455 0 0 184.54
1 30 x1 0 1 0.4545 0 0.1818 -0.0909 0 0 5.91
2 10 x3 0 0 0.3636 1 -0.4545 0.7273 0 0 0.73
3 0 s3 0 0 0.2727 0 -0.0909 -0.4545 1 0 0.55
4 0 s4 0 0 1 0 0 0 0 1 3.00
Tablica 4. Sipmleks tablica nakon 3. iteracije
Dobiveno je rješenje dopustivo, ali je i degenerirano jer je u bazi
varijabla s3 = 0. U retku 0 imamo negativnu vrijednost koeficijenta
uz varijablu s1, pa ta varijabla postaje bazična. Nebazična postaje
varijabla s3. Nakon postupka Gauss-Jordanovih eliminacija, dobili
smo sljedeću tablicu:
Redak ci
cj - 30 20 10 0 0 0 0
biBaza z x1 x2 x3 s1 s2 s3 s4
0 - z 1 0 0 7.5 -2.5 10 0 0 190
1 30 x1 0 1 0 -1.25 0.75 -1 0 0 5
2 20 x2 0 0 1 2.75 -1.25 2 0 0 2
3 0 s3 0 0 0 -0.75 0.25 -1 1 0 0
4 0 s4 0 0 0 -2.75 1.25 -2 0 1 1
Tablica 5. Simpleks tablica nakon 4. iteracije
U retku 0 više nema koeficijenata s negativnom vrijednosti, pa je
dobiveno bazično moguće rješenje optimalno. Maksimalna
vrijednost funkcije cilja je 190, a vrijednosti bazičnih varijabli su:
x1 = 5, x2 = 2, s1 = 0 i s4 = 1, dok su vrijednosti nebazičnih varijabli
x3 = s2 = s3 = 0.
Redak ci
cj - 30 20 10 0 0 0 0
biBaza z x1 x2 x3 s1 s2 s3 s4
0 - z 1 0 0 0 0 0 10 0 190
1 30 x1 0 1 0 -1 0 2 -3 0 5
2 20 x2 0 0 1 -3 0 -3 5 0 2
3 0 s1 0 0 0 1 1 -4 4 0 0
4 0 s4 0 0 0 0 0 3 -5 1 1
Rješavanje općeg problema za minimum pomoću simpleks
tablice
• Primjer. Poduzeće proizvodi specijalno bezalkoholno piće od
naranče, nazvano „N“, kombinirajući narančinu sodu i
narančin sok. Svaka unca narančine sode sadrži 0.5 oz šećera i
1 mg vitamina C. Svaka unca narančinog soka sadrži 0.25 oz
šećera i 3 mg vitamina C. Poduzeće košta 2 centa proizvodnja
jedne unce narančine sode i 3 centa proizvodnja jedne unce
narančinog soka. Marketing služba poduzeća je odlučila da
svakih 10 boca pića „N“ mora sadržavati najmanje 20 mg
vitamina C i najviše 4 oz šećera.
• Potrebno je formirati model LP za određivanja optimalnog
rješenja minimiziranjem troškova proizvodnje i dobiveni
model riješiti simpleks metodom.
• Rješenje.
Neka je
x1 = broj unci narančine sode u 10 boca „N“
x2 = broj unci narančinog soka u 10 boca „N“
• Onda je odgovarajući model LP
min z = 2x1 + 3x2
p.o. 0.5x1 + 0.25x2 4
x1 + 3x2 20
x1 + x2 = 10
x1, x2 0.
• Gornji model u kanonskom obliku izgleda ovako:
• min z = 2x1 + 3x2 + 0 s1 + 0 e2 + Ma2 + Ma3
p.o. 0.5x1 + 0.25x2 + s1 = 4
x1 + 3x2 – e2 + a2 = 20
x1 + x2 + a3 = 10
x1, x2, s1, e2, a2, a3 0.
• Iz gornjeg sustava jednadžbi jednostavno možemo formirati
početno bazično rješenje s varijablama s1 = 4, a2 = 20 i a3 = 10, dok
su nebazične varijable x1 = x2 = e2 = 0. Funkcija cilja za takvo
početno bazično rješenje ima beskonačnu vrijednost zbog
koeficijenata uz umjetne varijable koji imaju beskonačno veliku
vrijednost.
• Naš cilj je minimizacija funkcije cilja pa sve dok se umjetne
varijable nalaze u skupu bazičnih varijabli, ostvaruje se
beskonačno velika vrijednost funkcije cilja.
• Simpleks procedura osigurava izlazak umjetnih varijabli iz
bazičnog rješenja, ako problem ima dopustivo rješenje.
• Ako u optimalnom rješenju ostane neka umjetna varijabla to znači
da problem nema dopustivo rješenje.
• Simpleks metoda koja rješava ovakve probleme često se naziva
metodom velikog M.
Opis metode velikog M
• Korak 1. Modificirati ograničenja tako da desna strana svakog
ograničenja bude nenegativna.
• Korak 1'. Identificirati ograničenja tipa i =.
• Korak 2. Svako ograničenje tipa nejednakosti konvertirati u formu
jednakosti tako da lijevoj strani svakog ograničenja tipa dodamo
jednu dopunsku varijablu si, a lijevoj strani svakog ograničenja tipa
oduzmemo jednu varijablu viška ei.
• Korak 3. Ograničenjima tipa i = dodati po jednu umjetnu
varijablu ai. Također dodati znak restrikcije ai 0.
• Korak 4. Ako se radi o problemu minimuma LP, funkciji cilja
dodati (za svaku umjetnu varijablu) Mai. Kod problema
maksimuma LP, funkciji cilja dodati (za svaku umjetnu varijablu) –
Mai.
• Korak 5. Pošto će svaka umjetna varijabla biti u početnoj bazi, sve
umjetne varijable moraju biti eliminirane iz retka 0 prije početka
simpleks procedure.
• To nam omogućuje da počnemo s kanonskom formom.
• Nakon toga transformirani problem riješiti simpleks metodom.
• Ako su umjetne varijable jednake nuli u optimalnom rješenju, onda
smo pronašli optimalno rješenje originalnog problema.
• Ako je neka umjetna varijabla pozitivna u optimalnom rješenju
onda problem nema mogućih rješenja.
• Rješenje primjera 4.
• Korak 1. Pošto niti jedno ograničenje nema negativnu desnu stranu,
nije potrebno množiti s –1 desnu stranu niti jednog ograničenja.
• Korak 1'. Drugo i treće ograničenje zahtijevaju umjetne varijable.
• Korak 2. Dodati dopunsku varijablu s1 retku 1 i od retka 2 oduzeti
varijablu viška e2.
• Korak 3. Retku 2 dodati umjetnu varijablu a2, a retku 3 dodati
umjetnu varijablu a3.
• Korak 4. Pošto rješavamo minimizacijski problem, funkciji cilja
dodajemo Ma2 + Ma3. Ovo čini varijable a2 i a3 jako neatraktivnim,
pa minimizacija z će prouzročiti da u simpleks proceduri a2 i a3
budu jednake 0.
• Korak 5. Redak 0 je sada
z – 2x1 – 3x2 – Ma2 – Ma3 = 0
• Pošto su a2 i a3 u našem početnom bazičnom mogućem rješenju
(zbog toga smo ih uveli), oni moraju biti eliminirani iz retka 0. Da
bi eliminirali a2 i a3 iz retka 0, jednostavno zamjenjujemo redak 0 s
retkom 0 + M(redak 2) + M(redak 3). Dakle, imamo
Novi redak 0: z + (2M – 2)x1 + (4M – 3)x2 – Me2 = 30M.
• Kombiniranjem novog retka 0 s recima 1 – 3 dobivamo inicijalnu
tablicu:
• Tablica 6. Početna simpleks tablica
• Pošto rješavamo minimizacijski problem u bazično rješenje ulazi
varijabla s najvećim pozitivnim koeficijentom u retku 0, a to je
varijabla x2 s koeficijentom 4M – 3. Određivanje varijable koja
izlazi iz bazičnog rješenja i postaje nebazična vršimo na osnovi
minimalnog omjera odgovarajućih elementa vektora b i
odgovarajućih elementa vektora koeficijenata uz varijablu x2, pa
varijabla a1 napušta bazično rješenje.
Redak Baza z x1 x2 s1 e2 a2 a3 bi
0 z 1 2M-2 4M-3 0 -M 0 0 30M
1 s1 0 1 0 0 0 4
2 a2 0 1 3 0 -1 1 0 20
3 a3 0 1 1 0 0 0 1 10
1
2
1
4
• Nakon provedenih Gauss – Jordanovih transformacija nad recima
prethodne tablice s ciljem dobivanja jediničnog vektora uz
varijablu koja ulazi u bazično rješenje (s jedinicom na mjestu koje
označava varijablu koja izlazi iz bazičnog rješenja), dobivena je
sljedeća tablica:
Tablica 7. Simpleks tablica nakon 1. iteracije
• Iz retka 0 vidimo da se uz varijablu x1 nalazi maksimalni pozitivni
element. Dakle, varijabla x1 ulazi u bazično rješenje, a minimalni
omjer je u trećem retku pa varijabla a3 izlazi iz bazičnog rješenja.
Redak Baza z x1 x2 s1 e2 a2 a3 bi
0 z 1 0 0 0
1 s1 0 0 1 0
2 x2 0 1 0 0
3 a3 0 0 0 1
2 3
3
M
5
121
32
5
3
3
M
1
121
3
1
3
3 4
3
M
1
12
1
31
3
60 10
3
M
7
320
310
3
• Nakon provedenih Gauss – Jordanovih transformacija nad recima
dobili smo sljedeću tablicu.
Tablica 7. Simpleks tablica nakon 2. iteracije
• U retku 0 više nema pozitivnih koeficijenata uz nebazične
varijable, pa je dobiveno optimalno rješenje koje se ne može dalje
poboljšavati. Minimalna vrijednost funkcije cilja je z = 25.
Optimalne su vrijednosti varijabli: x1 = 5, x2 = 5, s1 = , e1 = 0.
Umjetne su varijable a2 i a3 jednake nuli.
Redak Baza z x1 x2 s1 e2 a2 a3 bi
0 z 1 0 0 0 25
1 s1 0 0 0 1
2 x2 0 0 1 0 5
3 x1 0 1 0 0 5
1
2
1
8
1
2
1
2
1 2
2
M
1
81
21
2
3 2
2
M
5
8
1
2
3
2
1
4
1
4
Prekidi u simpleks metodi
Varijabla koja ulazi u bazično rješenje: Korak 1 svake iteracije
bira vektor s najvećom apsolutnom vrijednošću (među negativnim
vrijednostima) u retku 0 kao vektor koji ulazi u bazu. Varijabla uz
taj vektor postaje bazična varijabla. Ako pretpostavimo da dva ili
više nebazičnih vektora imaju takvu istu najveću apsolutnu
vrijednost, postavlja se pitanje koji će od tih vektora prije ući u
bazu. Odgovor je da odabir vektora koji prije ulazi u bazu može
biti arbitraran. Optimalno rješenje će se postići bez obzira koji je
od tih vektora odabran. Arbitraran izbor vektora koji ulazi u bazu,
odnosno izbor nebazične varijable koja ulazi u bazično rješenje,
mogao bi imati za posljedicu veći broj iteracija u postupku
dolaženja do optimalnog rješenja.
Varijabla koja izlazi iz bazičnog rješenja – degeneracija: Ako
pretpostavimo da za dvije ili više bazičnih varijabli imamo isti
najmanji kvocijent, postavlja se pitanje ima li utjecaja koji će
vektor uz bazičnu varijablu prije napustiti bazu.
Teorijski da, ako se pojave sljedeće okolnosti. Prvo, sve te bazične
varijable dosežu nulu istovremeno kad se bazična varijabla
povećava. Prema tome, varijable koje nisu odabrane kao varijable
čiji vektori napuštaju bazu također će imati vrijednost nula u
novom bazičnom mogućem rješenju.
Bazične varijable s vrijednošću nula nazivaju se degeneriranim
varijablama. Drugo, ako jedna od tih degeneriranih bazičnih
varijabli zadrži vrijednost nula kad je njezin vektor odabran da
napusti bazu, odgovarajuća bazična varijabla također mora
zadržati vrijednost nula (pošto se ne može povećati bez da
varijabla koja postaje nebazična bude negativna), tako da
vrijednost z mora ostati nepromijenjena. Treće, ako z zadrži istu
vrijednost na svakoj sljedećoj iteraciji, simpleks metoda će ići u
krug, periodički ponavljajući ista rješenja bez postizanja
optimalnog rješenja.
Na sreću iako je kretanje u krug kod simpleks metode moguće,
ono se rijetko pojavljuje u praktičnim situacijama. Ako se takvo
kretanje u krug pojavi, uvijek se može iz njega izaći mijenjanjem
odabira vektora koji napušta bazu. Razvijena su i specijalna
pravila za prekid takvih krugova.
Ne postoji vektor koji napušta bazu – neograničeno z: ovo će
se pojaviti kad su svi koeficijenti u stupcu uz varijablu koja treba
ući u bazično rješenje negativni ili su jednaki nuli.
U tom slučaju ograničenja ne sprečavaju da se vrijednost funkcije
cilja poveća na beskonačno. Tada se simpleks metoda zaustavlja s
porukom da je z neograničeno. To je znak da je problem pogrešno
formuliran ili su ispuštena neka važna ograničenja.
Višestruko optimalno rješenje: Može se pojaviti slučaj kada se
optimalno rješenje nalazi u dvije ekstremne točke. U tom slučaju
svaka konveksna kombinacija tih rješenja predstavlja optimalno
rješenje problema LP: gdje su
odgovarajući vektori optimalnih rješenja, a w1+ w2 = 1.
*' *' * *
1 2 1 1 2 2( , )x x w x w x * *
1 2 i x x
• Simpleks metoda se automatski zaustavlja kad je pronađeno
jedno optimalno rješenje. Nakon što simpleks metoda pronađe
jedno optimalno rješenje može se provjeriti postoji li neko
drugo optimalno rješenje, i ako postoji, pronaći ga. Uvijek kad
problem ima više optimalnih rješenja, najmanje jedna
nebazična varijabla ima koeficijent 0 u retku 0, tako da
povećanje (uvođenje u bazu) takve varijable neće utjecati na z.