49
Matematici speciale Capitolul 13 Programare dinamică © Conf. dr. ing. mat. Ovidiu Blăjină

Curs 14

Embed Size (px)

DESCRIPTION

cuurs matematici speciale

Citation preview

Page 1: Curs 14

Matematici speciale

Capitolul 13

Programare dinamică

© Conf. dr. ing. mat. Ovidiu Blăjină

Page 2: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 2

1. Procese secvenţiale finite2. Funcţii decompozabile3. Metoda programării dinamice

regresivă 4. Metoda programării dinamice

progresivă

Page 3: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 3

Programarea dinamică se utilizează în studiul unui număr important de probleme complexe, printre acestea, pe prim plan, fiind problemele de optimizare secvenţială.

Ea se încadrează în categoria tehnicilor de căutare a optimului ”pas cu pas”. Provine, în esenţă, din metodele de tip enumerativ, dar realizează o eşalonare a enumerărilor, care permite, la fiecare fază, limitarea numărului de enumerări ulterioare.

La baza programării dinamice stă principiulformulat de R. Bellman: ”O politică optimă este formată din subpolitici optime”.

Page 4: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 4

Principiu derivat: ”O mulţime optimală a deciziilor are proprietatea că oricare ar fi prima decizie, deciziile următoare trebuie să fie optimale cu privire la rezultatele primei decizii”.

Tehnica programării dinamice constă în deter-minarea soluţiilor optime globale şi a valorii optime a funcţiei obiectiv ale problemei iniţiale, prin rezol-varea secvenţială a unor probleme de optimizare asociate celei iniţiale, mai simple, al căror optim este calculat în funcţie de o singură variabilă.

Este necesar ca problema iniţială să fie decompozabilă în faze şi optimizările pe faze să aibă un caracter recursiv.

Page 5: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 5

O serie de probleme din microeconomie (gestiune, investiţii, prospecţiuni) şi macroeconomie (planificare, prognoză), cu un caracter secvenţial,constituie domenii de aplicare.

Modelul matematic al unei probleme de programare dinamică are caracteristicile unui proces secvenţial, care evoluează în timp.

Notăm cu St mulţimea stărilor posibile ale pro-cesului la faza (etapa, momentul) t∈T ⊂ R. Evoluţia (trecerea dintr-o stare în alta) procesului are loc în urma aplicării unei decizii (variabile de decizie) xtdintr-o mulţime de decizii admisibile Xt(st), cu st∈St .

Page 6: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 6

Fiecărei faze t îi corespunde o valoare vt(st, xt), ce poate fi măsurată.

Se pune problema de a determina soluţia globală, care optimizează (minimizează sau maximi-zează) o funcţie obiectiv (de eficienţă) globală f, ce depinde de valorile vt, t ∈ T.

Dacă T este o mulţime finită sau numărabilă de numere reale, avem o problemă de programare dinamică discretă. Dacă T este un interval din R, avem o problemă de programare dinamică continuă.

Numărul fazelor procesului, notat cu n, poate fi finit sau infinit.

Page 7: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 7

Dacă legea de variaţie a stărilor este deter-ministă, atunci problema este deterministă, iar dacă legea este probabilistică, atunci problema este stochastică.

În cele ce urmează se va studia cazul programării dinamice discretă, deterministă, cu un număr finit de faze.

Page 8: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 8

1. Procese secvenţiale finite

Page 9: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 9

Se consideră un proces secvenţial finit, cu n faze (etape).

Dacă starea iniţială a procesului este s0, atunci la momentul următor t = 1, prin adoptarea deciziei x1 ∈ X1(s0), procesul trece într-o nouă stare s1.

În general, la momentul i (i = 1,..., n), prin adoptarea deciziei xi ∈ Xi(si-1), procesul trece din starea si-1 în starea si . Starea sn se numeşte stare finală:

Page 10: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 10

Definiţie. Procesul este decompozabil dacă starea side la ieşirea din faza i nu depinde decât de starea si-1de la ieşirea din faza i-1 şi de valoarea variabilei de decizie xi luată la faza i:

) ,( 1 iiii xss −τ= , xi ∈ Xi(si -1), i = 1, 2,..., nunde τi : Si-1 × Xi → Si se numeşte funcţia detransfer a fazei i.

Pe baza relaţiei (1) se deduc:

(1)

) ),) ), ,((((

) ), ,(() ,(

21011

121

1

iiii

iiiiii

iiii

xxxss

xxssxss

LL

LLLLLLLLLL

τττ=

ττ=τ=

−−−

(2)

Page 11: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 11

Starea si (i = 1, 2,..., n) depinde de starea iniţială s0 şi de valorile variabilelor de decizie x1, x2,..., xi.

Fiecărei faze i i se asociază o funcţie utilitate(eficienţă) vi : Si -1 × Xi → R , cu vi = vi(si -1, xi).

Funcţia obiectiv globală f a procesului (secven-ţial) este funcţie de utilităţile vi :

)) ,( ),..., ,( ), ,(( 1212101 nnn xsvxsvxsvff −= (3)Putem scrie succesiv:

) ,()) ,(()( ), , ,() ), ,((

)()( ), ,() ,(

1021012122

2102210122

010111011011

=τ=∈τ=ττ=

=∈τ=τ=

xsX~xs~XsXxxxs~xxss

sX~sXxxs~xss

LLLLLLLLLLLLLLLLLLLLL(4)

Page 12: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 12

) ,..., ,()) ,..., ,(()( ), ,..., ,() ), ,..., ,((

1101101

101101

−−−

−−

=τ=∈τ=ττ=

nnnnnnnn

nnnnnnn

xxsX~xxs~XsXxxxs~xxxs~sLLLLLLLLLLLLLLLLLLLLL

precum şi

) ,..., ,() ), ,..., ,(() ,(

) , ,() ), ,(() ,() ,() ,(

1011011

210221012212

101101

nnnnnnnnn xxsv~xxxs~vxsv

xxsv~xxs~vxsvxsv~xsv

=τ=

=τ==

−−−

LLLLLLLLLLLLLLLLLLLL(5)

Prin înlocuirea relaţiilor (5) în expresia funcţiei obiectiv (3) obţinem:

) ,..., ,()) ,..., ,( ),..., ,(( 1010101 nnn xxsf~

xxsv~xsv~ff == (6)

Page 13: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 13

Deci, pentru o stare iniţială fixată s0 şi pentru o politică dată {x1,..., xn} valoarea funcţiei obiectiv globală f este complet determinată.

Modelul matematic al unei probleme de optimi-zare secvenţială are forma:

⎪⎪

⎪⎪

=∈=∈

=τ=

=

2,..., ,1 ),( 1,..., ,0 ,

2,..., ,1 ), ,(

)) ,( ),..., ,( ), ,((opt

1

1

1212101,... , 21

nisXxniSs

nixss

xsvxsvxsvff

iii

ii

iiii

nnnxxx n

(7)

Page 14: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 14

Definiţie. Soluţia (decizia) admisibilă

este optimă pentru problema de optimizare secven-ţială (7), relativ la starea iniţială s0, dacă:

))( ),...,(()( 0010 sxsxsx *n

** =

(8)} ,..., ), ,..., ,( ),(

| ) ,..., ,( {opt ))( ),...,( ,(nixxsX~xsX~x

xxsf~sxsxsf~

iii

n*n

*

2110011

100010

=∈∈=

Page 15: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 15

2. Funcţii decompozabile

Page 16: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 16

Definiţie. Funcţia f : R3 → R este decompozabilă dacă:a) există funcţiile ϕ, θ : R2 → R astfel încât:

)) ,( ,() , ,( zyxzyxf θϕ= , ∀(x, y, z)∈R3 (9)b) funcţia ϕ este monotonă în raport cu al doilea

argument, adică:• crescătoare pentru probleme de maximizare:ϕ(x, y1) ≤ ϕ(x, y2), ∀x∈R, ∀y1, y2∈R, y1 < y2

• descrescătoare pentru probleme de minimizare:ϕ(x, y1) ≥ ϕ(x, y2), ∀x∈R, ∀y1, y2∈R, y1 < y2

(10)

(11)

Page 17: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 17

În condiţiile enunţate în definiţie, se mai spune că funcţiile ϕ şi θ realizează o descompunere a lui f.

(12)

Teoremă (optimalitate). Fie funcţia decompozabilăf : R3 → R, cu descompunerea dată de funcţiileϕ, θ : R2 → R. Atunci

Exemplu. Funcţiile f1 şi f2 sunt decompozabile.f1 : R3 → R, f1(x, y, z) = x + y + zf2 : R3 → R, f2(x, y, z) = cos(x) + sin(y ⋅ z)

⎠⎞⎜

⎝⎛ θϕ=

∈∈∈) ,(max ,max) , ,(max

23 R) ,(RR) , ,(zyxzyxf

zyxzyx

Page 18: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 18

Dem. Deoarece funcţia f este decompozabilă avem relaţia:

)), ,( ,()) ,( ,(max3R) , ,(

zyxzyxzyx

θϕ≥θϕ∈

∀(x, y, z)∈R3

din care rezultă:,) ,(max ,)) ,( ,(max

23 R) ,(R) , ,(⎟⎠⎞

⎜⎝⎛ θϕ≥θϕ

∈∈zyxzyx

zyzyx∀x∈R

În particular,

⎟ (*)

Deoarece funcţia ϕ este crescătoare în raport cu al doilea argument, avem:

⎠⎞⎜

⎝⎛ θϕ≥θϕ

∈∈∈) ,(max ,max)) ,( ,(max

23 R) ,(RR) , ,(zyxzyx

zyxzyx

Page 19: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 19

În particular,

)), ,( ,(max) ,(max ,22 R) ,(R) ,(

zyxzyxzyzy

θϕ≥⎟⎠⎞

⎜⎝⎛ θϕ

∈∈∀x∈R

)) ,( ,() ,(max ,2R) ,(

zyxzyxzy

θϕ≥⎟⎠⎞

⎜⎝⎛ θϕ

din care deducem:

(**))) ,( ,(max

)) ,( ,(maxmax) ,(max ,max

3

22

R) , ,(

R) ,(RR) ,(R

zyx

zyxzyx

zyx

zyxzyx

θϕ=

=⎟⎠

Din relaţiile (*) şi (**) rezultă egalitatea din enunţul teoremei.

, ∀(x, y, z)∈R3

⎞⎜⎝⎛ θϕ≥⎟

⎠⎞⎜

⎝⎛ θϕ

∈∈∈∈

Page 20: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 20

Observaţii:1) Teorema este valabilă şi dacă în enunţ operatorul

max este înlocuit cu operatorul min.2) Teorema rămâne adevărată şi pentru funcţiile

definite pe N3 sau Z3.3) Se pot deduce formulări analoage şi pentru

funcţii definite pe domenii mărginite incluse în R3.

Pentru funcţiile de mai mult de trei variabile reale, conceptele şi rezultatele prezentate în acest paragraf sunt asemănătoare.

Page 21: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 21

3. Metoda programării dinamice regresivă

Page 22: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 22

Definiţie. Problema de optimizare secvenţială (7) este decompozabilă regresiv dacă există funcţiile gi : R2

→ R (i = 2, 3,..., n), gi (a, ⋅) monotonă pentru a∈ R, astfel încât:

))) ,( ),..., ,(( ), ,(( )) ,( ),..., ,((

11111

111

nnniiiiniiiin

nnniiiinxsvxsvfxsvg

xsvxsvf−++−−+−

−−+−

==

unde fn-i+1 (i = 1, 2,..., n –1) este funcţia obiectiv asociată procesului secvenţial limitat la fazele i,..., n, cu f1(vn) = vn şi fn = fsau echivalent, dacă folosim funcţiile de transfer:

)) ,..., ), ,(( ), ,(( ) ,..., ,(

1111

11

niiiiiniiiin

niiin

xxxsf~

xsvgxxsf

~

+−−−+−

−+−

τ=

=(14)

(13)

Page 23: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 23

pentru i = 1, 2,..., n -1, si -1 ∈ Si -1, xi ∈ Xi(si -1), xn ∈Xn(sn -1), cu = vn şi .1f

~ff

~f~

n ==

Conform teoremei de optimalitate, formulată pentru cazul n-dimensional, se deduc următoareleecuaţii ale programării dinamice regresive:

⎟⎟⎠

⎞⎜⎜⎝

⎛τ=

=

+−−−+−

−+−

+

) ,..., ), ,((opt , ) ,( opt

) ,..., ,( opt

11 ,...,

11

11 ,...,

1

niiiiinxx

iiiinx

niiinxx

xxxsf~

xsvg

xxsf~

nii

ni(15)

pentru i = 1,..., n –1 şi .) ,( opt) ,( opt 111 nnnx

nnx

xsvxsf~

nn

−− =

Page 24: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 24

Algoritmul programării dinamice regresive:Pasul 1. Se rezolvă problema corespunzătoare fazei n,cu necunoscuta xn , în funcţie de parametrul sn -1.

Se calculează:

)( )}( | ) ,({opt

)}( | ) ,({opt

11

not

11

111

−−−

−−

=∈=

=∈

nnnnnnn

nnnnn

shsXxxsv

sXxxsf~

(16)

şi se determină pentru care )( 1−n*n sx

))( ,()( 1111 −−− = n*nnnn sxsvsh

Pasul 2. Se rezolvă, succesiv, problema corespunză-toare fazei i, pentru i = n - 1, n - 2,...3, 2, cu singuranecunoscută xi, în funcţie de parametrul si -1∈ Si - 1.

Page 25: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 25

Se determină pentru care)()( 11 −− ∈ iii*i sXsx

)))( ,(( )),( ,(()( 1111111 −−−−−+−−+− τ= i*iiiini

*iiiiniin sxshsxsvgsh

(17)Pasul 3. Se rezolvă problema corespunzătoare fazei 1,

cu necunoscuta x1, în funcţie de parametrul s0. Se determină şi)()( 0101 sXsx* ∈

))( ),...,( ,() ,..., ,(opt)( 001010 ,...,

01

sxsxsf~

xxsf~

sh *n

*nn

xxn

n

==(18)

unde , i = 1, 2,..., n - 1. ))( ,(()( 00101 sxsxsx *ii

*i

*i τ= ++

Pasul 4. Se determină optimul global ))( ),...,( ,()(opt)( 001000

00

**n

**n

Ss

*n sxsxsf

~shsh ==

(19)

Page 26: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 26

Soluţia optimă a problemei considerate este: ) ,..., ,( 21

*n

*** xxxx =unde

)( 011*** sxx = )) ,(( 011

*i

*i

*i

*i xsxx τ= ++, , i = 1, 2,..., n - 1.

Page 27: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 27

Exemplu. Clienţii unei firme solicită un anumit tip de produs, cererea fiind eşalonată pe o perioadă de patru luni.

La începutul perioadei considerate firma dispune în depozitul său de 3 unităţi de produs, capacitatea depozitului fiind de maximum 12 unităţi din acel produs. Cererea de produs, precum şi profitul unitar ce revine firmei prin vânzarea produsului, diferă de la o lună la alta, valorile lor fiind înscrise în tabelul:

Page 28: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 28

Firma fabrică produsul pe care îl depozitează, livrarea către clienţi având loc la sfârşitul fiecărei luni calendaristice.

Să se stabilească planul de fabricaţie al produsului, optim din punct de vedere al profitului obţinut, astfel încât la sfârşitul perioadei celor patru luni cererile clienţilor să fie integral satisfăcute, iar firma să mai deţină în depozit o unitate de produs.Soluţie. Vom utiliza pentru rezolvare metoda pro-gramării dinamice regresivă.

Se notează cu xi (i = 1,..., 4) numărul de unităţi de produs vândute în decursul fiecărei luni.

Page 29: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 29

Funcţia obiectiv este profitul total al firmei, care trebuie să fie maxim:

[max] f = 14x1 + 16x2 + 15x3 + 14x4

Pentru ca cererile clienţilor să fie satisfăcute integral, este necesar ca firma să deţină în depozit, la sfârşitul fiecărei luni, o cantitate de produs cel puţin egală cu valoarea cererii în luna respectivă.

Pe de altă parte, cantitatea de produse aflată în depozit, la sfârşitul fiecărei luni, înainte de livrare, nu poate să depăşească capacitatea depozitului, care este de 12 unităţi.

Page 30: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 30

Din cele două condiţii se deduc succesiv: 3 + 3 +

xx

1

1

8 012

− ≥≤

⎧⎨⎩

⇔ 5 ≤ x1 ≤ 9

x xx x

1 2

1 2

5 6 05 12

− + − ≥− + ≤

⎧⎨⎩

⇔ 11 ≤ x1 + x2 ≤ 17

x x xx x x

1 2 3

1 2 3

11 7 011 12

+ − + − ≥+ − + ≤

⎧⎨⎩

⇔ 18 ≤ x1 + x2 + x3 ≤ 23 (*)

3 + x1 + x2 + x3 + x4 = 27 + 1 ⇔⇔ x1 + x2 + x3 + x4 = 25 (**)

Din (*) şi (**) ⇒ 2 ≤ x4 ≤ 7

Page 31: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 31

Modelul matematic al problemei este: [max] = 14 5 2

f x x x xxx xxx

x x x x

1 2 3 4

1

1 2

3

4

1 2 3 4

16 15 149

11 170

725

+ + +≤ ≤≤ + ≤≤≤ ≤+ + + =

⎪⎪⎪

⎪⎪⎪

Pentru a aplica metoda programării dinamice regresivă, problema trebuie adusă la forma unui proces secvenţial de decizie.

Se notează cu si (i = 1,..., 4) stocul de produse la sfârşitul lunii i, după livrarea cererii către clienţi.

Page 32: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 32

Stocul iniţial este s0 ∈ S0 = {3}.Avem:

s1 = s0 + x1 - 8 = x1 - 5; dar 5 ≤ x1 ≤ 9 ⇒⇒ s1 ∈ S1 = [0, 4]s2 = s1 + x2 - 6 = x1 + x2 - 11; dar 11 ≤ x1 + x2 ≤ 17⇒ s2 ∈ S2 = [0, 6]s3 = s2 + x3 - 7 = x1 + x2 + x3 - 18 = 7 - x4 ; dar

2 ≤ x4 ≤ 7 ⇒ s3 ∈ S3 = [0, 5]Evident, s4 ∈ S4 = {1}.Se determină spaţiile de decizie ale celor patru

variabile x1,..., x4: x1 ∈ X1(s0) = [5, 9]

Page 33: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 33

0 ≤ s2 ≤ 6 ⇔ 0 ≤ s1 + x2 - 6 ≤ 6 ⇔⇔ 6 - s1 ≤ x2 ≤ 12 - s1 ⇒⇒ x2 ∈ X2(s1) = [6 - s1, 12 - s1]

0 ≤ s3 ≤ 5 ⇔ 0 ≤ s2 + x3 - 7 ≤ 5 ⇔⇔ 7 - s2 ≤ x3 ≤ 12 - s2 ⇒⇒ x3 ∈ X3(s2) = [7 - s2, 12 - s2]

s3 + x4 - 6 = 1 ⇒ x4 ∈ X4(s3) = {7 - s3}.Funcţiile de transfer sunt:τ1(s0, x1) = s0 + x1 - 8 τ2(s1, x2) = s1 + x2 - 6 τ3(s2, x3) = s2 + x3 - 7τ4(s3, x4) = 1

Page 34: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 34

Funcţiile de utilitate sunt: v1(s0, x1) = 14x1v2(s1, x2) = 16x2v3(s2, x3) = 15x3v4(s3, x4) = 14x4

Funcţiile obiectiv ale proceselor secvenţiale limitate (trunchiate):

= 14x1 + 16x2 + 15x3 + 14x4= 16x2 + 15x3 + 14x4= 15x3 + 14x4= 14x4

~f1~f2~f3~f4

Page 35: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 35

Problema adusă la forma unui proces secvenţial, cu starea iniţială cunoscută s0 = = 3, este decom-pozabilă regresiv în raport cu funcţia g(a, b) = a + b.

Se rezolvă problemele de optim corespunzătoare fiecărei faze, folosind ecuaţiile programării dinamice regresive.

s0*

Faza 4. max { | x4∈ X4(s3)} = max {14x4 | x4∈ {7 -- s3}} = 14(7 - s3) = 98 - 14s3, pentru = 7 - s3.Faza 3. max { | x3∈ X3(s2)} = max {15x3 + 98 - 14s3| x3∈ X3(s2)} = max {15x3 + 98 - 14(s2 + x3 - 7) | x3 ∈X3(s2)} = max {x3 - 14 s2 + 196) | x3 ∈ [7 - s2, 12 - s2]} = 208 - 15s2, pentru = 12 - s2.

x s4 3* ( )

x s3 2* ( )

~f4

~f3

Page 36: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 36

Faza 2. max { | x2∈ X2(s1)} = max {16x2 + 208 --15s2 | x2∈ X2(s1)} = max {16x2 + 208 - 15(s1 + x2 - 6) | x2∈ X2(s1)} = max {x2 - 15 s1 + 298) | x2 ∈ [6 - s1, 12 - s1]} = 310 - 16s1, pentru = 12 - s1.Faza 1. max { | x1∈ X1(s0)} = max {14x1 + 310 --16s1 | x1∈ X1(s0)} = max {14x1 + 310 - 16(s0 + x1 - 8) | x1∈ X1(s0)} = max {-2x1 - 16 s0 + 438) | x1∈ [5, 9]} = 380, pentru = 5, unde = s0 = 3.

~f2

x s2 1* ( )

~f1

x s1 0* *( ) s 0

*

s s x1 0 1 8* * *= + −Avem:

= 3 + 5 - 8 = 0 ⇒x x s s2 2 1 112 12* * * *= = − =( )⇒

Page 37: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 37

x x s s3 3 2 212 6* * * *= = − =( )⇒

s s x3 2 3 7* * *= + − = 6 + 6 - 7 = 5 ⇒⇒ x x s s4 4 3 37 2* * * *= = − =( )

Soluţia optimă = (5, 12, 6, 2) este unică.

Valoarea optimă a funcţiei obiectiv (profitul total maxim) corespunzătoare este = 380 u.m.

x x x x x* * * * *= ( , , , )1 2 3 4

f *

s s x2 1 2 6* * *= + − = 0 + 12 - 6 = 6 ⇒

Page 38: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 38

4. Metoda programării dinamice progresivă

Page 39: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 39

În o serie de situaţii practice, starea finală a unui proces secvenţial sn este impusă, adică sn = .

În aceste cazuri este mai eficient de a inversa sensul de parcurgere faţă de cel considerat în metoda regresivă.

Pentru fiecare fază se defineşte funcţia reciprocă de transfer : Si × Xi → Si -1 prin relaţia:

*ns

iτ) ,(1 iiii xss τ=− , xi ∈ , i = 1, 2,..., n.)( ii sX (20)

unde reprezintă mulţimea tuturor deciziilor admisibile din faza i.

Funcţia utilitate (eficienţă) a fazei i este : Si × Xi → R

)( ii sX

vi

Page 40: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 40

) ), ,(() ,( iiiiiiii xxsvxsv τ= , i = 1, 2,..., n (21)Funcţia obiectiv globală f devine

) ,..., ,()) ,( ),..., ,(( 1111 nnnnn xxsf~

xsvxsvff == (22)

Definiţie. Problema de optimizare secvenţială (7) este decompozabilă progresiv, dacă există funcţiile : R2

→ R (i = 2, 3,..., n), (a, ⋅) monotonă pentru a∈R, astfel încât:

gi

gi

))) ,( ),..., ,(( ), ,(( )) ,( ),..., ,((

1111111

1111

−−−−==

iiiiiiii

iii

xsvxsvfxsvgxsvxsvf

unde fi (i = 1, 2,..., n–1) este funcţia obiectiv asociată procesului secvenţial limitat la fazele 1, 2,..., n, cu

(23)

Page 41: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 41

şisau echivalent cu funcţiile reciproce de transfer:f v v1 1 1( ) = f fn =

)) ,..., ), ,(( ), ,((

) ,..., ,(

111

1

−− τ=

=

iiiiiiiii

iii

xxxsf~

xsvg

xxsf~

(24)

pentru i = 2, 3,..., n, si ∈ Si , x1∈ , xi ∈ ,cu şi .

)( 11 sX )( ii sX

11 vf~= ff

~f~

n ==

Conform teoremei de optimalitate, formulată pentru cazul n-dimensional, se pot deduce următoarele ecuaţii ale programării dinamice progresive:

=) ,..., ,( opt 1 ,...,1

iiixx

xxsf~

i

Page 42: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 42

⎟⎟⎠

⎞⎜⎜⎝

⎛τ= −−

) ,..., ), ,((opt , ) ,( opt 111 ,..., 11

iiiiixx

iiiix

xxxsf~

xsvgii (25)

pentru i = 2, 3,..., n, cu .) ,( opt) ,( opt 11111111

xsvxsf~

xx=

Algoritmul programării dinamice progresive:Pasul 1. Se rezolvă problema corespunzătoare fazei 1,

cu necunoscuta x1, în funcţie de parametrul s1∈S1. Se calculează:

)( )}( | ) ,({opt )}( | ) ,({opt

11111111

111111

shsXxxsvsXxxsf

~

=∈==∈ (26)

Se determină pentru care .)( 11 sx* ))( ,()( 111111 sxsvsh *=

Page 43: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 43

Pasul 2. Se rezolvă, succesiv, problema corespunză-toare fazei i, pentru i = 2, 3,..., n - 1, cu necunoscutaxi, în funcţie de parametrul si -1∈ Si - 1.Se determină pentru care)()( iii

*i sXsx ∈

)))( ,(( )),( ,(()( 1 i*iiiii

*iiiiii sxshsxsvgsh τ= −

Pasul 3. Se rezolvă problema corespunzătoare fazein, cu singura necunoscută xn . Se determină , cu sn = şi

(27)

)()( nnn*n sXsx ∈ *

ns

))( ),...,( ,() ,..., ,(opt)( 11 ,...,1

*n

*n

*n

**nn

*nn

xx

*nn sxsxsf

~xxsf

~sh

n

==(28)

unde , i = n -1, n -2,..., 1.)) ,(()( 111*i

*ii

*i

*i

*i

*i xsxxsx +++τ==

Page 44: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 44

Valoarea optimă a funcţiei obiectiv f este . )( *nn sh

Soluţia optimă a problemei este ,unde , , i = n -1,...,1.

) ,..., ,( 21*n

*** xxxx =)( *

n*n

*n sxx = )) ,(( 111

*i

*ii

*i

*i xsxx +++τ=

Observaţii:1) Dacă într-un proces secvenţial cu n faze, starea s0

(sau starea sn) este cunoscută, se efectuează par-curgerea de la starea necunoscută spre starea cu-noscută.

2) Dacă stările s0 şi sn sunt cunoscute (impuse) şi dacă se pot defini funcţiile de transfer în ambele sensuri, atunci poate fi ales oricare din cele două sensuri de parcurs.

Page 45: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 45

Exemplu. Să se rezolve problema din exemplul anterior cu metoda programării dinamice progresivă.Soluţie. Notaţiile îşi păstrează semnificaţiile.

Starea finală a procesului este cunoscută s4 = = 1.Funcţiile reciproce de transfer sunt:

= s1 - x1 + 8 = s2 - x2 + 6 = s3 - x3 + 7 = s4 - x4 + 6

s4*

τ1 1 1( , )s xτ2 2 2( , )s xτ3 3 3( , )s xτ4 4 4( , )s x

Funcţiile de utilitate sunt:= 14x1 = 16x2= 15x3 = 14x4

v s x1 1 1( , ) v s x2 2 2( , )v s x3 3 3( , ) v s x4 4 4( , )

Page 46: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 46

Funcţiile obiectiv ale proceselor secvenţiale limitate sunt:

= 14x1= 14x1 + 16x2= 14x1 + 16x2 + 15x3= 14x1 + 16x2 + 15x3 + 14x4

~f1~f2~f3~f4Se determină spaţiile de decizie ale variabilelor

cu ajutorul funcţiilor reciproce de transfer: s0 = 3 ⇔ s1 - x1 + 8 = 3 ⇔ x1 = s1 + 5 ⇔

⇔ x1∈ = {s1 + 5}.0 ≤ s2 - x2 + 6 ≤ 4 ⇔ s2 + 2 ≤ x2 ≤ s2 + 6 ⇒

⇒ x2 ∈ = [s2 + 2, s2 + 6]

X s1 1( )

X s2 2( )

Page 47: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 47

0 ≤ s3 - x3 + 7 ≤ 6 ⇔ s3 + 1 ≤ x3 ≤ s3 + 7 ⇒⇒ x3 ∈ = [s3 + 1, s3 + 7]

0 ≤ s4 - x4 + 6 ≤ 5 ⇔ s4 + 1 ≤ x4 ≤ s4 + 6 ⇒⇒ x4 ∈ = [s4 + 1, s4 + 6]

X s3 3( )

X s4 4( )

Problema este decompozabilă progresiv în raport cu funcţia = a + b.

Se rezolvă problemele de optim corespunzătoare fazelor, cu ecuaţiile programării dinamice progresive.Faza 1. max { | x1∈ } = max {14x1 | x1 ∈{s1 + + 5}} = 14 s1 + 70, pentru = s1 + 5.Faza 2. max { | x2∈ } = max {16x2 + 14s1 +

g a b( , )

~f1 X s1 1( )

x s1 1* ( )

~f2 X s2 2( )

Page 48: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 48

+ 70 | x2 ∈ } = max {16x2 + 14(s2 - x2 + 6) +70 |x2 ∈ } = max {2x2 + 14s2 + 154 | x2 ∈ [s2 + 2, s2 + 6]} = 16s2 + 166, pentru = s2 + 6.Faza 3. max { | x3∈ } = max {15x3 + 16s2 + + 166 | x3 ∈ } = max {15x3 + 16(s3 - x3 + 7) ++ 166 | x3 ∈ } = max {-x3 +16s3 +278 | x3 ∈ [s3 + + 1, s3 + 7]} = 15s3 + 277, pentru = s3 + 1.Faza 4. max { | x4∈ } = max {14x4 + 15s3 + + 277 | x4 ∈ } = max {14x4 + 15(s4 - x4 + 6) ++ 277 | x4 ∈ } = max {-x4 + 15s4 + 367 | x4 ∈∈ [s4 + 1, s4 + 6]} = 14s4 + 366, pentru = s4 + 1

X s2 2( )X s2 2( )

x s2 2* ( )

~f3 X s3 3( )

X s3 3( )X s3 3( )

x s3 3* ( )~

f4 X s4 4( )X s4 4( )X s4 4( )

x s4 4* ( )

Page 49: Curs 14

Cap.13. Programare dinamicăMS - Cursul 14 49

pentru = = 2.Avem:

= 1- 2 +6 = 5 ⇒= 5- 6 +7 = 6 ⇒= 6 -12 +6 = 0 ⇒= 0 -5 +8 = 3

Soluţia optimă este identică cu cea obţinută prin metoda programării dinamice regresivă şi anume:

x4* x s4 4

* *( )

s s x3 4 4 6* * *= − + x x s s3 3 3 3 1 6* * * *= = + =( )s s x2 3 3 7* * *= − + x x s s2 2 2 2 6 12* * * *= = + =( )s s x1 2 2 6* * *= − + x x s s1 1 1 1 5 5* * * *= = + =( )s s x0 1 1 8* * *= − +

x x x x x* * * * *= ( , , , )1 2 3 4 = (5, 12, 6, 2)f *Valoarea optimă a funcţiei obiectiv = 380 u.m.

Cum ⇒ max { | x4∈ } = 380,s s4 4* = = 1

~f4 X s4 4( )