30.06.2013 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!