Upload
abir-hadzic
View
228
Download
1
Embed Size (px)
Citation preview
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 1/43
10. Dinamičkoprogramiranje
10.1 Jednodimenzionalna raspodjela 3
10.1.1 Matematički model i rješenje 4 10.1.2 Primjeri 4 10.1.3 Zadaci 24
10.2 Višedimenzionalna raspodjela 29 10.2.1 Matematički model i rješenje 29 10.2.2 Primjeri 30 10.2.3 Zadaci 32
10.3 Najkraći put 32 10.3.1 Matematički model i rješenje 32 10.3.2 Primjeri 32 10.3.3 Zadaci 32
10.4 Dinamika zamjene opreme 40 10.4.1 Matematički model i rješenje 40 10.4.2 Primjeri 40 10.4.3 Zadaci 43
Literatura 43
Dinamičko programiranje, DP, obuhvaća grupu formalnih (razrađ enih i usvojenih) pos-tupaka optimalizacije [1] kod kojih se obimni i/ili teško obradivi problemi ( sustavi u cjelini) dijele u niz manjih lako obradivih problema (komponente sustava). Rješenja se potom dobiva-
ju koračnim postupkom, pri
čemu se u svakom koraku (k ) optimalizacije uzimaju u obzir op-timalna rješenja prethodnog koraka (k–1).
f *k,j =opt x {ϕ(f k,i , f *(k–1),(j-i))} F-10.1
gdje je: f *k,j – optimalna vrijednost funkcije cilja u k-tom koraku za x = x j f k,i – vrijednost funkcije k-tom koraku za x = x i f *(k–1),(j-i) – optimalna vrijednost, dobivena u prethodnom koraku (k–1) za x = x (j–i)
Matematički opisi različitih postupaka DP-a nisu jednoznačno obrađeni u literaturi i teško je bilo odabrati najpogodnije za strojarske inženjere. Pored toga, teško je bilo i odlučiti se ukojoj mjeri ići u detalje s dodatnim oznakama (na primjer: f *(k–1),(j-i)) – s premalo detalja jematematički opis nejasan, s previše detalja odbojno zamršen. U svakom slučaju, pri učenjurazličitih postupaka DP-a, na samom početku ne treba gubiti previše vremena na savladavanjematematičkog formalizma. Nakon što se uradi par primjera sve postaje potpuno jasno.
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 2/43
2 Kvantitativne metode
Temelj je DP-a rekurzija funkcije f i (en. recur – ponavljanje):1. određuje se vrijednosti f 0 – „temeljni slučaj“2. izračunava vrijednost f 1 , uz korištenje prethodno izračunate vrijednosti f 0 – „pra-
vilo rekurzije“3. ponavlja se korak 2. (izrač unavajući f k uz korištenje f k-1) do dostizanja određenog
kraja k = kmax .Može se početi s početka problema ( P-10.1), ali se u pravilu počinje s kraja ( P-10.2 i P-10.3).
Primjer P-10.1
Odrediti faktorijel broja 3 ( faktorijel broja n matematič ka je funkcija kojom se sukcesivno-
izrač unava proizvod brojeva 1 ÷ n), uz korištenje rekurzije funkcije.
Rješenje:
n! = 1D2D…D(n–1)Dn
1. korak: 1! = 12. korak: 2! = 2D1! = 2D1 = 2
3. korak: 3! = 3D2! = 3D2 = 6
Treba uočiti da se u svakom koraku koristi rezultat prethodnog koraka – rekurzija funkcije( strjelice). Opći matematički opis rješavanja bio bi:
1. korak: f 1,1 = 1 (temeljni sluč aj) 2. korak: f 2,2 = 2Df 1,1 ( pravilo rekurzije)
f k,j = jDf (k–1),(j–1) j = 1,2, … n
U P-10.1 je jmax = 3.
Primjer P-10.2
Dva igrača, jedan za drugim, prethodnom zbroju ( Ak–1) dodaju odabrani broj 1 ≤ ai ≤ 5 ikažu rezultat Ak. Igra počinje s A0 = 0, a gubi je igrač koji mora kazati broj Am ≥ 40.
Rješenje:
S kraja problema, pobjednik je igrač koji kaže Am–1 = 39 – gubitnik tada mora kazati broj Am ≥ 40. U prethodnom će koraku pobjednik kazati Am–3 = 33 (39 – 6 ), nakon čega gubitnik mora kazati Am–2 = 34 ÷ 38 i time omogućiti pobjedniku da kaže Am–1 = 39. Dalji je niz pob-
jedničkih brojeva 27 (33 – 6 ), 21, 15, 9 i 3.
Prema tome, pobjednik je prvi igrač s nizom brojeva: 3, 9, 15, 21, 27, 33, 39.
Primjer P-10.3
Specijalno sintetičko mazivo ulje, pakirano u bačve od 50 L (litra), izdaje se iz skladištatvornice na litre. Radnik održavanja dolazi u skladište s kantom od 5 L uzeti 4 L ulja, a skla-dištar ima kantu od 3 L. Volumen ulja možemo mjeriti s potpuno punom ili praznom kantom.
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 3/43
10. Dinamičko programiranje 3
Rješenje:
Problem se rješava u koraku m – 1 (rješavanje poč inje s kraja problema) odlijevanjem 1 L ulja iz „velike“ kante s 5 L ulja u „malu“ kantu s 2 L ulja. U zadnjem se koraku (m) 3 L uljavraća iz male kante u bačvu i odnosi velika kanta od 5 L s 4 L ulja ( preostala nakon odlijeva-
nja). Analizom unazad dolazi se do prvog koraka (i = 1), u kome se velika kanta puni s 5 L ulja, potom se mala kanta napuni s 3 L te velikoj kanti ostaje 2 L. Iz male se kante ulje vraćau bačvu ….
Rješenje primjera P-10.1 obuhvaća tipičan formalizirani opis rješenje matematičkog prob-lema, dok kod P-10.2 i P-10.3 postupka rješavanja praktičnog problema nije matematičkiformalizirano opisan. U sva tri slučaja korištena je rekurzija funcije, ali, razrada općeg izrazaF-10.1 u rješavanju P-10.2 i P-10.3 nema smisla – gubi se više vremena na matematički opisnego na rješavanje problema.
DP je razvijeno prije svega za optimalizaciju velikih složenih sustava procesne tehnike(kemijsko inženjerstvo) i energetike koji se mogu podijeliti na podsustave ( podjeli pa savla-
daj). Tijekom dinamičkog programiranja, pri postupnoj optimalizaciji podsustava uzimaju seu obzir njihova uzajamna djelovanja. Izbor izvršen u svakom koraku ( stupnju) doprinosi op-timumu sustava – kombinaciji optimuma podsustava ( stupnji 1 ÷ 6 ).
Slika S-10.1 Procesna proizvodnja [2]
Prvi je detaljno obradio DP Bellman 1957. [3]. Od tada se DP koristi u matematici, zna-nosti, inženjerstvu, biomatematici, medicini, ekonomiji, informatici, umjetnoj inteligenciji.Primjena dinamičkog programiranja se širi s novijim razvojem u oblastima neuralnih mreža,rudarenja podataka (data mining ), mekom računalstvu ( soft computing ) i drugim oblastimaračunalne inteligencije [1].
U ovoj su knjizi obrađena četiri relativno jednostavna formalna postupaka DPa, koji semogu primijeniti za rješavanje problema s kojima se u praksi često sreću strojarski inženjeri:
1. jednodimenzionalna raspodjela
2. dvodimenzionalna raspodjela
3. najkraći put
4. dinamika zamjena opreme
Opisane postupke je lakše usvojiti ako se prvo prouče riješeni primjeri (drugi dio), pa tek po-tom vratiti na generalizirane matematičke modele i postupke njihovog rješavanja ( prvi dio).
Na kraju se vladanje postupcima može provjeriti rješavanjem zadataka (treći dio).
10.1 Jednodimenzionalna raspodjela
Jednodimenzionalna raspodjela postupkom DP-a formalni je postupak optimalizacije ras-
podjele raspoloživog resursa S (en. resource, Source – izvor ) na aktualne recipijente R i (en. Recipient – primalac), uz zadana manje ili više specifična ograničenja.
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 4/43
4 Kvantitativne metode
10.1.1 Matemati č ki model i rješenje
Funkcija cilja: – raspoloživi resurs S optimalno raspodijeliti na recipijente R i
F = opti
x i
m
i 1 x f
=⎧ ⎫⎨ ⎬⎩ ⎭∑ =
i
m
i 1 x
f ∗=∑ F-10.2
gdje je: i – oznaka recipijenta
– rezultat raspodjele resursa S na recipijente R i i x f
– optimalni rezultat raspodjele resursa S na recipijente R i i x f ∗
x i – dio resursa S koji se dodjeljuje recipijentu R i
Funkcije ograničenja:
≤ S F-10.3 i x g
gdje je: g i – ograničenje resursa S koji se može dodijeliti recipijentima R i x i,min ≤ x i ≤ x i,max F-10.4
gdje je: x i,min/ x i,max – dozvoljena minimalna/maksimalna vrijednost x i
x j ∈ ` F-10.5
gdje je: ` – skup prirodnih brojeva.
Rješenje
Raspodjela se odvija u koracima koji se opisuju izrazom:
f *k,j =min max
opt j, j j, x x x ≤ ≤ { } j jk-1,( j ) x f f ∗ −+ F-10.6
gdje je: k – oznaka koraka
U 1. koraku (k = 1) se 1. recipijentu dodjeljuje dio resursa x *1 za koji f k,,j ( F-10.06 ) imaoptimalnu (maksimalnu ili minimalnu) vrijednost f *k,,j . Preostali se dio resursa dalje raspodje-ljuje na n – 1 recipijenata, uzimajući u obzir rezultate raspodjela u prethodnim koracima. Udrugom koraku (k = 2 ) uzimaju se u obzir optimalne vrijednosti raspodjela u prvom korakuf *1,,j , u trećem koraku (k = 3) optimalne vrijednosti raspodjela u drugom koraku f *2,,j (u koje
su uključ eni f *1,,j ) …. Konačno:
F =i
m
i 1 x f ∗
=∑=
i
m
i 1 x
f ∗
=∑ F-10.7
gdje su: ∗i – dijelovi resursa S čijim se dodjeljivanjem recipijentima R i dobiva optimum. x
Nejasnoće matematičkog formalizma najlakše je pojasniti kroz sljedeće primjere.
10.1.2 Primjeri
Maksimalizacija
Primjer P-10.4
Optimalno treba raspodijeliti 8 novozaposlenih tokara u 3 pogona (A, B i C). U svakom je
pogonu slobodno po 5 strojeva. Procijenjena je dnevna dobit, u kunama, po tokarskom stroju, po pogonima: A 400, B 500 i C 200. [6, 407. strana]
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 5/43
10. Dinamičko programiranje 5
Kako bi se skratili zapisi, usvaja se novčana jedinica NJ = 100 kn.
Funkcija cilja: F = maxi x
{ }1 2 34 5 2 x x x + +D D D
Korektnost postavke funkcije cilja dobro je provjeriti dimenzionalnom analizom:
[F ] =NJ NJ
tok =D ar dan tokar danD
[ x i ] = tokar ( podrazumijeva se tokar koji radi na stroju u i -tom pogonu)
Funkcije ograničenja:3
ii 1
x =∑ = x1 + x2 + x3 ≤ 8 tokar (tri pogona, osam tokara)
0 ≤ xi ≤ 5 tokar (tri pogona, osam tokara)
Rješenje:
1. Koraci raspodjele:
• Prvi korak (k = 1) – dodjela djela tokara pogonu A (i = 1):
f *1,j = max1
0 5 x ≤ ≤ { }14 x D
• Drugi korak (k = 2 ) ( prvi i drugi pogon) – dodjela djela tokara pogonu B (i = 2 ):
f *2,j = max2
0 5 x ≤ ≤ ( ){ }
22 1, j5
x x f ∗ −+D
• Treći korak (k = 3) ( sva tri pogona) – dodjela djela tokara pogonu C (i = 3):
f *3,,j = max3
0 5 x ≤ ≤ ( ){ }
33 2, j
2 x
x f ∗ −+D
2. Prvi pogon:
• za 0 ≤ j ≤ 5 ( slobodni strojevi):
f *1,j = max1
0 5 x ≤ ≤ { }14 x D = 4D j
• za 5 < j ≤ 8 (nema slobodnih strojeva – višak dodijeljenih tokara nema na č emu
raditi te njihovo dodjeljivanje pogonu A neće povećati dobit ):
f *1,j = max1
6 8 x ≤ ≤ { }14 x D = 4◦5 = 20
j 0 1 2 3 4 5 6 7 8
x 1 0 1 2 3 4 5 5 5 5f *1,,j 0 4 8 12 16 20 20 20 20
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 6/43
6 Kvantitativne metode
3. Prvi i drugi pogon:
f *2,j = max2
0 5 x ≤ ≤ ( ){ }
22 1, j
5 x
x f ∗ −+D
Dio se tokara dodjeljuju pogonu B i izračunavaju parcijalne dobiti: x
25 D
Tome se dodaju optimumi dobiti za dodjele preostalih tokara pogonu A, što je već izračunatou prethodnom koraku:
( ) x f ∗ − 21, j
Na samom početku, ne dodjeljuje se niti jedan tokar ( j = 0) te logično nema ni dobiti:
f *2,0 = max2 0 x = { }1,(0 0) 1,0
5 0 0 0 0 0f f ∗ ∗−+ = + = + =D = 0
Dalje, dodjeljuje se jedan tokar ( j = 1), prvo pogonu A, potom pogonu B i određuje optimum:f *2,1 = max
20 1 x ≤ ≤
1,(1 0) 1,1
1,(1 1) 1,0
5 0 0 0 4 4
5 1 5 5 0 5
f f
f f
∗ ∗−
∗ ∗ ∗−
⎧ ⎫+ = + = + =⎨ ⎬+ = + = + =⎩ ⎭
D
D= 5
Riječima, bolje je dodijeliti tokara pogonu B.
f *2,2 = max2
0 2 x ≤ ≤
( )
( )
( )
1,21, 2 0
1,11, 2 1
1,01, 2 2
5 0 0 0 8 8
5 1 5 5 4 9
5 2 10 10 0 10
f f
f f
f f
∗ ∗−
∗ ∗−
∗ ∗−
∗
⎧ ⎫+ = + = + =⎪ ⎪
+ = + = + =⎨ ⎬⎪ ⎪+ = + = + =⎩ ⎭
D
D
D
= 10
f *2,3
= max20 3 x ≤ ≤
( )
( )
( )
( )
1,31, 3 0
1,21, 3 1
1,11, 3 2
1,01, 3 3
5 0 0 0 12 12
5 1 5 5 8 13
5 2 10 10 4 145 3 15 15 0 15
f f
f f
f f f f
∗ ∗−
∗ ∗−
∗ ∗−∗ ∗
−∗
⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪
⎨ ⎬+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎩ ⎭
D
D
D
D
= 15
f *2,4 = max2
0 4 x ≤ ≤
( )
( )
( )
( )
( )
1,41, 4 0
1,31, 4 1
1,21, 4 2
1,11, 4 3
1,01, 4 4
5 0 0 0 16 16
5 1 5 5 12 17
5 2 10 10 8 18
5 3 15 15 4 19
5 4 20 20 0 20
f f
f f
f f
f f
f f
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗
⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎨ ⎬⎪ ⎪+ = + = + =⎪ ⎪
+ = + = + =⎪ ⎪⎩ ⎭
D
D
D
D
D
= 20
f *2,5 = max20 5 x ≤ ≤
( )
( )
( )
( )
( )
( )
1,51, 5 0
1,41, 5 1
1,31, 5 2
1,21, 5 3
1,11, 5 4
1,01, 5 5
5 0 0 0 20 20
5 1 5 5 16 21
5 2 10 10 12 225 3 15 15 8 23
5 4 20 20 4 24
5 5 25 25 0 25
f f
f f
f f f f
f f
f f
∗ ∗−
∗ ∗−
∗ ∗
−∗ ∗
−∗ ∗
−∗ ∗ ∗
−
⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪
⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪
⎪ ⎪+ = + = + =⎪ ⎪⎩ ⎭
D
D
DD
D
D
= 25
f *2,6 = max20 6 x ≤ ≤
( )
( )
( )
( )
( )
( )
( )
1,61, 6 0
1,51, 6 1
1,41, 6 2
1,31, 6 3
1,21, 6 4
1,11, 6 5
1,01, 6 6
5 0 0 0 20 20
5 1 5 5 20 25
5 2 10 10 16 26
5 3 15 15 12 27
5 4 20 20 8 28
5 5 25 25 4 29
5 5 25 25 0 25
f f
f f
f f
f f
f f
f f
f f
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
⎧ + = + = + =⎪ + = + = + =
+ = + = + =+ = + = + =⎨+ = + = + =+ = + = + =
+ = + = + =
D
D
D
D
D
D
D
⎫⎪
∗
⎪ ⎪⎪ ⎪⎪ ⎪
⎬⎪ ⎪⎪ ⎪⎪ ⎪
⎪ ⎪⎩ ⎭
= 29
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 7/43
10. Dinamičko programiranje 7
* U sedmom redu raspodjele f 2,6 je šesti tokar dodijeljen drugom pogonu, u kome ima samo pet raspoloživih strojeva ( šesti tokar neće raditi jer nema raspoloživog stroja), te se parcijalnadobit ne povećava na 5◦6 = 30. Takva raspodjela ( sedmi red ) u odnosu na prethodnu ( šesti
red ) mora imati manju dobit jer je u prvom pogonu ostao jedan stroj neiskorišten. Dobit bi bi-la ista ukoliko ni u prvom pogonu ne bi bilo raspoloživih strojeva, kada je svejedno u kojem je pogonu, zbog nedostatka strojeva, tokar neiskorišten. Prema tome, zapis se može skratiti.Isti zaključak vrijedi za raspodjele f 2,7 i f 2,8:
f *2,6 = max2
0 5 x ≤ ≤
( )
( )
( )
( )
( )
( )
1,51, 6 0
1,51, 6 1
1,41, 6 2
1,31, 6 3
1,21, 6 4
1,11, 6 5
5 0 0 0 20 20
5 1 5 5 20 25
5 2 10 10 20 26
5 3 15 15 16 27
5 4 20 20 12 28
5 5 25 25 8 29
f f
f f
f f
f f
f f
f f
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗
⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪
+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪⎩ ⎭
D
D
D
D
D
D
= 29
f *2,7 = max20 5 x ≤ ≤
( )
( )
( )
( )
( )
( )
1,51, 7 0
1,51, 7 1
1,51, 7 2
1,41, 7 3
1,31, 7 4
1,21, 7 5
5 0 0 0 20 20
5 1 5 5 20 25
5 2 10 10 20 30
5 3 15 15 16 31
5 4 20 20 12 32
5 5 25 25 8 33
f f
f f
f f
f f
f f
f f
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗
⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪
+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪⎩ ⎭
D
D
D
D
D
D
= 33
f *2,8 =
max20 5 x ≤ ≤
( )
( )
( )
( )
( )
( )
1,51, 8 0
1,51, 8 1
1,51, 8 2
1,51, 8 3
1,41, 8 4
1,31, 8 5
5 0 0 0 20 20
5 1 5 5 20 25
5 2 10 10 20 30
5 3 15 15 20 355 4 20 20 16 36
5 5 25 25 12 37
f f
f f
f f
f f f f
f f
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−∗ ∗
−∗ ∗
−∗
⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪
⎨ ⎬+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪
⎪ ⎪+ = + = + =⎪ ⎪⎩ ⎭
D
D
D
D
D
D
= 37
j 0 1 2 3 4 5 6 7 8
x 1 0 0 0 0 0 0 1 2 3
f *1,j 0 0 0 0 0 0 4 8 12
x 2 0 1 2 3 4 5 5 5 5
f *2,j 0 5 10 15 20 25 29 33 37
4. Sva tri pogona:
f *3,j =max
30 5 x ≤ ≤ ( ){ }33 2, j2 x x f ∗
−+D
Dio se tokara dodjeljuju pogonu C i izračunavaju parcijalne dobiti:
x 32 D
Tome se dodaju optimumi dobiti za dodjele preostalih tokara pogonima A i B, što je već izra-čunato u prethodnom koraku:
( ) x f ∗ − 32, j
Na samom početku, ne dodjeljuje se niti jedan tokar ( j = 0) te logično nema ni dobiti:
f *3,0
= max3 0 x = ( ){ }
2,02, 0 0
2 0 0 0 0 0f f ∗ ∗
−+ = + = + =D = 0
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 8/43
8 Kvantitativne metode
Dalje, dodjeljuje se jedan tokar ( j = 1), prvo pogonima A i B, potom pogonu C i određuje op-timum:
f *3,1 =
max30 1 x ≤ ≤
( )
( )
2,12, 1 0
2,02, 1 1
2 0 0 0 5 5
2 1 2 2 0 0
f f
f f
∗ ∗−
∗ ∗−
∗⎧ ⎫+ = + = + =⎪ ⎪
⎨ ⎬+ = + = + =⎪ ⎪⎩ ⎭
D
D = 5
Riječima, bolje je tokare raspodjeliti po pogonima A i B (ako to kasnije bude potrebno, jed-
nim pogledom na prethodni korak može se utvrditi kako je bolje tokara dodijeliti pogonu A).
f *3,2 = max30 2 x ≤ ≤
( )
( )
( )
2,22, 2 0
2,12, 2 1
2,02, 2 2
2 0 0 0 10 10
2 1 2 2 5 7
2 2 4 4 0 4
f f
f f
f f
∗ ∗ ∗−
∗ ∗−
∗ ∗−
⎧ ⎫+ = + = + =⎪ ⎪
+ = + = + =⎨ ⎬⎪ ⎪+ = + = + =⎩ ⎭
D
D
D
= 10
f *3,3 = max3
0 4 x ≤ ≤
( )
( )
( )
( )
2,32, 3 0
2,22, 3 1
2,12, 3 2
2,02, 3 3
2 0 0 0 15 15
2 1 2 2 10 12
2 2 4 4 5 9
2 3 6 6 0 6
f f
f f
f f
f f
∗ ∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =
⎪ ⎪+ = + = + =⎪ ⎪⎩ ⎭
D
D
D
D
= 15
f *3,4 = max30 4 x ≤ ≤
( )
( )
( )
( )
( )
2,42, 4 0
2,42, 4 1
2,42, 4 2
2,42, 4 3
2,42, 4 4
2 0 0 0 20 20
2 1 2 2 15 17
2 2 4 4 10 14
2 3 6 6 5 11
2 4 8 8 0 8
f f
f f
f f
f f
f f
∗ ∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎨ ⎬⎪ ⎪+ = + = + =⎪ ⎪
+ = + = + =⎪ ⎪⎩ ⎭
D
D
D
D
D
= 20
f *3,5 =
max30 5 x ≤ ≤
( )
( )
( )
( )
( )
( )
2,52, 5 0
2,42, 5 1
2,32, 5 2
2,22, 5 3
2,12, 5 4
2,02, 5 5
2 0 0 0 25 25
2 1 2 2 20 22
2 2 4 4 15 19
2 3 6 6 10 16
2 4 8 8 5 13
2 5 10 10 0 10
f f
f f
f f
f f
f f
f f
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−∗ ∗
−∗ ∗
−
∗⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪
⎨ ⎬+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪
⎪ ⎪+ = + = + =⎪ ⎪⎩ ⎭
D
D
D
D
D
D
= 25
f *3,6 = max3
0 5 x ≤ ≤
( )
( )
( )
( )
( )
( )
2,62, 6 0
2,52, 6 1
2,42, 6 2
2,32, 6 3
2,22, 6 4
2,12, 6 5
2 0 0 0 29 29
2 1 2 2 25 27
2 2 4 4 20 24
2 3 6 6 15 21
2 4 8 8 10 18
2 5 10 10 5 15
f f
f f
f f
f f
f f
f f
∗ ∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪
+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪⎩ ⎭
D
D
D
D
D
D
= 29
f *3,7 = max3
0 5 x ≤ ≤
( )
( )
( )
( )
( )
( )
2,72, 7 0
2,62, 7 1
2,52, 7 2
2,42, 7 3
2,32, 7 4
2,22, 7 5
2 0 0 0 33 332 1 2 2 29 31
2 2 4 4 25 29
2 3 6 6 20 26
2 4 8 8 15 23
2 5 10 10 10 20
f f f f
f f
f f
f f
f f
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗
⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪
+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪⎩ ⎭
D
D
D
D
D
D
= 33
f *3,8 = max30 5 x ≤ ≤
( )
( )
( )
( )
( )
( )
2,82, 8 0
2,72, 8 1
2,62, 8 2
2,52, 8 3
2,42, 8 4
2,32, 8 5
2 0 0 0 37 37
2 1 2 2 33 35
2 2 4 4 29 33
2 3 6 6 25 31
2 4 8 8 20 282 5 10 10 15 25
f f
f f
f f
f f
f f f f
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−∗ ∗
−
∗⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪
+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪⎩ ⎭
D
D
D
D
D
D
= 37
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 9/43
10. Dinamičko programiranje 9
j 0 1 2 3 4 5 6 7 8
x1 0 0 0 0 0 0 1 2 3
f *1,j 0 0 0 0 0 0 4 8 12
x 2 0 1 2 3 4 5 5 5 5f *2,j 0 5 10 15 20 25 29 33 37
x 3 0 0 0 0 0 0 0 0 0
f *3,j 0 5 10 15 20 25 29 33 37
5. Rezultat: x 1 = 3 x 2 = 5 x 3 = 0 rad
F = 4◦3 + 5◦5 + 2◦0 = 37 NJ/dan
Kako je novčana jedinica NJ = 100 kn:
F = 37◦100 kn/dan = 3 700 kn/dan
6. Opaska: d2 > d1 > d3 x 2 = 5 x 3 = 3 x 3 = 0
Do rješenja se moglo doći i heuristički – što je moguće više tokara dodijeliti pogonu B (2 ) snajvećim koeficijentom dobiti (d 2 ), ostatak pogonu A (1) s prvim manjim koeficijentom (d 1).
Naime, funkcija cilja se mogla napisati i u obliku:
F = maxi
x D = max
i x
=m
ii 1
d x =∑ D { }i
maxi
x 1 2 34 5 2 x x x + +D D D
gdje su: d i – koeficijenti dobiti.
Program DPJRMax, za maksimalizaciju u MATLABU:%%%%%%%%% % UPUTE % %%%%%%%%%
% 1. UNESI odgovarajuce Zadate vrijednosti % (Resurs, Recipijent,Dobit, Granica) % 2. AKTIVIRAJ odgovarajuću Matricu cilja sa: Text - Uncomment % 4. MEMORIRAJ pod odgovarajućim nazivom sa: File - Save As... (ImeFajla) % 3. IZVRSI sa: Debug - Run %%%%%%%%%%%%%%%%%%%% % Zadate vrijednosti %%%%%%%%%%%%%%%%%%%% Resurs = 6;Recipijent = 3;Dobit = [4 5 2];Granica = [0 5; 0 5; 0 5];%%%%%%%%%%%%%%% % Matrica cilja %%%%% Recipijent - red, Resurs - kolona %%%%%%%%%%%%%%%
MatrCilj = [];for Brojac_1 = 1:Recipijent %%%%% Linearni rast %%%%%
for Brojac_2 = 1:Resurs MatrCilj(Brojac_2, Brojac_1) = Dobit(Brojac_1)*Brojac_2;
end end
% for Brojac_1 = 1:Recipijent %%%%% Kvadratni rast %%%%% % for Brojac_2 = 1:Resurs % MatrCilj(Brojac_2, Brojac_1) = Dobit(Brojac_1)*Brojac_2*Brojac_2; % end % end % MatrCilj = Dobit; %%%%% Dobit zadata u obliku matrice %%%%%
Dio programa DPJRMax, od MatrCilj = []; do % MatrCilj = Dobit;... ,obuhvaća tri dijela, od kojih je prvi ( prvih pet redova programa od reda MatrCilj =
[];) aktiviran uklanjanjem dijela oznaka komentara, % (red koji poč inje s oznakom komenta-
ra se ne izvršava). S tako izmijenjenim osnovnim programom se mogu riješiti zadaci s linear-nom funkcijom cilja i koeficijentima dobiti definiranim u obliku vektora reda.
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 10/43
10 Kvantitativne metode
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Definiranje matrica izracunavanja i rezultata %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
A = []; MatrIzr = []; MatrRez = [];BrKolMatrIzr = 1 + 1 + 2 + (Recipijent - 1)*5;
A = [0:Resurs];BrRedMatrIzr = sum(A + 1);
MatrIzr = zeros(BrRedMatrIzr, BrKolMatrIzr); MatrIzr(:, 1) = 1:BrRedMatrIzr;BrKolMatrRez = 1 + Recipijent*5;BrRedMatrRez = Resurs + 1;
MatrRez = zeros(BrRedMatrRez, BrKolMatrRez); MatrRez(:, 1) = 1:BrRedMatrRez;%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Prvi koraka - izracunavanja %%%%%%%%%%%%%%%%%%%%%%%%%%%% Brojac_3 = 2;for Brojac_1 = 1:Resurs
for Brojac_2 = 1:Brojac_1 + 1 MatrIzr(Brojac_3, 2) = Brojac_1;Brojac_3 = Brojac_3 + 1;
end end Brojac_3 = 2;for Brojac_1 = 1:Resurs
A = 0;for Brojac_2 = 1:Brojac_1 + 1
if A > Granica(1, 2) A = Granica(1, 2);
end MatrIzr(Brojac_3, 3) = A; A = A + 1;Brojac_3 = Brojac_3 + 1;
end end for Brojac_1 = 2:BrRedMatrIzr
if MatrIzr(Brojac_1, 3) == 0 MatrIzr(Brojac_1, 4) = 0;
else MatrIzr(Brojac_1, 4) = MatrCilj(MatrIzr(Brojac_1,3), 1);
end end %%%%%%%%%%%%%%%%%%%%%%%% % Prvi korak - rezultati %%%%%%%%%%%%%%%%%%%%%%%% for Brojac_1 = 1:BrRedMatrRez
MatrRez(Brojac_1,2) = Brojac_1 - 1;end Brojac_3 = 1;for Brojac_1 = 1:BrRedMatrRez
A = Brojac_3; MatrMaxBaz = [];for Brojac_2 = 1 : Brojac_1
MatrMaxBaz(Brojac_2) = MatrIzr(Brojac_3, 4);
Brojac_3 = Brojac_3 + 1;end [Max,Ind] = max(MatrMaxBaz);
MatrRez(Brojac_1, 3) = MatrIzr(A + Ind - 1, 3); MatrRez(Brojac_1, 4) = Max; MatrRez(Brojac_1, 5) = MatrIzr(A + Ind - 1, 1); MatrRez(Brojac_1, 6) = MatrRez(Brojac_1, 3);
end
U prethodna dva dijela programa DPJRMax prikazane su devedeset i dvije programske li-nije, a cijeli program obuhvaća sto osamdeset i pet linija. Program ispisuje:
1. tablicu izračunavanja,
2. tablicu međurezultata i
3. pregled konačnih rezultate.Tablica međurezultata nije prikazana u slijedećem tekstu.
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 11/43
10. Dinamičko programiranje 11
Ispis tablice izračunavanja:
RdBr j x1 f1 x2 f2 x1/2 f*1 F2 x3 f3 x1i2/3 f*2 F3 1 0 0 0 0 0 0 0 0 0 0 0 0 0
2 1 0 0 0 0 1 4 4 0 0 1 5 5
3 1 1 4 1 5 0 0 5 1 2 0 0 2
4 2 0 0 0 0 2 8 8 0 0 2 10 10
5 2 1 4 1 5 1 4 9 1 2 1 5 7
6 2 2 8 2 10 0 0 10 2 4 0 0 4
7 3 0 0 0 0 3 12 12 0 0 3 15 15
8 3 1 4 1 5 2 8 13 1 2 2 10 12
9 3 2 8 2 10 1 4 14 2 4 1 5 9
10 3 3 12 3 15 0 0 15 3 6 0 0 6
11 4 0 0 0 0 4 16 16 0 0 4 20 20
12 4 1 4 1 5 3 12 17 1 2 3 15 17
13 4 2 8 2 10 2 8 18 2 4 2 10 14
14 4 3 12 3 15 1 4 19 3 6 1 5 11
15 4 4 16 4 20 0 0 20 4 8 0 0 8
16 5 0 0 0 0 5 20 20 0 0 5 25 25
17 5 1 4 1 5 4 16 21 1 2 4 20 22
18 5 2 8 2 10 3 12 22 2 4 3 15 19
19 5 3 12 3 15 2 8 23 3 6 2 10 16
20 5 4 16 4 20 1 4 24 4 8 1 5 13
21 5 5 20 5 25 0 0 25 5 10 0 0 10
22 6 0 0 0 0 6 20 20 0 0 6 29 29
23 6 1 4 1 5 5 20 25 1 2 5 25 27
24 6 2 8 2 10 4 16 26 2 4 4 20 24
25 6 3 12 3 15 3 12 27 3 6 3 15 21
26 6 4 16 4 20 2 8 28 4 8 2 10 18
27 6 5 20 5 25 1 4 29 5 10 1 5 15
28 6 5 20 5 25 1 4 29 5 10 1 5 15
29 7 0 0 0 0 7 20 20 0 0 7 33 33
30 7 1 4 1 5 6 20 25 1 2 6 29 31
31 7 2 8 2 10 5 20 30 2 4 5 25 29
32 7 3 12 3 15 4 16 31 3 6 4 20 26
33 7 4 16 4 20 3 12 32 4 8 3 15 23
34 7 5 20 5 25 2 8 33 5 10 2 10 20
35 7 5 20 5 25 2 8 33 5 10 2 10 20
36 7 5 20 5 25 2 8 33 5 10 2 10 20
37 8 0 0 0 0 8 20 20 0 0 8 37 37
38 8 1 4 1 5 7 20 25 1 2 7 33 35
39 8 2 8 2 10 6 20 30 2 4 6 29 33
40 8 3 12 3 15 5 20 35 3 6 5 25 31
41 8 4 16 4 20 4 16 36 4 8 4 20 28
42 8 5 20 5 25 3 12 37 5 10 3 15 25
43 8 5 20 5 25 3 12 37 5 10 3 15 25
44 8 5 20 5 25 3 12 37 5 10 3 15 25
45 8 5 20 5 25 3 12 37 5 10 3 15 25
Kako bi se provjerilo razumijevanje postupka, vrijednosti polja, kolona i redova tabele tre- ba usporediti s rezultatima dobivenim tijekom prethodno opisane postupne optimalizacije smatricama, bez računalne podrške.
Pregled konačnih rezultata:OptimRez =
37OptimRas =
3 5 0
Program DPJRMax svakako nije ugodan za korištenje („user friendly“). Prikazan je kako bi se njegovom analizom mogla provjeriti znanja iz korištenja MATLABa. Na CD-u Kvanti-
tativne metode može se naći i DP_JR_Max.m s kojim poznavaoci MATLABa mogu eksperi-mentirati i pratiti rezultate na ispisu tablica izračunavanja i pregleda konačnih rezultata.
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 12/43
12 Kvantitativne metode
Primjer P-10.5
Poduzeće treba optimalno investirati 6 milijuna kuna u 3 vrste proizvodnje (1, 2 i 3). Pro-cijenjena godišnja dobit je ovisna o uloženim sredstvima i, po pojedinim vrstama proizvodnje,
u stotinama tisuća kuna iznosi (NJ = 100 000 kn): [6, 419. strana]
x i/(106
kn) 0 1 2 3 4 5 6
D1/(NJ/god) 0 4 26 40 45 50 51
D2/(NJ/god) 0 5 15 40 80 90 95
D3/(NJ/god) 0 5 15 40 60 70 73
Funkcija cilja: F = maxi
x { }D D D+ +
1 2 3NJ/god
Funkcije ograničenja:3
ii 1
x =∑ ≤ 6 D10
6kn
0 ≤ xi ≤ 6 D106
kn
Rješenje:
1. Koraci raspodjele:
• Prvi korak (k = 1) – investiranje u vrstu proizvodnje 1 (i = 1):
f *1,j = max10 6 x ≤ ≤ { }D
1
• Drugi korak (k = 2 ) ( prva i druga vrsta proizvodnje) – investiranje u vrstu proiz-vodnje 2 (i = 2 ):
f *2,j
= max20 6 x ≤ ≤
( ){ }
x D f ∗
−+
22 1, j
• Treći korak (k = 3) ( sve tri vrste proizvodnje) – investiranje u vrstu proizvodnje 3 (i = 3):
f *3,,j = max3
0 6 x ≤ ≤ ( ){ } x
D f ∗ −+3
3 2, j
Rezultat: x 1 = 2 x 2 = 4 x 3 = 0
F = 26 + 80 + 0 = 106 NJ/god = 106◦100000 kn/god = 10600000 kn/god
Program DPJRMax, za maksimalizaciju u MATLABU:%%%%%%%%%%%%%%%%%%%% % Zadate vrijednosti
%%%%%%%%%%%%%%%%%%%% Resurs = 6;Recipijent = 3;Dobit = [4 5 5; 26 15 15; 40 40 40; 45 80 60; 50 90 70; 51 95 73];Granica = [0 6; 0 6; 0 6];%%%%%%%%%%%%%%% % Matrica cilja %%%%% Recipijent - red, Resurs - kolona %%%%%%%%%%%%%%%
MatrCilj = [];% for Brojac_1 = 1:Recipijent %%%%% Linearni rast %%%%% % for Brojac_2 = 1:Resurs % MatrCilj(Brojac_2, Brojac_1) = Dobit(Brojac_1)*Brojac_2; % end % end % for Brojac_1 = 1:Recipijent %%%%% Kvadratni rast %%%%% % for Brojac_2 = 1:Resurs % MatrCilj(Brojac_2, Brojac_1) = Dobit(Brojac_1)*Brojac_2*Brojac_2; % end % end
MatrCilj = Dobit; %%%%% Dobit zadata u obliku matrice %%%%%
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 13/43
10. Dinamičko programiranje 13
Uklanjanjem dijela oznaka komentara, % (red koji poč inje s oznakom komentara se ne izvr-
šava) aktiviran je treći dio programa MatrCilj = Dobit;. S tako izmijenjenim osnovnim programom se mogu riješiti zadaci s funkcijom cilja definiranom u obliku matrice dobiti.
Ispis tablice izračunavanja:
RdBr j x1 f1 x2 f2 x1/2 f*1 F2 x3 f3 x1i2/3 f*2 F3 1 0 0 0 0 0 0 0 0 0 0 0 0 0
2 1 0 0 0 0 1 4 4 0 0 1 5 5
3 1 1 4 1 5 0 0 5 1 5 0 0 5
4 2 0 0 0 0 2 26 26 0 0 2 26 26
5 2 1 4 1 5 1 4 9 1 5 1 5 10
6 2 2 26 2 15 0 0 15 2 15 0 0 15
7 3 0 0 0 0 3 40 40 0 0 3 40 40
8 3 1 4 1 5 2 26 31 1 5 2 26 31
9 3 2 26 2 15 1 4 19 2 15 1 5 20
10 3 3 40 3 40 0 0 40 3 40 0 0 40
11 4 0 0 0 0 4 45 45 0 0 4 80 80
12 4 1 4 1 5 3 40 45 1 5 3 40 45
13 4 2 26 2 15 2 26 41 2 15 2 26 41
14 4 3 40 3 40 1 4 44 3 40 1 5 45
15 4 4 45 4 80 0 0 80 4 60 0 0 60
16 5 0 0 0 0 5 50 50 0 0 5 90 90
17 5 1 4 1 5 4 45 50 1 5 4 80 85
18 5 2 26 2 15 3 40 55 2 15 3 40 55
19 5 3 40 3 40 2 26 66 3 40 2 26 66
20 5 4 45 4 80 1 4 84 4 60 1 5 65
21 5 5 50 5 90 0 0 90 5 70 0 0 70
22 6 0 0 0 0 6 51 51 0 0 6 106 106
23 6 1 4 1 5 5 50 55 1 5 5 90 95
24 6 2 26 2 15 4 45 60 2 15 4 80 95
25 6 3 40 3 40 3 40 80 3 40 3 40 80
26 6 4 45 4 80 2 26 106 4 60 2 26 8627 6 5 50 5 90 1 4 94 5 70 1 5 75
28 6 6 51 6 95 0 0 95 6 73 0 0 73
Usvojenost prethodnog gradiva može se provjeriti optimalizacijom s matricama, bez raču-nalne podrške, provjeravajući parcijalne rezultate usporedbom s vrijednostima polja, kolona iredova prethodne tabele.
Pregled konačnih rezultata:OptimRez =
106OptimRas =
2 4 0
Primjer P-10.6 Uz korištenje specijalnih građevinskih strojeva poduzeće gradi dvije vrste objekata: tipa A,
s dobiti od 8 milijuna kuna i tipa B, s dobiti od 12 milijuna kuna. Tijekom planskog razdobljagradnje moguće je osigurati 10 specijalnih građevinskih strojeva. Pri izvedbi objekata tipa A angažiraju se 2, a pri izvedbi objekata tipa B 3 specijalna građevinska stroja.
(a) Usvojiti optimalni plan gradnje.
(b) Kakve će posljedice imati ugovor u kome se uvjetuju granice – najmanje jedan inajviše tri izvedena objekta tipa A. [6, 427. strana]
Kako bi se skratili zapisi, usvaja se novčana jedinica NJ = 1000000 kn.
Funkcija cilja: F = maxi x
{ } x x +1 28 12D D NJ
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 14/43
14 Kvantitativne metode
Funkcije ograničenja: + x x 1 2
2 3D D ≤ 10 str
0 ≤ xi str
Rješenje:1. Koraci raspodjele:
• Prvi korak (k = 1) – dodjela građevinskih strojeva objektu tipa A (i = 1):
f *1,j = max1
0 5 x ≤ ≤ { } x 18 D
Gornja granica promjenljive veličine x 1 (objekti tipa A) dobivena je uvrštavanjem x 2 = 0 (objekti tipa B) u prvu funkciju ograničenja:
+ x 1
2 3 0D D ≤ 10
• Drugi korak (k = 2 ) ( prvi i drugi pogon) – dodjela djela tokara pogonu B (i = 2 ):
f *2,j = max2
0 3 x ≤ ≤ ( ){ }22 1, j5 x x f ∗ −+D
Gornja granica x 2 (objekti tipa B) dobivena je uvrštavanjem x 1 = 0 (objekti tipa
A) u prvu funkciju ograničenja:
+ x 22 0 3D D ≤ 10
Ispis tablice izračunavanja:
RdBr j x1 f1 x2 f2 x1/2 f*1 F2 1 0 0 0 0 0 0 0 0
2 1 0 0 0 0 1 8 8
3 1 1 8 1 12 0 0 12
4 2 0 0 0 0 2 16 16
5 2 1 8 1 12 1 8 20
6 2 2 16 2 24 0 0 24
7 3 0 0 0 0 3 24 24
8 3 1 8 1 12 2 16 28
9 3 2 16 2 24 1 8 32
10 3 3 24 3 36 0 0 36
11 4 0 0 0 0 4 32 32
12 4 1 8 1 12 3 24 36
13 4 2 16 2 24 2 16 40
14 4 3 24 3 36 1 8 44
15 4 4 32 3 36 1 8 44
16 5 0 0 0 0 5 40 40
17 5 1 8 1 12 4 32 44
18 5 2 16 2 24 3 24 48
19 5 3 24 3 36 2 16 5220 5 4 32 3 36 2 16 52
… … … … … … … … …
66 10 5 40 3 36 7 40 76
Usvojenost prethodnog gradiva može se provjeriti optimalizacijom s matricama, uz provje-re usporedbama s rezultatima iz tabele.
Pregled konačnih rezultata:OptimRez =
76OptimRas =
7 3
Na žalost, s programom DPJRMax dobiven je pogrešan rezultat – probijeno je ograničenje x +
12 3D 0D ≤ 10
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 15/43
10. Dinamičko programiranje 15
Opaske:
(a) Korišteni je program dao pogrešan rezultat! Naime, pri izradi programa nije uzeta uobzir mogućnost koeficijenata linearne funkcije ograničenja ai ≠ 1, te program pro-
dužava s izračunavanjem i nakon prekoračenja zadatog ograničenja, sve do ispu-njavanja ograničenja x1 + x2 ≤ 10 (a ne, kako bi trebalo, do 2 D x 1 + 3D x 2 ≤ 10 ).
(b) Naravno, program bi se mogao lako korigirati, ali se od toga odustalo zbog poteš-koća u predviđanju svih mogućih varijanti funkcija ciljeva i funkcija ograničenja(raspodjele resursa na recipijente uz zadata ogranič enja). Program je već u znatnojmjeri kompliciran s izborom jednog od tri moguća toka uklanjanjem oznaka ko-mentara, %, nakon unosa podataka, a daljom prilagodbom mogućim varijantama još
bi se više udaljilo od programa koji je ugodan za korištenje („user friendly“).
(c) Prethodno korišteni program se može koristiti samo za maksimalizaciju funkcije ci-lja pri jednodimenzionalnoj raspodjeli, dok je za minimalizaciju funkcije cilja napi-
san drugi program, na žalost, također ograničene upotrebljivosti zbog različitostifunkcija cilja i funkcija ograničenja.
(d) Po potrebi, korisnik koji u izvjesnoj mjeri vlada MATLABom relativno će lako pri-lagoditi program DPJRMax specifičnostima problema koje sretne u praksi.
(e) Slijedeće zadatke maksimalizacije treba pokušati riješiti uz korištenje programa aliuvijek pažljivo provjeriti jesu li dobiveni korektni rezultati.
Slijede točni rezultati prethodnog zadatka, a u prethodnom ispisu tablice izračunavanja senalaze u 16. i 13. redu. Ograničenja su probijena u 14. redu (12 > 10 ) i 15. redu (12 > 11).
Rezultat:
(a) x 1
= 5, x 2
= 0 ili x 1
= 2, x 2
= 2
F = 8D5 + 12D0 = 40 NJ = 40◦1000000 kn = 40000000 kn
(b) x1 = 2, x2 = 2 (uz ogranič enje 1 ≤ x 1 ≤ 3)
F = 40000000 kn
Minimalizacija
Primjer P-10.7
Tijekom tri mjeseca (II, III i IV) mora se proizvesti dvanaest strojeva. Iskustva su pokaza-la kako su troškovi proizvodnje, u kunama: T i = k i◦ x i
2 ( gdje je x i broj proizvedenih strojeva).
Koeficijenti su troškova (k i) za mjesece: II 20 000, za III 34 000 i IV 42 000 kuna. Odreditioptimalni tromjesečni plan proizvodnje ukoliko je tijekom jednog mjeseca moguće proizvestinajviše 6 strojeva. [6, 410. strana]
1 NJ = 1000 kn
Funkcija cilja: F = mini x
{ }1 2 320 34 42 x x x + +D D D
[F ] = 2
2
NJ NJst
mj st mj=D
D
Funkcije ograničenja:3
ii 1
x =∑ ≤ 12
0 ≤ xi ≤ 6
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 16/43
16 Kvantitativne metode
Rješenje:
1. Koraci raspodjele:
• Prvi korak (k = 1) – proizvodnja u II mjesecu (i = 1):
f *1,j = min
10 6 x ≤ ≤ { }2
120 D x
• Drugi korak (k = 2 ) ( prvi i drugi mjesec) – proizvodnja u III mjesecu (i = 2 ):
f *2,j = min20 6 x ≤ ≤
( ){ } x x f ∗ −+
2
2
2 1, j34 D
• Treći korak (k = 3) ( sva tri mjeseca) – proizvodnja u IV mjesecu (i = 3):
f *3,j = min3
0 6 x ≤ ≤ ( ){ } x
x f ∗ −+3
2
3 2, j42 D
2. Prvi mjesec:
• za 0 ≤ j ≤ 6 (raspoloživi kapaciteti):
f *1,j = min
10 6 x ≤ ≤
{ }2
120 D x = 20D j
• za 6 < j ≤ 12 (nema raspoloživih kapaciteta):
f *1,j = min1
7 1 x ≤ ≤ 2 { }2
120 D x = 20D36 = 720
j 0 1 2 3 4 5 6 7 8 9 10 11 12
x 1 0 1 2 3 4 5 6 6 6 6 6 6 6
f 1,j 0 20 80 180 320 500 720 720*
720*
720*
720*
720*
720*
* rješenje se isključuje zbog nedostatka slobodnih kapaciteta.
3. Prvi i drugi mjesec:
f *2,j = min2
0 6 x ≤ ≤ ( ){ } x
x f ∗ −+2
2
2 1, j34 D
f *2,0 = min2
0 x = { }2
1,(0 0) 1,034 0 0 0 0 0f f ∗ ∗ ∗
−+ = + = + =D = 0
f *2,1 = min20 1 x ≤ ≤
2
1,(1 0) 1,12
1,(1 1) 1,0
34 0 0 0 20 20
34 1 34 34 0 34
f f
f f
∗ ∗ ∗−
∗ ∗−
⎧ ⎫+ = + = + =⎨ ⎬+ = + = + =⎩ ⎭
D
D= 20
f *2,2 = = 54min20 2 x ≤ ≤
( )
( )
( )
2
1,21, 2 02
1,11, 2 12
1,01, 2 2
34 0 0 0 80 80
34 1 34 34 20 54
34 2 136 136 0 136
f f
f f
f f
∗ ∗−
∗ ∗−
∗ ∗−
⎧ ⎫+ = + = + =⎪ ⎪
+ = + = + =⎨ ⎬⎪ ⎪+ = + = + =⎩ ⎭
D
D
D
∗
f *2,3 = = 114min
20 3 x ≤ ≤
( )
( )
( )
( )
2
1,31, 3 02
1,21, 3 12
1,11, 3 22
1,01, 3 3
34 0 0 0 180 180
34 1 34 34 80 114
34 2 136 136 20 15634 3 306 306 0 306
f f
f f
f f f f
∗ ∗−
∗ ∗−
∗ ∗
−∗ ∗
−
⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬
+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎩ ⎭
D
D
DD
∗
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 17/43
10. Dinamičko programiranje 17
f *2,4 = = 214min
2
0 4 x ≤ ≤
( )
( )
( )
( )
( )
2
1,41, 4 02
1,31, 4 12
1,21, 4 2
21,11, 4 3
2
1,01, 4 4
34 0 0 0 320 320
34 1 34 34 180 214
34 2 136 136 80 216
34 3 306 306 20 326
34 4 544 544 0 544
f f
f f
f f
f f
f f
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−∗ ∗
−
⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎨ ⎬
⎪ ⎪+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎩ ⎭
D
D
D
D
D
∗
f *2,5 = min20 5 x ≤ ≤
( )
( )
( )
( )
( )
( )
2
1,51, 5 02
1,41, 5 12
1,31, 5 22
1,21, 5 32
1,11, 5 42
1,01, 5 5
34 0 0 0 500 500
34 1 34 34 320 354
34 2 136 136 180 316
34 3 306 306 80 386
34 4 544 544 20 564
34 5 850 850 0 85
f f
f f
f f
f f
f f
f f
∗ ∗−
∗ ∗−
∗ ∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
+ = + = + =+ = + = + =
+ = + = + =+ = + = + =+ = + = + =+ = + = + =
D
D
D
D
D
D 0
⎧ ⎫⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪⎨ ⎬⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪⎩ ⎭
= 316
f *2,6 = = 456min20 6 x ≤ ≤
( )
( )
( )
( )
( )
( )
2
1,61, 6 02
1,51, 6 12
1,41, 6 22
1,31, 6 32
1,21, 6 42
1,11, 6 5
34 0 0 0 720 720
34 1 34 34 500 53434 2 136 136 320 456
34 3 306 306 180 486
34 4 544 544 80 624
34 5 850 850 20
f f
f f f f
f f
f f
f f
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
+ = + = + =
+ = + = + =+ = + = + =+ = + = + =+ = + = + =+ = + = + =
D
D
D
D
D
D
( )2
1,01, 6 6
870
34 6 1224 1224 0 1224f f ∗ ∗−
⎧ ⎫⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪⎨ ⎬⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪+ = + = + =⎩ ⎭D
∗
f *2,7 = = 626
min20 7 x ≤ ≤
( )
( )
( )
( )
( )
( )
2
1,71, 7 02
1,61, 7 12
1,51, 7 22
1,41, 7 3
21,31, 7 4
2
1,21, 7 5
34 0 0 0 720 720
34 1 34 34 720 754
34 2 136 136 500 636
34 3 306 306 320 626
34 4 544 544 180 72434 5 850 850 80
f f
f f
f f
f f
f f f f
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−∗ ∗
−
+ = + = + =+ = + = + =
+ = + = + =+ = + = + =
+ = + = + =+ = + = +
D
D
D
D
D
D
( )
( )
2
1,11, 7 62
1,01, 7 7
930
34 6 1224 1224 20 1224
34 7 1666 1666 0 1666
f f
f f
∗ ∗−
∗ ∗−
⎧ ⎫⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪
⎨ ⎬⎪ ⎪=⎪ ⎪
⎪ ⎪+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎩ ⎭
D
D
∗
* U prvom redu raspodjele f 1,7 i posljednjem redu raspodjele f 2,7 se planira proizvesti 7 stroje-va, a kapaciteti dozvoljavaju maksimalno proizvesti 6 strojeva (ograničenje 0 ≤ x i ≤ 6). Pre-ma tome, prvi i posljednji red se isključuju zbog nedostatka slobodnih kapaciteta. Ekvivalen-tan zaključak vrijedi i za sve sljedeće raspodjele te su zapisi skraćeni.
f *2,8 = = 806min2
2 6 x ≤ ≤
( )
( )
( )
( )
( )
2
1,61, 8 22
1,51, 8 32
1,41, 8 42
1,31, 8 52
1,21, 8 6
34 2 136 136 720 856
34 3 306 306 500 80634 4 544 544 320 864
34 5 850 850 180 1030
34 6 1244 1244 80 1304
f f
f f f f
f f
f f
∗ ∗−
∗ ∗
−∗ ∗−
∗ ∗−
∗ ∗−
⎧ ⎫+ = + = + =⎪ ⎪
+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎨ ⎬⎪ ⎪+ = + = + =⎪ ⎪
+ = + = + =⎪ ⎪⎩ ⎭
D
D
D
D
D
∗
f *2,9 = min23 6 x ≤ ≤ = 1026
( )
( )
( )
( )
2
1,61, 9 32
1,51, 9 42
1,41, 9 52
1,31, 9 6
34 3 0 306 720 1026
34 4 544 544 500 1044
34 5 850 850 320 1170
34 6 1224 1224 180 1404
f f
f f
f f
f f
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪
+ = + = + =⎪ ⎪⎩ ⎭
D
D
D
D
∗
f *2,10 =
min24 6 x ≤ ≤ = 1264
( )
( )
( )
2
1,61, 1 0 42
1,51, 1 0 52
1,41, 1 0 6
34 4 544 544 720 1264
34 5 850 850 500 1350
34 6 1224 1224 320 1544
f f
f f
f f
∗ ∗−
∗ ∗
−∗ ∗−
⎧ ⎫+ = + = + =⎪ ⎪
+ = + = + =⎨ ⎬⎪ ⎪+ = + = + =⎩ ⎭
D
D
D
∗
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 18/43
18 Kvantitativne metode
f *2,11 = min2
5 6 x ≤ ≤ = 15702
1,(11 5) 1,12
1,(11 6) 1,0
34 5 850 850 720 1570
34 6 1224 1224 500 1724
f f
f f
∗ ∗−
∗ ∗−
⎧ ⎫+ = + = + =⎨ ⎬+ = + = + =⎩ ⎭
D
D
∗
f *2,11 = { } = 1944min2
6 x = f f ∗ ∗−+ = + = + =21,(12 6) 1,634 6 1224 1224 720 1944D
j 0 1 2 3 4 5 6 7 8 9 10 11 12
x 1 0 1 1 2 3 3 4 4 5 6 6 6 6
f 1,j 0 20 20 80 180 180 320 320 500 720 720 720 720
x 2 0 0 1 1 1 2 2 3 3 3 4 5 6
f 2,j 0 20 54 114 214 316 456 626 806 1026 1264 1570 1944
4. Sva tri mjeseca:
f *3,j = min3
0 6 x ≤ ≤ ( ){ } x
x f ∗ −+3
2
3 2, j42 D
f *3,0 =min3 0 x = { }f f
∗ ∗
−+ = + = + =2
2,(0 0) 2,042 0 0 0 0 0D
= 0
f *3,1 = min3
0 1 x ≤ ≤
2
2,(1 0) 2,12
2,(1 1) 2,0
42 0 0 0 20 20
42 1 42 42 0 42
f f
f f
∗ ∗−
∗ ∗−
∗⎧ ⎫+ = + = + =⎨ ⎬+ = + = + =⎩ ⎭
D
D= 20
f *2,3 = = 54min3
0 2 x ≤ ≤
( )
( )
( )
2
2,21, 2 02
2,11, 2 12
2,01, 2 2
42 0 0 0 54 54
42 1 42 42 20 62
42 2 168 168 0 168
f f
f f
f f
∗ ∗−
∗ ∗−
∗ ∗−
⎧ ⎫+ = + = + =⎪ ⎪
+ = + = + =⎨ ⎬⎪ ⎪+ = + = + =⎩ ⎭
D
D
D
∗
f *3,3
= = 96min30 3 x ≤ ≤
( )
( )
( )
( )
2
2,32, 3 02
2,22, 3 1
2 2,12, 3 22
2,02, 3 3
42 0 0 0 114 114
42 1 42 42 54 96
42 2 168 168 20 18842 3 378 378 0 378
f f
f f
f f f f
∗ ∗−
∗ ∗−
∗ ∗−∗ ∗
−
⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪
⎨ ⎬+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎩ ⎭
D
D
D
D
∗
f *3,4 = = 156min3
0 4 x ≤ ≤
( )
( )
( )
( )
( )
2
2,42, 4 02
2,32, 4 12
2,22, 4 22
2,12, 4 32
2,02, 4 4
42 0 0 0 214 214
42 1 42 42 114 156
42 2 168 168 54 222
42 3 378 378 20 398
42 4 672 672 0 672
f f
f f
f f
f f
f f
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎨ ⎬⎪ ⎪+ = + = + =⎪ ⎪
+ = + = + =⎪ ⎪⎩ ⎭
D
D
D
D
D
∗
f *3,5 = = 256min30 5 x ≤ ≤
( )
( )
( )
( )
( )
( )
2
2,52, 5 02
2,42, 5 1
22,32, 5 2
2
2,22, 5 32
2,12, 5 42
2,02, 5 5
42 0 0 0 316 316
42 1 42 42 214 256
42 2 168 168 114 282
42 3 378 378 54 432
42 4 672 672 20 692
42 5 1050 1050 0
f f
f f
f f
f f
f f
f f
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
+ = + = + =+ = + = + =
+ = + = + =+ = + = + =+ = + = + =
+ = + = + =
D
D
D
D
D
D 1050
⎧ ⎫⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪⎨ ⎬⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪⎩ ⎭
∗
f *3,6 = = 358min3
0 6 x ≤ ≤
( )
( )
( )
( )
( )
( )
2
2,62, 6 02
2,52, 6 12
2,42, 6 22
2,32, 6 32
2,22, 6 42
2,12, 6 5
42 0 0 0 456 456
42 1 42 42 316 358
42 2 168 168 214 382
42 3 378 378 114 492
42 4 672 672 54 726
42 5 1050 1050 2
f f
f f
f f
f f
f f
f f
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗
−
+ = + = + =+ = + = + =
+ = + = + =+ = + = + =+ = + = + =
+ = + = +
D
D
D
D
D
D
( )2
2,02, 6 6
0 1070
42 6 1512 1512 0 1512f f ∗ ∗−
⎧ ⎫⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪⎨ ⎬⎪ ⎪⎪ ⎪
=⎪ ⎪⎪ ⎪+ = + = + =⎩ ⎭D
∗
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 19/43
10. Dinamičko programiranje 19
f *3,7 =min
30 6 x ≤ ≤
( ) ( )( ) ( )
( ) ( )
( ) ( )( ) ( )( ) ( )
2
2 22
2 22
2 22
2 22
2 22
2 22
42 0 7 0 0 7 0 626 626
42 1 7 1 42 6 42 456 498
42 2 7 2 168 5 168 316 484
42 3 7 3 378 4 378 214 59242 4 7 4 672 3 672 114 786
42 5 7 5 1050 2 1050 54 1104
42 6
f f
f f
f f
f f f f
f f
∗ ∗
∗ ∗
∗ ∗
∗ ∗
∗ ∗
∗ ∗
+ − = + = + =+ − = + = + =
+ − = + = + =
+ − = + = + =+ − = + = + =+ − = + = + =
D
D
D
DD
D
D ( ) ( )2 27 6 1512 1 1512 20 1532f f ∗ ∗
⎧ ⎫⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪
⎨ ⎬⎪ ⎪⎪ ⎪⎪ ⎪
+ − = + = + =⎪ ⎪⎩ ⎭
∗
= 484
f *3,8 = = 624min3
0 6 x ≤ ≤
( )
( )
( )
( )
( )
( )
2
2,82, 8 02
2,72, 8 12
2,62, 8 22
2,52, 8 32
2,42, 8 42
2,32, 8 5
42 0 0 0 806 806
42 1 42 42 626 668
42 2 168 168 456 624
42 3 378 378 316 694
42 4 672 672 214 886
42 5 1050 1050
f f
f f
f f
f f
f f
f f
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
+ = + = + =+ = + = + =
+ = + = + =+ = + = + =+ = + = + =
+ = + = +
D
D
D
D
D
D
( )2
2,22, 8 6
114 1164
42 6 , 1512 1512 54 1566f f ∗ ∗
−
⎧ ⎫⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪⎨ ⎬⎪ ⎪⎪ ⎪
=⎪ ⎪
⎪ ⎪+ = + = + =⎩ ⎭D
∗
f *3,9 = = 794min3
0 6 x ≤ ≤
( )
( )
( )
( )
( )
( )
2
2,92, 9 02
2,82, 9 12
2,72, 9 22
2,62, 9 32
2,52, 9 42
2,42, 9 5
42 0 0 0 1026 1026
42 1 42 42 806 848
42 2 168 168 626 794
42 3 378 378 456 834
42 4 672 672 316 988
42 5 1050 105
f f
f f
f f
f f
f f
f f
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
+ = + = + =+ = + = + =
+ = + = + =+ = + = + =+ = + = + =
+ = + =
D
D
D
D
D
D
( )2
2,32, 9 6
0 214 1264
42 6 1512 1512 114 1626f f ∗ ∗−
⎧ ⎫⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪⎨ ⎬⎪ ⎪⎪ ⎪
+ =⎪ ⎪⎪ ⎪+ = + = + =⎩ ⎭D
∗
f *3,10 = = 974min3
0 6 x ≤ ≤
( )
( )
( )
( )
( )
( )
2
2,102, 10 02
2,92, 10 12
2,82, 10 22
2,72, 10 32
2,62, 10 42
2, 10 5
42 0 0 0 1264 1264
42 1 42 42 1026 1068
42 2 168 168 806 974
42 3 378 378 626 1004
42 4 672 672 456 1128
42 5 105
f f
f f
f f
f f
f f
f
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗−
+ = + = + =
+ = + = + =+ = + = + =+ = + = + =+ = + = + =
+ =
D
D
D
D
D
D
( )
2,5
2
2,42, 10 6
0 1050 316 1366
42 6 1512 1512 214 1726
f
f f
∗
∗ ∗−
⎧ ⎫
⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪⎨ ⎬⎪ ⎪⎪ ⎪
+ = + =⎪ ⎪⎪ ⎪+ = + = + =⎩ ⎭D
∗
f *3,11 = = 1184min
30 6 x ≤ ≤
( )
( )
( )
( )
( )
( )
2
2,112, 1 1 02
2,102, 11 12
2,92, 1 1 22
2,82, 1 1 32
2,72, 1 1 42
2, 1 1 5
42 0 0 0 1570 1570
42 1 42 42 1264 1306
42 2 168 168 1026 1194
42 3 378 378 806 118442 4 672 672 626 1298
42 5
f f
f f
f f
f f f f
f
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗
−∗ ∗
−∗
−
+ = + = + =+ = + = + =
+ = + = + =
+ = + = + =+ = + = + =
+ =
D
D
D
DD
D
( )
2,62
2,52, 1 1 6
1050 1050 456 1506
42 6 1512 1512 316 1828
f
f f
∗
∗ ∗−
⎧ ⎫⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪⎨ ⎬⎪ ⎪⎪ ⎪
+ = + =⎪ ⎪⎪ ⎪+ = + = + =⎩ ⎭D
∗
f *3,12 = = 1404min3
0 6 x ≤ ≤
( )
( )
( )
( )
( )
2
2,122, 12 02
2,112, 12 12
2,102, 12 22
2,92, 12 32
2,82, 12 42
2,12
42 0 0 0 1944 1944
42 1 42 42 1570 1612
42 2 168 168 1264 1432
42 3 378 378 1026 1404
42 4 672 672 806 1478
42 5
f f
f f
f f
f f
f f
f
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗ ∗−
∗−
+ = + = + =+ = + = + =
+ = + = + =+ = + = + =
+ = + = + =+
D
D
D
D
D
D ( )
( )
2,75
22,62, 12 6
1050 1050 626 1676
42 6 1512 1512 456 1968
f
f f
∗
∗ ∗−
⎧ ⎫⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪⎨ ⎬⎪ ⎪⎪ ⎪
= + = + =⎪ ⎪⎪ ⎪+ = + = + =⎩ ⎭D
∗
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 20/43
20 Kvantitativne metode
j 0 1 2 3 4 5 6 7 8 9 10 11 12
x 1 0 1 1 1 2 3 3 3 4 4 5 5 6
f 1,j 0 20 20 20 80 180 180 180 320 320 500 500 720
x 2 0 0 1 1 1 1 2 2 2 3 3 3 3
f 2,j 0 20 54 54 114 214 316 316 456 626 806 806 1026
x 3 0 0 0 1 1 1 1 2 2 2 2 3 3
f 3,j 0 20 54 96 156 256 368 484 624 794 974 1184 1404
5. Rezultat: x 1 = 6 x 2 = 3 x 3 = 3 rad
F = 20◦36 + 34◦9 + 42◦9 = 1404 NJ/dan
Kako je novčana jedinica NJ = 1000 kn:
F = 1404◦1000 kn/dan = 1 404 000 kn/dan
6. Opaska: k1 < k2 < k3
x 2 = 5 x 3 = 3 x 3 = 0
F ≠ 20◦36 + 34◦36 + 42◦0 = 2124 NJ/dan
Prema tome, do rezultata se nije moglo doći jednostavnom usporedbom koeficijenatatroškova.
Program DPJRmin za minimalizaciju MATLABU:
Program za minimalizaciju u MATLABU, u kome se traže minimumi, u izvjesnoj je mjerirazličit od programa za maksimalizaciju u MATLABU, u kome se traže maksimumi.
%%%%%%%%% % UPUTE % %%%%%%%%% % 1. UNESI odgovarajuce Zadate vrijednosti
% (Resurs, Recipijent,Trosak, Granica) % 2. AKTIVIRAJ odgovarajuću Matricu cilja sa: Text - Uncomment % 4. MEMORIRAJ pod odgovarajućim nazivom sa: File - Save As... (ImeFajla) % 3. IZVRSI sa: Debug - Run %%%%%%%%%%%%%%%%%%%% % Zadate vrijednosti %%%%%%%%%%%%%%%%%%%% Resurs = 12;Recipijent = 3;Trosak = [20 34 42];Granica = [0 6; 0 6; 0 6];%%%%%%%%%%%%%%% % Matrica cilja %%%%% Recipijent - red, Resurs - kolona %%%%%%%%%%%%%%%
MatrCilj = [];% for Brojac_1 = 1:Recipijent %%%%% Linearni rast %%%%%
% for Brojac_2 = 1:Resurs % MatrCilj(Brojac_2, Brojac_1) = Trosak(Brojac_1)*Brojac_2; % end % end for Brojac_1 = 1:Recipijent %%%%% Kvadratni rast %%%%%
for Brojac_2 = 1:Resurs MatrCilj(Brojac_2, Brojac_1) = Trosak(Brojac_1)*Brojac_2*Brojac_2;
end end % MatrCilj = Trosak; %%%%% Trosak zadata u obliku matrice %%%%%
Kao i kod programa za maksimalizaciju, dio programa za minimalizaciju, od komentara % Matrica cilja... do % MatrCilj = Trošak;... , obuhvaća tri dijela, od kojih je
drugi ( pet redova programa) aktiviran uklanjanjem dijela oznaka komentara, %. S tako izmi- jenjenim osnovnim programom se mogu riješiti zadaci s kvadratnom funkcijom cilja i koefici- jentima troškova definiranim u obliku vektora reda.
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 21/43
10. Dinamičko programiranje 21
Ispis tablice izračunavanja:
RdBr j x1 f1 x2 f2 x1/2 f*1 F2 x3 f3 x1i2/3 f*2 F3 1 0 0 0 0 0 0 0 0 0 0 0 0 0
2 1 0 0 0 0 1 20 20 0 0 1 20 203 1 1 20 1 34 0 0 34 1 42 0 0 42
4 2 0 0 0 0 2 80 80 0 0 2 54 54
5 2 1 20 1 34 1 20 54 1 42 1 20 62
6 2 2 80 2 136 0 0 136 2 168 0 0 168
7 3 0 0 0 0 3 180 180 0 0 3 114 114
8 3 1 20 1 34 2 80 114 1 42 2 54 96
9 3 2 80 2 136 1 20 156 2 168 1 20 188
10 3 3 180 3 306 0 0 306 3 378 0 0 378
11 4 0 0 0 0 4 320 320 0 0 4 214 214
12 4 1 20 1 34 3 180 214 1 42 3 114 156
13 4 2 80 2 136 2 80 216 2 168 2 54 222
14 4 3 180 3 306 1 20 326 3 378 1 20 398
15 4 4 320 4 544 0 0 544 4 672 0 0 672
16 5 0 0 0 0 5 500 500 0 0 5 316 316
17 5 1 20 1 34 4 320 354 1 42 4 214 256… … … … … … … … … … … … …
82 12 3 180 3 306 9 Inf Inf 3 378 9 1026 1404
… … … … … … … … … … … … … …
91 12 12 Inf 12 4896 0 0 4896 12 6048 0 0 6048
Točan rezultat nalazi se u 82. redu.
Pregled konačnih rezultata:OptimRez =
1404OptimRas =
6 3 3
Primjer P-10.8 Nusproizvod je u tvornici sira surutka. Između ostalih supstancija sadrži protein i laktozu.
Surutka s većom koncentracijom protein se koristi u proizvodnji jogurta, a laktoza za proiz-vodnju etil alkohola. Jedan od postupaka separacije je ultrafiltracija (odvajanje po velič ini i
obliku molekula). Postupno obogaćivanje surutke proteinom provodi se serijom ultrafiltara.
Pogonski troškovi ultrafiltra ovise o ulaznim/izlaznim koncentracijama proteina (w P ):wP, % izlazulaz 0,9 1,2 1,8 2,4 3,0 3,6 4,2 4,8 5,4 6,0
0,6 5,53 10,77 20,24 28,38 35,20 40,70 44,88 47,74 49,28 49,50
0,9 3,73 10,77 17,23 23,10 28,38 33,07 37,18 40,70 43,63
1,2 5,54 10,78 15,67 20,24 24,47 28,38 31,95 35,20
1,8 3,74 7,33 10,79 14,00 17,23 20,24 23,10
2,4 2,82 5,55 8,21 10,80 13,27 15,67
3,0 2,26 4,47 6,63 8,73 10,81
3,6 1,89 3,75 5,56 7,33
4,2 1,62 3,21 4,78
4,8 1,42 2,82
5,4 1,26
Odrediti optimalni režim rada serije ultafiltara. [5, 220. str]
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 22/43
22 Kvantitativne metode
Funkcija cilja: F = min ⎧ ⎫4
ii 1
T =
⎨ ⎬⎩ ⎭∑
Rješenje:• Prvi korak (k = 1) – 4. stupanj, izlaz wP = 6 %:
f *1,4S = min { }4St
f *1,1.8 = 23,10
f *1,2.4 = 15,67
f *1,3.0 = 10,81
f *1,3.6 = 7,33 3,6 ⇒ 6,0 %
f *1,4.2 = 4,78
f *1,4.8 = 2,82f *1,5.4 = 1,26
f *1,1.8 je skraćeni zapis za f *1,1.8⇒6.0 – optimum u prvom koraku rješenja za 4. stupanj jeulazna/izlazna koncentracija proteina 1,8/6,0.
• Drugi korak (k = 2 ) – 4. i 3. stupanj:
f *2,3S = min { }3S 4St t ∗+
f *2,1.8 = min
2,1.8 1,2.4
2,1.8 1,3.0
2,1.8 1,3.6
2,1.8 1,4.2
2,1.8 1,4.8
2,1.2 1,5.4
3,74 15,67 19, 41
7,33 10,81 18,14
10,79 7,33 18,12
14,00 4,78 18,7817,23 2,82 20,05
20,24 1,26 21,50
t t
t t
t t
t t t t
t t
∗
∗
∗ ∗
∗∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪
+ = + =⎪
⎨ ⎬+ = + =⎪+ = + =⎪
⎪ + = + =⎩
⎪
⎪⎪⎪⎭
= 18,12 1,8 ⇒ 3,6 %
f *2,2.4 = min = 12,88
2,2.4 1,3.0
2,2.4 1,3.6
2,2.4 1,4.2
2,2.4 1,4.8
2,2.4 1,5.4
2,82 10,81 13,63
5,55 7,33 12,88
8,21 4,78 12,99
10,80 2,82 13,62
13,27 1,26 14,53
t t
t t
t t
t t
t t
∗
∗ ∗
∗
∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪
+ = + =⎨ ⎬⎪ ⎪+ = + =⎪ ⎪+ = + =⎩ ⎭
f *2,3.0 = min
2,3.0 1,3.6
2,3.0 1,4.2
2,3.0 1,4.8
2,3.0 1,5.4
2,26 7,33 9,59
4,47 4,78 9,25
6,63 2,82 9,458,73 1,26 9,99
t t
t t
t t t t
∗
∗ ∗
∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬
+ = + =⎪ ⎪+ = + =⎪ ⎪⎩ ⎭
= 9,25
f *2,3.6 = min 2,3.6 1,4.2
2,3.6 1,4.8
2,3.6 1,5.4
1,89 4,78 6,67
3,75 2,82 6,57
5,56 1,26 6,82
t t
t t
t t
∗
∗ ∗
∗
⎧ ⎫+ = + =⎪ ⎪
+ = + =⎨ ⎬⎪ ⎪+ = + =⎩ ⎭
= 6,57
f *2,4.2 = min 2,4.2 1,4.8
2,4.2 1,5.4
1,62 2,82 4,44
3,21 1,26 4,47
t t
t t
∗ ∗
∗
⎧ ⎫+ = + =⎨ ⎬+ = + =⎩ ⎭
= 4,44
f *2,4.8 = min { }2,4.8 1,5.41, 42 1,26 2,68t t ∗ ∗+ = + = = 2,68
• Treći korak (k = 3) – 4., 3. i 2. stupanj:
f *3,2S = min { }2S 3St t ∗+
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 23/43
10. Dinamičko programiranje 23
f *3,0.9 = min
3,0.9 1,1.2
3,0.9 1,1.8
3,0.9 1,2.4
3,0.9 1,3.0
3,0.9 1,3.6
3,0.9 1,4.2
3,0.9 1,
3,73 26, 45 30,18
10,77 18,12 28,89
17,23 12,88 30,11
23,10 9,25 32,3528,38 6,57 34,95
33,07 4,44 37,51
t t
t t
t t
t t t t
t t
t t
∗
∗ ∗
∗
∗
∗
∗
∗
+ = + =+ = + =+ = + =
+ = + =+ = + =+ = + =+ 4.8
37,18 2,68 39,86
⎧ ⎫⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪
⎨ ⎬⎪ ⎪⎪ ⎪⎪ ⎪
= + =⎪ ⎪⎩ ⎭
= 28,89 0,9 ⇒ 1,8 %
f *3,1.2 = min
3,1.2 1,1.8
3,1.2 1,2.4
3,1.2 1,3.0
3,1.2 1,3.6
3,1.2 1,4.2
3,1.2 1,4.8
5,54 18,12 23,66
10,78 12,88 23,66
15,67 9,25 24,92
20,24 6,57 26,81
24,47 4,44 28,91
28,38 2,68 31,06
t t
t t
t t
t t
t t
t t
∗ ∗
∗ ∗
∗
∗
∗
∗
⎧ ⎫+ = + =⎪ + = + =⎪
+ = + =⎪⎨ ⎬+ = + =⎪
+ = + =⎪⎪ + = + =⎩
⎪⎪⎪
⎪⎪⎪⎭
= 23,66
f *3,1.8 = min = 16,58
3,1.8 1,2.4
3,1.8 1,3.0
3,1.8 1,3.6
3,1.8 1,4.2
3,1.8 1,4.8
3,74 12,88 16,62
7,33 9,25 16,58
10,79 6,57 17,36
14,00 4,44 18,44
17,23 2,68 19,91
t t
t t
t t
t t
t t
∗
∗ ∗
∗
∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪
+ = + =⎨ ⎬⎪ ⎪+ = + =⎪ ⎪+ = + =⎩ ⎭
f *3,2.4 = min = 12,07
3,2.4 1,3.0
3,2.4 1,3.6
3,2.4 1,4.2
3,2.4 1,4.8
2,82 9,25 12,07
5,55 6,57 12,12
8,21 4,44 12,65
10,80 2,68 13, 48
t t
t t
t t
t t
∗ ∗
∗
∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
f *3,3.0 = min 3,3.0 1,3.6
3,3.0 1,4.2
3,3.0 1,4.8
2,26 6,57 8,83
4,47 4,44 8,91
6,63 2,68 9,31
t t
t t
t t
∗ ∗
∗
∗
⎧ ⎫+ = + =⎪ ⎪
+ = + =⎨ ⎬
⎪ ⎪+ = + =⎩ ⎭
= 8,83
f *3,3.6 = min 3,3.6 1,4.2
3,3.6 1,4.8
1,89 4,44 6,33
3,75 2,68 6,43
t t
t t
∗
∗
⎧ ⎫+ = + =⎨ ⎬+ = + =⎩ ⎭
= 6,33
f *3,4.2 = min { }3,4.2 1,4.81,62 2,68 4,30t t ∗ ∗+ = + = = 4,30
• Četvrti korak (k = 4) – 4., 3., 2. i 1. stupanj:
f *4,1S = min { }1S 2St t ∗+
f *4,0.6 = min = 34,42 0,6 ⇒ 0,9 %
4,0.6 1,0.9
4,0.6 1,1.2
4,0.6 1,1.8
4,0.6 1,2,4
4,0.6 1,3.0
4,0.6 1,3.6
4,0.6 1
5,53 28,89 34,42
10,77 23,66 34, 43
20,24 16,58 36,8228,38 12,07 40,45
35,20 8,83 44,03
40,70 6,33 47,03
t t
t t
t t t t
t t
t t
t t
∗ ∗
∗
∗
∗
∗
∗
∗
+ = + =+ = + =
+ = + =+ = + =+ = + =+ = + =+
,4.244,88 4,30 49,18
⎧ ⎫⎪ ⎪
⎪ ⎪⎪ ⎪⎪ ⎪⎨ ⎬⎪ ⎪⎪ ⎪⎪ ⎪
= + =⎪ ⎪⎩ ⎭
Rezultat: 1. stupanj: 0,6 ⇒ 0,9 %
2. stupanj: 0,9 ⇒ 1,8 %
3. stupanj: 1,8 ⇒ 3,6 %
4. stupanj: 3,6 ⇒ 6,0 %
F = 28,89 NJ
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 24/43
24 Kvantitativne metode
10.1.3 Zadaci
Z-10.1 Tijekom 4 mjeseca potrebno je proizvesti 11 strojeva. Analizom je određena fun-
kcija ukupnih troškova:T ( x i) = 12◦ x 12
+ 24◦ x 22
+ 40◦ x 32
+ 30◦ x 42
NJ
gdje je x i broj proizvedenih strojeva tijekom i-tog mjeseca. Odrediti vrijednosti x i za koje funkcija ukupnih troškova ima minimalnu vrijednost. [6, 418. strana]
Funkcija cilja: F = mini
x { } 2 2 2 2
1 2 3 412 24 40 30 x x x x + + +D D D D NJ
Funkcije ograničenja:3
ii 1
x =∑ ≤ 11
0 ≤ xi ≤ 11
Rješenje: f *1,j =
min10 11 x ≤ { }
2
112 x D
≤
f *2,j = min2
0 1 x 1≤ ≤ ( ){ }
2
2
2 1, j24
x x f ∗ −+D
f *3,,j = min3
0 1 x 1≤ ≤ ( ){ }
3
2
3 2, j40
x x f ∗ −+D
f *4,,j = min30 1 x 1≤ ≤
( ){ } 4
2
4 3, j30
x x f ∗ −+D
Rezultat: x 1 = 5, x 2 = 2, x 3 = 2, x 4 = 2 x 1 = 5, x 2 = 3, x 3 = 1, x 4 = 2
F = 676 NJ
S programom DPJRmin:OptimRez =
676OptimRas =
3 5 1 2
Opaska: S programom je dobiven pogrešan rezultat – u ispisu su zamijenjenetočne vrijednosti x 1 = 5, x 2 = 3 s pogrešnim x 1 = 3, x 2 = 5. Pored to-ga, program određuje samo jedan rezultat, a moguća su dva.
Z-10.2 U cilju bržeg razvoja poduzeća, u tri nova pogona (1, 2 i 3) treba optimalno inves-tirati 4 milijuna kuna. Procijenjena godišnja dobit ovisi o uloženim sredstvima i,
po pogonu, u milijunima kuna iznosi (NJ = 1 000 000 kn): [6, 423 strana] x i(10
6kn) 0 1 2 3 4
D1/(NJDgod) 0 0,30 0,47 0,70 0,83
D2/(NJDgod) 0 0,29 0,45 0,67 0,82
D3/(NJDgod) 0 0,31 0,46 0,74 0,80
Funkcija cilja: F = maxi
x { }+ +
1 2 3D D D NJ
Funkcije ograničenja:3
ii 1
x =∑ ≤ 4
0 ≤ xi ≤ 4
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 25/43
10. Dinamičko programiranje 25
Rješenje: f *1,j = max10 4 x ≤ ≤ { }1
D
f *2,j = max
10 4 x ≤ ≤
( ){ }
2
2 1, j x D f ∗ −+
f *3,,j = max1
0 4 x ≤ ≤ ( ){ }
33 2, j x
D f ∗ −+
Rezultat: x 1 = 2, x 2 = 1, x 3 = 1
F = 1 070 000 kn/god
S programom DPJRMax:OptimRez =
1.0700OptimRas =
2 1 1
Opaska: Greška se nalazi u literaturi [6].Z-10.3 Raspoloživa sredstva od 8 milijuna kuna treba optimalno investirati u tri poduzeća
(1, 2 i 3). Procijenjena godišnja dobit je ovisna o uloženim sredstvima i, po podu-zeću, u desetinama tisuća kuna iznosi (NJ = 10 000 kn): [6, 425 strana]
x i(106
kn) 0 1 2 3 4 5 6 7 8
D1/(NJDgod) 0 5 15 40 80 90 95 98 100
D2/(NJDgod) 0 5 15 40 60 70 73 74 75
D3/(NJDgod) 0 4 26 40 45 50 51 52 53
Funkcija cilja: F = max
i x
{ }1 2 3D D D+ + NJ
Funkcije ograničenja:3
ii 1
x =∑ ≤ 8
0 ≤ xi ≤ 8
Rješenje: f *1,j =0 8
max1 x ≤ { }1
D ≤
f *2,j = max10 8 x ≤ ≤
( ){ }22 1, j x
D f ∗ −+
f *3,,j = max1
0 8 x ≤ ≤ ( ){ }
33 2, j x
D f ∗ −+
Rezultat: x 1 = 4, x 2 = 4, x 3 = 0
F = 140 NJ
S programom DPJRMax:OptimRez =
140OptimRas =
4 4 0
Z-10.4 Usvojiti optimalni plan raspodjele tjedne proizvodnje na 3 zastupstva ukoliko jeanaliza pokazala kako zastupstvo A ostvaruje dobit od 2 000 kuna po proizvodu,zastupstvo B 3 000 kuna, a zastupstvo C, ovisno o obujmu isporuke strojeva, u ti-sućama kuna:
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 26/43
26 Kvantitativne metode
x3 0 1 2
D3 0 4,5 4,5
Posebnim ugovorima su definirani obimi tjednih isporuka od maksimalno 2 strojatjedno po zastupstvu, te odnosi isporučenih količina: x 1 + 2◦ x 2 + 3◦ x 3 ≤ 8. [6, 431strana]
Funkcija cilja: F = maxi
x { }1 2 32 3 x x D+ +D D NJ
Funkcije ograničenja:3
ii 1
x =∑ ≤ 11
x 1 + 2◦ x 2 + 3◦ x 3 ≤ 8
0 ≤ x i ≤ 2
za x 2 = 0 i x 3 = 0 ⇒ x 1 ≤ 8
0 ≤ x 1 ≤ 8
za x 1 = 0 i x 3 = 0 ⇒ x 2 ≤ 8/2
0 ≤ x 2 ≤ 4
za x 1 = 0 i x 2 = 0 x 3 ≤ 8/3
0 ≤ x 3 ≤ 2
Rješenje: f *1,j =0 8
max1
x ≤ { }12 x D ≤
f *2,j = max20 4 x ≤ ≤
( ){ }2
2 1, j 23
x x f ∗ −+
DD
f *3,,j =min
30 2 x ≤ ≤ ( ){ }3
3 2, j 3 x D f ∗
−+ D
Rezultat: x 1 = 1, x 2 = 2, x 3 = 1
F = 12 500 kn
S programom DPJRmin: Nepredviđena varijanta – dobit zadata dijelom funkci- jom (A i B) te dijelom matricom (C).
Z-10.5 Poduzeće gradi tri vrste objekata: tipa A – s dobiti od osam milijuna kuna, tipa B – s dobiti od dvanaest milijuna kuna i tipa C – s dobiti od deset milijuna kuna, uzkorištenje osamnaest raspoloživih specijalnih strojeva. Pri izvedbi objekata tipa A moraju se angažirati četiri specijalna stroja, pri izvedbi objekata tipa B šest i pri
izvedbi objekata tipa C tri. Pored toga, nije dozvoljena izvedba više od tri objektatipa A i pet objekata tipa C. Koliko je objekata optimalno izvesti. [6, 439 strana]
Funkcija cilja: F = maxi x
{ }1 2 38 12 10 x x x + +D D D NJ
Funkcije ograničenja:3
ii 1
x =∑ ≤ 18
4◦ x 1 + 6◦ x 2 + 3◦ x 3 ≤ 18
za x 2 = 0 i x 3 = 0 ⇒ x 1 ≤ 18/4
0 ≤ x 1 ≤ 4
za x 1 = 0 i x 3 = 0 ⇒ x 2 ≤ 18/60 ≤ x 2 ≤ 3
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 27/43
10. Dinamičko programiranje 27
za x 1 = 0 i x 2 = 0 x 3 ≤ 18/3
0 ≤ x 3 ≤ 6
0 ≤ x1 ≤ 3
0 ≤ x3 ≤ 5
Rješenje: f *1,j = max1
0 3 x ≤ ≤ { }18 x D
f *2,j = max2
0 3 x ≤ ≤ ( ){ }
22 1, j 612
x x f ∗ −+
DD
f *3,,j = min3
0 5 x ≤ ≤ ( ){ }
33 2, j 3
10 x
x f ∗ −+D
D
Rezultat: x 1 = 0, x 2 = 1, x 3 = 4
F = 52 000 000 kn
Z-10.6 Brodom se prevoze dva tipa postrojenja, pri čemu se ostvaruju dobiti po jednom postrojenju: tipa A četrdeset tisuća kuna i tipa B šezdeset tisuća kuna. Kapacitet broda je dvadeset tisuća kubičnih metara, a postrojenja zauzimaju prostor ovisno outovarenoj količini u tisućama m
3:
• strojevi tipa A:
x1 0 1 2 3 4 5 6
V1 0 5 8 10 12 15 18
• strojevi tipa B:V 2 = 5◦x2
Usvojiti optimalan plan utovara broda. [6, 440 strana]
Funkcija cilja: F = maxi x
{ }1 240 60 x x +D D NJ
Funkcije ograničenja: V 1 + 5◦ x 2 ≤ 20
za x 2 = 0 ⇒ x 1 ≤ 20/5
0 ≤ x 1 ≤ 4
za x 1 = 0 ⇒ x 2 ≤ 20/V 1
0 ≤ x 2 ≤ 20/V 1
Rješenje: f *1,j = max
1 1
0 20 / x V ≤ ≤ { }140 x D
f *2,j = max2
0 4 x ≤ ≤ ( ){ }
22 1, j 5
60 x
x f ∗ −+D
D
Rezultat: x 1 = 5, x 2 = 1
F = 260 000 kn
S programom DPJRMax: Nepredviđena varijanta.
Z-10.7 Avionom nosivosti 83 tone prevoze se tri vrste strojeva.
Vrsta stroja 1 2 3
g i – jedinična težina, t 24 22 16
d i – jedinična dobit, 103
kn 96 85 50
Usvojiti optimalan plan utovara aviona. [6, 441 strana]
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 28/43
28 Kvantitativne metode
Funkcija cilja: F = maxi x
{ }1 2 396 85 50 x x x + +D D D NJ
Funkcije ograničenja: 24◦ x 1 + 22◦ x 2 + 16◦ x 3 ≤ 83
za x 2 = 0 i x 3 = 0 ⇒ x 1 ≤ 83/24
0 ≤ x 1 ≤ 3
za x 1 = 0 i x 3 = 0 ⇒ x 2 ≤ 83/22
0 ≤ x 2 ≤ 3
za x 1 = 0 i x 2 = 0 x 3 ≤ 83/16
0 ≤ x 3 ≤ 5
Rješenje: f *1,j = max1
0 3 x ≤ ≤ { }196 x D
f *2,j = max20 3 x ≤ ≤
( ){ }
22 1, j 22
85 x
x f ∗
−
+D
D
f *3,,j = min3
0 5 x ≤ ≤ ( ){ }
33 2, j 1650
x x f ∗ −+
DD
Rezultat: x 1 = 2, x 2 = 0, x 3 = 2
F = 292 000 kn
Z-10.8 Avionom nosivosti pedeset (50) tona prevoze se putnici (1), poštanski paketi (2) i paketi pričuvnih dijelova (3).
Vrsta stroja 1 2 3
g i – jedinična težina, t 0,1 0,2 0,9
d i – jedinična dobit, 10
3
kn 2 2,5 4,5
Usvojiti optimalan plan utovara aviona. [6, 444 strana]
Funkcija cilja: F = maxi
x { }1 2 32 2,5 4,5 x x x + +D D D NJ
Funkcije ograničenja: 0,1◦ x 1 + 0,2◦ x 2 + 0,9◦ x 3 ≤ 50
za x 2 = 0 i x 3 = 0 ⇒ x 1 ≤ 50/0,1
0 ≤ x 1 ≤ 500
za x 1 = 0 i x 3 = 0 ⇒ x 2 ≤ 50/0,2
0 ≤ x 2 ≤ 250
za x 1 = 0 i x 2 = 0 x 3 ≤ 50/0,9
0 ≤ x 3 ≤ 55
Rješenje: f *1,j = max10 1 x ≤ ≤ 20 { }1
2 x D
f *2,j = max2
0 250 x ≤ ≤ ( ){ }22 1, j 0,2
2,5 x
x f ∗ −+D
D
f *3,,j = max3
0 5 x ≤ ≤ 5 ( ){ } 3
3 2, j 0,94,5
x x f ∗ −+
DD
Rezultat: x 1 = 0, x 2 = 250, x 3 = 2
F = 625 000 knS programom DPJRMax: Pogrešan rezultat.
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 29/43
10. Dinamičko programiranje 29
10.2 Višedimenzionalna raspodjela
10.2.1 Matemati č ki model i rješenje
Funkcija cilja: – raspoložive resurse S1 i S2 optimalno raspodijeliti na recipijente R i
F = opti i, x y
i i
m
,i 1
x y f =
⎧ ⎫⎨ ⎬⎩ ⎭∑ = ∑ F-10.8
i i
m
,i 1
x y f ∗
=
gdje je: i – oznaka recipijenta
– rezultat raspodjele resursa S1 i S2 na recipijente R i i i, x y
f
– optimalni rezultat raspodjele resursa S1 i S2 na recipijente R i i i, x y f ∗
x i – dio resursa S1 koji se dodjeljuje recipijentu R i
y i – dio resursa S2 koji se dodjeljuje recipijentu R i Funkcije ograničenja:
≤ S1 F-10.9 i x
g
gdje je: g i – ograničenje resursa S1 koji se može dodijeliti recipijentu R i
y ig ≤ S2 F-10.10
gdje je: g i – ograničenje resursa S2 koji se može dodijeliti recipijentu R i
x i,min ≤ x i ≤ x i,max F-10.11
gdje je: x i,min/ x i,max – dozvoljena minimalna/maksimalna vrijednost x i
y i,min ≤ y i ≤ y i,max F-10.12 gdje je: y i,min/y i,max – dozvoljena minimalna/maksimalna vrijednost y i
x j , y i ∈ `
Rješenje
Raspodjela se odvija u koracima (rekurzija) koji se opisuju izrazom:
f *k,j =min max
opt0 j, j j,, x y y y ≤ ≤ { } j jk-1,( j )
∗−+
y f f F-10.13
gdje je: k – oznaka koraka
x 0 – početna točkaU 1. koraku (k = 1) se 1. recipijentu dodjeljuju dijelovi resursa x 0 i y i za koji f k,,j ( F-
10.113) ima optimalnu (maksimalnu/minimalnu) vrijednost f k,,j = f *k,,j . Preostali se dio resursaS2 dalje raspodjeljuje na n – 1 recipijenata, uzimajući u obzir rezultate raspodjela u prethod-nim koracima.
Nakon toga, na i-ti recipijent se raspodjeljuje dio resurs x0,i i y0 za koji f k,,j ( F-10.13) imaoptimalnu (maksimalnu ili minimalnu) vrijednost. Preostali se dio resursa S1 dalje raspodje-ljuje na n – 1 recipijenata, uzimajući u obzir rezultate raspodjela u prethodnim koracima.
f *k,j =min max
opt, j j, , 0 x x x y ≤ ≤ { } j jk-1,( j )
∗−+ x
f f F-10.14
gdje je: y 0 - točka približavanja.
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 30/43
30 Kvantitativne metode
Konačno:
F = =i i
m
,
i 1
x y f ∗
=
∑i i
m
,
i 1
x y f ∗ ∗
=
∑ F-10.15
gdje su: ∗i – dijelovi resursa S1 čijim se dodjeljivanjem recipijentima R i dobiva optimum x
– dijelovi resursa S2 čijim se dodjeljivanjem recipijentima R i dobiva optimumiy ∗
10.2.2 Primjeri
Primjer P-10.9
Dvije se sirovine ( A i B) mogu koristiti u dva tehnološka procesa (1 i 2). Dobiti ovisi o ko-ličinama sirovina korištenih u procesima.
Tabela P-10.9-1. Tehnološki proces 1
x 1 ↓ y 1→ 1 2 3 4 51 9 11 14 15 16
2 11 14 21 27 26
3 14 16 23 28 29
4 15 17 25 30 31
Tabela P-10.9-2. Tehnološki proces 2
x 2 ↓ y 2→ 1 2 3 4 5
1 7 9 11 15 17
2 8 10 14 17 19
3 12 13 16 19 21
4 15 18 20 25 9
Raspoložive su količine sirovina: A 6 jediničnih količina i B 8. Odrediti optimalnu raspodjelusirovina na tehnološke procese. [6, 452. strana]
Funkcija cilja: F =max
i x { } xy xy D D+
1, 2,
gdje je: D1, xy – dobit tehnološkog procesa 1 = f x 1, y 1 D2, xy – dobit tehnološkog procesa 2 = f x 2, y 2
Funkcije ograničenja: x =∑
2
ii 1
≤ 6 (raspoloživa količ ina sirovine A)
y =∑
2
ii 1 ≤ 8 (raspoloživa količ ina sirovine B)
0 ≤ xi ≤ 4 ( potrebe tehnološkog procesa 1) 0 ≤ yi ≤ 5 ( potrebe tehnološkog procesa 2)
Rješenje:
Koraci raspodjele:
• Prvi korak (k = 1) – proizvoljno se usvaja početna točka približavanja X 0 = (3, 3),(model se svodi na jednodimenzionalnu raspodjelu):
F = maxi
x { } x y x y D D+
01 i1 02 i21 2
gdje je: D1x01yi1 – dobit tehnološkog procesa 1 = f y i1 , pri x 01 = 3 D2 x 02y i2 – dobit tehnološkog procesa 2 = f y i2 , pri x 02 = 3
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 31/43
10. Dinamičko programiranje 31
y =∑
2
ii 1
≤ 8 (raspoloživa količ ina sirovine B)
0 ≤ yi ≤ 5 ( potrebe tehnološkog procesa 2
) Međurezultat: (DPJRMax) OptimRez =
47OptimRas =
4 4
Y 0 = (4, 4) F = 47 ( X 0 = (3, 3))
Opaske:
o Iz tabele P-10.9-1. D x 01y i1 = D34 = 28
o Iz tabele P-10.9-2. D x 02y i2 = D34 = 19
o F = 47
• Drugi korak (k = 2 ) – usvaja se točka približavanja Y 0 = (4, 4), (model se svodi
na jednodimenzionalnu raspodjelu):
F =max
x Y i 0,
{ } x y x y D D+i1 01 i2 021 2
gdje je: D1 x i1y 01 – dobit tehnološkog procesa 1 = f x i1 , pri y 01 = 4 D2 x i2y 02 – dobit tehnološkog procesa 2 = f x i2 , pri y 02 = 4
x =∑
2
ii 1
≤ 6 (raspoloživa količ ina sirovine A)
0 ≤ xi ≤ 4 ( potrebe tehnološkog procesa 1) Međurezultat: (DPJRMax )
OptimRez =52
OptimRas =2 4
X 0 = (2, 4) F = 52 (Y 0 = (4, 4))
Opaske:
• Iz tabele P-10.9-1. D x 01y i1 = D24 = 27
• Iz tabele P-10.9-2. D x 02y i2 = D34 = 25
• F = 52 • Treći korak (k = 3) – usvaja se točka približavanja X 1 = (2, 4):
F =max
X y 1 i, { } x y x y D D+11 i1 12 i21 2
y =∑
2
ii 1
≤ 8 (raspoloživa količ ina sirovine B)
0 ≤ yi ≤ 5 ( potrebe tehnološkog procesa 2) Međurezultat: (DPJRMax )
OptimRez =
52OptimRas =
4 4
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 32/43
32 Kvantitativne metode
Rezultat: x 1 = 2 x 2 = 4 y 1 = 4 y 2 = 4
F = 52
Opaska: Kada bi se počelo s X 0 = (4, 3) slijedilo bi (DPJRMax ):OptimRez =
49OptimRas =
4 4
OptimRez =52
OptimRas =2 4
Prema tome, rezultat je isti.
10.2.3 Zadaci
10.3 Najkraći put
10.3.1 Matemati č ki model i rješenje
10.3.2 Primjeri
Primjer P-10.10
Deset lokacija spojeno je mrežom putova, s dužinama putova u kilometrima.
Odrediti najkraći put između lokacija 1 i 10.
Funkcija cilja: F = min ⎧ ⎫m
ii 1
x =
⎨ ⎬⎩ ⎭∑ i = 1, 2, …, m
Rješenje:
Matrica dužina putova:
i ↓ j → 1 2 3 4 5 6 7 8 9 10
1 0 1 10 6 3 ∞ ∞ ∞ ∞ ∞ 2 1 0 10 ∞ ∞ 10 ∞ ∞ ∞ ∞ 3 10 10 0 4 ∞ 2 4 1 ∞ ∞ 4 6 ∞ 4 0 2 ∞ ∞ 3 ∞ ∞ 5 3 ∞ ∞ 2 0 ∞ ∞ 6 8 ∞ 6 ∞ 10 2 ∞ ∞ 0 2 ∞ ∞ 57 ∞ ∞ 4 ∞ ∞ 2 0 6 ∞ 28 ∞ ∞ 1 3 6 ∞ 6 0 10 9
9 ∞ ∞ ∞ ∞ 8 ∞ ∞ 10 0 5
X =│ x ij│
10 ∞ ∞ ∞ ∞ ∞ 5 2 9 5 0
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 33/43
10. Dinamičko programiranje 33
• Prvi korak (k = 1) – put s jednom uključenom dionicom:
f *1,i10 = min { } j,10 x
f *1,110 = ∞ f *1,210 = ∞
f *1,310 = ∞
f *1,410 = ∞
f *1,510 = ∞
f *1,610 = 5
f *1,710 = 21 ⇒ 5 ⇒ 4 ⇒ 3 ⇒ 7 ⇒ 10 ⇒ ⇒ 10
f *1,810 = 9
f *1,910 = 5
f *1,1010 = 0
f *1,110 je skraćeni zapis za f *1,1⇒10 – optimum u prvom koraku rješenja za put samo jed-nom dionicom koja spaja lokacije 1 i 10 (takvog puta nema ∴ beskonač na dužina).
f k,i10
i = 1 i = 2 i = 3 i = 4 i = 5 i = 6 i = 7 i = 8 i = 9 i = 10
k = 1 ∞ ∞ ∞ ∞ ∞ 5 2 9 5 0
• Drugi korak (k = 2 ) – put s dvije uključene dionice:
f *2,i10 = min { }k,i10 (k-1),i10 x x ∗+
f *2,110 = min
2,12 1,210
2,13 1,310
2,14 1,410
2,15 1,510
110
6
3
x x x x
x x
x x
∗
∗
∗
∗
⎧ ⎫+ = + ∞ = ∞⎪ ⎪+ = + ∞ = ∞⎪ ⎪⎨ ⎬+ = + ∞ = ∞⎪ ⎪
+ = + ∞ = ∞⎪ ⎪⎩ ⎭
= ∞
f *2,210 = min 2,21 1,110
2,23 1,310
2,26 1,610
1
10
10 5 15
x x
x x
x x
∗
∗
∗ ∗
⎧ ⎫+ = + ∞ = ∞⎪ ⎪
+ = + ∞ = ∞⎨ ⎬⎪ ⎪+ = + =⎩ ⎭
= 15
f *2,310 = min
2,31 1,110
2,32 1,210
2,34 1,410
2,36 1,610
2,37 1,710
2,38 1,810
10
10
4
2 5 74 2 6
1 9 10
x x
x x
x x
x x x x
x x
∗
∗
∗
∗
∗ ∗
∗
⎧ ⎫+ = + ∞ = ∞⎪ ⎪+ = + ∞ = ∞⎪ ⎪
+ = + ∞ = ∞⎪ ⎪⎨ ⎬
+ = + =⎪ ⎪+ = + =⎪ ⎪⎪ ⎪+ = + =⎩ ⎭
= 6
1 ⇒ 5 ⇒ 4 ⇒ 3 ⇒ 7 ⇒ ⇒ 10
f *2,410 = min
2,41 1,110
2,43 1,310
2,45 1,510
2,48 1,810
6
4
2
3 9 12
x x
x x
x x
x x
∗
∗
∗
∗ ∗
⎧ ⎫+ = + ∞ = ∞⎪ ⎪+ = + ∞ = ∞⎪ ⎪⎨ ⎬+ = + ∞ = ∞⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 12
f *2,510 = min
2,51 1,110
2,54 1,410
2,58 1,810
2,59 1,910
3
2
6 9 15
8 5 13
x x
x x
x x
x x
∗
∗
∗
∗ ∗
⎧ ⎫+ = + ∞ = ∞⎪ ⎪+ = + ∞ = ∞⎪ ⎪⎨ ⎬+ = + =⎪ ⎪+ = + =⎪ ⎪⎩ ⎭
= 13
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 34/43
34 Kvantitativne metode
f *2,610 = min
2,62 1,210
2,53 1,310
2,67 1,710
2,610 1,1010
10
2
2 2 4
5 0 5
x x
x x
x x
x x
∗
∗
∗ ∗
∗
⎧ ⎫+ = + ∞ = ∞⎪ ⎪+ = + ∞ = ∞⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 4
f *2,710 = min
2,73 1,310
2,76 1,610
2,78 1,810
2,710 1,1010
4
2 5 7
6 9 15
2 0 2
x x
x x
x x
x x
∗
∗
∗
∗ ∗
⎧ ⎫+ = + ∞ = ∞⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 2
1 ⇒ 2 ⇒ 6 ⇒ 7 10 ⇒ 10
f *2,810 = min
2,83 1,310
2,84 1,410
2,85 1,510
2,87 1,710
2,89 1,910
2,810 1,1010
1
3
6
6 2 8
10 5 15
9 0 9
x x
x x
x x
x x
x x
x x
∗
∗
∗
∗ ∗
∗
∗
⎧ ⎫+ = + ∞ = ∞⎪ ⎪+ = + ∞ = ∞⎪ ⎪
+ = + ∞ = ∞⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪
⎪ ⎪+ = + =⎩ ⎭
= 8
f *2,910 = min 2,95 1,510
2,98 1,810
2,910 1,1010
8
10 9 19
5 0 5
x x
x x
x x
∗
∗
∗ ∗
⎧ ⎫+ = + ∞ = ∞⎪ ⎪
+ = + =⎨ ⎬⎪ ⎪+ = + =⎩ ⎭
= 5
f *2,910 = min 2,95 1,510
2,98 1,810
2,910 1,1010
8
10 9 19
5 0 5
x x
x x
x x
∗
∗
∗ ∗
⎧ ⎫+ = + ∞ = ∞⎪ ⎪
+ = + =⎨ ⎬⎪ ⎪+ = + =⎩ ⎭
= 15
f *2,1010 = 0
f k,i10
i = 1 i = 2 i = 3 i = 4 i = 5 i = 6 i = 7 i = 8 i = 9 i = 10
k = 1 ∞ ∞ ∞ ∞ ∞ 5 2 9 5 0k = 2 ∞ 15 6 12 13 4 2 8 5 0
• Treći korak (k = 3) – put s tri uključene dionice:
f *3,i10 = min { }k,i10 (k-1),i10 x x ∗+
f *3,110 = min
3,12 2,210
3,13 2,310
3,14 2,410
3,15 2,510
1 15 16
10 6 16
6 12 18
3 13 16
x x
x x
x x
x x
∗ ∗
∗ ∗
∗
∗ ∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 16
f *3,210 = min 3,21 2,110
3,23 2,310
3,26 2,610
1
10 6 16
10 4 14
x x
x x
x x
∗
∗
∗ ∗
⎧ ⎫+ = + ∞ = ∞⎪ ⎪
+ = + =⎨ ⎬⎪ ⎪+ = + =⎩ ⎭
= 14
f *3,310 = min
3,31 2,110
3,32 2,210
3,34 2,410
3,36 2,610
3,37 2,710
3,38 2,810
10
10 15 25
4 12 16
2 4 6
4 2 6
1 8 9
x x
x x
x x
x x
x x
x x
∗
∗
∗
∗ ∗
∗ ∗
∗
⎧ ⎫+ = + ∞ = ∞⎪ ⎪+ = + =⎪ ⎪
+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎪ ⎪+ = + =⎩ ⎭
= 6
f *3,410 = min
3,41 2,110
3,43 2,310
3,45 2,510
3,48 2,810
6
4 8 10
2 13 15
3 8 11
x x
x x
x x
x x
∗
∗ ∗
∗
∗
⎧ ⎫+ = + ∞ = ∞⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 10
1 ⇒ 5 ⇒ 4 ⇒ 3 ⇒ ⇒ 10
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 35/43
10. Dinamičko programiranje 35
f *3,510 = min
3,51 2,110
3,54 2,410
3,58 2,810
3,59 2,910
3
2 12 14
6 8 14
8 5 13
x x
x x
x x
x x
∗
∗
∗
∗ ∗
⎧ ⎫+ = + ∞ = ∞⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 13
f *3,610 = min
3,62 2,210
3,53 2,310
3,67 2,710
3,610 2,1010
10 15
2 6
2 2 4
5 0 5
x x
x x
x x
x x
∗
∗
∗ ∗
∗
⎧ ⎫+ = + = ∞⎪ ⎪+ = + = ∞⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 4
1 ⇒ 2 ⇒ 6 ⇒ 7 ⇒ 10
f *3,710 = min
3,73 2,310
3,76 2,610
3,78 2,810
3,710 2,1010
4 6 12
2 4 6
6 8 14
2 0 2
x x
x x
x x
x x
∗
∗
∗
∗ ∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 2
f *3,810 = min
3,83 2,310
3,84 2,410
3,85 2,510
3,87 2,710
3,89 2,910
3,810 2,1010
1 6 7
3 12 15
6 13 19
6 2 8
10 5 15
9 0 9
x x
x x
x x
x x
x x
x x
∗ ∗
∗
∗
∗
∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪
+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎪ ⎪+ = + =⎩ ⎭
= 7
f *3,910 = min 3,95 2,510
3,98 2,810
3,910 2,1010
8 13 21
10 8 18
5 0 5
x x
x x
x x
∗
∗
∗ ∗
⎧ ⎫+ = + =⎪ ⎪
+ = + =⎨ ⎬⎪ ⎪+ = + =⎩ ⎭
= 5
f *3,1010 = 0
f k,i10
i = 1 i = 2 i = 3 i = 4 i = 5 i = 6 i = 7 i = 8 i = 9 i = 10
k = 1 ∞ ∞ ∞ ∞ ∞ 5 2 9 5 0
k = 2 ∞ 15 6 12 13 4 2 8 5 0
k = 3 16 14 6 10 13 4 2 7 5 0
• Četvrti korak (k = 4) – put s četiri uključene dionice:
f *4,i10 = min { }k,i10 (k-1),i10 x x ∗+
f *4,110= min
4,12 3,210
4,13 3,310
4,14 3,410
4,15 3,510
1 14 15
10 6 16
6 10 163 13 16
x x
x x
x x x x
∗ ∗
∗
∗∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪
⎨ ⎬+ = + =⎪ ⎪+ = + =⎪ ⎪⎩ ⎭
= 16
f *4,210 = min 4,21 3,110
4,23 3,310
4,26 3,610
1 16 17
10 6 16
10 4 14
x x
x x
x x
∗
∗
∗ ∗
⎧ ⎫+ = + =⎪ ⎪
+ = + =⎨ ⎬⎪ ⎪+ = + =⎩ ⎭
= 14
1 ⇒ 2 ⇒ 6 ⇒ ⇒ 10
f *4,310 = min
4,31 3,110
4,32 3,210
4,34 3,410
4,36 3,610
4,37 3,710
4,38 3,810
10 16 26
10 14 24
4 10 14
2 4 6
4 2 61 8 9
x x
x x
x x
x x
x x x x
∗
∗
∗
∗ ∗
∗ ∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪
+ = + =⎪ ⎪⎨ ⎬+ = + =
⎪ ⎪+ = + =⎪ ⎪⎪ ⎪+ = + =⎩ ⎭
= 6
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 36/43
36 Kvantitativne metode
f *4,410 = min
4,41 3,110
4,43 3,310
4,45 3,510
4,48 3,810
6 16
4 6 10
2 13 15
3 7 10
x x
x x
x x
x x
∗
∗ ∗
∗
∗ ∗
⎧ ⎫+ = + = ∞⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 10
f *4,510 = min
4,51 3,110
4,54 3,410
4,58 3,810
4,59 3,910
3 16 19
2 10 12
6 7 13
8 5 13
x x
x x
x x
x x
∗
∗ ∗
∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 12
1 ⇒ 5 ⇒ 4 ⇒ ⇒ 10
f *4,610 = min
4,62 3,210
4,53 3,310
4,67 3,710
4,610 3,1010
10 14 24
2 6 8
2 2 4
5 0 5
x x
x x
x x
x x
∗
∗
∗ ∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 4
f *4,710 = min
4,73 3,310
4,76 3,610
4,78 3,810
4,710 3,1010
4 6 10
2 4 6
6 7 13
2 0 2
x x
x x
x x
x x
∗
∗
∗
∗ ∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 2
f *4,810 = min
4,83 3,310
4,84 3,410
4,85 3,510
4,87 3,710
4,89 3,910
4,810 3,1010
1 6 7
3 10 13
6 13 19
6 2 8
10 5 15
9 0 9
x x
x x
x x
x x
x x
x x
∗ ∗
∗
∗
∗
∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪
+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎪ ⎪+ = + =⎩ ⎭
= 7
f *4,910 = min 4,95 3,510
4,98 3,810
4,910 3,1010
8 13 21
10 7 17
5 0 5
x x
x x
x x
∗
∗
∗ ∗
⎧ ⎫+ = + =⎪ ⎪
+ = + =⎨ ⎬⎪ ⎪+ = + =⎩ ⎭
= 5
f *4,1010 = 0
f k,i10
i = 1 i = 2 i = 3 i = 4 i = 5 i = 6 i = 7 i = 8 i = 9 i = 10
k = 1 ∞ ∞ ∞ ∞ ∞ 5 2 9 5 0
k = 2 ∞ 15 6 12 13 4 2 8 5 0
k = 3 16 14 6 10 13 4 2 7 5 0
k = 4 15 14 6 10 12 4 2 7 5 0
• Peti korak (k = 5 ) – put s pet uključenih dionice:
f *5,i10 = min { }k,i10 (k-1),i10 x x ∗+
f *5,110 = min
5,12 4,210
5,13 4,310
5,14 4,410
5,15 4,510
1 14 15
10 6 16
6 10 16
3 12 15
x x
x x
x x
x x
∗ ∗
∗
∗
∗ ∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 15
1 ⇒ 2 ⇒ ⇒ 10
1 ⇒ 5 ⇒ ⇒ 10
f *5,210 = min 5,21 4,110
5,23 4,310
5,26 4,610
1 15 16
10 6 1610 4 14
x x
x x x x
∗
∗∗ ∗
⎧ ⎫+ = + =
⎪ ⎪+ = + =⎨ ⎬⎪ ⎪+ = + =⎩ ⎭
= 14
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 37/43
10. Dinamičko programiranje 37
f *5,310 = min
5,31 4,110
5,32 4,210
5,34 4,410
5,36 4,610
5,37 4,710
5,38 4,810
10 15 25
10 14 24
4 10 14
2 4 64 2 6
1 7 8
x x
x x
x x
x x x x
x x
∗
∗
∗
∗ ∗
∗ ∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪
+ = + =⎪ ⎪⎨ ⎬
+ = + =⎪ ⎪+ = + =⎪ ⎪⎪ ⎪+ = + =⎩ ⎭
= 6
f *5,410 = min
5,41 4,110
5,43 4,310
5,45 4,510
5,48 4,810
6 16 22
4 6 10
2 13 15
3 7 10
x x
x x
x x
x x
∗
∗ ∗
∗
∗ ∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 10
f *5,510 = min
5,51 4,110
5,54 4,410
5,58 4,810
5,59 4,910
3 15 18
2 10 12
6 7 13
8 5 13
x x
x x
x x
x x
∗
∗ ∗
∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 12
f *5,610 = min
5,62 4,210
5,53 4,310
5,67 4,710
5,610 4,1010
10 14 24
2 6 8
2 2 4
5 0 5
x x
x x
x x
x x
∗
∗
∗ ∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 4
f *5,710 = min
5,73 4,310
5,76 4,610
5,78 4,810
5,710 4,1010
4 6 10
2 4 6
6 7 13
2 0 2
x x
x x
x x
x x
∗
∗
∗
∗ ∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 2
f *5,810 = min
5,83 4,310
5,84 4,410
5,85 4,510
5,87 4,710
5,89 4,910
5,810 4,1010
1 6 73 10 13
6 13 19
6 2 8
10 5 15
9 0 9
x x x x
x x
x x
x x
x x
∗ ∗∗
∗
∗
∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪
+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎪ ⎪+ = + =⎩ ⎭
= 7
f *5,910 = min 5,95 4,510
5,98 4,810
5,910 4,1010
8 12 20
10 7 17
5 0 5
x x
x x
x x
∗
∗
∗ ∗
⎧ ⎫+ = + =⎪ ⎪
+ = + =⎨ ⎬⎪ ⎪+ = + =⎩ ⎭
= 5
f *5,1010 = 0
f k,i10
i = 1 i = 2 i = 3 i = 4 i = 5 i = 6 i = 7 i = 8 i = 9 i = 10
k = 1 ∞ ∞ ∞ ∞ ∞ 5 2 9 5 0
k = 2 ∞ 15 6 12 13 4 2 8 5 0
k = 3 16 14 6 10 13 4 2 7 5 0
k = 4 15 14 6 10 12 4 2 7 5 0
k = 5 15 14 6 10 12 4 2 7 5 0
Ispunjen je uvjet: f (k+1),i10 = f k,i10 ( s povećanim brojem dionica, k ⇒ k+1 , niti po jednoj
trasi nije smanjena dužina puta). Problem je što se to ne vidi u prethodnoj tablici i morase obaviti pretraga po matricama imajući u vidu:
(a) put mora počinjati od lokacije 1 ( što nije ispunjeno u svim sluč ajevima),
(b) završavati u lokaciji 10 ( što je ispunjeno u svim sluč ajevima) (c) dužina je puta L = 15 km
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 38/43
38 Kvantitativne metode
Rezultat: 1 ⇒ 2 ⇒ 6 ⇒ 7 ⇒ 10 (č etiri dionice) 1 ⇒ 5 ⇒ 4 ⇒ 3 ⇒ 7 ⇒ 10 ( pet dionica)
F = 15 km
Postupak je u izvjesnoj mjeri skraćen te nisu utvr đene još tri puta duljine L = 15 km ( zadatak je bio odrediti najkraći put, ne i određ ivanje svih mogućih varijanti najkraćeg
puta ). 1 ⇒ 5 ⇒ 4 ⇒ 3 ⇒ 6 ⇒ 7 ⇒ 10 ( šest dionica) 1 ⇒ 5 ⇒ 4 ⇒ 8 ⇒ 3 ⇒ 7 ⇒ 10 ( šest dionica)
1 ⇒ 5 ⇒ 4 ⇒ 8 ⇒ 3 ⇒ 6 ⇒ 7 ⇒ 10 ( sedam dionica)
Primjer P-10.11
Izvodi se cjevovod između čvorova objekata A i E, koji treba prolaziti kroz samo po jedančvor objekata B, C i D.
Troškovi su izvedbe pojedinih dionica (T i), u NJ:
A ⇒ B B ⇒ C i C ⇒ D D ⇒ E A1 1 2 3 4 E1 20 B1 1 12 15 21 28 D1 20
16 B2 2 15 16 17 24 D2 15
17 B3 3 21 17 16 15 D3 16
20 B4 4 28 24 15 12 D4 20
Odrediti optimalnu trasu cjevovoda. [5, 216. strana]
Funkcija cilja: F = min ⎧ ⎫4
ii 1
T =
⎨ ⎬
⎩ ⎭
∑
Rješenje:
• Prvi korak (k = 1) – dionica D ⇒ E:
f *1,DE = min { }DEt
f *1,11 = 20
f *1,21 = 15 D2 ⇒ E1
f *1,31 = 16
f *1,41 = 20
f *1,11 je skraćeni zapis za f *1,D1⇒E1 – optimum u prvom koraku rješenja za dionicu kojaspaja čvor 1 objekta D i čvor 1 objekta E.
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 39/43
10. Dinamičko programiranje 39
• Drugi korak (k = 2 ) – dionica C ⇒ E (dvije dionice):
f *2,CE = min { }CD DEt t ∗+
f *2,11 = min
2,11 1,11
2,12 1,21
2,13 1,31
2,14 1,41
12 20 3215 15 30
21 16 37
28 20 48
t t t t
t t
t t
∗
∗ ∗
∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 30 C1 ⇒ D2
f *2,21 = min
2,21 1,11
2,22 1,21
2,23 1,31
2,24 1,41
15 20 35
16 15 31
17 16 33
24 20 44
t t
t t
t t
t t
∗
∗ ∗
∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 31
f *2,31 = min
2,31 1,11
2,32 1,21
2,33 1,31
2,34 1,41
21 20 41
17 15 32
16 16 32
15 20 35
t t
t t
t t
t t
∗
∗ ∗
∗ ∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =
⎪ ⎪+ = + =⎪ ⎪⎩ ⎭
= 32
f *2,41 = min
2,41 1,11
2,42 1,21
2,43 1,31
2,44 1,41
28 20 48
24 15 39
15 16 31
12 20 32
t t
t t
t t
t t
∗
∗
∗ ∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 31
• Treći korak (k = 3) – dionica B ⇒ E (tri dionice):
f *3,BE = min { }BC CEt t ∗+
f *3,11 = min
3,11 2,11
3,12 2,21
3,13 2,31
3,14 2,41
12 30 42
15 31 46
21 32 5328 31 59
t t
t t
t t t t
∗ ∗
∗
∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬
+ = + =⎪ ⎪+ = + =⎪ ⎪⎩ ⎭
= 42
f *3,21 = min
3,21 2,11
3,22 2,21
3,23 2,31
3,24 2,41
15 30 45
16 31 47
17 32 49
24 31 55
t t
t t
t t
t t
∗ ∗
∗
∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 45 B2 ⇒ C1
t *3,31 = min
3,31 2,11
3,32 2,21
3,33 2,31
3,34 2,41
21 30 51
17 31 48
16 32 48
15 31 46
t t
t t
t t
t t
∗
∗
∗
∗ ∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 46
f *3,41 = min 3,41 2,11
3,42 2,21
3,43 2,31
3,44 2,41
28 30 5824 31 55
15 32 47
12 31 43
t t t t
t t
t t
∗
∗
∗
∗ ∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 43
• Četvrti korak (k = 4) – dionica C ⇒ E (č etiri dionice):
t *4,AE = min { } AB BEt t ∗+
f *4,11 = min
3,11 3,11
3,12 3,21
3,13 3,31
3,14 3,41
20 42 62
16 45 61
17 46 63
20 43 63
t t
t t
t t
t t
∗
∗ ∗
∗
∗
⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪
+ = + =⎪ ⎪⎩ ⎭
= 61 A1 ⇒ B2
Rezultat: A1 ⇒ B2 ⇒ C1 ⇒ D1 ⇒ E1 F = 61 NJ
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 40/43
40 Kvantitativne metode
10.3.3 Zadaci
10.4 Dinamika zamjene opreme
Tijekom aktualnog perioda pravovremenim zamjenama opreme treba minimalizirati troš-kove.
10.4.1 Matemati č ki model i rješenje
Funkcija cilja: –minimalizirati troškove korištenja opreme:
F =opt x i
f 0z k = 1, 2, ..., z F-10.15
gdje je: 0z – oznaka recipijenta x i – i-ti dio perioda
Rješenje
Optimalizacija se odvija u koracima:
f t * =opt x i
f x + f t+1 F-10.16
Korake optimalizacije je najlakše razumjeti na temelju slike i sljedećih primjera.
gdje je: t – trenutak vremena (tako je t=35 oznaka vremenskog intervala izmeđ u trenut-
ka vremena t=3 i trenutka vremena t=5 ) x – vremenski interval (tako je x=3 oznaka trećeg vremenskog intervala) si – uvjet specifičan za i-ti period
10.4.2 Primjeri
Primjer P-10.12
Autoservis kupuje novi analizator rada motora za C N = 1000 € i treba optimalizirati dina-
miku zamjene opreme tijekom pet godina korištenja. Troškovi su održavanja analizatora (T O,i) po godinama: 60 € u prvoj, 80 € u drugoj i 120 € u trećoj. Analizator se smije koristiti 3 go-dine, a isporučitelj plaća za vraćeni analizator (C P,i) 800 € nakon jedne godine dana njegovogkorištenja, 600 € nakon dvije i 500 € nakon tri.
Funkcija cilja: F = f 05 min
kis
Funkcije ograničenja: f x,i = C N + T O,i – C P,i
(cijena vraćenog analizatora C P,i umanjuje troškove te je stoga negativna)
0 ≤ x i ≤ 3
C N = 1000 €
T O,1 = 60 € T O,2 = 80 € T O,3 = 120 €C P,1 = 800 € C P,2 = 600 € C P,3 = 500 €
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 41/43
10. Dinamičko programiranje 41
Rješenje:
1. Koraci raspodjele:
• Prvi korak (k = 1) ( zadnja godina) – od početka do kraja pete godine:f *45,1i =
min1is { }N O,i P,iC T C + −
• Drugi korak (k = 2 ) (dvije zadnje godine) – od početka četvrte do kraja pete go-dine:
f *35,2i =min
2is ( ){ }N O,i P,i 45,2iC T C f ∗+ − +
• Treći korak (k = 3) (tri zadnje godine) – od početka treće do kraja pete godine:
f *25,3i =
min3is ( ){ }N O,i P,i 35,3iC T C f
∗
+ − +
• Četvrti korak (k = 4) (č etiri zadnje godine) – od početka druge do kraja pete go-dine:
f *15,4i =min
4is ( ){ }N O,i P,i 25,4iC T C f ∗+ − +
• Peti korak (k = 5 ) ( pet godina) – od početka prve do kraja pete godine:
f *05,5i =mi
n
5is ( ){ }N O,i P,i 15,5iC T C f ∗+ − +
Moguće su kombinacije:
2. Prvi korak ( zadnja godina):
f *45,1i =min
1is { }N O,i P,iC T C + −
f *45,1i =mi
n
1is
45,11
45,12
45,13
1000 60 800 26080 600 520
120 500 380
f f f
⎧ ⎫= + − =⎪ ⎪= − = −⎨ ⎬⎪ ⎪= − = −⎩ ⎭
V
V
V
=– 520
1. red: s11 – kupuje se nov analizator (trošak, + 1000 € ), održava tijekom prve godine(trošak, + 60 € ) i vraća proizvođaču analizatora nakon jedne godine korištenja(trošak = – prihod, – 800 € )
2. red: s12 – zadržani se analizator održava u drugoj godini (80 € ) i vraća proizvođačunakon dvije godine korištenja ( – 600 € )
3. red: s13 – zadržani se analizator održavanje u trećoj godini (120 € ) i vraća proizvo-đaču nakon tri godine korištenja ( – 500 € )
3. Drugi korak (dvije zadnje godine):
f *35,2i =min
2is ( ){ }N O,i P,i 45,2iC T C f ∗
+ − +
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 42/43
42 Kvantitativne metode
f *35,2i =mi
= – 300n
2is
35,21 45,11
35,22 45,12
35,23 45,11
35,24 45,13
35,25 45,11
35,
1000 60 800 260 260 520520
1000 60 1060 520 540
80 600 520 260 260300
80 80 380 300
120 500 380 260 120
f f f f
f f f f
f f f
= + − + = + =⎧ ⎫ =⎨ ⎬= + + = − =⎩ ⎭= − + = − + = −⎧ ⎫ = −⎨ ⎬= + = − = −
⎩ ⎭= − + = − + = −
VV
Z
VZ
Z
V
26 45,11
120120 120 260 380f
⎧ ⎫⎪ ⎪⎪ ⎪⎪ ⎪⎨ ⎬
⎪ ⎪⎧ ⎫⎪ ⎪= −⎨ ⎬= + = + =⎪ ⎪⎩ ⎭⎩ ⎭V
Z
1. red: s21 – kupuje se nov analizator (1000), održava tijekom prve godine (60) i vraćanakon jedne godine korištenja ( – 800), čemu se dodaje f *45,11 (s11 – analizator
je vraćen i mora biti kupljen nov za sljedeću godinu)
2. red: s22 – kupuje se nov analizator (1000) i održava tijekom prve godine (60), čemuse dodaje f *45,12 (s12 – kako je analizator korišten jednu godinu i zadržan, dana
u sljedećoj su godini troškovi održavanja T O,2)
3. red: s23 – zadržan je analizator star jednu godinu, održava se u drugoj (80) i vrati
proizvođaču nakon dvije godine korištenja ( – 600),
čemu se dodaje f *45,11 (s11 – analizator je vraćen i mora biti kupljen nov za sljedeću godinu)
4. red: s24 – zadržan je analizator star jednu godinu i održava se u drugoj (80), čemuse dodaje f *45,13 (s13 – kako je analizator korišten dvije godine u sljedećoj su
troškovi održavanja T O,3)
5. red: s25 – zadržan je analizator star dvije godinu, održava se u trećoj (120) i vraća proizvođaču nakon tri godine korištenja ( – 500), čemu se dodaje f *45,11 (s11 –
analizator je vraćen i mora biti kupljen nov za sljedeću godinu)
6. red: s26 – zadržan je analizator star dvije godinu i održava se u trećoj (120), čemu sedodaje f *45,11 (s11 –analizator nije vraćen, ali se ne smije ni koristiti nakon tri
godine i mora biti kupljen nov za sljedeću godinu)
4. Treći korak (tri zadnje godine):
f *25,3i =min
3is ( ){ }N O,i P,i 35,3iC T C f ∗+ − +
f *25,3i = = – 40min
3is
25,31 35,21
25,32 35,24
25,33 35,21
25,34 35,25
25,35 35,21
25,36
1000 60 800 260 520 780760
1000 60 1060 300 760
80 600 520 520 040
80 80 120 40
120 500 380 520 140120
f f f f
f f f f
f f f
= + − + = + =⎧ ⎫ =⎨ ⎬= + + = − =⎩ ⎭= − + = − + =⎧ ⎫ = −⎨ ⎬= + = − = −⎩ ⎭
= − + = − + ==
VZ
Z
VZ
Z
V
35,21
140120 520 640f
⎧ ⎫⎪ ⎪⎪ ⎪⎪ ⎪⎨ ⎬⎪ ⎪
⎧ ⎫⎪ ⎪=⎨ ⎬+ = + =⎪ ⎪⎩ ⎭⎩ ⎭V
Z
5.
Četvrti korak (č etiri zadnje godine):
f *15,4i =min
4is ( ){ }N O,i P,i 25,4iC T C f ∗+ − +
f *15,4i =mi
n
4is
15,41 25,11
15,42 25,12
15,43 25,11
15,44 25,13
15,45 25,11
3
1000 60 800 260 760 10201020
1000 60 1060 40 1020
80 600 520 760 240220
80 80 140 220
120 500 380 760 380
f f f f
f f f f
f f f
= + − + = + =⎧ ⎫ =⎨ ⎬= + + = − =⎩ ⎭= − + = − + =⎧ ⎫ =⎨ ⎬= + = + =⎩ ⎭
= − + = − + =
VViliZ
Z
VZ
Z
V
5,46 25,11
380120 120 760 880f
⎧ ⎫⎪ ⎪⎪ ⎪⎪ ⎪⎨ ⎬⎪ ⎪
⎧ ⎫⎪ ⎪=⎨ ⎬= + = + =⎪ ⎪⎩ ⎭⎩ ⎭V
Z
= – 300
6. Peti korak ( pet godina):
f *05,5i = mi n5is ( ){ }N O,i P,i 15,5iC T C f ∗
+ − +
7/30/2019 10 Dinamicko programiranje
http://slidepdf.com/reader/full/10-dinamicko-programiranje 43/43
10. Dinamičko programiranje 43
f *05,5i = = 1280min
5is
05,51 15,41
05,52 15,43
1000 60 800 260 1020 12801000 60 1060 220 1280
f f f f
= + − + = + =⎧ ⎫⎨ ⎬= + + = + =⎩ ⎭
V
Z
Analizator se mora kupiti za prvu godinu (10 000), održavati tijekom prve godine (600) i potom vratiti (1. red ) ili zadržati (2. red ).
Rezultat: (novi analizatori) 0, 1, 2, 50, 1, 4, 50, 3, 4, 5
F = 1280 €
10.4.3 Zadaci
Literatura
1. Art Lew A., Mauch H.; Dynamic Programming – A Computational Tool; Springer,Berlin, D, 2007., 379 p; ISBN 3540370137.
2. Sinnott R.K.; Chemical Engineering, Volume 6, Chemical Engineering Design, Thirdedition; Butterworth-Heinemann, Oxford, GB, 1999., 10454 p, ISBN 0750641428.
3. Bellman R.; Dynamic Programming; Princton University, Princeton, US, 1957., 342 p;ISBN 069107951X (sixth printing 1972.)
4. Winston W. L.; Operations Research – Applications and Algorithms, Third edition;Duxbury, Belmont, USA, 1994., 1372 p; ISBN 0534209718.
5. Stoecker W.F.; Design of Thermal Systems, Third edition; McGraw-Hill, New York,
USA, 1989., 565 s; ISBN 0070616205.6. Petrić J., Kojić Z., Šarenac L.; Operaciona istraživanja – Zbirka rešenih zadataka,
knjiga I, 4. izdanje; Naučna knjiga, Beograd, Srb, 1988., 529 s; ISBN 8623040222.