38
Sveuˇ ciliˇ ste u Zagrebu PMF - Matematiˇ cki odjel Juraj Ivanˇ ci´ c JAVA podrˇ ska za simpleks metodu Diplomski rad Zagreb, sijeˇ canj 2005.

Java podrška za simplex metodu

  • Upload
    lethien

  • View
    273

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Java podrška za simplex metodu

Sveuciliste u Zagrebu

PMF - Matematicki odjel

Juraj Ivancic

JAVA podrska za simpleks metodu

Diplomski rad

Zagreb, sijecanj 2005.

Page 2: Java podrška za simplex metodu

Sveuciliste u Zagrebu

PMF - Matematicki odjel

Juraj Ivancic

JAVA podrska za simpleks metodu

Diplomski rad

Voditelj rada:

prof. dr. sc.

Lavoslav Caklovic

Zagreb, sijecanj 2005.

Page 3: Java podrška za simplex metodu

Predgovor

Simpleks metoda je algoritam koji u konacno koraka daje rjesenje problema linearnog pro-gramiranja, odnosno pokazuje da dani problem nema rjesenja. Simpleks applet napisan jeprema ideji profesora Caklovica kao alat koji bi studentima olaksao razumjevanje simpleksmetode. U ovom radu dan je uvod u problematiku, opis simpleks algoritma, te koristenjeappleta za rjesavanje problema linearnog programiranja. Ovdje su ubaceni dijelovi skripte“Geometrija linearnog programiranja” prof. Caklovica i to u najmanjoj mjeri potrebnojda bi se ovaj dokument mogao citati samostalno.

Vecina ovdje iznesenih tvrdnji opisane su i prikazane na intuitivno prihvatljiv nacin,gdje god je to bilo moguce dan je dokaz tvrdnji “na prste” bez prevelikog matematickogformalizma. Cilj takvog pristupa je minimizirati matematicko predznanje potrebno zarazumijevanje postupka simpleks metode. Linearno programiranje je grana matematikekoja je siroko primjenjiva, i ovaj dokument, zajedno sa appletom, pokusava objasnitipostupak rjesavanja linearnih problema nematematicarima.

Applet je pisan u Java programskom jeziku, da bi se mogao pokrenuti lokalno, kaoaplikacija, ali i iz Internet pretrazivaca. Da biste mogli pokrenuti applet, u bilo ko-joj varijanti, potrebno je imati instaliranu podrssku (Java VM), koju mozete besplatnonabaviti na http://java.sun.com. Applet dobro radi pod MS Internet Explorerom i uMozilla browseru. Ukoliko vam ne funkcionira otvaranje u pretrazivacu, uvijek vamostaje mogucnost pokretanja s komandne linije. Link za applet mozete potraziti nahttp://www.math.hr/nastava/uopt/.

Zelim na kraju izraziti duboku zahvalnost mentoru prof. Caklovicu na samoj ideji zaovaj projekt i velikom broju sugestija i primjedbi koji su unaprijedili applet i ovaj tekst.

I

Page 4: Java podrška za simplex metodu

Sadrzaj

1 Applet 11.1 Zadavanje simpleks tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Opisi ostalih komandi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

2 Uvod u problematiku i osnovni pojmovi 32.1 Linearno programiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2 Rjecnik i simpleks tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.3 Gauss-Jordanova transformacija . . . . . . . . . . . . . . . . . . . . . . . . 5

3 Primarna simpleks metoda 73.1 Trazenje dopustive tocke . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.2 Optimizacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.3 Degeneracija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.4 Algoritam optimizacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.5 Jednakosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.6 Slobodne varijable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4 Dualna simpleks metoda, teorem dualnosti 184.1 Dualna simpleks metoda . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184.2 Teorem dualnosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194.3 Uvjet optimalnosti, stroga komplementarnost . . . . . . . . . . . . . . . . . 21

5 Analiza osjetljivosti 245.1 Bazicna particija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245.2 Klasicna analiza osjetljivosti . . . . . . . . . . . . . . . . . . . . . . . . . . 24

6 Primjena u teoriji igara - matricna igra 28

II

Page 5: Java podrška za simplex metodu

Uvod

Simpleks applet je graficki prikaz simpleks tabele. U njega su ugradene operacije kojese mogu vrsiti nad simpleks tabelom, tj. Gauss-Jordanove transformacije i jos nekolikokorisnih operacija. Mnogo paznje je posveceno preglednosti appleta.

Svrha appleta nije da on samostalno rjesi probleme linearne optimizacije. Za to postojicitav spektar visestruko efikasnijih programa. Svrha appleta je pedagoska, tj. da korisniknauci samostalno rjesavati probleme linearne optimizacije, a da pri tome ne treba provoditigomilu trivijalnih aritmetickih operacija. Primjerice, za linearni problem od 5 varijablii 5 uvjeta, za svaku Gauss-Jordanovu transformaciju potrebno je oko 90 aritmetickihoperacija (a najcesce se, da bi se doslo do rjesenja, mora izvrsiti nekoliko transformacija),pa postoji velika mogucnost pogreske kod racuna. Applet provodi te operacije u djelicusekunde, a podrzava i operacije za ispravak (Undo i Redo).

Simpleks tabele u appletu se mogu zadavati samostalno, a mogu se i automatski pop-uniti sa slucajnim cijelim brojevima u zadanom rasponu, pa je applet ujedno i zbirkazadataka iz linearne optimizacije. Naravno, veliki dio automatski generiranih simplekstabela nece imati rjesenje (zbog eventualnih kontradiktornih uvjeta ili zbog neogranicenostifunkcije cilja). Sve takve situacije su jednostavno objasnjene u sljedecim odjeljcima.

Na kraju ovog rada dana je i jedna primjena linearnog programiranja u teoriji igara.Ovdje je to izneseno prema knjizi “Linear Programming”, R. Vanderbei

Kratki pregled sadrzaja

• Applet - Ovdje je ukratko opisano graficko sucelje appleta, te nacin zadavanjasimpleks tabele. Ostale mogucnosti appleta su na primjerima pokazane kroz iducapoglavlja

• Uvod u problematiku i osnovni pojmovi - U ovom poglavlju nalazi se kratki uvodu problem linearnog programiranja i osnovne definicije potrebne za rjesavanje tihproblema pomocu simpleks metode.

III

Page 6: Java podrška za simplex metodu

• Primarna simpleks metoda - Ovdje je u kratkim crtama iznesen simpleks algo-ritam za rjesavanje primarnog problema linearnog programiranja pomocu appleta.Algoritam je popracen primjerima. Takoder ovdje su prikazani postupci za svodenjeopcenitih problema na kanonsku formu

• Dualna simpleks metoda, teorem dualnosti - Ovo poglavlje pokazuje kako simpleksmetoda, uz rjesenje primarnog problema daje rjesenje dualnog problema. Dualnasimpleks metoda daje intuitivan dokaz teorema dualnosti.

• Analiza osjetljivosti - Analiza osjetljivosti spada u postoptimalnu analizu probemalinearnog programiranja. Nakon sto je pronadeno optimalno rjesenje, gledamo kakose ono mijenja ako mijenjamo ulazne parametre. Ovdje je opisan tzv. “naivnipristup” analizi osjetljivosti koji je razraden u pedesetim godinama proslog stoljeca

• Primjena u teoriji igara - matricna igra - Ovo poglavlje prikazuje primjenu linearnogprogramiranja u teoriji igara. Ovdje pokazujemo kako se pomocu simpleks appletarjesava problem izbora optimalnih strategija u matricnoj igri.

IV

Page 7: Java podrška za simplex metodu

1 Applet

1.1 Zadavanje simpleks tabele

Novu simpleks tabelu u appletu zadajete pomocu opcije . Pojavit ce se dijalog zanovu tabelu:

Ovdje zadajete dimenzije tablice, te da li zelite koristiti primarnu ili dualnu simplekstabelu. Opcija “Random Numbers” sluzi za automatsko popunjavanje simpleks tabeleslucajnim cijelim brojevima. Raspon dopustenih brojeva zadajete u poljima min. i max.Ukoliko iskljucite opciju “Random numbers” pojavljuje se novi dijalog

Ovdje zadajete samu simpleks tabelu. Prvi redak i prvi stupac sluze za imena varijablii mogu sadrzavati proizvoljan niz znakova. Ostala polja prihvacaju samo numericke vri-jednosti. Vrijednosti je moguce unijeti kao razlomke (za razlomacku crtu koristite “/”) ili kao decimalne brojeve (npr. “-2”, “-2/3”, “5.4”). Prazno polje ili neispravan unospodrazumijeva vrijednost 0.

1.2 Opisi ostalih komandi

• - * Otvara dijalog za ucitavanje prethodno snimljene simpleks tabele (Open)

• - * Snima trenutnu simpleks tabelu pod postojecim imenom (Save)

1

Page 8: Java podrška za simplex metodu

• - * Snima trenutnu simpleks tabelu pod novim imenom (Save As)

Gornje tri opcije, koje ukljucuju rad sa datotekama, ne mogu biti realizirane u onlineverziji appleta. Da biste koristili njih potrebno je pokrenuti applet lokalno na vasemracunalu.

• - Ova opcija sluzi za prebacivanje trenutne primarne simpleks tabele u ekviva-lentnu dualnu simpleks tabelu, i obratno. To znaci zapravo, da mijenja predznaksvim brojevima u simpleks tabeli

• - Pomocu ove opcije mozete promijeniti neke ili sve brojeve u simpleks tabeli.

• - Gauss-Jordanova transformacija nad odabranim elementom. Ovu transfor-maciju treba koristiti kada je problem postavljen u primarnu simpleks tabelu.

• - dualna Gauss-Jordanova transformacija nad odabranim elementom. Ovutransformaciju treba koristiti kada je problem postavljen u dualnu simpleks tabelu.

• - Zakljucavanje retka u simpleks tabeli. Ovom opcijom onemogucuju se trans-formacije nad danim retkom.

• - Zakljucavanje stupca u simpleks tabeli. Ovom opcijom onemogucuju se trans-formacije nad danim stupcem.

• - Vracanje korak unazad (Undo)

• - Vracanje korak unaprijed (Redo)

• - Promjena izmedu ispisa brojeva u obliku razlomka i decimalnog ispisa. Bro-jevi u appletu se pamte iskljucivo u obliku razlomka, no ova mogucnost je dodanaza slucaj da razlomci postanu prekomplicirani (npr. 1398512412461389

193860187356108975). Tada se

prikazuje vrijednost razlomka zaokruzena na 5 decimala.

• - Ova opcija predlaze sljedeci pivotni element koji vodi rjesenju (problemamaksimizacije), u skladu sa Blandtovim algoritmom navedenim kasnije u ovoj doku-mentaciji.

2

Page 9: Java podrška za simplex metodu

2 Uvod u problematiku i osnovni pojmovi

2.1 Linearno programiranje

Linearno programiranje ili linearna optimizacija je specijalan slucaj problema uvjetneminimizacije. Problem uvjetne minimizacije je problem tipa

min{f(x)|x ∈ D}

gdje je f : Rn → R, a D podskup od Rn. Gornji zapis je simbolicki zapis problemapronalazenja minimuma funkcije f na skupu D. Tocka z je rjesenje gornjeg problema akoje z ∈ D i ako vrijedi f(z) ≤ f(x), ∀x ∈ D. D nazivamo skupom dopustivih tocaka ilipodrucjem minimizacije, a funkciju f funkcijom cilja.Kod linearnog programiranja funkcija f je linearan funkcional, tj.

f(x) = zτx =n∑

i=1

zixi

gdje je z = (z1, z2, . . . , zn) ∈ Rn, a podrucje minimizacije D je skup svih tocaka x =(x1, x2, . . . , xn) takvih da je

a11x1 +a12x2 + . . . +a1nxn ≤ b1

a21x1 +a22x2 + . . . +a2nxn ≤ b2

...

am1x1 +am2x2 + . . . +amnxn ≤ bm

x1, x2, . . . , xn ≥ 0

sto kompaktnije zapisujemo kao

D = {x ∈ Rn|x ≥ 0, Ax ≤ b}

gdje je A = [aij] realna matrica sa m redaka i n stupaca, a b = (b1, b2, . . . , bm) ∈ Rm

2.2 Rjecnik i simpleks tabela

Trazi se maksimum funkcije c = 4x1 + x2 uz uvjete

2x1 − x2 ≤ 6

x1 + x2 ≤ 6

− x1 + x2 ≤ 2

x1, x2 ≥ 0

3

Page 10: Java podrška za simplex metodu

Prirodno je nejednakosti zamijeniti jednakostima jer se njima moze lakse manipulirati.Prvom uvjetu

2x1 − x2 ≤ 6

nedostaje nenegativan broj da bi se postigla jednakost. Zato uvodimo novu varijablu w1

tako da vrijedi2x1 − x2 + w1 = 6

odnosnow1 = −2x1 + x2 + 6

Ako to ucinimo za svaki uvjet, problem dobiva ekvivalentnu formulaciju

max 4x1 + x2

w1 = − 2x1 + x2 + 6

w2 = − x1 − x2 + 6

w3 = x1 − x2 + 2

x1, x2, w1, w2, w3 ≥ 0

koju mozemo kompaktnije zapisati kao

w1 = − 2x1 + x2 + 6

w2 = − x1 − x2 + 6

w3 = x1 − x2 + 2

c = 4x1 + x2

Gornji zapis problema nazivamo rjecnikom jer su u tom zapisu jedne varijable izrazenepomocu drugih. Vrijednost x-varijable je x = (0, 0) i c poprima vrijednost c = 0, a vari-jabla w poprima vrijednost w = (6, 6, 2). Uvjeti na varijable su zadovoljeni pa kazemo daje tocka x = (0, 0), ili tocka (x,w) = (0, 0, 6, 6, 2), dopustiva tocka skupa odredenog uvje-tima zadace. Varijable w1, w2, w3 s lijeve strane znaka jednakosti nazivamo nebazicnim, avarijable x1, x2 s desne strane znaka jednakosti nazivamo bazicnim varijablama.

Problem iz primjera mozemo zapisati u jos kompaktnijoj formi koju nazivamo simplekstabela. Bazicne i nebazicne varijable upisujemo u gornji redak tabele, odnosno lijevistupac tabele. Vrijednosti nebazicnih varijabli upisujemo u desnom stupcu tabele, a uposljednjem retku na dnu tabele upisujemo koeficijente vektora z funkcije cilja izrazenogpreko bazicnih varijabli. U samom donjem desnom kutu tabele upisujemo vrijednost odc u dopustivoj tocki kojoj je tabela pridruzena. Koordinate te dopustive tocke vidljivesu u desnom stupcu dok bazicne varijable uvijek imaju vrijednost 0 i te vrijednosti nisu

4

Page 11: Java podrška za simplex metodu

eksplicitno zapisane u tabeli.

v0 x1 x2

w1 −2 1 6

w2 −1 −1 6

w3 1 −1 2

c 4 1 0

2.3 Gauss-Jordanova transformacija

Osnovni korak u prelazu s jednog rjecnika na drugi ili jedne simpleks tabele u druguje Gauss-Jordanova transformacija. Ona se sastoji u izracunavanju jedne varijable izodabrane jednadzbe i uvrstavanjem tog izraza u sve ostale jednadzbe. Zapisimo problemu najopcenitijoj formi

max c =∑n

j=1 zjxj + c0

∑nj=1 aljxj ≤ βl, l = 1, 2, . . . , m

xi≥ 0, i = 1, 2, . . . , n

Tom problemu pridruzena simpleks tabela ima oblik

x1 · · · xn

w1 β1

... −A...

wm βm

z z1 · · · zn c0

A pridruzeni rjecnik je

wi =n∑

j=1

γijxj + βi, i = 1, . . . , m

c =n∑

j=1

zjxj + c0

gdje je γlj = −alj. Pretpostavimo da smo odabrali i-tu varijablu xi da izade iz baze i k-tuvarijablu wk da ude u bazu. To znaci da iz k-te jednadzbe

wk =n∑

j=1

γkjxj + βk

izrazavamo xi pomocu wk i preostalih x-varijabli i taj izraz uvrstimo u sve preostalejednadzbe. Osnovna pretpostavka za tu mogucnost je γki 6= 0. Nakon sredivanja dobije

5

Page 12: Java podrška za simplex metodu

se rjecnik

wl =∑

j 6=i

γkiγlj − γkjγli

γki

xj +γli

γki

wk +γkiβl − γliβk

γki

, l 6= k

xi = −∑

j 6=i

γkj

γki

xj +1

γki

wk− βk

γki

, l = k

c =∑

j 6=i

γkizj − γkjzi

γki

xj +zi

γki

wk +γkic0 − ziβk

γki

Kazemo da smo napravili Gauss-Jordanovu transformaciju sa kljucnim elementom γki

6

Page 13: Java podrška za simplex metodu

3 Primarna simpleks metoda

Ovdje je opisan postupak za rjesavanje problema max{zτx|Ax ≤ b, x ≥ 0}Ovaj zapis problema linearne optimizacije je vec spomenuti kanonski zapis i kasnije cemopokazati da se svaki problem linearne optimizacije moze svesti na kanonski.

3.1 Trazenje dopustive tocke

Da bi simpleks metoda bila primjenjiva za optimizaciju mora biti poznata bar jednadopustiva tocka. Ukoliko nisu svi bi ≥ 0 tada tocka x = 0 nije dopustiva tocka problema.Kako pronaci dopustivu tocku pokazati cemo na primjeruZadano je podrucje optimizacije

− x1 + x2 ≤ − 1

− x1 − 2x2 ≤ − 2

x2 ≤ 1

x1, x2 ≥ 0

Rjecnik pridruzen tom problemu je

w1 = x1 − x2 − 1

w2 = x1 + 2x2 − 2

w3 = − x2 + 1

x1, x2, w1, w2, w3 ≥ 0

Kako je u simpleks tabeli x = (0, 0) uvijek pocetna tocka, potrebno je na odredeninacin povecati varijable x1 i x2 tako da uvjeti w1, w2 ≥ 0 budu zadovoljeni. Iz prvejednakosti u rjecniku vidimo da cemo povecavanjem varijable x1 postici uvjet w1 ≥ 0, pazato izbacujemo w1 iz baze i ubacujemo x1. Time smo zapravo povecali vrijednost x1 zaonoliko koliko je potrebno da w1 bude 0. Novi rjecnik je

x1 = w1 + x2 + 1

w2 = w1 + 3x2 − 1

w3 = − x2 + 1

x1, x2, w1, w2, w3 ≥ 0

Sada je potrebno zadovoljiti drugi uvjet. Sada imamo izbor jer uz obje varijable w1 ix2 pozitivan predznak. Kada imamo takav izbor, za izlazak iz baze treba odabrati onuvarijablu uz koju stoji veci koeficijent, u ovom slucaju x2. Ukoliko se dogodi da ne postoji

7

Page 14: Java podrška za simplex metodu

bazicna varijabla sa pozitivnim predznakom, tada su dani uvjeti kontradiktorni i podrucjeoptimizacije je prazan skup. Sada je rjecnik

x1 = 23w1 + 1

3w2 + 4

3

x2 = − 13w1 + 1

3w2 + 1

3

w3 = 13w1 − 1

3w2 + 2

3

x1, x2, w1, w2, w3 ≥ 0

Ovaj rezultat u slobodnoj interpretaciji znaci ”da bi varijable w1 i w2 bile jednake nulix1 mora biti jednak 4

3, a x2 mora biti 1

3”. Ocito je tocka (x1, x2) = (4

3, 1

3) dopustiva tocka

polaznog problema.Algoritam. (Pronalazenje dopustive tocke)

Najprije formiramo simpleks tabelu

b1

−A...

bm

Pretpostavimo da nakon svake transformacije dobijemo sljedecu simpleks tabelu

δ1

γki...

δm

1. (Test dopustivosti) Ako je δi ≥ 0, i = 1, 2, . . . , n tada je trenutni vrh dopustiv.

2. (Izbor kljucnog elementa) U suprotnom postoji bar jedan indeks k takav da je δk < 0.Sada postoje dvije mogucnosti

• Ne postoji pozitivan γki, i = 1, 2, . . . , n. Tada je skup dopustivih tocaka prazan.

• Bar jedan koeficijent γki je pozitivan. Ukoliko ih ima vise biramo najveci.Vrsimo GJT nad elementom γki i vracamo se na prvi korak

¥

8

Page 15: Java podrška za simplex metodu

3.2 Optimizacija

Korak optimizacije se radi kada je poznata dopustiva tocka zadanog problema. To jevidljivo u simpleks tabeli kada je posljednji stupac nenegativan.

Primjer. Trazi se maksimum funkcije c = 4x1 + x2 uz uvjete

2x1 − x2 ≤ 6

x1 + x2 ≤ 6

− x1 + x2 ≤ 2

x1, x2 ≥ 0

Rjecnik pridruzen tom problemu je

w1 = − 2x1 + x2 + 6

w2 = − x1 − x2 + 6

w3 = + x1 − x2 + 2

x1, x2 ≥ 0

Iz gornjeg rjecnika se vidi da vrijednost c = 0 u tocki x = (0, 0) mozemo povecatiako povecavamo x1 i x2. Medutim, x1 ne moze rasti neograniceno jer ce w1, a isto tako iw2, za velike vrijednosti od x1 postati negativni. Stoga je gornja ograda za x1 odredenaminimumom

x1 ≤ min

{6

2, 6

}= 3

imajuci u vidu da je x2=0. Za x1 = 62

je w1 = 0, a za x1 = 6 je w2 = 0.Istu pricu mozemo ponoviti i za x2. Ako zelimo povecati x2 onda to mozemo uciniti

do granicex2 ≤ min {6, 2} = 2

imajuci u vidu da je x1=0. Za tu granicnu vrijednost je w3 = 0, a za vece vrijednosti odx2 je w3 < 0 sto nije dopustivo uvjetima.

Odlucimo li se za povecanje c promjenom varijable x2 tada za njenu novu vrijednostuzimamo x2 = 2. Iz trece jednadzbe izrazimo

x2 = x1 − w3 + 2.

U preostalim jednadzbama i u izrazu za c eliminiramo x2 supstituiranjem gornjeg izrazai dobijemo novi rjecnik

w1 = − x1 − w3 + 8

w2 = − 2x1 + w3 + 4

x2 = x1 − w3 + 2

c = 5x1 − w3 + 2

koji je pridruzen dopustivoj tocki

(x,w) = (0, 2, 8, 4, 0).

9

Page 16: Java podrška za simplex metodu

Vrijednost od c u novoj dopustivoj tocki iznosi 2. Bazicne varijable novog rjecnika sux1, w3, a nebazicne w1, w2, x2.

Novi rjecnik tretiramo na isti nacin kao i stari. Varijabla koju izbacujemo iz baze jex1 jer je koeficijent u izrazu za c uz nju pozitivan. Gornja granica za x1 je

x1 ≤ min

{8,

4

2

}= 2

sto znaci da varijablu w2 ubacujemo u bazu. Novi rjecnik je

w1 = 12w2 − 3

2w3 + 6

x1 = − 12w2 + 1

2w3 + 2

x2 = − 12w2 − 1

2w3 + 4

c = − 52w1 + 3

2w3 + 12

pridruzen dopustivoj tocki(x,w) = (2, 4, 6, 0, 0).

Vrijednost od c u toj tocki je 12 i nije maksimalna moguca jer se moze povecati akopovecamo w3. Gornja ograda za w3 je

w3 ≤ min {4, 8} = 4.

Nova bazicna varijabla je w1, a w3 izlazi iz baze. Novi rjecnik je

w3 = 13w2 − 2

3w1 + 4

x1 = − 13w2 − 1

3w1 + 4

x2 = − 23w2 + 1

3w1 + 2

c = − 2w2 − w1 + 18

pridruzen dopustivoj tocki(x,w) = (4, 2, 0, 0, 4).

Vrijednost od c u toj tocki iznosi 18 i gornjim se postupkom vise ne moze povecati. Daje 18 i optimalno rjesenje lagano se vidi iz cinjenice da su svi rjecnici ekvivalentni, t.j.imaju iste skupove dopustivih tocaka. Kako na sve varijable imamo uvjet nenegativnosti,ocito je vrijednost ciljne funkcije ≤ 18 za svaku dopustivu tocku. Odavde se vidi da sesimpleks metoda sastoji od dovoljno dobrog algoritma za isbacivanje/ubacivanje varijabliu bazu, tj. za pivotiranje.

3.3 Degeneracija

Za rjecnik kazemo da je degeneriran ako nebazicna varijabla poprimi vrijednost 0. De-generacija moze izazvati teskoce simpleks metodi. Ubacivanje degenerirane nebazicnevarijable u bazu ne povecava vrijednost ciljne funkcije. Teoretski se moze dogoditi i dau nekoliko iteracija simpleks metoda ne poveca vrijednost funkcije cilja. Tada postoji

10

Page 17: Java podrška za simplex metodu

mogucnost da se nakon nekoliko takvih iteracija ponovi rijecnik. Takvu pojavu nazivamociklicko ponavljanje, i ako do njega dode, simpleks metoda nikada ne zavrsava. Takvislucajevi su dosta rijetki, no treba biti svjestan da takva mogucnost postoji. Lako sevidi da, ukoliko nema ciklickog ponavljanja, simpleks metoda zavrsava u konacno mnogokoraka.

3.4 Algoritam optimizacije

Jedan od algoritama koji garantira konacnost simpleks metode je tzv. Blandtovo pravilo:Od svih varijabli koje se natjecu za izlazak iz baze odabrat cemo onu sa najmanjimindeksom.

Algoritam. (Primarna simpleks metoda):Najprije formiramo tabelu

x1 · · · xn

w1 b1

... −A...

wm bm

z z1 · · · zn 0

Pretpostavimo da nakon svakog koraka algoritma dobivamo sljedecu simpleks tabelu

x1 · · · xn

w1 b1

... γki...

wm bm

z z1 · · · zn c

1. (Test optimalnosti) Ako je zi ≤ 0, i = 1, 2, . . . , n tada je tabela optimalna. Rjesenjaprocitamo u posljednjem stupcu.

2. (Izbor kljucnog elementa) U suprotnom postoji bar jedan indeks i takav da je zi > 0.Za svaki takav indeks vrijednost funkcije cilja

zτx =n∑

i=1

zjxj

raste povecavanjem komponente xi. Dvije su mogucnosti:

• Svi koeficijenti γki, k = 1, 2, . . . , m i-tog stupca su nenegativni. Tada je skupdopustivih tocaka neogranicen jer su nejednakosti

0 ≤ bk + γkixi, k = 1, 2, . . . , m

zadovoljene za xi ≥ 0 Ako je bar jedan matricni element γki pozitivan tada jefunkcija cilja neogranicena odozgo.

11

Page 18: Java podrška za simplex metodu

• Bar jedan koeficijent γki je negativan. Ukoliko ih ima vise biramo najmanji ku kojem se postize minimum

minγki<0

{bk

−γki

}

Vrsimo GJT nad elementom γki i vracamo se na prvi korak

¥

Ovakvo pivotiranje povecava funkciju cilja i pritom cuva dopustivost. Ukoliko se unekom od koraka pojave negativne vrijednosti na desnoj strani to znaci da ste odabralikrivi pivotni element.

Primjer. Rjesavanje gornjeg problema pomocu appleta: Najprije formiramo sljedecusimpleks tabelu

Prema algoritmu, izbacujemo X1 iz baze i ubacujemo Y1

Izbacujemo X2 iz baze i ubacujemo Y2

12

Page 19: Java podrška za simplex metodu

U ovoj tabeli svi elementi posljednjeg retka su negativni pa je rjesenje optimalno. Iztablice ocitamo da je rjesenje x = (4, 2). Vrijednost funkcije cilja u toj tocki iznosi 18

3.5 Jednakosti

Cesto problem linearnog programiranja sadrzi kombinaciju jednakosti i nejednakosti.Tada mozemo iz jednakosti izraziti neku varijablu i uvrstiti u ostale nejednakosti, tetime problem svesti na prethodne.

max 2x1 − x2 + 4x3

− x1 + 2x2 + x3 ≤ 5

x1 − 2x2 − 33 ≤ 2

x2 + 3x3 = 5

x1, x2, x3 ≥ 0

Pripadni rjecnik je

w1 = x1 − 2x2 − x3 + 5

w2 = − x1 + 2x2 + 3x3 + 2

w3 = − x2 − 3x3 + 5

c = 2x1 − x2 + 4x3

s time da umjesto uvjeta w3 ≥ 0 imamo uvjet w3 = 0. Ako zelimo vrijednost nekevarijable postaviti na nulu znamo otprije da je treba ubaciti u bazu. Ubacivanjem w3 ubazu (na bilo koje mjesto) i “zakljucavanjem” odgovarajuceg stupca smo osigurali da w3

vise nikad ne moze izaci iz baze i time smo ”ugradili” jednakost u simpleks tabelu. Istutakvu simpleks tabelu bismo dobili da smo iz gornje jednadzbe izrazili npr. x2 preko x3,te ga uvrstili u preostale nejednadzbe

Za gornji problem simpleks tabela izgleda

13

Page 20: Java podrška za simplex metodu

Najprije moramo ubaciti w3 u bazu

Taj stupac vise nije potreban pa ga smijemo “zakljucati”

Sada trazimo dopustivu tocku

14

Page 21: Java podrška za simplex metodu

Tocka (0, 2, 1) je dopustiva, pa idemo na optimizaciju

Nakon nekoliko koraka dolazimo do optimalnog rjesenja x = (12, 0, 53). Maksimum

iznosi 623

3.6 Slobodne varijable

Do sada smo u svim primjerima imali uvjet nenegativnosti na varijable. Varijable kojene moraju nuzno biti nenegativne nazivamo slobodnim varijablama. Ako problem sadrzi islobodne varijable, tada ih treba izbaciti iz baze prije trazenja prvog plana ili optimizacije.Retke koji odgovaraju slobodnim varijablama treba ignorirati kod odabira pivotnog el-ementa, tako da se osiguramo da se nece vratiti u bazu. Za tu svrhu koristimo opciju“zakljucavanja retka”. Tada cemo, kod pronadenog optimalnog rjesenja, vidjeti koju vri-jednost doticna slobodna varijabla poprima.

Primjer.

max 2x1 − x2 + 4x3

− x1 + 2x2 + x3 ≤ 5

x1 − 2x2 − 33 ≤ 2

x2 + 3x3 = 5

x1, x3 ≥ 0

Ovdje je izbacen uvjet nenegativnosti na x2. Buduci da se u ciljnoj funkciji x2 po-javljuje sa negativnim predznakom ocito ce micanje uvjeta nenegativnosti od x2 rezultiratipovecanjem funkcije cilja. Pocetna simpleks tabela je

15

Page 22: Java podrška za simplex metodu

Moramo izbaciti iz baze x2 jer je ona slobodna varijabla i ubaciti u bazu w3 zbog jed-nakosti.

Sada “zamrznemo” pripadni redak i stupac, pa je problem sveden na kanonsku formu

Trazimo prvi plan

Faza optimizacije

16

Page 23: Java podrška za simplex metodu

Odavde procitamo rjesenje (0,−7, 4) koje je optimalno. Vidimo da je izbacivanje uvjetanenegativnosti na x2 povecalo maksimum funkcije cilja na 23. U proslom odjeljku smovidjeli da je sa uvjetom nenegativnosti optimalno rjesenje bilo 62

3.

17

Page 24: Java podrška za simplex metodu

4 Dualna simpleks metoda, teorem dualnosti

4.1 Dualna simpleks metoda

Do sada smo se bavili rjesavanjem tzv. primarnog problema

max{zτx|x ≥ 0, Ax ≤ b}

Promatrajmo njemu dualni problem

min{bτy|y ≥ 0, yτA ≥ zτ}

zadan pomocu istih komponenti kao i primarni problem. Ovaj novi problem mozemosvesti na kanonski oblik, jer je

min{bτy|y ≥ 0, yτA ≥ zτ} = −max{−bτy|y ≥ 0,−Aτy ≤ − z}

Pripadna simpleks tabela za ovaj problem je

y1 · · · yn

u1 −z1

... Aτ ...

um −zm

z −b1 · · · −bn 0

Ona je vrlo slicna simpleks tabeli za primarni problem, preciznije ona je negativnitransponat primarne simpleks tabele. Dualna simpleks tabela je transponirana gornjatabela, dakle ona je oblika

u1 · · · un

y1 −b1

... A...

ym −bm

z −z1 · · · −zn 0

Dualni problem sada rjesavamo na isti nacin kao i do sada, s time da su zamijenjeneuloge redaka i stupaca. Bazicne varijable se nalaze u retcima, a nebazicne u stupcima.Transformacije koje vrsimo nad ovom simpleks tabelom su dualne Gauss-Jordanove trans-formacije, i one tretiraju redak kao sto je do sada primarna Gauss-Jordanova tretiralastupac i obratno.

Algoritam. (Dualna simpleks metoda)

18

Page 25: Java podrška za simplex metodu

Pretpostavimo da nakon svake transformacije dobijemo sljedecu simpleks tabelu

· · ·δ1

... γik...

δm

u1 · · · un c

1. (Test optimalnosti) Ako je δi ≤ 0, i = 1, 2, . . . , n tada je tabela optimalna. Rjesenjaprocitamo u posljednjem retku.

2. (Izbor kljucnog elementa) U suprotnom postoji bar jedan indeks k takav da je δk > 0.Za svaki takav indeks vrijednost funkcije cilja

δτy =n∑

i=1

δjyj

raste povecavanjem komponente yk. Dvije su mogucnosti:

• Svi koeficijenti γki, i = 1, 2, . . . , n k-tog stupca su nenegativni. Tada je skupdopustivih tocaka neogranicen jer su nejednakosti

0 ≤ ui + γkiyk, i = 1, 2, . . . , n

zadovoljene za yk ≥ 0 Ako je bar jedan matricni element γki pozitivan tada jefunkcija cilja neogranicena odozgo.

• Bar jedan koeficijent γki je negativan. Ukoliko ih ima vise biramo onaj i ukojem se postize minimum

minγki<0

{ ui

−γki

}

Vrsimo dGJT nad elementom γki i vracamo se na prvi korak

¥

4.2 Teorem dualnosti

Dualna simpleks tabela ustvari nije nista drugo nego negativna primarna simpleks tabela.To vazno svojstvo ostaje sacuvano i nakon transformacija nad odgovarajucim elemen-tima. Iz toga zakljucujemo sljedece: ako smo rjesavanjem problema primarnom simpleksmetodom dosli do optimalnog rjesenja primarnog problema (to se vidi ako je zadnji stu-pac pozitivan, a zadnji redak negativan), tada smo dosli i do optimalnog rjesenja dualnogproblema (jer je tada u dualnoj simpleks tabeli zadnji stupac negativan, a zadnji redakpozitivan). Drugim rijecima, iz obje tablice se mogu ocitati rjesenja i primarnog i dualnogproblema.

Ovaj zakljucak nam pokazuje da simpleks metoda (u bilo kojoj varijanti) istovremenorjesava i primarni i dualni problem, te da su maksimum primarne funkcije cilja i minimumdualne funkcije cilja jednaki. To je tvrdnja teorema dualnosti :

19

Page 26: Java podrška za simplex metodu

Teorem.Ukoliko su skupovi dopustivih tocaka primarnog i dualnog problema neprazni, tada

max{zτx|x ≥ 0, Ax ≤ b} = min{yτb|y ≥ 0, yτA ≥ zτ}¥

Oznacimo li sa P = {x|x ≥ 0, Ax ≤ b} skup dopustivih tocaka primarnog problema, asa D = {y|y ≥ 0, yτA = zτ} skup dopustivih tocaka dualnog problema, teorem dualnostitvrdi da je

max{zτx|x ∈ P} = min{bτy|y ∈ D}Vrijedi i vise:Ako je P = ∅ i D 6= ∅, tada je dualna funkcija cilja neomedena odozdo na skupu dopustivihtocaka dualnog problema.Ako je P 6= ∅ i D = ∅, tada je primarna funkcija cilja neomedena odozgo na skupudopustivih tocaka primarnog problema.

Teorem dualnosti pojavljuje se u jos nekoliko oblika, koji ovise o formi zadace linearnogprogramiranja:

max{zτx|Ax ≤ b} = min{yτb|y ≥ 0, yτA = zτ}max{zτx|x ≥ 0, Ax = b} = min{yτb|yτA ≥ zτ}

max{zτx|Ax = b} = min{yτb|yτA = zτ}

Primjer.

max − 2x1 − x2 − x3

uz uvjete

− 2x1 + x2 − x3 ≤ −2

x1 + 2x2 ≤ 1

x1, x3, x3 ≥ 0

min − 2y1 + y2

uz uvjete

− 2y1 + y2 ≥ −2

y1 + 2y2 ≥ −1

− y1 ≥ −1

y1, y2 ≥ 0

Kod primarnog problema x = 0 nije dopustiva tocka, no ako formiramo dualnu simplekstabelu za dualni problem vidimo da je y = 0 dopustiva, pa smo time izbjegli trazenjeprvog plana. Dualna simpleks tabela je

20

Page 27: Java podrška za simplex metodu

Prema gornjem algoritmu za pivotni element uzimamo onaj na presjeku retka Y1 i

stupca u1, te pritisnemo

Ova tabela je optimalna, rjesenje je y = (1, 0), minimum dualne funkcije je −2. Takoder,vidimo da je rjesenje primarnog problema x = (1, 0, 0), maksimum primarne funkcije jenaravno, zbog teorema dualnosti, takoder jednak −2.

4.3 Uvjet optimalnosti, stroga komplementarnost

U ovoj tocki dokazujemo nekoliko zanimljivih posljedica teorema dualnosti. Promatramo,kao i do sada, zadacu u formi

max zτx

uz uvjete Ax + w = b (1)

x ≥ 0, w ≥ 0

i pripadni dual

min bτy

uz uvjete Aτy − u = z (2)

y ≥ 0, u ≥ 0

Oznacimo sa P dopustive tocke primarnog problema, sa D dopustive tocke dualnog prob-lema. Posljedica teorema dualnosti je da su dopustive tocke x ∈ P , y ∈ D primarnogodnosno dualnog problema optimalne ako i samo ako su ispunjeni uvjeti optimalnosti

yτw = 0 i xτu = 0

odnosnoyiwi = yi(bi − aτ

i x) = 0, i = 1, 2, . . . , m

xjuj = xj(yτaj − zj) = 0, j = 1, 2, . . . , n

(gdje je ai i-ti redak matrice A, a aj j-ti redak matrice Aτ ). Dakle uvjet optimalnostitvrdi da u svakom od n+m uredenih parova

(yi, wi), i = 1, 2, . . . , m

21

Page 28: Java podrška za simplex metodu

(xj, uj), j = 1, 2, . . . , n

barem jedan clan jednak nuli.Dokaz: Za dopustive x i y ocigledno vrijedi

zτx ≤ yτAx ≤ yτb

odnosno

∑mj=1 zjxj ≤

∑mj=1(

∑ni=1 yiaij)xj =

=∑n

i=1(∑m

j=1 aijxj)yi ≤∑n

i=1 biyi

Ako su x i y optimalna rjesenja tada u zadnjem nizu nejednakosti mora vrijediti jednakostzbog teorema dualnosti. Prva nejednakost postaje jednakost ako i samo ako za svaki jvrijedi ili zj =

∑ni=1 yiaij (sto je ekvivalentno uj = 0) ili xj = 0. Slicno, druga nejednakost

postaje jednakost ako i samo ako za svaki i vrijedi ili bi =∑m

j=1 aijxj(odnosno wi = 0) iliyi = 0.

¥

Ako je u svakom od gornjih parova tocno jedan broj jednak nuli tada rjesenja x, y nazivamostrogo komplementarnim parom.

Teorem. (Goldman-Tucker) Ako primarna i dualna zadaca imaju rjesenje, tada pos-toji strogo komplementarni par, to jest postoje optimalna rjesenja x, y primarne odnosnodualne zadace koja zadovoljavaju

y + w(x) > 0 i x + u(y) > 0

Dokaz: Oznacimo sa P∗,D∗ skupove optimalnih rjesenja primarne odnosno dualnezadace. Ukoliko postoji x′ ∈ P∗ tako da je x′i > 0 tada s i-tim indeksom nema poteskoca.Problemi se javljaju ako postoji indeks i takav da je xi = 0 ∀x ∈ P∗. Neka je i takavindeks. Zelimo pokazati da postoji y ∈ D∗ t.d. je u(y)i > 0. Promatrajmo pomocniproblem

max xi

uz uvjete Ax ≤ b (3)

zτx ≥ ξ∗

x ≥ 0

gdje smo sa ξ∗ oznacili optimalnu vrijednost funkcije cilja primarnog problema. Skupdopustivih tocaka problema (3) je neprazan jer je jednak skupu optimalnih rjesenja prob-lema (1). Optimalna vrijednost funkcije cilja je jednaka 0. Dual pomocnog problemaje

min bτy − ξ∗t

uz uvjete Aτy − zt ≥ ei (4)

y ≥ 0, t ≥ 0

22

Page 29: Java podrška za simplex metodu

(t ∈ R je varijabla koja se pojavljuje kao dual dodatnom uvjetu zτx ≥ ξ∗). Prema teoremudualnosti postoje y1 ≥ 0 i t ≥ 0 t.d. je

bτy1 − ξ∗t = 0

u1 = Aτy1 − zt− ei ≥ 0

Neka je sada y2 proizvoljno optimalno rjesenje problema (2) i u2 = Aτy2 − z. Tada je iy = y1+y2

1+toptimalno rjesenje od (2) jer je

bτy =1

1 + tbτ (y1 + y2) =

1

1 + t(ξ∗ + ξ∗t) = ξ∗

Izracunajmo u(y)

u(y) = Aτy − z = 11+t

Aτ (y1 + y2)− z =

= 11+t

(u1 + zt + ei + u2 + z − (1 + t)z) = 11+t

(u1 + u2 + ei)

Dakle y je trazeno optimalno rjesenje jer i-ta komponenta od u(y) iznosi najmanje 11+t

.Dokazali smo dakle da za svaki i postoji primarno optimalno rjesenje x i dualno optimalnorjesenje y tako da je xi + u(y)i > 0. Na slican nacin pokazemo da za svaki j postojeoptimalna rjesenja x i y tako da je yj +w(x)j > 0. Konacno, formiramo strogo konveksnukombinaciju tih n+m rjesenja. Kako je skup optimalnih rjesenja konveksan, ta konveksnakombinacija je takoder optimalno rjesenje. Zbog toga sto je konveksna kombinacija strogarjesenja su strogo komplementarna.

¥

23

Page 30: Java podrška za simplex metodu

5 Analiza osjetljivosti

5.1 Bazicna particija

Promatramo problem max{zτx|Ax ≤ b, x ≥ 0}. Promijenimo oznake pomocnih varijabli(w1, w2, . . . , wm) → (xn+1, xn+2, . . . , xn+m). Svaka simpleks tabela je potpuno odredenasa skupom svojih bazicnih varijabli. Kako su sada sve varijable indeksirane brojevimaod 1 do m + n, simpleks tabela je odredena (do na permutaciju redaka i stupaca) sa n-clanim podskupom skupa {1, 2, . . . , n + m}. Tih podskupova ima

(n+m

n

), i svaki problem

linearnog programiranja ima tocno toliko razlicitih simpleks tabeli. Svaki taj podskupnazivamo bazicna particija za danu simpleks tabelu.

5.2 Klasicna analiza osjetljivosti

U praksi je cesto, osim danog problema linearnog programiranja, potrebno pronaci irjesenja nekoliko vrlo slicnih problema, gdje je nekoliko koeficijenata promijenjeno. Postojinekoliko razloga zbog kojih dolazi do toga. Jedan od njih je cinjenica da podaci kojidefiniraju problem mogu biti neprecizni (zbog nepreciznosti mjerenja), te da posljedicnoimamo samo aproksimacije velicina koje definiraju stvarni problem. Tada nas zanima da limalene promjene u ulaznim podacima mogu rezultirati u drasticnim promjenama rjesenja.Drugi razlog moze biti da se neke varijable mijenjaju s vremenom, te je potrebno svakidan rijesiti problem koji se kojem su svega nekoliko vrijednosti razlikuje od jucerasnjeg.

Analiza osjetljivosti spada u postoptimalnu analizu problema. Nakon sto je pronadenooptimalno rjesenje, mozemo se zapitati kako se ono mijenja kad mijenjamo ulazne parame-tre. Ulazni parametri su, ocito, sama matrica A, vektor ogranicenja b, te funkcija ciljaz.

Klasicna analiza osjetljivosti je najjednostavniji slucaj postoptimalne analize, gdjeispitujemo ovisnost bazicne particije o samo jednoj komponenti vektora ogranicenja b(vektora funkcije cilja z). Centralno pitanje je za koje vrijednosti t ce bazicna particijaoptimalnog rjesenja ostati nepromijenjena ukoliko vektor b zamijenimo sa b+tei (odnosnovektor z zamijenimo sa z + tei). Kako se provodi analiza osjetljivosti pokazat cemo naprimjeru

max x1 + 2x2

uz uvjete

−2x1 + x2≤ 2

−x1 + 2x2≤ 7

x1 ≤ 3

xi≥ 0.

24

Page 31: Java podrška za simplex metodu

Rijesimo problem primarnom simpleks metodom.

x1 x2 w

x3 2 −1 2

x4 1 −2 7

x5 −1 0 3

z 1 2 0

Ã

x5 x2 w

x3 −2 −1 8

x4 −1 −2 10

x1 −1 0 3

z −1 2 3

Ã

x5 x4 w

x3 −32

12

3

x2 −12−1

25

x112

0 3

z −4 −1 13

Iz posljednje tabele ocitamo rjesenje primarnog problema x = (3, 5). Bazicna particija togrjesenja je B = {4, 5}, N = {1, 2, 3}. Odaberimo sad jednu komponentu vektora b, npr.b2. Postavlja se pitanje za koje sve vrijednosti b2 bazicna particija ostaje nepromijenjena.Ocekujemo da je to interval koji sadrzi sadasnju vrijednost od b2, ovdje je to 7. Tajinterval nazivamo rangom koeficijenta b2.

Za racun ranga od b2 potrebno je umjesto vektora b gledati vektor b + βe2, gdjeje e2 jedinicni vektor kanonske baze i umjesto broja 7 u prvu tabelu ubaciti 7 + β teponovno provesti racun. Umjesto gornjeg niza tabela dobiti cemo novi niz tabela koje cese razlikovati u krajnjem desnom stupcu. Radi ustede prostora zapisat cemo samo nizpromijenjenih desnih stupaca. Racun mozemo jos pojednostavniti ako tabelu prosirimo sjos jednim stupcem βe2 tako da cemo sada umjesto jednog desnog stupca b + βe2 imatidva, b i βe2. Provedemo li ponovno gornji racun dobit cemo, pisemo samo desne stupce,

. . . w βe2

x3 . . . 2 0

x4 . . . 7 β

x5 . . . 3 0

z . . . 0

Ã

. . . w βe2

x3 . . . 8 0

x4 . . . 10 β

x1 . . . 3 0

z . . . 3

Ã

. . . w βe2

x3 . . . 3 −β2

x2 . . . 5 β2

x1 . . . 3 0

z . . . 13

Bazicna particija novog rjesenja ostaje ista ako je

3− β

2≥ 0 i 5 +

β

2≥ 0, (5)

odnosno, −10 ≤ β ≤ 6. Rang koeficijenta b2 dobiti cemo tako da dobiveni interval zaβ translatiramo za sadasnju vrijednost koeficijenta, tj. za 7, sto daje interval [−3, 13].Opcenito, ako zelimo izracunati rangove za sve koeficijente bi, potrebno je na simplekstabelu dopisati jedinicnu matricu m×m

x1 x2 w e1 e2 e3

x3 2 −1 2 1 0 0

x4 1 −2 7 0 1 0

x5 −1 0 3 0 0 1

z 1 2 0

25

Page 32: Java podrška za simplex metodu

te vrsiti GJT kao i do sada. Na kraju, ako se pokaze da optimalno rjesenje zaista postoji,iz m dobivenih stupaca se izracunaju rangovi koeficijenata bi na navedeni nacin.

Slicno se mogu racunati rangovi koeficijenata zi, potrebno je dopisati jedinicnu matricun× n i provesti postupak analogan onome za racunanje koeficijenata bi Prosirena tablicaza racunanje rangova izgleda

x1 x2 w e1 e2 e3

x3 2 −1 2 1 0 0

x4 1 −2 7 0 1 0

x5 −1 0 3 0 0 1

z 1 2 0

f1 1 0

f2 0 1

Ã

x5 x2 w e1 e2 e3

x3 −2 −1 8 1 0 2

x4 −1 −2 10 0 1 1

x1 −1 0 3 0 0 1

z −1 2 0

f1 −1 0

f2 0 1

Ã

Ã

x5 x4 w e1 e2 e3

x3 −32

12

3 1 −12

32

x2 −12−1

25 0 1

212

x1 −1 0 3 0 0 1

z −2 −1 0

f1 −1 0

f2 −12−1

2

Applet samostalno racuna spomenute rangove. Jednom kad smo dosli do optimalnogrjesenja rangovi se mogu vidjeti na tabu “Ranges”.

26

Page 33: Java podrška za simplex metodu

Dakle rangovi su sljedeci:

b1 [−1,∞]

b2 [−3, 10]

b3 [1,∞]

z1 [−1,∞]

z2 [0,∞]

Transformirane jedinicne matrice nalaze se u tabovima “RHS Sensitivity” (RHS - “Righthand side” odnosno vektor desne strane) i “TF Sensitivity” (TF - “Target function”odnosno ciljna funkcija).

Vazno je napomenuti da spomenuti rangovi cuvaju bazicnu particiju samo ako promijen-imo jedan jedini koeficijent vektora b ili z, to jest ako promijenimo dva ili vise koeficijenata,moze se promijeniti i bazicna particija.

Ovaj postupak nije tesko generalizirati da se vidi invarijantnost bazicne particije uodnosu na jednodimenzionalne perturbacije b+t4b (z+t4z) gdje je4b ∈ Rm (4z ∈ Rn).

27

Page 34: Java podrška za simplex metodu

6 Primjena u teoriji igara - matricna igra

Teorija linearnog programiranja ima svoju primjenu u teoriji igara. Jednostavna i ele-gantna primjena moze se prikazati na matricnoj igri.Pravila Matricne igre ili konacne igre (za dva igraca sa sumom nula su sljedeca.

Neka je zadana realna matrica A = [αij] sa m redaka i n stupaca. Na pocetku igresvaki igrac bira jedan broj. Prvi igrac bira jedan od redaka matrice, odnosno broj izskupa {1, 2, . . . , m}, drugi igrac bira jedan od stupaca matrice, odnosno broj iz skupa{1, 2, . . . , n}. Od sada nadalje cemo ih nazivati igrac R i igrac S. Kada su oba odabralasvoje brojeve pokazuju ih jedan drugom. Ako je igrac R odabrao broj i, a S broj j tadapravila igre nalazu da igrac R mora platiti igracu S αij kuna. Igrac S nije u boljem polozajuod igraca R, jer negativne vrijednosti u matrici znace da placanje ide u suprotnom smjeru.Matricu A nazivamo matrica isplate.

Kod matricne igre opcenito ne postoji deterministicka strategija igranja. Svaki redaki svaki stupac moze sadrzavati i pozitivne i negativne vrijednosti, pa prema tome mogu ine moraju biti dobri izbori za pojedinog igraca. Tada je u interesu svakog igraca koristitislucajnu strategiju. Pod slucajnom strategijom podrazumjevamo da bi svaki potez trebaobiti odabran s odredenom vjerojatnoscu.

Strategija igraca R je slucajna varijabla X sa zakonom razdiobe

X ∼ 1 2 . . . m

x1 x2 . . . xm

Dakle X je redak koji je odabrao igrac R.Slicno, strategija igraca S je slucajna varijabla Y sa zakonom razdiobe

Y ∼ 1 2 . . . n

y1 y2 . . . yn

Pretpostavljamo da su X i Y nezavisne slucajne varijable, sto odgovara cinjenici daniti jedan od igraca ne zna sto ce izabrati drugi.

Uz tu notaciju, dobitak igraca S je αXY . Ocekivani dobitak igraca S je

E[αXY ] =m∑

i=1

n∑j=1

xiαijyj = xAyτ

Cilj je odrediti vjerojatnosne razdiobe varijabli X i Y tako da bi dobitak igraca bio najvecimoguci.

Kakvu god strategiju X odabrao igrac R, igrac S ce se od nje braniti strategijom Yza koju se postize donji maksimum

maxy

xAyτ

gdje maksimum uzimamo po svim stohastickim vektorima duljine n. Stoga igrac R kaonajbolju mogucu obranu bira stohasticki vektor x∗ za koji se postize donji minimum

minx

maxy

xAyτ

28

Page 35: Java podrška za simplex metodu

Ovaj problem se moze postaviti kao problem linearnog programiranja. Ako primjetimoda je (ei je i-ti vektor kanonske baze Rn)

maxy

xAyτ = maxi∈{1,...,n}

xAeτi

problem mozemo napisati kao

minx maxi xAeτi

uz uvjeten∑

j=1

xj = 1

xj ≥ 0, j = 1, 2, . . . , n

Ovaj problem mozemo napisati i drugacije uvodenjem pomocne varijable u:

min u

uz uvjete u ≥ xAeτi , i = 1, 2, . . . , n

m∑j=1

xj = 1 (6)

xj ≥ 0, j = 1, 2, . . . , m

Na isti nacin, igrac S, kao svoju strategiju bira y∗ za koju se postize najveca isplata:

maxy

minx

xAyτ

Pripadni problem je

max v

uz uvjete v ≤ eτi Ay i = 1, 2, . . . ,m

n∑j=1

yj = 1 (7)

xj ≥ 0 j = 1, 2, . . . , n

Sada kada je racunanje optimalnih strategija svedeno na linearni problem moze se pokazatikonzistentnost danih rjesenja. Vrijedi

Teorem. (von Neumann) Postoje stohasticki vektori x∗ i y∗ za koje

maxy

x∗Ayτ = minx

xAy∗τ

Dokaz: Kako je (6) dualan problemu (7) teorem dualnosti tvrdi da je v∗ = u∗.Nadalje

v∗ = maxi

eiAy∗τ = maxx

xAy∗τ

i slicnou∗ = min

jx∗Aeτ

j = maxy

x∗Ayτ

29

Page 36: Java podrška za simplex metodu

¥

Vrijednost u∗ = v∗ nazivamo vrijednost igre. Ako igrac R prihvati strategiju x∗ tadase osigurava da u prosjeku nece izgubiti vise od u∗ kuna. Slicno, igrac S prihvacanjemstrategije y∗ se osigurava da u prosjeku nece zaraditi manje od v∗ kuna. Zbog toga igrucija je vrijednost 0 nazivamo pravednom igrom.

Primjer. Izracunajmo strategije igraca ako je zadana matrica isplate

A =

0 −3 2

5 0 −6

−3 4 0

Linearni problem glasi:

max v

3x2 − 2x3 + v ≤ 0

− 5x1 + 6x3 + v ≤ 0

3x1 − 4x2 + v ≤ 0

x1 + x3 + x3 = 1

x1, x2, x3 ≥ 0

Formiramo simpleks tabelu za taj problem:

Ubacujemo u bazu redak eq koji odgovara jednakosti umjesto npr X3 i zakljucamo odgo-varajuci stupac

30

Page 37: Java podrška za simplex metodu

v je slobodna varijabla, pa ju izbacujemo iz baze.

Da bi problem sveli na kanonsku formu moramo zakljucati redak v. Nakon nekoliko korakaalgoritma dolazimo do sljedece tebele

Optimalna strategija za igraca R je x = (2564

, 1764

, 1132

), zbog dualnosti, optimalna strategijaza igraca S je y = (31

64, 23

128, 43

128). Vrijednost igre je − 7

64, sto znaci da je igrac R u prednosti.

31

Page 38: Java podrška za simplex metodu

Literatura

[1] Caklovic, L., Geometrija linearnog programiranja, skripta

[2] Vanderbei R. J., Linear programming, Foundations and extensions, Kluwer Aca-demic Publishers, 2001.

[3] Cukman, T., JAVA, Alfej, 1997.

[4] Eckel, B., Thinking in Java, 2nd. ed.

32