43
7/30/2019 10 Dinamicko programiranje http://slidepdf.com/reader/full/10-dinamicko-programiranje 1/43  10.  Dinamičko programiranje 10.1 Jednodimenzionalna raspodjela 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 () optimalizacije uzimaju u obzir op- timalna rješenja prethodnog koraka (k–1). * k,j = opt  x  (k,i , * (k–1),(j-i) )} F-10.1 gdje je: * k,j – optimalna vrijednost funkcije cilja u k-tom koraku za x = x  j  k,i   – vrijednost funkcije k-tom koraku za x = x i  * (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 u kojoj mjeri ići u detalje s dodatnim oznakama (na primjer: * (k–1),(j-i) ) – s premalo detalja je matemati čki opis nejasan, s previše detalja odbojno zamršen. U svakom slu čaju, pri učenju različitih postupaka DP-a, na samom početku ne treba gubiti previše vremena na savladavanje matemati čkog formalizma. Nakon što se uradi par primjera sve postaje potpuno jasno.

10 Dinamicko programiranje

Embed Size (px)

Citation preview

Page 1: 10 Dinamicko programiranje

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.

Page 2: 10 Dinamicko programiranje

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.

Page 3: 10 Dinamicko programiranje

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.

Page 4: 10 Dinamicko programiranje

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]

Page 5: 10 Dinamicko programiranje

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

Page 6: 10 Dinamicko programiranje

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

Page 7: 10 Dinamicko programiranje

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

Page 8: 10 Dinamicko programiranje

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

Page 9: 10 Dinamicko programiranje

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.

Page 10: 10 Dinamicko programiranje

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.

Page 11: 10 Dinamicko programiranje

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.

Page 12: 10 Dinamicko programiranje

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

•  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 %%%%% 

Page 13: 10 Dinamicko programiranje

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

Page 14: 10 Dinamicko programiranje

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 

Page 15: 10 Dinamicko programiranje

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

Funkcije ograničenja:3

ii 1

 x =∑  ≤ 12

0 ≤ xi ≤ 6

Page 16: 10 Dinamicko programiranje

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

Page 17: 10 Dinamicko programiranje

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

Page 18: 10 Dinamicko programiranje

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

Page 19: 10 Dinamicko programiranje

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 

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗−

+ = + = + =

+ = + = + =+ = + = + =+ = + = + =+ = + = + =

+ =

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 

∗ ∗−

⎧ ⎫

⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪⎨ ⎬⎪ ⎪⎪ ⎪

+ = + =⎪ ⎪⎪ ⎪+ = + = + =⎩ ⎭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 

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗

−∗ ∗

−∗

+ = + = + =+ = + = + =

+ = + = + =

+ = + = + =+ = + = + =

+ =

D

D

D

DD

D

( )

2,62

2,52, 1 1 6

1050 1050 456 1506

42 6 1512 1512 316 1828

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 

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗−

+ = + = + =+ = + = + =

+ = + = + =+ = + = + =

+ = + = + =+

D

D

D

D

D

D ( )

( )

2,75

22,62, 12 6

1050 1050 626 1676

42 6 1512 1512 456 1968

f f 

∗ ∗−

⎧ ⎫⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪⎨ ⎬⎪ ⎪⎪ ⎪

= + = + =⎪ ⎪⎪ ⎪+ = + = + =⎩ ⎭D

 

Page 20: 10 Dinamicko programiranje

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.

Page 21: 10 Dinamicko programiranje

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]

Page 22: 10 Dinamicko programiranje

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 ∗+  

Page 23: 10 Dinamicko programiranje

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 

Page 24: 10 Dinamicko programiranje

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

Page 25: 10 Dinamicko programiranje

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:

Page 26: 10 Dinamicko programiranje

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

Page 27: 10 Dinamicko programiranje

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]

Page 28: 10 Dinamicko programiranje

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.

Page 29: 10 Dinamicko programiranje

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 

– 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 

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.

Page 30: 10 Dinamicko programiranje

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 

Page 31: 10 Dinamicko programiranje

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

Page 32: 10 Dinamicko programiranje

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

Page 33: 10 Dinamicko programiranje

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

Page 34: 10 Dinamicko programiranje

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 

Page 35: 10 Dinamicko programiranje

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

Page 36: 10 Dinamicko programiranje

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

Page 37: 10 Dinamicko programiranje

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 

Page 38: 10 Dinamicko programiranje

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.

Page 39: 10 Dinamicko programiranje

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 

Page 40: 10 Dinamicko programiranje

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 €

Page 41: 10 Dinamicko programiranje

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  ∗

+ − +  

Page 42: 10 Dinamicko programiranje

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  ∗

+ − +  

Page 43: 10 Dinamicko programiranje

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.