You are on page 1of 19

Operaciona israživanja (SO)

Transportni problem

1. (Zadatak sa ispita)
Poslovnice rent-a-car agencije su poslale zahtev za automobilima. Bačka Palanka traži 5 automobila, Novi
Sad traži 4, Zrenjanin traži 8. Sombor ima na raspolaganju 12 automobila, Subotica 2, Kula 3. Poslovnica u
Vrbasu služi kao prolazna stanica.
Mogući transporti sa cenama u RSD su dati u tabeli.
SO SU KU VR BP NS ZR
SO − 500 400 − 400 1500 −
SU − − − 500 − − −
KU − − − 300 600 − −
VR − − − − − 700 1000
BP − − − 300 − − −
NS − − − − 400 − 500
ZR − − − − − − −
Treba organizovati najjeftiniji prevoz automobila koji će ispuniti zahteve koristeći raspoložive automobile.
Za dati problem minimizacije napisati problem linearnog programiranja u matričnom obliku i odrediti ma-
trice.
Odrediti skup čvorova i skup grana.
Na nemoj mapi uneti date podatke.

Rešiti problem minimizacije ukupnog prevoza polazeći od pokrivajuv́eg drveta: SO → BP, SO → NS, KU →
VR, SU → VR, VR → ZR, NS → ZR.

1
Rešenje:
Problem linearnog programiranja koji odgovara datom problemu mrežnog protoka, zapisan u matričnom
obliku je:

ζ = c T x → min
AT x = −b
x ≥ 0,

gore navedene matrice su:


 
500

 400 

 400 
−1 −1 −1 −1
   
12  
 1500 
 1 −1   2   
     500 
 1 −1 −1   3   
300
     
A= 1 1 −1 −1 1 , b =  0 , c =  .
 
600
   
1 1 − 1 1  −5
    
700
     
1 1 −1 −1  −4
    
1000
 
1 1 −8
 
 
 300 
 
 400 
500
Čvorovi su mesta kroz koja se vrši transport, a to su: N = {SO, SU, KU, VR, BP, NS, ZR}.
Grane su putevi kojima se može vršiti transport: A = {SO → SU, SO → KU, SO → BP, SO → NS, SU →
VR, KU → VR, KU → BP, VR → NS, VR → ZR, BP → VR, NS → BP, NS → ZR}.
Kada popunimo nemu mapu imamo:

2
U nastavku rešavamo problem. Kada izračunamo protoke, dualne promenljive i dodatne dualne promenljive,
imamo:

Protok je primarno dopustiv, a dualno nije dopustiv. U bazu ulazi grana BP → VR.

Kontura koja nastaje je {BP-VR-ZR-NS-SO-BP}. Iz baze izlazi grana NS → ZR i t = 3. Grupe čvorova koje
nastaju su {SO, BP, NS} i {SU, KU, VR, ZR}, A = 300.

3
Dalje, u bazu treba da ud̄e grana VR → NS. Kontura koja nastaje je VR-NS-SO-BP-VR. Iz baze izlazi SO → NS
i t = 4. Kada ta grana izad̄e iz baze čvor NS se odvaja od ostalih, A = 100.

Dobijeni protok je optimalan. Optimalna cena transporta je:

ζ ∗ = 400 · 12 + 500 · 2 + 300 · 3 + 300 · 7 + 1000 · 8 + 700 · 4 = 19600.

4
2. Rešiti transportni problem izmed̄u snabdevača S1 , S2 i S3 i potrošača P1 , P2 i P3 , kao problem mrežnog proto-
ka, polazeći od pokrivajućeg drveta S1 − P3 , S2 − P1 , S3 − P1 , S3 − P2 , S3 − P3 , ako su cene transporta, zalihe
snabdevača i potrebe potrošača dati u tabeli:

P1 P2 P3 zalihe
S1 8 4 5 7
S2 3 5 2 5
S3 7 6 9 8
potrebe 6 5 9

Rešenje:
Transportni problem izmed̄u snabdevača i potrošača je problem minimizacije mrežnog protoka, odgovarajući
graf je:

Ono što je specifično kada je u pitanju transportni problem (Hičkokov problem) jeste to što se čvorovi
mogu podeliti u dve grupe. Jednu grupu čine snabdevači koji imaju zalihe i od kojih polaze grane, a drugu
potrošači, oni imaju potrebe i do njih vode grane. Postoje grane od svakog snabdevača do svakog potrošača.
Kada označimo bazične grane crvenom bojom, izračunamo protok, dualne i dodatne dualne promenljive,
dobijamo:

5
Možemo uočiti da je protok primarno dopustiv, dualno nije dopustiv, pa moramo izvršiti primarnu pivotiza-
ciju. Grana S2 − P3 ulazi u bazu.

Kontura koja pritom nastaje je S2 P3 S3 P1 S2 . Iz baze izlazi grana S3 P3 i t = 2. Čvorovi se razdvajaju na dve
grupe, prvu čine {S2 , S3 , P1 , P2 }, a drugu {S1 , P3 }, A = 3.

6
U narednoj pivotizaciji u bazu ulazi grana S1 − P2 . Kontura koje se dobija je S1 P2 S3 P1 S2 P3 S1 . Iz baze izlazi
S2 − P1 pa je t = 3. Jednu grupu čvorova nakon izlaska grane S2 − P1 iz baze čine {S3 , P1 , P2 }, a drugu
{S1 , S2 , P3 }, A = 1.

Protok je optimalan. Ako grani Si − Pj odgovara promenljiva xi,j , rešenje je:

∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗
x1,1 = 0, x1,2 = 3, x1,3 = 4, x2,1 = 0, x2,2 = 0, x2,3 = 5, x3,1 = 6, x3,2 = 2, x3,3 = 0.

Optimalna cena transporta je:

ζ ∗ = 4 · 3 + 5 · 4 + 2 · 5 + 7 · 6 + 6 · 2 = 96.

7
3. Rešiti transportni problem izmed̄u snabdevača i S1 , S2 i S3 i potrošača P1 , P2 i P3 , ako su cene transporta,
zalihe snabdevača i potrebe potrošača dati u tabeli:

P1 P2 P3 zalihe
S1 8 4 5 7
S2 3 5 2 5
S3 7 6 9 8
potrebe 6 5 9

Rešenje:
Možemo uočiti da je problem iz ovog zadatka identičan problemu iz prethodnog zadatka. Kako je transportni
problem teško rešavati kao problem mrežnog protoka, postoji i jednostavniji način za njegovo rešavanje,
pomoću tabela transportnog problema. Prethodni zadatak služi da bi se uočila analogija izmed̄u algoritma
na grafovima i algoritma sa tabelama transportnog problema.
Tabela transportnog problema datog u zadatku je dimenzija 3 × 3, jer imamo tri snabdevača i tri potrošača,
svakom polju tabele odgovara jedna grana. U gornje leve ćoškove polja unosimo cene transporta za svaku
granu, a u polja upisujemo vrednosti xi,j ili zi,j u zavisnosti od toga da li je grana koja odgovara datom polju,
tj. ona koja vodi od i-tog snabdevača do j-tog potrošača, bazična grana primara ili nebazična.
Na margine tabele dodajemo polja sa zalihama i potrebama, ona će nam biti potrebna samo na početku,
kasnije ih možemo izbaciti, i prazna polja u koja ćemo upisati vrednosti dualnih promenljivih (y).

Vrednosti bazičnih promenljivih primara u početnom rečniku možemo odrediti Vogelovom metodom (u
tabeli one su označene plavom bojom).
Vogelova metoda
Za svaku kolonu i svaku vrstu tabele računamo apsolutnu vrednost razlike dve najmanje cene. Kada to
uradimo, nadjemo vrstu ili kolonu u kojoj je najveća razlika, a zatim polje sa najmanjom cenom u toj vrsti ili
koloni. Kako tom polju odgovara jedna grana u njega zapišemo zalihe snabdevača ili potrebe potrošača koji
odgovaraju toj grani, manji broj od ta dva.
U našem primeru, kod prve kolone dve najmanje cene su 3 i 7, razlika je 4. Kod druge kolone najmanje su
cene 4 i 5, razlika je 1, za treću kolonu razlika je 3. Prelazimo na vrste, u prvoj najmanje cene su 4 i 5,
razlika je 1, za drugu vrstu razlika je 1, i za treću razlika je 1. Najveća razlika je kod prve kolone, nalazimo
polje sa najmanjom cenom u toj koloni, to je polje koje odgovara grani S2 − P1 . U skladištu S2 zalihe su 5,
a potrošaču P2 treba 6, pa iz skladišta S2 šaljemo sve zalihe u P2 i u polje pišemo 5. Kako smo iskoristili sve
zalihe skladišta S2 , drugu vrstu precrtamo, a potrebe potrošača P1 smanjimo sa 6 na 1.

8
Nastavljamo isti postupak, samo ne uzimajući u obzir drugu vrstu ( sve dok nam ne preostane samo jedna
vrsta ili kolona). Razlika za prvu kolonu je 1, za drugu kolonu je 2, za treću kolonu je 4. Za prvu vrstu,
razlika je 1, a za treću isto 1. Najveća razlika je kod treće kolone, najmanja cena u trećoj koloni je u prvom
polju, odgovara grani S1 − P3 . Zalihe u skladištu S1 su 7, a potrebe za P3 su 9, dakle šaljemo tih 7. Zaliha
više nema u skladištu S1 , pa prvu vrstu precrtamo, a potrebe kod P3 se smanjuju sa 9 na 2.

Kako nam je preostala samo poslednja vrsta dalje ne tražimo razlike, u njena polja prepišemo preostale
potrebe (u slučaju da nam je preostala kolona pisali bismo preostale zalihe).

Nakon bazičnih promenljivih primara, izračunaćemo vrednosti dualnih promenljivih.

9
Kao i do sada, jednoj promenljivoj dodelimo vrednost 0 (obično onoj u čijoj koloni ili vrsti ima najviše
bazičnih promenljivih primara). Na primer promenljivoj koja odgovara čvoru S3 . Kod grafa, kretali smo se
bazičnim granama i dodavali ili oduzimali cenu u zavisnosti od smera kretanja. Ovde sve grane polaze od
čvorova Si , pa brojevima skroz desno dodajemo cene i dobijamo brojeve skroz dole, ili od brojeva dole
oduzimamo cene i dobijamo brojeve desno.
Prema tome, imamo:

Vrednosti dodatnih promenljivih duala dobijamo takod̄e analogno kao kod grafova, njih pišemo u zagrada-
ma. Tamo smo računali kao početak grane minus kraj grane plus cena za granu, isto tako i ovde, počeci
grana su brojevi desno, od njih oduzimamo krajeve, to su brojevi dole, i dodajemo cenu, broj u levom uglu
gore. Dakle, imamo:

Dakle, polazna tabela izgleda ovako (kolonu i vrstu sa zalihama i potrebama nadalje nećemo pisati, više nam
neće biti potrebne, mogu se pisati i ne moraju):

10
Vidimo da je protok primarno dopustiv (bazične promenljive primara su nenegatine, to su plavi brojevi u
tabeli), a nije dualno dopustiv (ima negativnih bazičnih promenljivih duala, to su brojevi u zagradama).
Vršimo primarnu pivotizaciju. Najnegativnija promenljiva ima vrednost -3, ona odgovara grani S2 − P3 (kod
grafova ta grana ulazi u bazu).
Nakon što izaberemo promenljivu koja ulazi u bazu crtamo cikl. Polazimo od polja u kom se nalazi pro-
menljiva koja ulazi u bazu i u njemu i završavamo cikl. Možemo da se krećemo gore, dole, levo ili desno,
zaustavljamo se samo na bazičnim poljima, i pritom, ako smo išli levo ili desno, naredni korak mora biti gore
ili dole, i obrnuto, ako smo išli gore ili dole, naredni korak će biti levo ili desno. Polja možemo preskakati. U
ovom primeru cikl će izgledati ovako (označen je crvenom bojom):

Svakoj promenljivoj koja čini cikl dodajemo ili od nje oduzimamo t (to je kontura kod grafova). U tabeli to
označavamo sa plus ili minus. Kod grane koja ulazi u bazu pišemo 0 + t, tako da stavljamo plus u polje sa -3,
i dalje se krećemo po ciklu i naizmenično pišemo minus, plus. Vrednost za t biramo tako što nad̄emo polje
sa najmanjom vrednošću xi,j gde smo stavili −t, to je polje koje odgovara grani S3 − P3 , pa je t = 2. (dakle,
grana S3 − P3 izlazi iz baze).
Vrednosti za promenljive duala, i dodatne promenljive duala računamo na isti način kao u prvom koraku
(jednoj promenljivoj dodelimo nulu i računamo ostale). Dobijamo:

Možemo uočiti da i dalje imamo negativnih dualnih bazičnih promenljivih. U bazu ulazi grana S1 − P2 .
Crtamo cikl:

Vidimo da iz baze treba da izad̄e grana S2 − P1 , pa je t = 3. Nakon ažuriranja svih promenljivih imamo:

11
Možemo uočiti da je dobijena tabela optimalna, nema negativnih bazičnih primarnih ni dualnih promenlji-
vih. Rešenje je isto kao rešenje prethodnog zadatka:

∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗
x1,1 = 0, x1,2 = 3, x1,3 = 4, x2,1 = 0, x2,2 = 0, x2,3 = 5, x3,1 = 6, x3,2 = 2, x3,3 = 0.

ζ ∗ = 4 · 3 + 5 · 4 + 2 · 5 + 7 · 6 + 6 · 2 = 96.

4. Rešiti transportni problem:

P1 P2 P3 P4 P5 zalihe
S1 2 12 4 5 7 16
S2 12 8 2 14 10 17
S3 6 4 8 3 5 18
potrebe 10 12 9 11 13

Rešenje:
Kako bi transportni problem bio rešiv neophodno je da suma zaliha i suma potreba budu jednake. Zaliha
u ovom zadatku imamo 51, a potreba 55. Kako su potrebe veće nego zalihe potrebno je dodati još jednog
fiktivnog snabdevača, S4 , čije zalihe će biti 4, koliko nedostaje da bi suma zaliha i suma potreba bile jednake.
Cene transporta od tog snabdevača do svih potrošača su 0. Dakle, tabela pre popunjavanja izgleda ovako:

Vrednosti bazičnih promenljivih primara možemo dobiti i koristeći metod severozapadnog ugla.
Metod severozapadnog ugla
Kod metoda severozapadnog ugla uvek prvo popunjavamo polje koje se nalazi u preseku prve vrste i prve
kolone, tj. polje koje odgovara grani S1 − P1 . Zalihe snabdevača S1 su 16, a potrebe za P1 10, pa šaljemo 10
iz S1 u P1 i pišemo 10 u to polje. Kako je u zalihama ostalo još 6 kod S1 prelazimo na potrošača P2 , njemu
treba 12, tih 6 iz zaliha šaljemo potrošaču P2 , i u polje koje odgovara grani S1 − P2 pišemo 6.

12
Zalihe za S1 su prazne, onda prelazimo na sledećeg snabdevača, tj. u narednu vrstu. Potrošaču P2 fali još 6,
S2 ima 17 u zalihama, pa šalje 6 potrošaču P2 , i pišemo 6 u polje koje odgovara grani S2 − P2 . Potrebe za P2
su onda zadovoljene, pa prelazimo na P3 , njemu treba 9, a S2 ima još 11, pa šalje potrebnih 9 do P3 . Dakle,
u polje S2 − P3 pišemo 9. Potrebe za P3 su zadovoljene pa prelazimo na P4 . Njemu treba 11, kod S2 imamo
još 1, pa taj jedan šaljemo do P4 . Dakle, potrebe za P4 se smanjuju na 10, S2 više nema zaliha pa prelazimo
na S3 .
Zalihe za S3 su 18, pa može poslati potrebnih 10 do P4 , i pišemo 10 u polje S3 − P4 . P4 više nema potreba,
pa prelazimo na P5 . Potrebe su 13, S3 ima još 8 u zalihama, tih 8 šalje i pišemo 8 u polje S3 − P5 . Kako u S3
više nema zaliha prelazimo na fiktivnog snabdevača S4 kog smo dodali.
Za S4 zalihe su 4, a potrošaču P5 i fali 4, pa u polje S4 − P5 pišemo 4.
Dakle, kada se upišu primarne bazične promenljive imamo:

Ostatak tabele popunjavamo na isti način kao kod Vogelove metode, dodelimo jednoj dualnoj promenljivoj
vrednost nula i računamo ostale. Dobijamo (bez kolone za zalihe i vrste za potrebe):

Vidimo da u bazu treba da ud̄e grana S1 − P4 , crtamo cikl:

13
Iz baze treba da izd̄e grana S2 − P4 i t = 2. Kada izračunamo sve promenljive imamo:

Vidimo da u bazu treba da ud̄e grana S3 − P2 , kada se nacrta cikl vidi se da iz baze izlazi S1 − P2 , pa je t = 4.
Dobijamo tabelu:

Dobijena tabela je optimalna. Rešenje je:

∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗
x1,1 = 10, x1,3 = 6, x2,2 = 8, x2,3 = 9, x3,2 = 4, x3,4 = 5, x3,5 = 9, x4,5 =4

preostale promenljive primara su jednake nuli.


Optimalna cena transporta je:

ζ ∗ = 2 · 10 + 5 · 6 + 8 · 8 + 2 · 9 + 4 · 4 + 3 · 5 + 5 · 9 + 0 · 4 = 208.

Drugi način:
Ukoliko vrednosti bazičnih promenljivih primara tražimo Vogelovom metodom, koraci su sledeći:

14
Najveća razlika je kod druge vrste, najmanja cena odgovara grani S2 − P3 . Zalihe za S2 su 17, a potrebe za P3
9, pa šaljemo 9. Potrošač P3 više nema potreba, pa precrtamo njegovu kolonu, nju više ne gledamo. Zalihe
za S2 smanjimo na 8.

U nastavku, najveća razlika je kod pete kolone, najmanja cene kod grane S4 − P5 . Zalihe za S4 su 4, a P5
treba 13, pa šaljemo 4. Snabdevač S4 više nema zaliha, pa precrtamo njegovu vrstu. Potrebe za P5 smanjimo
na 9.

15
Najveća razlika je kod prve kolone, najmanja cena kod grane S1 − P1 . Zalihe za S1 su 16, a P1 treba 10, pa
šaljemo 10. Potrošač P1 više nema potreba, možemo precrtati njegovu kolonu. Zalihe za S1 smanjimo na 6.

Najveća razlika je kod druge kolone, najmanja cena kod grane S3 − P2 . Zalihe kod S3 su 18, a P2 treba 12,
pa šaljemo 12. Kako P2 više nema potreba, precrtamo njegovu kolonu. Zalihe za S3 smanjimo na 6.

16
Najveća razlika je kod druge vrste, najmanja cena kod grane S2 − P5 . Kod S2 preostale zalihe su 8, a P5 treba
9, pa šaljemo 8. Kako S2 više nema zaliha, precrtamo njegovu vrstu. Potrebe za P5 sa 9 na 1.

Najveća razlika je kod četvrte kolone, a najmanja cena kod grane S3 − P4 . Zalihe kod S3 su 6, a P4 treba 11,
pa šaljemo 6. Snabdevač S3 više nema zaliha, pa možemo precrtati njegovu vrstu. Kod P4 smanjimo potrebe
na 5. Preostaje nakon toga samo dva polja u prvoj vrsti, tu prepišemo preostale potrebe. Imamo:

17
Kada dodamo i dualne promenljive i dodatne dualne promenljive dobijamo:

Očigledno dobijeni protok nije optimalan, pa u nastavku vršimo pivotizacije dok ne dod̄emo do optimlanog
protoka.
Najnegativnije je polje koje odgovara grani S2 − P2 , pa ona ulazi u bazu, crtamo cikl.

Iz baze izlazi grana S1 − P4 , t = 5.

18
Najnegativnije je polje koje odgovara grani S3 − P5 , ona ulazi u bazu. Iz baze izlazi grana S2 − P5 , t = 3.

Vidimo da je tabela optimalna. Optimalna cena transporta se mora poklapati sa cenom koju smo dobili preko
metode severozapadnog ugla.

19

You might also like