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.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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:
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:
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).
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)
* 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:
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).
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:
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.
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]
%%%%%%%%%%%%%%%%%%%% % 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.
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.
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
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:
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
* 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 ≠ 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.
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):
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]
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]
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]
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
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]
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
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
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
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 ).
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.
• 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 ∗+ − +
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 ∗+ − +
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.