Professional Documents
Culture Documents
p g
programiranja
j
(14.03.2012., 21.03.2012.)
z = 3 x1 + 5 x2 → max
p.o.
x1 ≤4
2 x2 ≤ 12
3 x1 + 2 x2 ≤ 18
x1 ≥ 0, x2 ≥ 0
x2
(0, 9)
3x1 + 2x2 = 18
Z(2, 6)=36
Z(0,
( , 6)=30
)
(2 6)
(2, (4 6)
(4,
(0, 6) 2x2 = 12
z = 3 x1 + 5 x2 → max
x1=4 p.o.
x1 ≤4
Skup dopustivih
rješenja
Z(4, 3)=27 2 x2 ≤ 12
(4, 3)
3 x1 + 2 x2 ≤ 18
x1 ≥ 0, x2 ≥ 0
Z(0, 0)=0
Z(4, 0)=12 x2 = 0
(0, 0) x1
(4, 0) (6, 0)
U ovom primjeru svaka kutna točka (corner-point solution) leži na
ppresjeku
j dviju
j granica
g (međa)
( ) ograničenja.
g j
Za bilo koji problem LP s n varijabli odlučivanja dvije susjedne
kutne dopustive točke su susjedne jedna drugoj ako dijele n-1
granica ograničenja.
ograničenja Dvije susjedne kutne dopustive točke povezane
su dužinom koja leži na tim istim podijeljenim granicama
ograničenja. Takva dužina predstavlja rub dopustivog područja.
B d ći da
Budući d je
j u našem
š primjeru
i j n = 2, dvije
d ij kutne
k t dopustive
d ti točke
t čk su
susjedne ako dijele jednu granicu ograničenja. Npr. (0, 0) i (0, 6) su
susjedne pošto dijele granicu ograničenja x1 = 0. Dopustivo područje
na prethodnoj slici ima 5 rubova, koji sadrže 5 dužina koje formiraju
granicu područja dopustivih rješenja. Svaka moguća kutna točka
sadrži dvije susjedne kutne moguće točke.
točke
Test optimalnosti. Razmotrimo bilo koji problem LP koji ima
najmanje jedno optimalno rješenje. Ako kutna moguća točka nema
susjednu
j d moguću ć kutnu
k t ttočku
čk k koja
j jje b
bolja
lj ((mjereno
j 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 moguće kutno rješenje.
Provjeriti susjednu točku. Zaključujemo da (0, 0) nije optimalno
rješenje S
rješenje. Susjedna
sjedna kkutna
tna mog
mogućaća točka daje veću rijednost zaa z.
eć vrijednost
Iteracija 1: kretati se prema boljoj susjednoj mogućoj točki u
sljedeća 3 koraka:
1. Razmatrajući dva ruba skupa dopustivih rješenja 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 novoj granici ograničenja: 2x2 = 12.
3. Riješiti presjek novih granica ograničenja: (0, 6).
Test optimalnosti: zaključujemo da (0,6)
(0 6) nije optimalno rješenje.
rješenje
Susjedna kutna moguća točka je bolja.
Iteracija 2: kretati se prema boljoj susjednoj kutnoj mogućoj točki
(2, 6) primjenom sljedeća 3 koraka:
1. Razmatrajući dva ruba dopustivog područja koja proizlaze iz (0,
6) odabrati kretanje duž ruba na desno, jer se time povećava
vrijednost za z.
2. Zaustaviti se na prvoj novoj granici ograničenja: 3x1 + 2x2 = 18.
3. Riješiti presjek novog skupa granica ograničenja: (2, 6), a to se
dobi a rješavanjem
dobiva s sta a 3x1 + 2x2 = 18 i 2x2 = 12.
rješa anjem sustava 12
Test optimalnosti: Budući da ne postoji susjedna kutna dopustiva
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.
x1 = 0, tako da je
x1 ≤4 x3 = 4
2 x2 ≤ 12 x4 = 12 − 2 x2
3 x1 + 2 x2 ≤ 18 x5 = 18 − 2 x2
x1 ≥ 0, x2 ≥ 0
Nebazične varijable (uključujući i varijablu koja ulazi u bazu) su
nenegativne.
g Međutim,, mi želimo pprovjeriti
j na koliko možemo
povećati x2 bez narušavanja uvjeta nenegativnosti za bazične
varijable.
x3 = 4 > 0 ⇒ nema gornje granice na x2
12
x4 = 12 − 2 x2 ≥ 0 ⇒ x2 ≤ = 6 ← minimum
2
18
x5 = 18 − 2 x2 ≥ 0 ⇒ x2 ≤ = 9.
2
Prema tome x2 se može povećati na 6, tako da x4 bude jednako
nuli. Povećanje x2 preko 6 dovelo bi do toga da x4 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 ppovećava varijabla
j koja
j ulazi u bazu. Smanjenjem
j j
vrijednosti bazične varijable na 0 pretvorit će je u nebazičnu
varijablu u sljedećem bazičnom mogućem rješenju.
Rješavanje za dobivanje novog bazičnog mogućeg rješenja.
j x2 = 0 na x2 = 6 ppomiče nas s ppočetnogg bazičnogg
Povećanje
mogućeg rješenja na novo bazično moguće rješenje:
Početno BF rješenje Novo BF rješenje
Nebazične varijable x1 = 0, x2 = 0 x1 = 0, x4 = 0
Bazične varijable x3 = 4, x4 = 12, x5 = 18 x3 = ?, x2 = 6, x5 = ?
.
...
.
...
.
...
cn+r xn+r ar0 ar1 ar2 ... ars ...
...
...
...
...
z‐c am+1,0 am+1,1 am+1,2 ... am+1,s ...
Kod konstrukcije početne simpleks tablice koriste se sljedeća
pravila.
il
Kanonski oblik linearnog modela je osnova za konstrukciju početne simpleks
tablice.
Zaglavlje tablice (prvi redak i drugi redak) sadrži sve varijable (strukturne,
dopunske i artificijelne) i njihove odgovarajuće koeficijente u funkciji cilja.
U drugi stupac (Baza) upisuju se varijable koje čine početno bazično
rješenje.
Prvi stupac sadrži koeficijente u funkciji cilja bazičnih varijabli.
U treći stupac
p ((x0) upisuju
p j se vrijednosti
j odgovarajućih
g j bazičnih varijabli
j
(početno bazično rješenje).
Ostali stupci simpleks tablice (x1, x2, ...) koji odgovaraju varijablama iz
kanonskog g oblika linearnogg modela,, sadrže strukturne koeficijente
j varijabli
j
iz sustava ograničenja.
Redak z-c, odnosno koeficijenti am+1,j izračunavaju se upotrebom izraza:
{
max am +1, j < 0
j
}
ar 0
min {ai 0 / ais , ais > 0} =
i ars
arj
arj' = aij' = aij − arj' ⋅ ais
ars
Korak 1. Ispitivanje optimalnosti rješenja i određivanje
varijable
j koja
j postaje
p j bazična ((određivanje j vodećegg stupca).
p )
Posljednji redak simpleks tablice predstavlja kriterij
optimalnosti simpleks metode kojim se utvrđuje je li dobiveno
rješenje
j š j optimalno
ti l ili nije,ij odnosno
d može
ž li se još
j š poboljšavati.
b ljš ti
Poboljšanje programa podrazumijeva prelazak neke od
nebazičnih varijabli
j u bazičnu,, koja
j može osigurati
g da kod
problema maksimuma dođe do povećanja vrijednosti funkcije
cilja.
Ako
Ak su svii kkoeficijenti tk z-c veći
fi ij ti u retku ći ili jednaki
j d ki nuli,
li
dobiveno je optimalno rješenje. U suprotnom slučaju dobiveno
rješenje se može poboljšavati. Zašto?
U modelu za maksimum varijablu koja ulazi u bazu određuje
najmanji negativni koeficijent am+1,j (najveći po apsolutnoj
vrijednosti negativni koeficijent am+1,j, odnosno
{ } { }
max ( z j − c j < 0) = max am +1, j < 0 , j = 1, 2,..., n + m
Zašto?
Ako je to koeficijent am+1,s
+1 , onda je stupac s vodeći stupac,
stupac a
varijabla xs ulazi u bazu. Vodeći stupac simbolički se označava
s ↑.
Korak 2. Određivanje varijable koja napušta bazu (određivanje
vodećeg retka).
Da bi se odredio vodeći redak neophodno je izračunati
kvocijente vrijednosti bazičnih varijabli (stupac x0) i
odgovarajućih elemenata po retcima iz prethodno određenog
vodećeg
d ć stupca.
t Najmanja
N j j vrijednost
ij d t izračunatih
i č tih kvocijenata
k ij t
određuje vodeći redak, odnosno određuje varijablu koja
napušta bazu. Zašto?
Matematički se određivanje vodećeg retka vrši utvrđivanjem
minimalne vrijednosti kvocijenta
⎧ ai 0 ⎫
min ⎨ ⎬ , ais > 0.
i
⎩ ais ⎭
⎧ ai 0 ⎫ ar 0
Neka je to r-ti
ti redak, tj min ⎨ , ais > 0 ⎬ =
redak tj. .
⎩ ais ⎭ ars
Koeficijent
j ars kojij se nalazi na presjeku
p j vodećegg retka i
vodećeg stupca naziva se ključni element (broj) koji se u
tablici posebno označava (zaokružuje). Vodeći redak
simbolički se označava s ← . Varijabla koja se nalazi u
vodećem retku napušta bazu, tj. prelazi iz statusa bazične u
status nebazične varijable. Na njezino mjesto će se u narednoj
simpleks
i l k tablici
t bli i upisati
i ti nova bazična
b ič varijabla
ij bl određena
d đ u
koraku 1.
Korak 3. Transformacija koeficijenata simpleks tablice.
Da bi se odredilo poboljšano rješenje neophodno je izračunati
nove vrijednosti bazičnih varijabli i ostalih koeficijenata
naredne
d simpleks
i l k tablice
bli pomoću ć transformacija
f ij koeficijenata
k fi ij
vodećeg retka i koeficijenata ostalih redaka.
Koeficijenti vodećeg retka transformiraju se tako da se svaki
koeficijent retka podijeli s ključnim elementom, tj.
arj
arj =
'
, ( j = 0,1,
0 1 22, ...).
)
ars
Transformacija elemenata ostalih redaka vrši se upotrebom
Gauss Jordanovog postupka eliminacije:
Gauss-Jordanovog
arj
aij = aij − arj ⋅ ais = aij −
' '
ais , ( j = 0,1, 2, ...).
ars
Tj. za i ≠ r , ( i = 1, 2, ..., m + 1) novi koeficijent se dobiva kad
se od starog koeficijenta oduzme produkt novog koeficijenta iz
istog stupca u vodećem retku i starog koeficijenta iz istog retka
i vodećeg stupca.
Prilikom ručnog rješavanja problema simpleks metodom mogu
se iskoristiti sljedeće matematičke olakšice:
Ako je u vodećem stupcu neki od koeficijenata jednak nuli, onda kod
transformacije svi
s i koeficijenti u retku
retk s nulom
n lom ostaju
ostaj nepromijenjeni.
nepromijenjeni
Ako se u vodećem retku nalaze koeficijenti jednaki nuli, onda kod
transformacije svi koeficijenti u stupcu s nulom ostaju nepromijenjeni.
Radi kontrole računskih operacija u svakoj simpleks tablici
koeficijenti u retku z-c trebaju udovoljavati obrascu koji se
koristi kod formiranjaj početne
p simpleks
p tablice.
Nakon izmjene bazičnog rješenja konstruira se nova simpleks
tablica s novim bazičnim varijablama i transformiranim
vrijednostima
ij d ti koeficijenata
k fi ij t svih ih redaka
d k simpleks
i l k tablice,
t bli te
t se
vraća na korak 1 (ispitivanje optimalnosti rješenja itd.) i
ponavlja se cjelokupni postupak kroz naredne iteracije dok se
ne dobije optimalno rješenje, odnosno dok se ne dobije da su
svi koeficijenti u retku z-c veći ili jednaki nuli.
Rješavanje općeg problema za minimum pomoću simpleks
tablice
{
max am + 1, j > 0
j
}
ar 0
min {ai 0 / ais ais > 0} =
i ars
arj
a = '
rj
aij' = aij − arj' ⋅ ais
ars
Korak 1. Ispitivanje optimalnosti rješenja i određivanje varijable
koja
j ulazi u bazu.
Posljednji redak simpleks tablice z-c predstavlja kriterij
optimalnosti metode na temelju kojeg se utvrđuje je li dobiveno
optimalno
ti l rješenje
j š j ili nije,
ij odnosno
d može
ž li se dobiveno
d bi rješenje
j š j
još poboljšati ili ne.
Poboljšanje
j j rješenja
j j podrazumijeva
p j prelazak
p neke od nebazičnih
varijabli u bazične, tako da kod problema za minimum dođe do
smanjenja vrijednosti funkcije cilja.
Ako
Ak su svii kkoeficijenti tk z-c manji
fi ij ti u retku ji ili jednaki
j d ki nuli,
li dobiveno
d bi
je optimalno rješenje. U suprotnom slučaju dobiveno rješenje se
može poboljšati.
U linearnom modelu za minimum varijablu koja ulazi u bazu
određuje najveći pozitivni koeficijent am+1,j , odnosno
{ } { }
max ( z j − c j > 0) = max am +1, j > 0 , j = 1, 2,..., n + m
Ako je to koeficijent am+1,s
+1 onda je stupac s vodeći stupac,
stupac a
varijabla xs ulazi u bazu.
Ostali koraci simpleks algoritma za minimum identični su onim
razmatranim kod rješavanja linearnog modela za maksimum.
Primjer za
a maksimum
Simpleks metodom (tablični oblik) riješiti sljedeći model LP:
z = 3 x1 + 5 x2 + 2 x3 → max
p.o.
x1 + 2 x2 + x3 ≤ 12
x1 +2 x3 ≥ 10
2 x1 + 3 x2 + x3 ≤ 21
x1 + x2 + x3 = 12
x1 , x2 , x3 ≥ 0
Najprije ćemo model predstaviti u obliku pododnom za
primjenu simpleks metode (sva ograničenja moraju biti izražena
u obliku jednakosti):
z = 3 x1 + 5 x2 + 2 x3 + 0 ⋅ ( x4 + x5 + x6 ) − M ⋅ x7 − M ⋅ x8
p.o.
x1 + 2 x2 + x3 + x4 =12
12
x1 +2 x3 − x5 +x7 = 10
2 x1 + 3 x2 + x3 +x6 =21
21
x1 + x2 + x3 +x8 = 12
x1 , x2 , ..., x8 ≥ 0
cj ci 3 5 2 0 0 0 ‐M ‐M
Baza x0 x1 x2 x3 x4 x5 x6 x7 x8
x4 0 12 1 2 1 1 0 0 0 0
x7 ‐M 10 1 0 2 0 ‐1 0 1 0
x6 0 21 2 3 1 0 0 1 0 0
x8 ‐M
M 12 1 1 1 0 0 0 0 1
z‐c ‐22M ‐2M‐3 ‐M‐5 ‐3M‐2 0 M 0 0 0
cj ci 3 5 2 0 0 0 ‐M ‐M
Baza x0 x1 x2 x3 x4 x5 x6 x7 x8
x4 0 7 0.5 2 0 1 0.5 0 ‐0.5 0
x3 2 5 0.5 0 1 0 ‐0.5 0 0.5 0
x6 0 16 1.5 3 0 0 0.5 1 ‐0.5 0
x8 ‐M 7 0.5 1 0 0 0.5 0 ‐0.5 1
zc
z‐c ‐7M+10
7M+10 ‐0.5M‐2
0 5M 2 ‐M‐5
M5 0 0 ‐0.5M‐1
0 5M 1 0 1 5M+1
1.5M+1 0
Npr. prvi element u vektoru x1 dobili smo na sljedeći način: 1 − 0.5 ⋅ 1 = 0.5
Svi ostali transformirani elementi matrice dobivaju se na analogan način.
Treća iteracija. Transformacija koeficijenata tablice vrši se na način
analogan prethodno prikazanom.
U bazu ulazi vektor x1, a iz baze izlazi vektor x6. Sve prema pravilu za ulazak
vektora u bazu (najveća apsolutna vrijednost u stupcu z-c<0,
z-c<0 odnosno najmanji
kvocijent odgovarajućih elemenata vektora x0 i vektora x1, koji ulazi u bazu.
cj ci 3 5 2 0 0 0 ‐M ‐M
Baza x0 x1 x2 x3 x4 x5 x6 x7 x8
x2 5 3.5 0.25 1 0 0.5 0.25 0 ‐0.25 0
x3 2 5 0.5 0 1 0 ‐0.5 0 0.5 0
x6 0 5.5 0.75 0 0 ‐1.5 ‐0.25 1 0.25 0
x8 ‐M 3.5 0.25 0 0 ‐0.5 0.25 0 ‐0.25 1
zc
z‐c ‐3.5M+
3 5M+ ‐0.25M‐
0 25M 0 0 0.5M+
0 5M+ ‐0.25M+
0 25M+ 0 1.25M‐
1 25M 0
27.5 0.75 2.5 0.25 0.25
Četvrta iteracija. Transformacija elemenata matrice na način
analogan
g pprethodnim izlaganjima.
g j
cj ci 3 5 2 0 0 0 ‐M
M ‐M
M
Baza x0 x1 x2 x3 x4 x5 x6 x7 x8
x2 5 1.6667 0 1 0 1 0.3333 ‐0.3333 ‐0.3333 0
x3 2 1.3333 0 0 1 1 ‐0.3333 ‐0.6667 0.3333 0
x1 3 7.3333 1 0 0 ‐2 ‐0.3333 1.3333 0.3333 0
x8 ‐M 1.6667 0 0 0 0 0.3333 ‐0.3333 1 1.6667
z‐c ‐1.6667M+ 0 0 0 1 ‐0.3333M 0.3333 1.3333 0
33 M+1 M
Peta iteracija. Transformacija elemenata matrice na način
analogan
g pprethodnim izlaganjima.
g j
cj ci 3 5 2 0 0 0 ‐M
M ‐M
M
Baza x0 x1 x2 x3 x4 x5 x6 x7 x8
x2 5 0 0 1 0 1 0 0 0 ‐1
x3 2 3 0 0 1 1 0 ‐1 0 1
x1 3 9 1 0 0 ‐2 0 1 0 1
x5 0 5 0 0 0 0 1 ‐1 ‐1 3
z‐c 33 0 0 0 1 0 1 M M