Studio di un algoritmo di consensus Newton-Raphson ... - Automatica
Studio di un algoritmo di consensus Newton-Raphson ... - Automatica
Studio di un algoritmo di consensus Newton-Raphson ... - Automatica
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Algorithm 4 Ottimizzazione <strong>di</strong>stribuita<br />
(variabili)<br />
1: xi(n), yi(n), gi(n) ∈ R N×N for i = 1,...,M and k =<br />
1,2,...<br />
(parametri)<br />
2: P ∈ R M×M , <strong>consensus</strong> matrix<br />
3: ε ∈ (0,1)<br />
(inizializzazione)<br />
4: for i = 1 to M do<br />
5: yi(0) = gi(−1) = 0<br />
6: Zi(0) = Hi(−1) = 0<br />
7: xi(0) = 0<br />
8: end for<br />
(<strong>algoritmo</strong>)<br />
9: for n = 1,2,... do<br />
(aggiornamenti locali)<br />
10: for i = 1 to M do<br />
11: gi(n) = ∇ 2 fi(xi(n))xi(n)−∇fi(xi(n))<br />
12: Hi(n) = ∇ 2 fi(xi(n))<br />
13: yi(n) = yi(n−1)+gi(n−1)−gi(n−2)<br />
14: Zi(n) = Zi(n−1)+Hi(n−1)−Hi(n−2)<br />
15: end for<br />
(”average <strong>consensus</strong>” multi<strong>di</strong>mensionale)<br />
16: Y(n) = (P ⊗IN)Y(n)<br />
17: Z(n) = (P ⊗IN)Z(n)<br />
(aggiornamenti locali)<br />
18: for i = 1 to M do<br />
19: xi(n) = (1−ε)xi(n−1)+ε(Zi(n)) −1 yi(n)<br />
20: end for<br />
21: end for<br />
In maniera sintetica, si può affermare che la grande <strong>di</strong>fferenza<br />
tra questo metodo e quello precedente è che in questo<br />
caso la stima della mappa non è più <strong>un</strong>ivoca ma ci saranno<br />
tante stime quanti sono i sensori, che, grazie allo scambio<br />
<strong>di</strong> informazioni tra <strong>di</strong> loro, convergono asintoticamente ad<br />
<strong>un</strong>’<strong>un</strong>ica stima, in maniera del tutto analoga a quanto visto<br />
in II nel caso scalare.<br />
Ad ogni iterazione dell’<strong>algoritmo</strong>, che ricor<strong>di</strong>amo avviene<br />
in ciasc<strong>un</strong> sensore contemporaneamente, possiamo <strong>di</strong>stinguere<br />
tre fasi <strong>di</strong>verse:<br />
• Fase 1: aggiornamento della <strong>di</strong>stanza tra la propria misura<br />
e quella stimata dall’agente, successiva elaborazione dei<br />
vettori Z e Y ;<br />
• Fase 2: scambio <strong>di</strong> informazione tra gli agenti e i propri<br />
vicini;<br />
• Fase 3: aggiornamento dei vettori <strong>di</strong> coefficienti sulla base<br />
della nuova informazione.<br />
1) Fase 1: All’inizio dell’n-esimo ciclo, l’i-esimo agente ha<br />
<strong>un</strong> vettore <strong>di</strong> parametri a (i) (n) cui corrisponde <strong>un</strong>a determinata<br />
f<strong>un</strong>zione <strong>di</strong>screta G(·, a (i) (n)), e ne calcola il valore nel<br />
proprio p<strong>un</strong>to (xi) confrontandolo con quello misurato yi, per<br />
ottenere così l’errore locale <strong>di</strong> approssimazione. Per l’i-esimo<br />
agente, si avrà così:<br />
zi(a (i) (n)) = yi −G(xi, a (i) (n)) (47)<br />
Si noti come la (40) si <strong>di</strong>fferenzi dalla (47) in quanto presso<br />
ciasc<strong>un</strong> sensore si avrà <strong>un</strong>a <strong>di</strong>versa ricostruzione della mappa<br />
G(·, a (i) ) che <strong>di</strong>pende dal vettore a (i) a <strong>di</strong>sposizione dell’iesimo<br />
sensore in quell’istante.<br />
A partire da questo dato, ciasc<strong>un</strong> agente aggiorna i vettori<br />
Hi e Zi, analogo multivariabile degli elementi dei vettori z e<br />
y in 12.<br />
L’aggiornamento avviene in maniera analoga a quanto visto<br />
in II, solo che in questo caso le quantità gi(xi(n)) e hi(xi(n))<br />
non sono più scalari bensì vettori e matrici, <strong>di</strong> conseguenza<br />
nel loro calcolo intervengono gra<strong>di</strong>enti ed Hessiane al posto<br />
<strong>di</strong> derivate prime e seconde.<br />
Volendo sviluppare le espressioni per gi(xi(n)) e<br />
Hi(xi(n)), si riscrive la (47) in maniera esplicita come:<br />
yi −a (i)<br />
1 e−(xi−w1)2<br />
−···−a (i)<br />
M e−(xi−wM)2<br />
(48)<br />
A partire da questa forma risulta imme<strong>di</strong>ato calcolare il<br />
gra<strong>di</strong>ente della i-esima f<strong>un</strong>zione costo f(zi) 6 .<br />
avendo posto:<br />
⎡<br />
∇f(zi) = f ′ ⎢<br />
(zi) ⎣<br />
Si =<br />
⎡<br />
⎢<br />
⎣<br />
∂zi<br />
∂a1<br />
.<br />
∂zi<br />
∂aM<br />
⎤<br />
e −(xi−w1)2<br />
.<br />
e −(xi−wM)2<br />
⎥<br />
⎦ = −f ′ (zi)Si (49)<br />
⎤<br />
⎥<br />
⎦ (50)<br />
Infine la j-esima riga della matrice Hessiana Hi(zi) =<br />
∇ 2 fi(zi) è il gra<strong>di</strong>ente (trasposto) del j-esimo elemento <strong>di</strong><br />
∇f(zi), per cui si può calcolare l’elemento in posizione (j,k)<br />
<strong>di</strong> Hi(zi) come<br />
∂ 2 f(zi)<br />
∂aj∂ak<br />
= f ′′ (zi) ∂zi ∂zi<br />
+f<br />
∂aj ∂ak<br />
′ (zi) ∂2zi ∂aj∂ak<br />
= f ′′ (zi) ∂zi ∂zi<br />
∂ak ∂aj<br />
= f ′′ (zi)e −(xi−wk) 2 −(xi−wj) 2<br />
= f ′′ (zi)SiS T i<br />
(51)<br />
Anche nel caso <strong>di</strong>stribuito, così come si è trovato nel caso<br />
centralizzato, ad ogni iterazione vengono calcolati <strong>un</strong>icamente<br />
i nuovi valori delle derivate prime e seconde corrispondenti<br />
alle f<strong>un</strong>zioni costo locali. A partire da questi vengono calcolati<br />
i gra<strong>di</strong>enti e le matrici hessiane, sfruttando l’informazione<br />
memorizzata in ciasc<strong>un</strong> agente, ovvero il vettore Si.<br />
6 In<strong>di</strong>chiamo le f<strong>un</strong>zioni costo relative a ciasc<strong>un</strong> sensore con f(zi) anziché<br />
g(zi), per non fare confusione con il vettore gi(xi(n)), aggiornato nella riga<br />
11 dell’Alg. 4, che viene calcolato proprio a partire dalla f<strong>un</strong>zione costo locale<br />
f(zi)).