Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Ottimizzazione
L’obiettivo di un problema di ottimizzazione è quello di trovare un vettore di variabili decisionali x in modo tale che una funzione obiettivo sia minimizzata o massimizzata. In un problema di ottimizzazione dinamica, le variabili decisionali e altri parametri che definiscono il problema generalmente variano nel tempo:
- per cause esterne
- in conseguenza di scelte precedenti in modo non intento e non banale
L’ottimizzazione dinamica è caratterizzata da una funzione obiettivo cumulativa e da vincoli dinamici (prendere decisioni nel passato condiziona le possibilità di minimizzare/massimizzare la funzione obiettivo).
Lot sizing
Il problema consiste nel decidere quanto e quando produrre un certo bene per soddisfare una domanda (nota D). Si hanno:
- costi fissi di produzione Ak
- costi di immagazzinamento hk
con xk lotti in magazzino, uk lotti prodotti, pk costi di produzione al tempo k, M limite di produzione e
η(u_k) = { 0 u_k = 0 1 u_k > 0}
I vincoli in rosso esprimono in maniera esplicita l’evoluzione temporale della variabile. Al crescere di N (N →∞) la soluzione ha un numero di vincoli sempre più grande da considerare (diventa impossibile da computare).
I vincoli in rosso hanno dunque la natura di un sistema dinamico
xk+1 = xk + uk - dk k ∈ ℕ
x0 = 0
e dunque l'evoluzione temporale delle variabili coinvolte deve essere rappresentata in modo implicito attraverso l'utilizzo di modelli dinamici.
Inoltre, poiché l'orizzonte temporale del modello deve essere arbitrariamente lungo ma anche arbitrariamente fitta (le decisioni devono poter essere prese anche in intervalli di tempo molto ridotti), i modelli dinamici (lineari) da considerare sono quelli a tempo continuo
x(t) = Ax(t) + Bu(t) t ∈ ℝ
x(0) = x0
da cui a posteriori si potrà pensare ad una situazione fisica con una discretizzazione della variabile temporale.
Si vogliono dunque trovare delle politiche di controllo in retroazione che siano ottime rispetto a dei funzionali di costo cumulativi che pesano contemporaneamente lo sforzo di controllo u e il risultato ottenuto x. In particolare, la programmazione dinamica fornisce condizioni necessarie e sufficienti per un controllo ottimo.
PUSH (che agiscono successivi di j), che aggiorna la stima sulla base della stima del nodo j attuale, confrontando per ciascuno dei successori di j la stima attuale con il precursore che passa per j.
Problema dello zainetto
Consideriamo uno zainetto di capacità (volume) K. Possiamo riempire lo zaino con un numero intero di oggetti xi:
i=1,...,N (dunque di N tipi diversi). Ogni oggetto ha volume vi e valore ci.L'obiettivo è quello di massimizzare il valore dello zainetto:
( max N Σ ci·xi. i=1 )P(N,K) = { N Σ vi·xi ≤ k i=1 xi ≥ 0 , xi ∈ N i = 1,...,N
In questo problema lo sfruttamento della programmazione dinamica ovviene con la considerazione che la scelta di aggiungere o meno l'oggetto xi (e in che misura) influenza la capacità di inserire oggetti in futuro.
La soluzione algoritmica prevede di risolvere una sequenza di
N K sottoproblemi P(z,Λ), con z ≤ N Λ ≤ K.Valendo dunque il principio di ottimalità e possibile scrivere anche in tal caso un'equazione ricorsiva che descriva il valore massimo ottenibile.
In questo esempio si introduce uno stato che evolve dinamicamente: la variabile yt è il volume libero dello zainetto. Allora l'equazione dinamica che descrive questo stato è:
yk+1 = yk - vK
con y0 = K, e yk ≥ vk. Per scrivere l'equazione che caratterizza la soluzione ottima si definisce V(y), il valore massimo ottenibile dato il volume y (dunque V(0) = 0):
V(y) = _{ max | {cx + V(y-vK) }, ∀ y ∈ {1,...,K}
in I e le colonne in J.
Si parla di minore principale se I=J. Si parla di minore
principale dominante di ordine k se I=J e I e J contengono
ordinatamente le prime k righe e colonne.
Supponendo M simmetrica, per il criterio di Sylvester:
M è definita positiva se e solo se (equivalentemente):
- Tutti gli autovalori di M sono positivi;
- Tutti i minori principali dominanti sono positivi.
M è semidefinita positiva se e solo se (equivalentemente):
- Tutti gli autovalori di M sono non negativi;
- Tutti i minori principali sono non negativi.
Controllo ottimo lineare quadratico (LQ)
Estendere al numero di decimale all'infinito vuol dire che in
ogni istante di tempo in cui dobbiamo prendere una decisione,
il numero di possibili decisioni è infinito.
Ci troviamo così a considerare un sistema lineare a tempo
discreto con xk ∈ ℝm, uk ∈ ℝm e k ∈ ℤ nella forma
xk+1 = Akk + Bkxk0 x0
L'indice di costo da minimizzare è quadratico rispetto alle
componenti x, u.
J(u.) = ΣN+1k=0 (xtkQkxk + utkRkuk) + xtNSNxN
con:
- Q ∈ ℝn x m simmetrica e semidefinita positiva;
- R ∈ ℝn x m simmetrica e definita positiva;
- S ∈ ℝn x m simmetrica e semidefinita positiva;
Per il principio di ottimalità, quello che sa lo stato xN raggiunto
dal processo al tempo N-1 sotto l'azione del controllo ottimo
il valore di uN-1 (l'ultimo comando di controllo) che rende
minimo l'intero indice di costo J deve essere tale da ottenere
un costo residuo J nell'intervallo [N-1, N] minimo (cioè
deve essere tale da minimizzare il problema ristretto).
Xk Q Xk = [ X1,k X2+1,k ] Q [ X3+1,k ]2 Q [0 0] = Q [ ]
S = [1 0] [0 0]
[ ] A + B uk -> A = [1 1] B = [0] [ X3+1,k + X1+1,k] [ ] uk + Uk k[Uk + Uk] -> [ ] [ X3+1,k Uk Uk + Uk ]
P3 S = [1 0] [0 0]
P2 = Q + λP3A = ATP3B (R + B⟩ P3 B)⟩+1 B⟩ P3A = Q + [ ]T [ ] [ ] o] = [0 1] Q [ ] A Q 1 [0 1]. [0 1] = [0 1]
[0 1] = [1+ ] [0 1] = [1 0]
= [0 1] [0 0] +1 [. 0 - = [2 1] [1 2]
Per calcolare P1 R + BTP2B - 1 + [0 1] [ 1 1] [0] = 1 = 1 + 2 - 3 -> (RTBTP2B)-1 = 1/3
P1 = [0 0] + 1 [1 1] [1 1] [1 1] [1 1] [1 1] [1] [0 1] [0 1] [1] [0 1] [1] [1 0] [0 1]
[1 1] [1 0] = [0 1] + 1 [5 2] [1 1] [3 1] [1] [3 1] = [ 1/3] [1 0] = [3 1]
[0 0] [5 2] [1 9 3 ] [3 1]
P0 = [3 2] [1 5 1] [2 3]
[ ] [2 1][2] 24/8 [2 5] [2 3.5 ]= 2[0]
[ ] [ ]
J(uk) = x0T P0 x0 - [1 0] ][3 2/1] [ ] 1 [0] = 3 [2 21/8 ] [0]
Calcolare ora la sequenza ottima uk: uk = (RTBTP2B)-1 = BTP2A x0 = (1 + 5/34 [0] [2 1] [1 1] [1] [ ] [1 5/3] [1 5 [0] ]