43
10. Dinamičko programiranje 10.1 Jednodimenzionalna raspodjela 3 10.1.1Matematički model i rješenje 4 10.1.2Primjeri 4 10.1.3Zadaci 24 10.2 Višedimenzionalna raspodjela 29 10.2.1Matematički model i rješenje 29 10.2.2Primjeri 30 10.2.3Zadaci 32 10.3 Najkraći put 32 10.3.1Matematički model i rješenje 32 10.3.2Primjeri 32 10.3.3Zadaci 32 10.4 Dinamika zamjene opreme 40 10.4.1Matematički model i rješenje 40 10.4.2Primjeri 40 10.4.3Zadaci 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 j 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 u kojoj mjeri ići u detalje s dodatnim oznakama (na primjer: f* (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. Dinamičko programiranje - ffri.hrzvonimir/Kvantitativne/10 Dinamicko programiranje.pdf · 10. Dinamičko programiranje . 10.1 Jednodimenzionalna raspodjela 3 10.1.1 Matematički

  • Upload
    trantu

  • View
    221

  • Download
    0

Embed Size (px)

Citation preview

10. Dinamičko programiranje

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

jx {ϕ(fk,i , f*(k–1),(j-i))} F-10.1

gdje je: f*k,j – optimalna vrijednost funkcije cilja u k-tom koraku za x = xj fk,i – vrijednost funkcije k-tom koraku za x = xi 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 u kojoj mjeri ići u detalje s dodatnim oznakama (na primjer: f*(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.

2 Kvantitativne metode

Temelj je DP-a rekurzija funkcije fi (en. recur – ponavljanje): 1. određuje se vrijednosti f0 – „temeljni slučaj“ 2. izračunava vrijednost f1 , uz korištenje prethodno izračunate vrijednosti f0 – „pra-

vilo rekurzije“ 3. ponavlja se korak 2. (izračunavajući fk uz korištenje fk-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! = 1 2 … (n–1) n

1. korak: 1! = 1

2. korak: 2! = 2 1! = 2 1 = 2

3. korak: 3! = 3 2! = 3 2 = 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: f1,1 = 1 (temeljni slučaj) 2. korak: f2,2 = 2 f1,1 (pravilo rekurzije)

fk,j = j f(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 i

kaž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šta

tvornice 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.

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 ulja vrać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ća u 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čki formalizirano opisan. U sva tri slučaja korištena je rekurzija funcije, ali, razrada općeg izraza F-10.1 u rješavanju P-10.2 i P-10.3 nema smisla – gubi se više vremena na matematički opis nego 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 se u 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 oblastima računalne inteligencije [1].

U ovoj su knjizi obrađena četiri relativno jednostavna formalna postupaka DPa, koji se mogu 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 Ri (en. Recipient – primalac), uz zadana manje ili više specifična ograničenja.

4 Kvantitativne metode

10.1.1 Matematički model i rješenje Funkcija cilja: – raspoloživi resurs S optimalno raspodijeliti na recipijente Ri

F = optix

i

m

i 1xf

=

⎧ ⎫⎨ ⎬⎩ ⎭∑ =

i

m

i 1xf ∗

=∑ F-10.2

gdje je: i – oznaka recipijenta – rezultat raspodjele resursa S na recipijente Ri

ixf

– optimalni rezultat raspodjele resursa S na recipijente Ri ixf ∗

xi – dio resursa S koji se dodjeljuje recipijentu Ri

Funkcije ograničenja: ≤ S F-10.3

ixg

gdje je: gi – ograničenje resursa S koji se može dodijeliti recipijentima Ri xi,min ≤ xi ≤ xi,max F-10.4 gdje je: xi,min/xi,max – dozvoljena minimalna/maksimalna vrijednost xi xj ∈ F-10.5

gdje je: – skup prirodnih brojeva.

Rješenje Raspodjela se odvija u koracima koji se opisuju izrazom:

f*k,j = min max

optj, j j,x x x≤ ≤ { }j jk-1,( j )xf f ∗ −+ F-10.6

gdje je: k – oznaka koraka

U 1. koraku (k = 1) se 1. recipijentu dodjeljuje dio resursa x*1 za koji fk,,j (F-10.06) ima optimalnu (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. U drugom koraku (k = 2) uzimaju se u obzir optimalne vrijednosti raspodjela u prvom koraku f*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 1xf ∗

=∑ =

i

m

i 1x

f ∗

=∑ F-10.7

gdje su: ∗i – dijelovi resursa S čijim se dodjeljivanjem recipijentima Ri 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]

10. Dinamičko programiranje 5

Kako bi se skratili zapisi, usvaja se novčana jedinica NJ = 100 kn.

Funkcija cilja: F = maxix { }1 2 34 5 2x x x+ +

Korektnost postavke funkcije cilja dobro je provjeriti dimenzionalnom analizom:

[F] = NJ NJtok = ardan tokar dan

[xi] = 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 = max10 5x≤ ≤ { }14 x

• Drugi korak (k = 2) (prvi i drugi pogon) – dodjela djela tokara pogonu B (i = 2):

f*2,j = max20 5x≤ ≤ ( ){ }22 1, j5 xx f ∗ −+

• Treći korak (k = 3) (sva tri pogona) – dodjela djela tokara pogonu C (i = 3):

f*3,,j = max30 5x≤ ≤ ( ){ }33 2, j2 xx f ∗ −+

2. Prvi pogon: • za 0 ≤ j ≤ 5 (slobodni strojevi):

f*1,j = max10 5x≤ ≤ { }14 x = 4 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 = max16 8x≤ ≤ { }14 x = 4◦5 = 20

j 0 1 2 3 4 5 6 7 8 x1 0 1 2 3 4 5 5 5 5 f*1,,j 0 4 8 12 16 20 20 20 20

6 Kvantitativne metode

3. Prvi i drugi pogon:

f*2,j = max20 5x≤ ≤ ( ){ }22 1, j5 xx f ∗ −+

Dio se tokara dodjeljuju pogonu B i izračunavaju parcijalne dobiti: x25

Tome se dodaju optimumi dobiti za dodjele preostalih tokara pogonu A, što je već izračunato u prethodnom koraku: ( )xf ∗ − 21, j

Na samom početku, ne dodjeljuje se niti jedan tokar (j = 0) te logično nema ni dobiti:

f*2,0 = max2 0x = { }1,(0 0) 1,05 0 0 0 0 0f f∗ ∗

−+ = + = + = = 0

Dalje, dodjeljuje se jedan tokar (j = 1), prvo pogonu A, potom pogonu B i određuje optimum:

f*2,1 = max20 1x≤ ≤

1,(1 0) 1,1

1,(1 1) 1,0

5 0 0 0 4 45 1 5 5 0 5

f ff f

∗ ∗−

∗ ∗ ∗−

⎧ ⎫+ = + = + =⎨ ⎬+ = + = + =⎩ ⎭

= 5

Riječima, bolje je dodijeliti tokara pogonu B.

f*2,2 = max20 2x≤ ≤

( )

( )

( )

1,21, 2 0

1,11, 2 1

1,01, 2 2

5 0 0 0 8 85 1 5 5 4 9

5 2 10 10 0 10

f ff f

f f

∗ ∗−

∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎪ ⎪

+ = + = + =⎨ ⎬⎪ ⎪+ = + = + =⎩ ⎭

= 10

f*2,3 = max20 3x≤ ≤

( )

( )

( )

( )

1,31, 3 0

1,21, 3 1

1,11, 3 2

1,01, 3 3

5 0 0 0 12 125 1 5 5 8 13

5 2 10 10 4 145 3 15 15 0 15

f ff f

f ff f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪

+ = + = + =⎪ ⎪⎩ ⎭

= 15

f*2,4 = max20 4x≤ ≤

( )

( )

( )

( )

( )

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 165 1 5 5 12 17

5 2 10 10 8 185 3 15 15 4 19

5 4 20 20 0 20

f ff ff ff f

f f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎨ ⎬⎪ ⎪+ = + = + =⎪ ⎪

+ = + = + =⎪ ⎪⎩ ⎭

= 20

f*2,5 = max20 5x≤ ≤

( )

( )

( )

( )

( )

( )

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 205 1 5 5 16 21

5 2 10 10 12 225 3 15 15 8 235 4 20 20 4 245 5 25 25 0 25

f ff f

f ff ff ff f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗ ∗−

⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪

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

= 25

f*2,6 = max20 6x≤ ≤

( )

( )

( )

( )

( )

( )

( )

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 205 1 5 5 20 25

5 2 10 10 16 265 3 15 15 12 275 4 20 20 8 285 5 25 25 4 295 5 25 25 0 25

f ff f

f ff ff ff ff f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

⎧ + = + = + =⎪ + = + = + =

+ = + = + =+ = + = + =⎨+ = + = + =+ = + = + =+ = + = + =

⎫⎪

⎪ ⎪⎪ ⎪⎪ ⎪

⎬⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪⎩ ⎭

= 29

10. Dinamičko programiranje 7

* U sedmom redu raspodjele f2,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 parcijalna dobit 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 f2,7 i f2,8:

f*2,6 = max20 5x≤ ≤

( )

( )

( )

( )

( )

( )

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 205 1 5 5 20 25

5 2 10 10 20 265 3 15 15 16 275 4 20 20 12 285 5 25 25 8 29

f ff f

f ff ff ff f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪

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

= 29

f*2,7 = max20 5x≤ ≤

( )

( )

( )

( )

( )

( )

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 205 1 5 5 20 25

5 2 10 10 20 305 3 15 15 16 315 4 20 20 12 325 5 25 25 8 33

f ff f

f ff ff ff f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪

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

= 33

f*2,8 = max20 5x≤ ≤

( )

( )

( )

( )

( )

( )

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 205 1 5 5 20 25

5 2 10 10 20 305 3 15 15 20 355 4 20 20 16 365 5 25 25 12 37

f ff f

f ff ff ff f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪

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

= 37

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 x2 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 = max30 5x≤ ≤ ( ){ }33 2, j2 xx f ∗ −+

Dio se tokara dodjeljuju pogonu C i izračunavaju parcijalne dobiti: x32

Tome se dodaju optimumi dobiti za dodjele preostalih tokara pogonima A i B, što je već izra-čunato u prethodnom koraku: ( )xf ∗ − 32, j

Na samom početku, ne dodjeljuje se niti jedan tokar (j = 0) te logično nema ni dobiti:

f*3,0 = max3 0x = ( ){ }2,02, 0 02 0 0 0 0 0f f∗ ∗

−+ = + = + = = 0

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 1x≤ ≤

( )

( )

2,12, 1 0

2,02, 1 1

2 0 0 0 5 52 1 2 2 0 0

f ff f

∗ ∗−

∗ ∗−

∗⎧ ⎫+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪⎩ ⎭

= 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 2x≤ ≤

( )

( )

( )

2,22, 2 0

2,12, 2 1

2,02, 2 2

2 0 0 0 10 102 1 2 2 5 72 2 4 4 0 4

f ff ff f

∗ ∗ ∗−

∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎪ ⎪

+ = + = + =⎨ ⎬⎪ ⎪+ = + = + =⎩ ⎭

= 10

f*3,3 = max30 4x≤ ≤

( )

( )

( )

( )

2,32, 3 0

2,22, 3 1

2,12, 3 2

2,02, 3 3

2 0 0 0 15 152 1 2 2 10 122 2 4 4 5 92 3 6 6 0 6

f ff f

f ff f

∗ ∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪

+ = + = + =⎪ ⎪⎩ ⎭

= 15

f*3,4 = max30 4x≤ ≤

( )

( )

( )

( )

( )

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 202 1 2 2 15 172 2 4 4 10 142 3 6 6 5 112 4 8 8 0 8

f ff ff ff ff f

∗ ∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎨ ⎬⎪ ⎪+ = + = + =⎪ ⎪

+ = + = + =⎪ ⎪⎩ ⎭

= 20

f*3,5 = max30 5x≤ ≤

( )

( )

( )

( )

( )

( )

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 252 1 2 2 20 222 2 4 4 15 192 3 6 6 10 162 4 8 8 5 13

2 5 10 10 0 10

f ff ff ff ff f

f f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪

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

= 25

f*3,6 = max30 5x≤ ≤

( )

( )

( )

( )

( )

( )

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 292 1 2 2 25 272 2 4 4 20 242 3 6 6 15 212 4 8 8 10 182 5 10 10 5 15

f ff ff ff ff ff f

∗ ∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪

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

= 29

f*3,7 = max30 5x≤ ≤

( )

( )

( )

( )

( )

( )

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 312 2 4 4 25 292 3 6 6 20 262 4 8 8 15 23

2 5 10 10 10 20

f ff ff ff ff f

f f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪

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

= 33

f*3,8 = max30 5x≤ ≤

( )

( )

( )

( )

( )

( )

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 372 1 2 2 33 352 2 4 4 29 332 3 6 6 25 312 4 8 8 20 28

2 5 10 10 15 25

f ff ff ff ff f

f f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪

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

= 37

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 x2 0 1 2 3 4 5 5 5 5

f*2,j 0 5 10 15 20 25 29 33 37 x3 0 0 0 0 0 0 0 0 0

f*3,j 0 5 10 15 20 25 29 33 37

5. Rezultat: x1 = 3 x2 = 5 x3 = 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 x2 = 5 x3 = 3 x3 = 0 Do rješenja se moglo doći i heuristički – što je moguće više tokara dodijeliti pogonu B (2) s najvećim koeficijentom dobiti (d2), ostatak pogonu A (1) s prvim manjim koeficijentom (d1). Naime, funkcija cilja se mogla napisati i u obliku:

F = maxix D = max

ix = m

ii 1

d x=∑ { }i

maxix 1 2 34 5 2x x x+ +

gdje su: di – 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.

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.

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 s matricama, bez računalne podrške.

Pregled konačnih rezultata: OptimRez = 37 OptimRas = 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.

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]

xi/(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 = maxix { }D D D+ +1 2 3 NJ/god

Funkcije ograničenja: 3

ii 1

x=∑ ≤ 6 106 kn

0 ≤ xi ≤ 6 106 kn

Rješenje: 1. Koraci raspodjele: • Prvi korak (k = 1) – investiranje u vrstu proizvodnje 1 (i = 1):

f*1,j = max10 6x≤ ≤ { }D1

• Drugi korak (k = 2) (prva i druga vrsta proizvodnje) – investiranje u vrstu proiz-vodnje 2 (i = 2):

f*2,j = max20 6x≤ ≤ ( ){ }xD f ∗ −+

22 1, j

• Treći korak (k = 3) (sve tri vrste proizvodnje) – investiranje u vrstu proizvodnje 3 (i = 3):

f*3,,j = max30 6x≤ ≤ ( ){ }xD f ∗ −+

33 2, j

Rezultat: x1 = 2 x2 = 4 x3 = 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 %%%%%

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 86 27 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 i redova prethodne tabele.

Pregled konačnih rezultata: OptimRez = 106 OptimRas = 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 razdoblja gradnje 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 i

najviš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 = maxix { }x x+1 28 12 NJ

14 Kvantitativne metode

Funkcije ograničenja: +x x1 22 3 ≤ 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 = max

10 5x≤ ≤ { }x18

Gornja granica promjenljive veličine x1 (objekti tipa A) dobivena je uvrštavanjem x2 = 0 (objekti tipa B) u prvu funkciju ograničenja: +x12 3 0 ≤ 10

• Drugi korak (k = 2) (prvi i drugi pogon) – dodjela djela tokara pogonu B (i = 2):

f*2,j = max20 3x≤ ≤ ( ){ }22 1, j5 xx f ∗ −+

Gornja granica x2 (objekti tipa B) dobivena je uvrštavanjem x1 = 0 (objekti tipa A) u prvu funkciju ograničenja: + x22 0 3 ≤ 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 52 20 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 = 76 OptimRas = 7 3

Na žalost, s programom DPJRMax dobiven je pogrešan rezultat – probijeno je ograničenje x +12 3 0 ≤ 10

10. Dinamičko programiranje 15

Opaske: (a) Korišteni je program dao pogrešan rezultat! Naime, pri izradi programa nije uzeta u

obzir 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 x1 + 3 x2 ≤ 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 znatnoj mjeri 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čitosti funkcija 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 ali uvijek pažljivo provjeriti jesu li dobiveni korektni rezultati.

Slijede točni rezultati prethodnog zadatka, a u prethodnom ispisu tablice izračunavanja se nalaze u 16. i 13. redu. Ograničenja su probijena u 14. redu (12 > 10) i 15. redu (12 > 11). Rezultat:

(a) x1 = 5, x2 = 0 ili x1 = 2, x2 = 2

F = 8 5 + 12 0 = 40 NJ = 40◦1000000 kn = 40000000 kn

(b) x1 = 2, x2 = 2 (uz ograničenje 1 ≤ x1 ≤ 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: Ti = ki◦xi2 (gdje je xi broj proizvedenih strojeva).

Koeficijenti su troškova (ki) za mjesece: II 20 000, za III 34 000 i IV 42 000 kuna. Odrediti optimalni tromjesečni plan proizvodnje ukoliko je tijekom jednog mjeseca moguće proizvesti najviše 6 strojeva. [6, 410. strana] 1 NJ = 1000 kn Funkcija cilja: F = min

ix { }1 2 320 34 42x x x+ +

[F] = 22

NJ NJstmj st mj

=

Funkcije ograničenja: 3

ii 1

x=∑ ≤ 12

0 ≤ xi ≤ 6

16 Kvantitativne metode

Rješenje:

1. Koraci raspodjele: • Prvi korak (k = 1) – proizvodnja u II mjesecu (i = 1):

f*1,j = min10 6x≤ ≤ { }2

120 x

• Drugi korak (k = 2) (prvi i drugi mjesec) – proizvodnja u III mjesecu (i = 2): f*2,j = min

20 6x≤ ≤ ( ){ }xx f ∗ −+2

22 1, j34

• Treći korak (k = 3) (sva tri mjeseca) – proizvodnja u IV mjesecu (i = 3): f*3,j = min

30 6x≤ ≤ ( ){ }xx f ∗ −+3

23 2, j42

2. Prvi mjesec: • za 0 ≤ j ≤ 6 (raspoloživi kapaciteti):

f*1,j = min10 6x≤ ≤ { }2

120 x = 20 j

• za 6 < j ≤ 12 (nema raspoloživih kapaciteta): f*1,j = min

17 1x≤ ≤ 2 { }2120 x = 20 36 = 720

j 0 1 2 3 4 5 6 7 8 9 10 11 12 x1 0 1 2 3 4 5 6 6 6 6 6 6 6 f1,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 = min

20 6x≤ ≤ ( ){ }xx f ∗ −+2

22 1, j34

f*2,0 = min2 0x = { }2

1,(0 0) 1,034 0 0 0 0 0f f∗ ∗ ∗−+ = + = + = = 0

f*2,1 = min20 1x≤ ≤

21,(1 0) 1,1

21,(1 1) 1,0

34 0 0 0 20 2034 1 34 34 0 34

f ff f

∗ ∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎨ ⎬+ = + = + =⎩ ⎭

= 20

f*2,2 = = 54 min20 2x≤ ≤

( )

( )

( )

21,21, 2 0

21,11, 2 1

21,01, 2 2

34 0 0 0 80 8034 1 34 34 20 54

34 2 136 136 0 136

f ff ff f

∗ ∗−

∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎪ ⎪

+ = + = + =⎨ ⎬⎪ ⎪+ = + = + =⎩ ⎭

f*2,3 = = 114 min20 3x≤ ≤

( )

( )

( )

( )

21,31, 3 0

21,21, 3 1

21,11, 3 2

21,01, 3 3

34 0 0 0 180 18034 1 34 34 80 114

34 2 136 136 20 15634 3 306 306 0 306

f ff ff ff f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪

+ = + = + =⎪ ⎪⎩ ⎭

10. Dinamičko programiranje 17

f*2,4 = = 214 min20 4x≤ ≤

( )

( )

( )

( )

( )

21,41, 4 0

21,31, 4 1

21,21, 4 2

21,11, 4 3

21,01, 4 4

34 0 0 0 320 32034 1 34 34 180 21434 2 136 136 80 21634 3 306 306 20 32634 4 544 544 0 544

f ff ff ff ff f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎨ ⎬⎪ ⎪+ = + = + =⎪ ⎪

+ = + = + =⎪ ⎪⎩ ⎭

f*2,5 = min20 5x≤ ≤

( )

( )

( )

( )

( )

( )

21,51, 5 0

21,41, 5 1

21,31, 5 2

21,21, 5 3

21,11, 5 4

21,01, 5 5

34 0 0 0 500 50034 1 34 34 320 354

34 2 136 136 180 31634 3 306 306 80 38634 4 544 544 20 56434 5 850 850 0 85

f ff f

f ff ff ff f

∗ ∗−

∗ ∗−

∗ ∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

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

+ = + = + =+ = + = + =+ = + = + =+ = + = + = 0

⎧ ⎫⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪⎨ ⎬⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪⎩ ⎭

= 316

f*2,6 = = 456 min20 6x≤ ≤

( )

( )

( )

( )

( )

( )

21,61, 6 0

21,51, 6 1

21,41, 6 2

21,31, 6 3

21,21, 6 4

21,11, 6 5

34 0 0 0 720 72034 1 34 34 500 534

34 2 136 136 320 45634 3 306 306 180 48634 4 544 544 80 62434 5 850 850 20

f ff f

f ff ff ff f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

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

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

( )2

1,01, 6 6

87034 6 1224 1224 0 1224f f∗ ∗

⎧ ⎫⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪⎨ ⎬⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪+ = + = + =⎩ ⎭

f*2,7 = = 626 min20 7x≤ ≤

( )

( )

( )

( )

( )

( )

21,71, 7 0

21,61, 7 1

21,51, 7 2

21,41, 7 3

21,31, 7 4

21,21, 7 5

34 0 0 0 720 72034 1 34 34 720 754

34 2 136 136 500 63634 3 306 306 320 62634 4 544 544 180 72434 5 850 850 80

f ff f

f ff ff ff f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

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

( )

( )

21,11, 7 6

21,01, 7 7

93034 6 1224 1224 20 122434 7 1666 1666 0 1666

f ff f

∗ ∗−

∗ ∗−

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

=⎪ ⎪⎪ ⎪+ = + = + =⎪ ⎪

+ = + = + =⎪ ⎪⎩ ⎭

* U prvom redu raspodjele f1,7 i posljednjem redu raspodjele f2,7 se planira proizvesti 7 stroje-va, a kapaciteti dozvoljavaju maksimalno proizvesti 6 strojeva (ograničenje 0 ≤ xi ≤ 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 = = 806 min22 6x≤ ≤

( )

( )

( )

( )

( )

21,61, 8 2

21,51, 8 3

21,41, 8 4

21,31, 8 5

21,21, 8 6

34 2 136 136 720 85634 3 306 306 500 80634 4 544 544 320 86434 5 850 850 180 103034 6 1244 1244 80 1304

f ff ff ff ff f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎨ ⎬⎪ ⎪+ = + = + =⎪ ⎪

+ = + = + =⎪ ⎪⎩ ⎭

f*2,9 = min23 6x≤ ≤ = 1026

( )

( )

( )

( )

21,61, 9 3

21,51, 9 4

21,41, 9 5

21,31, 9 6

34 3 0 306 720 102634 4 544 544 500 104434 5 850 850 320 1170

34 6 1224 1224 180 1404

f ff ff f

f f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪

+ = + = + =⎪ ⎪⎩ ⎭

f*2,10 = min24 6x≤ ≤ = 1264

( )

( )

( )

21,61, 10 4

21,51, 10 5

21,41, 10 6

34 4 544 544 720 126434 5 850 850 500 1350

34 6 1224 1224 320 1544

f ff f

f f

∗ ∗−

∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎪ ⎪

+ = + = + =⎨ ⎬⎪ ⎪+ = + = + =⎩ ⎭

18 Kvantitativne metode

f*2,11 = min25 6x≤ ≤ = 1570

21,(11 5) 1,1

21,(11 6) 1,0

34 5 850 850 720 157034 6 1224 1224 500 1724

f ff f

∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎨ ⎬+ = + = + =⎩ ⎭

f*2,11 = { } = 1944 min2 6x = f f∗ ∗

−+ = + = + =21,(12 6) 1,634 6 1224 1224 720 1944

j 0 1 2 3 4 5 6 7 8 9 10 11 12 x1 0 1 1 2 3 3 4 4 5 6 6 6 6 f1,j 0 20 20 80 180 180 320 320 500 720 720 720 720 x2 0 0 1 1 1 2 2 3 3 3 4 5 6 f2,j 0 20 54 114 214 316 456 626 806 1026 1264 1570 1944

4. Sva tri mjeseca:

f*3,j = min30 6x≤ ≤ ( ){ }xx f ∗ −+

3

23 2, j42

f*3,0 = min3 0x = { }f f∗ ∗

−+ = + = + =22,(0 0) 2,042 0 0 0 0 0 = 0

f*3,1 = min30 1x≤ ≤

22,(1 0) 2,1

22,(1 1) 2,0

42 0 0 0 20 2042 1 42 42 0 42

f ff f

∗ ∗−

∗ ∗−

∗⎧ ⎫+ = + = + =⎨ ⎬+ = + = + =⎩ ⎭

= 20

f*2,3 = = 54 min30 2x≤ ≤

( )

( )

( )

22,21, 2 0

22,11, 2 1

22,01, 2 2

42 0 0 0 54 5442 1 42 42 20 62

42 2 168 168 0 168

f ff f

f f

∗ ∗−

∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎪ ⎪

+ = + = + =⎨ ⎬⎪ ⎪+ = + = + =⎩ ⎭

f*3,3 = = 96 min30 3x≤ ≤

( )

( )

( )

( )

22,32, 3 0

22,22, 3 1

22,12, 3 2

22,02, 3 3

42 0 0 0 114 11442 1 42 42 54 96

42 2 168 168 20 18842 3 378 378 0 378

f ff f

f ff f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎨ ⎬+ = + = + =⎪ ⎪

+ = + = + =⎪ ⎪⎩ ⎭

f*3,4 = = 156 min30 4x≤ ≤

( )

( )

( )

( )

( )

22,42, 4 0

22,32, 4 1

22,22, 4 2

22,12, 4 3

22,02, 4 4

42 0 0 0 214 21442 1 42 42 114 15642 2 168 168 54 22242 3 378 378 20 39842 4 672 672 0 672

f ff ff ff ff f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

⎧ ⎫+ = + = + =⎪ ⎪+ = + = + =⎪ ⎪⎪ ⎪+ = + = + =⎨ ⎬⎪ ⎪+ = + = + =⎪ ⎪

+ = + = + =⎪ ⎪⎩ ⎭

f*3,5 = = 256 min30 5x≤ ≤

( )

( )

( )

( )

( )

( )

22,52, 5 0

22,42, 5 1

22,32, 5 2

22,22, 5 3

22,12, 5 4

22,02, 5 5

42 0 0 0 316 31642 1 42 42 214 256

42 2 168 168 114 28242 3 378 378 54 43242 4 672 672 20 692

42 5 1050 1050 0

f ff ff ff ff f

f f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

+ = + = + =+ = + = + =+ = + = + =+ = + = + =+ = + = + =+ = + = + = 1050

⎧ ⎫⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪⎨ ⎬⎪ ⎪⎪ ⎪⎪ ⎪⎪ ⎪⎩ ⎭

f*3,6 = = 358 min30 6x≤ ≤

( )

( )

( )

( )

( )

( )

22,62, 6 0

22,52, 6 1

22,42, 6 2

22,32, 6 3

22,22, 6 4

22,12, 6 5

42 0 0 0 456 45642 1 42 42 316 358

42 2 168 168 214 38242 3 378 378 114 49242 4 672 672 54 726

42 5 1050 1050 2

f ff ff ff ff f

f f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

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

+ = + = +

( )2

2,02, 6 6

0 107042 6 1512 1512 0 1512f f∗ ∗

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

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

10. Dinamičko programiranje 19

f*3,7 = min30 6x≤ ≤

( ) ( )( ) ( )

( ) ( )( ) ( )( ) ( )( ) ( )

22 2

22 2

22 2

22 2

22 2

22 2

2

42 0 7 0 0 7 0 626 62642 1 7 1 42 6 42 456 498

42 2 7 2 168 5 168 316 48442 3 7 3 378 4 378 214 59242 4 7 4 672 3 672 114 786

42 5 7 5 1050 2 1050 54 110442 6

f ff f

f ff ff f

f f

∗ ∗

∗ ∗

∗ ∗

∗ ∗

∗ ∗

∗ ∗

+ − = + = + =+ − = + = + =

+ − = + = + =+ − = + = + =+ − = + = + =+ − = + = + =

( ) ( )2 27 6 1512 1 1512 20 1532f f∗ ∗

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

+ − = + = + =⎪ ⎪⎩ ⎭

= 484

f*3,8 = = 624 min30 6x≤ ≤

( )

( )

( )

( )

( )

( )

22,82, 8 0

22,72, 8 1

22,62, 8 2

22,52, 8 3

22,42, 8 4

22,32, 8 5

42 0 0 0 806 80642 1 42 42 626 668

42 2 168 168 456 62442 3 378 378 316 69442 4 672 672 214 886

42 5 1050 1050

f ff f

f ff ff f

f f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

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

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

+ = + = +

( )2

2,22, 8 6

114 116442 6 , 1512 1512 54 1566f f∗ ∗

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

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

f*3,9 = = 794 min30 6x≤ ≤

( )

( )

( )

( )

( )

( )

22,92, 9 0

22,82, 9 1

22,72, 9 2

22,62, 9 3

22,52, 9 4

22,42, 9 5

42 0 0 0 1026 102642 1 42 42 806 848

42 2 168 168 626 79442 3 378 378 456 83442 4 672 672 316 988

42 5 1050 105

f ff f

f ff ff f

f f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

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

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

+ = + =

( )2

2,32, 9 6

0 214 126442 6 1512 1512 114 1626f f∗ ∗

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

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

f*3,10 = = 974 min30 6x≤ ≤

( )

( )

( )

( )

( )

( )

22,102, 10 0

22,92, 10 1

22,82, 10 2

22,72, 10 3

22,62, 10 4

22, 10 5

42 0 0 0 1264 126442 1 42 42 1026 1068

42 2 168 168 806 97442 3 378 378 626 100442 4 672 672 456 1128

42 5 105

f ff ff ff ff f

f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗−

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

( )

2,52

2,42, 10 6

0 1050 316 136642 6 1512 1512 214 1726

ff f

∗ ∗−

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

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

f*3,11 = = 1184 min30 6x≤ ≤

( )

( )

( )

( )

( )

( )

22,112, 11 0

22,102, 11 1

22,92, 11 2

22,82, 11 3

22,72, 11 4

22, 11 5

42 0 0 0 1570 157042 1 42 42 1264 1306

42 2 168 168 1026 119442 3 378 378 806 118442 4 672 672 626 1298

42 5

f ff f

f ff ff f

f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗−

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

( )

2,62

2,52, 11 6

1050 1050 456 150642 6 1512 1512 316 1828

ff f

∗ ∗−

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

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

f*3,12 = = 1404 min30 6x≤ ≤

( )

( )

( )

( )

( )

22,122, 12 0

22,112, 12 1

22,102, 12 2

22,92, 12 3

22,82, 12 4

22, 12

42 0 0 0 1944 194442 1 42 42 1570 1612

42 2 168 168 1264 143242 3 378 378 1026 140442 4 672 672 806 1478

42 5

f ff f

f ff ff f

f

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗ ∗−

∗−

+ = + = + =+ = + = + =+ = + = + =+ = + = + =+ = + = + =+ ( )

( )

2,752

2,62, 12 6

1050 1050 626 167642 6 1512 1512 456 1968

ff f

∗ ∗−

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

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

20 Kvantitativne metode

j 0 1 2 3 4 5 6 7 8 9 10 11 12 x1 0 1 1 1 2 3 3 3 4 4 5 5 6 f1,j 0 20 20 20 80 180 180 180 320 320 500 500 720 x2 0 0 1 1 1 1 2 2 2 3 3 3 3 f2,j 0 20 54 54 114 214 316 316 456 626 806 806 1026 x3 0 0 0 1 1 1 1 2 2 2 2 3 3 f3,j 0 20 54 96 156 256 368 484 624 794 974 1184 1404

5. Rezultat: x1 = 6 x2 = 3 x3 = 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

x2 = 5 x3 = 3 x3 = 0

F ≠ 20◦36 + 34◦36 + 42◦0 = 2124 NJ/dan Prema tome, do rezultata se nije moglo doći jednostavnom usporedbom koeficijenata troškova.

Program DPJRmin za minimalizaciju MATLABU:

Program za minimalizaciju u MATLABU, u kome se traže minimumi, u izvjesnoj je mjeri različ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.

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 20 3 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 = 1404 OptimRas = 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 (wP):

wP, % izlaz ulaz 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]

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,82 f*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 je ulazna/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,417,33 10,81 18,14

10,79 7,33 18,1214,00 4,78 18,7817,23 2,82 20,0520,24 1,26 21,50

t tt tt tt tt tt 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,635,55 7,33 12,888,21 4,78 12,99

10,80 2,82 13,6213,27 1,26 14,53

t tt tt t

t tt 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,594,47 4,78 9,256,63 2,82 9,458,73 1,26 9,99

t tt tt tt 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,673,75 2,82 6,575,56 1,26 6,82

t tt tt 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,443,21 1,26 4,47

t tt t

∗ ∗

∗⎧ ⎫+ = + =⎨ ⎬+ = + =⎩ ⎭

= 4,44

f*2,4.8 = min { }2,4.8 1,5.4 1,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 ∗+

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,1810,77 18,12 28,8917,23 12,88 30,1123,10 9,25 32,3528,38 6,57 34,9533,07 4,44 37,51

t tt tt tt tt tt tt 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,6610,78 12,88 23,6615,67 9,25 24,9220,24 6,57 26,8124,47 4,44 28,9128,38 2,68 31,06

t tt tt tt tt tt 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,627,33 9,25 16,5810,79 6,57 17,3614,00 4,44 18,4417,23 2,68 19,91

t tt tt tt tt 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,075,55 6,57 12,128,21 4,44 12,65

10,80 2,68 13,48

t tt tt 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,834,47 4,44 8,916,63 2,68 9,31

t tt tt 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,333,75 2,68 6,43

t tt t

∗⎧ ⎫+ = + =⎨ ⎬+ = + =⎩ ⎭

= 6,33

f*3,4.2 = min { }3,4.2 1,4.8 1,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,4210,77 23,66 34,4320,24 16,58 36,8228,38 12,07 40,4535,20 8,83 44,0340,70 6,33 47,03

t tt tt tt tt tt tt t

∗ ∗

+ = + =+ = + =+ = + =+ = + =+ = + =+ = + =+ ,4.2 44,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

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(xi) = 12◦x1

2 + 24◦x22 + 40◦x3

2 + 30◦x42 NJ

gdje je xi broj proizvedenih strojeva tijekom i-tog mjeseca. Odrediti vrijednosti xi za koje funkcija ukupnih troškova ima minimalnu vrijednost. [6, 418. strana]

Funkcija cilja: F = minix { } 2 2 2 2

1 2 3 412 24 40 30x x x x+ + + NJ

Funkcije ograničenja: 3

ii 1

x=∑ ≤ 11

0 ≤ xi ≤ 11

Rješenje: f*1,j = min10 11x ≤ { }2

112 x ≤

f*2,j = min20 1x 1≤ ≤ ( ){ }

2

22 1, j24 xx f ∗ −+

f*3,,j = min30 1x 1≤ ≤ ( ){ }

3

23 2, j40 xx f ∗ −+

f*4,,j = min30 1x 1≤ ≤ ( ){ }

4

24 3, j30 xx f ∗ −+

Rezultat: x1 = 5, x2 = 2, x3 = 2, x4 = 2 x1 = 5, x2 = 3, x3 = 1, x4 = 2

F = 676 NJ S programom DPJRmin: OptimRez = 676 OptimRas = 3 5 1 2

Opaska: S programom je dobiven pogrešan rezultat – u ispisu su zamijenjene točne vrijednosti x1 = 5, x2 = 3 s pogrešnim x1 = 3, x2 = 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]

xi(106 kn) 0 1 2 3 4

D1/(NJ god) 0 0,30 0,47 0,70 0,83 D2/(NJ god) 0 0,29 0,45 0,67 0,82 D3/(NJ god) 0 0,31 0,46 0,74 0,80

Funkcija cilja: F = maxix { }+ +1 2 3D D D NJ

Funkcije ograničenja: 3

ii 1

x=∑ ≤ 4

0 ≤ xi ≤ 4

10. Dinamičko programiranje 25

Rješenje: f*1,j = max10 4x≤ ≤ { }1D

f*2,j = max10 4x≤ ≤ ( ){ }

22 1, j xD f ∗ −+

f*3,,j = max10 4x≤ ≤ ( ){ }

33 2, j xD f ∗ −+

Rezultat: x1 = 2, x2 = 1, x3 = 1 F = 1 070 000 kn/god

S programom DPJRMax: OptimRez = 1.0700 OptimRas = 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]

xi(106 kn) 0 1 2 3 4 5 6 7 8

D1/(NJ god) 0 5 15 40 80 90 95 98 100 D2/(NJ god) 0 5 15 40 60 70 73 74 75 D3/(NJ god) 0 4 26 40 45 50 51 52 53

Funkcija cilja: F = maxix { }1 2 3D D D+ + NJ

Funkcije ograničenja: 3

ii 1

x=∑ ≤ 8

0 ≤ xi ≤ 8

Rješenje: f*1,j = 0 8max

1x ≤ { }1D ≤

f*2,j = max10 8x≤ ≤ ( ){ }22 1, j xD f ∗ −+

f*3,,j = max10 8x≤ ≤ ( ){ }33 2, j xD f ∗ −+

Rezultat: x1 = 4, x2 = 4, x3 = 0 F = 140 NJ

S programom DPJRMax: OptimRez = 140 OptimRas = 4 4 0

Z-10.4 Usvojiti optimalni plan raspodjele tjedne proizvodnje na 3 zastupstva ukoliko je analiza 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:

26 Kvantitativne metode

x3 0 1 2 D3 0 4,5 4,5

Posebnim ugovorima su definirani obimi tjednih isporuka od maksimalno 2 stroja tjedno po zastupstvu, te odnosi isporučenih količina: x1 + 2◦x2 + 3◦x3 ≤ 8. [6, 431 strana]

Funkcija cilja: F = maxix { }1 2 32 3x x D+ + NJ

Funkcije ograničenja: 3

ii 1

x=∑ ≤ 11

x1 + 2◦x2 + 3◦x3 ≤ 8 0 ≤ xi ≤ 2

za x2 = 0 i x3 = 0 ⇒ x1 ≤ 8 0 ≤ x1 ≤ 8

za x1 = 0 i x3 = 0 ⇒ x2 ≤ 8/2 0 ≤ x2 ≤ 4

za x1 = 0 i x2 = 0 x3 ≤ 8/3 0 ≤ x3 ≤ 2

Rješenje: f*1,j = 0 8max

1x ≤ { }12 x ≤

f*2,j = max20 4x≤ ≤ ( ){ }22 1, j 23 xx f ∗ −+

f*3,,j = min30 2x≤ ≤ ( ){ }33 2, j 3 xD f ∗ −+

Rezultat: x1 = 1, x2 = 2, x3 = 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, uz koriš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 objekta tipa A i pet objekata tipa C. Koliko je objekata optimalno izvesti. [6, 439 strana]

Funkcija cilja: F = maxix { }1 2 38 12 10x x x+ + NJ

Funkcije ograničenja: 3

ii 1

x=∑ ≤ 18

4◦x1 + 6◦x2 + 3◦x3 ≤ 18 za x2 = 0 i x3 = 0 ⇒ x1 ≤ 18/4 0 ≤ x1 ≤ 4 za x1 = 0 i x3 = 0 ⇒ x2 ≤ 18/6 0 ≤ x2 ≤ 3

10. Dinamičko programiranje 27

za x1 = 0 i x2 = 0 x3 ≤ 18/3 0 ≤ x3 ≤ 6 0 ≤ x1 ≤ 3 0 ≤ x3 ≤ 5

Rješenje: f*1,j = max10 3x≤ ≤ { }18 x

f*2,j = max20 3x≤ ≤ ( ){ }22 1, j 612 xx f ∗ −+

f*3,,j = min30 5x≤ ≤ ( ){ }33 2, j 310 xx f ∗ −+

Rezultat: x1 = 0, x2 = 1, x3 = 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 o utovarenoj količini u tisućama m3:

• strojevi tipa A:

x1 0 1 2 3 4 5 6 V1 0 5 8 10 12 15 18

• strojevi tipa B: V2 = 5◦x2

Usvojiti optimalan plan utovara broda. [6, 440 strana]

Funkcija cilja: F = maxix { }1 240 60x x+ NJ

Funkcije ograničenja: V1 + 5◦ x2 ≤ 20 za x2 = 0 ⇒ x1 ≤ 20/5 0 ≤ x1 ≤ 4 za x1 = 0 ⇒ x2 ≤ 20/V1 0 ≤ x2 ≤ 20/V1

Rješenje: f*1,j = max1 10 20 /x V≤ ≤ { }140 x

f*2,j = max20 4x≤ ≤ ( ){ }22 1, j 560 xx f ∗ −+

Rezultat: x1 = 5, x2 = 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 gi – jedinična težina, t 24 22 16 di – jedinična dobit, 103 kn 96 85 50

Usvojiti optimalan plan utovara aviona. [6, 441 strana]

28 Kvantitativne metode

Funkcija cilja: F = maxix { } 1 2 396 85 50x x x+ + NJ

Funkcije ograničenja: 24◦x1 + 22◦x2 + 16◦x3 ≤ 83 za x2 = 0 i x3 = 0 ⇒ x1 ≤ 83/24 0 ≤ x1 ≤ 3 za x1 = 0 i x3 = 0 ⇒ x2 ≤ 83/22 0 ≤ x2 ≤ 3 za x1 = 0 i x2 = 0 x3 ≤ 83/16 0 ≤ x3 ≤ 5

Rješenje: f*1,j = max10 3x≤ ≤ { }196 x

f*2,j = max20 3x≤ ≤ ( ){ }22 1, j 2285 xx f ∗ −+

f*3,,j = min30 5x≤ ≤ ( ){ }33 2, j 1650 xx f ∗ −+

Rezultat: x1 = 2, x2 = 0, x3 = 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 gi – jedinična težina, t 0,1 0,2 0,9 di – jedinična dobit, 103 kn 2 2,5 4,5

Usvojiti optimalan plan utovara aviona. [6, 444 strana]

Funkcija cilja: F = maxix { }1 2 32 2,5 4,5x x x+ + NJ

Funkcije ograničenja: 0,1◦x1 + 0,2◦x2 + 0,9◦x3 ≤ 50 za x2 = 0 i x3 = 0 ⇒ x1 ≤ 50/0,1 0 ≤ x1 ≤ 500 za x1 = 0 i x3 = 0 ⇒ x2 ≤ 50/0,2 0 ≤ x2 ≤ 250 za x1 = 0 i x2 = 0 x3 ≤ 50/0,9 0 ≤ x3 ≤ 55

Rješenje: f*1,j = max10 1x≤ ≤ 20 { }12 x

f*2,j = max20 250x≤ ≤ ( ){ }22 1, j 0,22,5 xx f ∗ −+

f*3,,j = max30 5x≤ ≤ 5 ( ){ }

33 2, j 0,94,5 xx f ∗ −+

Rezultat: x1 = 0, x2 = 250, x3 = 2 F = 625 000 kn

S programom DPJRMax: Pogrešan rezultat.

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 Ri

F = opti i,x y

i i

m

,i 1

x yf=

⎧ ⎫⎨ ⎬⎩ ⎭∑ = ∑ F-10.8

i i

m

,i 1

x yf ∗=

gdje je: i – oznaka recipijenta – rezultat raspodjele resursa S1 i S2 na recipijente Ri

i i,x yf

– optimalni rezultat raspodjele resursa S1 i S2 na recipijente Ri i i,x yf ∗

xi – dio resursa S1 koji se dodjeljuje recipijentu Ri yi – dio resursa S2 koji se dodjeljuje recipijentu Ri

Funkcije ograničenja: ≤ S1 F-10.9

ixg

gdje je: gi – ograničenje resursa S1 koji se može dodijeliti recipijentu Ri yi

g ≤ S2 F-10.10

gdje je: gi – ograničenje resursa S2 koji se može dodijeliti recipijentu Ri xi,min ≤ xi ≤ xi,max F-10.11 gdje je: xi,min/xi,max – dozvoljena minimalna/maksimalna vrijednost xi yi,min ≤ yi ≤ yi,max F-10.12 gdje je: yi,min/yi,max – dozvoljena minimalna/maksimalna vrijednost yi xj , yi ∈

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 )

∗−+ yf f F-10.13

gdje je: k – oznaka koraka x0 – početna točka

U 1. koraku (k = 1) se 1. recipijentu dodjeljuju dijelovi resursa x0 i yi za koji fk,,j (F-10.113) ima optimalnu (maksimalnu/minimalnu) vrijednost fk,,j = f*k,,j . Preostali se dio resursa S2 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 fk,,j (F-10.13) ima optimalnu (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

optj, j j, , 0x x x y≤ ≤ { }j jk-1,( j )

∗−+ xf f F-10.14

gdje je: y0 - točka približavanja.

30 Kvantitativne metode

Konačno:

F = = i i

m

,i 1

x yf ∗=∑

i i

m

,i 1

x yf ∗ ∗

=∑ F-10.15

gdje su: ∗i – dijelovi resursa S1 čijim se dodjeljivanjem recipijentima Ri dobiva optimum x

– dijelovi resursa S2 čijim se dodjeljivanjem recipijentima Ri dobiva optimum iy ∗

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

x1 ↓ y1→ 1 2 3 4 5 1 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

x2 ↓ y2→ 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 raspodjelu sirovina na tehnološke procese. [6, 452. strana]

Funkcija cilja: F = maxix { }xy xyD D+1, 2,

gdje je: D1,xy – dobit tehnološkog procesa 1 = fx1, y1 D2,xy – dobit tehnološkog procesa 2 = fx2, y2

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 X0 = (3, 3),

(model se svodi na jednodimenzionalnu raspodjelu):

F = maxix { }x y x yD D+

01 i1 02 i21 2

gdje je: D1x01yi1 – dobit tehnološkog procesa 1 = fyi1 , pri x01 = 3 D2x02yi2 – dobit tehnološkog procesa 2 = fyi2 , pri x02 = 3

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 = 47 OptimRas = 4 4

Y0 = (4, 4) F = 47 (X0 = (3, 3)) Opaske:

o Iz tabele P-10.9-1. Dx01yi1 = D34 = 28 o Iz tabele P-10.9-2. Dx02yi2 = D34 = 19 o F = 47

• Drugi korak (k = 2) – usvaja se točka približavanja Y0 = (4, 4), (model se svodi na jednodimenzionalnu raspodjelu):

F = maxx Yi 0, { }x y x yD D+

i1 01 i2 021 2

gdje je: D1xi1y01 – dobit tehnološkog procesa 1 = fxi1 , pri y01 = 4 D2xi2y02 – dobit tehnološkog procesa 2 = fxi2 , pri y02 = 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

X0 = (2, 4) F = 52 (Y0 = (4, 4)) Opaske:

• Iz tabele P-10.9-1. Dx01yi1 = D24 = 27 • Iz tabele P-10.9-2. Dx02yi2 = D34 = 25 • F = 52

• Treći korak (k = 3) – usvaja se točka približavanja X1 = (2, 4):

F = maxX y1 i, { }x y x yD 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 = 52 OptimRas = 4 4

32 Kvantitativne metode

Rezultat: x1 = 2 x2 = 4 y1 = 4 y2 = 4 F = 52 Opaska: Kada bi se počelo s X0 = (4, 3) slijedilo bi (DPJRMax):

OptimRez = 49 OptimRas = 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 ∞ ∞ 5 7 ∞ ∞ 4 ∞ ∞ 2 0 6 ∞ 2 8 ∞ ∞ 1 3 6 ∞ 6 0 10 9 9 ∞ ∞ ∞ ∞ 8 ∞ ∞ 10 0 5

X = │xij│

10 ∞ ∞ ∞ ∞ ∞ 5 2 9 5 0

10. Dinamičko programiranje 33

• Prvi korak (k = 1) – put s jednom uključenom dionicom:

f*1,i10 = min { }j,10x

f*1,110 = ∞ f*1,210 = ∞ f*1,310 = ∞ f*1,410 = ∞ f*1,510 = ∞ f*1,610 = 5 f*1,710 = 2 1 ⇒ 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).

fk,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),i10x x∗+

f*2,110 = min 2,12 1,210

2,13 1,310

2,14 1,410

2,15 1,510

11063

x xx xx xx x

⎧ ⎫+ = + ∞ = ∞⎪ ⎪+ = + ∞ = ∞⎪ ⎪⎨ ⎬+ = + ∞ = ∞⎪ ⎪

+ = + ∞ = ∞⎪ ⎪⎩ ⎭

= ∞

f*2,210 = min 2,21 1,110

2,23 1,310

2,26 1,610

11010 5 15

x xx xx 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

101042 5 74 2 61 9 10

x xx xx xx xx xx 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

6423 9 12

x xx xx xx x

∗ ∗

⎧ ⎫+ = + ∞ = ∞⎪ ⎪+ = + ∞ = ∞⎪ ⎪⎨ ⎬+ = + ∞ = ∞⎪ ⎪

+ = + =⎪ ⎪⎩ ⎭

= 12

f*2,510 = min 2,51 1,110

2,54 1,410

2,58 1,810

2,59 1,910

326 9 158 5 13

x xx xx xx x

∗ ∗

⎧ ⎫+ = + ∞ = ∞⎪ ⎪+ = + ∞ = ∞⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

+ = + =⎪ ⎪⎩ ⎭

= 13

34 Kvantitativne metode

f*2,610 = min 2,62 1,210

2,53 1,310

2,67 1,710

2,610 1,1010

1022 2 45 0 5

x xx xx xx x

∗ ∗

⎧ ⎫+ = + ∞ = ∞⎪ ⎪+ = + ∞ = ∞⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

+ = + =⎪ ⎪⎩ ⎭

= 4

f*2,710 = min 2,73 1,310

2,76 1,610

2,78 1,810

2,710 1,1010

42 5 76 9 152 0 2

x xx xx xx 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

1366 2 8

10 5 159 0 9

x xx xx xx x

x xx x

∗ ∗

⎧ ⎫+ = + ∞ = ∞⎪ ⎪+ = + ∞ = ∞⎪ ⎪

+ = + ∞ = ∞⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

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

= 8

f*2,910 = min 2,95 1,510

2,98 1,810

2,910 1,1010

810 9 19

5 0 5

x xx xx x

∗ ∗

⎧ ⎫+ = + ∞ = ∞⎪ ⎪+ = + =⎨ ⎬⎪ ⎪+ = + =⎩ ⎭

= 5

f*2,910 = min 2,95 1,510

2,98 1,810

2,910 1,1010

810 9 19

5 0 5

x xx xx x

∗ ∗

⎧ ⎫+ = + ∞ = ∞⎪ ⎪+ = + =⎨ ⎬⎪ ⎪+ = + =⎩ ⎭

= 15

f*2,1010 = 0

fk,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

• Treći korak (k = 3) – put s tri uključene dionice: f*3,i10 = min { }k,i10 (k-1),i10x x∗+

f*3,110 = min 3,12 2,210

3,13 2,310

3,14 2,410

3,15 2,510

1 15 1610 6 166 12 183 13 16

x xx xx xx x

∗ ∗

∗ ∗

∗ ∗

⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

+ = + =⎪ ⎪⎩ ⎭

= 16

f*3,210 = min 3,21 2,110

3,23 2,310

3,26 2,610

110 6 1610 4 14

x xx xx 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

1010 15 254 12 162 4 64 2 61 8 9

x xx xx xx xx xx x

∗ ∗

∗ ∗

⎧ ⎫+ = + ∞ = ∞⎪ ⎪+ = + =⎪ ⎪

+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

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

= 6

f*3,410 = min 3,41 2,110

3,43 2,310

3,45 2,510

3,48 2,810

64 8 102 13 153 8 11

x xx xx xx x

∗ ∗

⎧ ⎫+ = + ∞ = ∞⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

+ = + =⎪ ⎪⎩ ⎭

= 10

1 ⇒ 5 ⇒ 4 ⇒ 3 ⇒ … ⇒ 10

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

32 12 146 8 148 5 13

x xx xx xx x

∗ ∗

⎧ ⎫+ = + ∞ = ∞⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

+ = + =⎪ ⎪⎩ ⎭

= 13

f*3,610 = min 3,62 2,210

3,53 2,310

3,67 2,710

3,610 2,1010

10 152 62 2 45 0 5

x xx xx xx 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 122 4 66 8 142 0 2

x xx xx xx 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 73 12 156 13 196 2 8

10 5 159 0 9

x xx xx xx x

x xx x

∗ ∗

⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪

+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

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

= 7

f*3,910 = min 3,95 2,510

3,98 2,810

3,910 2,1010

8 13 2110 8 18

5 0 5

x xx xx x

∗ ∗

⎧ ⎫+ = + =⎪ ⎪+ = + =⎨ ⎬⎪ ⎪+ = + =⎩ ⎭

= 5

f*3,1010 = 0

fk,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),i10x x∗+

f*4,110 = min 4,12 3,210

4,13 3,310

4,14 3,410

4,15 3,510

1 14 1510 6 166 10 163 13 16

x xx xx xx x

∗ ∗

⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

+ = + =⎪ ⎪⎩ ⎭

= 16

f*4,210 = min 4,21 3,110

4,23 3,310

4,26 3,610

1 16 1710 6 1610 4 14

x xx xx 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 2610 14 244 10 142 4 64 2 61 8 9

x xx xx xx xx xx x

∗ ∗

∗ ∗

⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪

+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

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

= 6

36 Kvantitativne metode

f*4,410 = min 4,41 3,110

4,43 3,310

4,45 3,510

4,48 3,810

6 164 6 102 13 153 7 10

x xx xx xx x

∗ ∗

∗ ∗

⎧ ⎫+ = + = ∞⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

+ = + =⎪ ⎪⎩ ⎭

= 10

f*4,510 = min 4,51 3,110

4,54 3,410

4,58 3,810

4,59 3,910

3 16 192 10 126 7 138 5 13

x xx xx xx 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 242 6 82 2 45 0 5

x xx xx xx x

∗ ∗

⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

+ = + =⎪ ⎪⎩ ⎭

= 4

f*4,710 = min 4,73 3,310

4,76 3,610

4,78 3,810

4,710 3,1010

4 6 102 4 66 7 132 0 2

x xx xx xx 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 73 10 136 13 196 2 8

10 5 159 0 9

x xx xx xx x

x xx x

∗ ∗

⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪

+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

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

= 7

f*4,910 = min 4,95 3,510

4,98 3,810

4,910 3,1010

8 13 2110 7 17

5 0 5

x xx xx x

∗ ∗

⎧ ⎫+ = + =⎪ ⎪+ = + =⎨ ⎬⎪ ⎪+ = + =⎩ ⎭

= 5

f*4,1010 = 0

fk,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),i10x x∗+

f*5,110 = min 5,12 4,210

5,13 4,310

5,14 4,410

5,15 4,510

1 14 1510 6 166 10 163 12 15

x xx xx xx 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 1610 6 1610 4 14

x xx xx x

∗ ∗

⎧ ⎫+ = + =⎪ ⎪+ = + =⎨ ⎬⎪ ⎪+ = + =⎩ ⎭

= 14

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 2510 14 244 10 142 4 64 2 61 7 8

x xx xx xx xx xx x

∗ ∗

∗ ∗

⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪

+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

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

= 6

f*5,410 = min 5,41 4,110

5,43 4,310

5,45 4,510

5,48 4,810

6 16 224 6 102 13 153 7 10

x xx xx xx x

∗ ∗

∗ ∗

⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

+ = + =⎪ ⎪⎩ ⎭

= 10

f*5,510 = min 5,51 4,110

5,54 4,410

5,58 4,810

5,59 4,910

3 15 182 10 126 7 138 5 13

x xx xx xx x

∗ ∗

⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

+ = + =⎪ ⎪⎩ ⎭

= 12

f*5,610 = min 5,62 4,210

5,53 4,310

5,67 4,710

5,610 4,1010

10 14 242 6 82 2 45 0 5

x xx xx xx x

∗ ∗

⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

+ = + =⎪ ⎪⎩ ⎭

= 4

f*5,710 = min 5,73 4,310

5,76 4,610

5,78 4,810

5,710 4,1010

4 6 102 4 66 7 132 0 2

x xx xx xx 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 136 13 196 2 8

10 5 159 0 9

x xx xx xx x

x xx x

∗ ∗

⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪

+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

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

= 7

f*5,910 = min 5,95 4,510

5,98 4,810

5,910 4,1010

8 12 2010 7 17

5 0 5

x xx xx x

∗ ∗

⎧ ⎫+ = + =⎪ ⎪+ = + =⎨ ⎬⎪ ⎪+ = + =⎩ ⎭

= 5

f*5,1010 = 0

fk,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 = fk,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 mora se 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

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 (Ti), 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 koja spaja čvor 1 objekta D i čvor 1 objekta E.

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 3021 16 3728 20 48

t tt tt tt 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 3516 15 3117 16 3324 20 44

t tt tt tt t

∗ ∗

⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

+ = + =⎪ ⎪⎩ ⎭

= 31

f*2,31 = min 2,31 1,11

2,32 1,21

2,33 1,31

2,34 1,41

21 20 4117 15 3216 16 3215 20 35

t tt tt tt t

∗ ∗

∗ ∗

⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

+ = + =⎪ ⎪⎩ ⎭

= 32

f*2,41 = min 2,41 1,11

2,42 1,21

2,43 1,31

2,44 1,41

28 20 4824 15 3915 16 3112 20 32

t tt tt tt 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 4215 31 4621 32 5328 31 59

t tt tt tt t

∗ ∗

⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

+ = + =⎪ ⎪⎩ ⎭

= 42

f*3,21 = min 3,21 2,11

3,22 2,21

3,23 2,31

3,24 2,41

15 30 4516 31 4717 32 4924 31 55

t tt tt tt 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 5117 31 4816 32 4815 31 46

t tt tt tt 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 5515 32 4712 31 43

t tt tt tt 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 6216 45 6117 46 6320 43 63

t tt tt tt t

∗ ∗

⎧ ⎫+ = + =⎪ ⎪+ = + =⎪ ⎪⎨ ⎬+ = + =⎪ ⎪

+ = + =⎪ ⎪⎩ ⎭

= 61 A1 ⇒ B2

Rezultat: A1 ⇒ B2 ⇒ C1 ⇒ D1 ⇒ E1 F = 61 NJ

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 = optxi

f0z k = 1, 2, ..., z F-10.15

gdje je: 0z – oznaka recipijenta xi – i-ti dio perioda

Rješenje Optimalizacija se odvija u koracima:

ft* = optxi

fx + ft+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 CN = 1000 € i treba optimalizirati dina-

miku zamjene opreme tijekom pet godina korištenja. Troškovi su održavanja analizatora (TO,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 (CP,i) 800 € nakon jedne godine dana njegovog korištenja, 600 € nakon dvije i 500 € nakon tri.

Funkcija cilja: F = f05 minkis

Funkcije ograničenja: fx,i = CN + TO,i – CP,i (cijena vraćenog analizatora CP,i umanjuje troškove te je stoga negativna) 0 ≤ xi ≤ 3 CN = 1000 € TO,1 = 60 € TO,2 = 80 € TO,3 = 120 € CP,1 = 800 € CP,2 = 600 € CP,3 = 500 €

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 = min2is ( ){ }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 = min4is ( ){ }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 n5is ( ){ }N O,i P,i 15,5iC T C f ∗+ − +

Moguće su kombinacije:

2. Prvi korak (zadnja godina):

f*45,1i = min1is { }N O,i P,iC T C+ −

f*45,1i = mi n1is

45,11

45,12

45,13

1000 60 800 26080 600 520

120 500 380

fff

⎧ ⎫= + − =⎪ ⎪= − = −⎨ ⎬⎪ ⎪= − = −⎩ ⎭

VVV

=– 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ču nakon 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 = min2is ( ){ }N O,i P,i 45,2iC T C f ∗+ − +

42 Kvantitativne metode

f*35,2i = mi = – 300 n2is

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 520 5201000 60 1060 520 54080 600 520 260 260 30080 80 380 300

120 500 380 260 120

f ff f

f ff f

f ff

= + − + = + =⎧ ⎫ =⎨ ⎬= + + = − =⎩ ⎭= − + = − + = −⎧ ⎫ = −⎨ ⎬= + = − = −⎩ ⎭= − + = − + = −

V VZV ZZV

26 45,11120120 120 260 380f

⎧ ⎫⎪ ⎪⎪ ⎪⎪ ⎪⎨ ⎬⎪ ⎪⎧ ⎫⎪ ⎪= −⎨ ⎬= + = + =⎪ ⎪⎩ ⎭⎩ ⎭

VZ

1. red: s21 – kupuje se nov analizator (1000), održava tijekom prve godine (60) i vraća nakon 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), čemu se 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 TO,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), čemu se dodaje f*45,13 (s13 – kako je analizator korišten dvije godine u sljedećoj su troškovi održavanja TO,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 se dodaje 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 = min3is ( ){ }N O,i P,i 35,3iC T C f ∗+ − +

f*25,3i = = – 40 min3is

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 780 7601000 60 1060 300 76080 600 520 520 0 4080 80 120 40

120 500 380 520 140120

f ff f

f ff f

f ff

= + − + = + =⎧ ⎫ =⎨ ⎬= + + = − =⎩ ⎭= − + = − + =⎧ ⎫ = −⎨ ⎬= + = − = −⎩ ⎭

= − + = − + ==

V ZZV ZZ

V35,21

140120 520 640f

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

⎧ ⎫⎪ ⎪=⎨ ⎬+ = + =⎪ ⎪⎩ ⎭⎩ ⎭VZ

5. Četvrti korak (četiri zadnje godine):

f*15,4i = min4is ( ){ }N O,i P,i 25,4iC T C f ∗+ − +

f*15,4i = mi n4is

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 1020 10201000 60 1060 40 102080 600 520 760 240 22080 80 140 220

120 500 380 760 380

f ff f

f ff f

f ff

= + − + = + =⎧ ⎫ =⎨ ⎬= + + = − =⎩ ⎭= − + = − + =⎧ ⎫ =⎨ ⎬= + = + =⎩ ⎭= − + = − + =

V ViliZZV ZZV

5,46 25,11380120 120 760 880f

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

⎧ ⎫⎪ ⎪=⎨ ⎬= + = + =⎪ ⎪⎩ ⎭⎩ ⎭VZ

= – 300

6. Peti korak (pet godina):

f*05,5i = mi n5is ( ){ }N O,i P,i 15,5iC T C f ∗+ − +

10. Dinamičko programiranje 43

f*05,5i = = 1280 min5is

05,51 15,41

05,52 15,43

1000 60 800 260 1020 12801000 60 1060 220 1280

f ff 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, 5 0, 1, 4, 5 0, 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, Third edition; 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.