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.

0.035<br />

0.03<br />

0.025<br />

0.02<br />

0.015<br />

0.01<br />

0.005<br />

0 100 200 300 400 500 600 700 800<br />

Fig. 17. Andamento temporale del parametro ε(k) secondo l’Alg. 8. Le<br />

oscillazioni sono pressocché sparite e si può notare molto bene come il<br />

parametro tenda ad attestarsi <strong>di</strong>cotomicamente attorno a determinati valori<br />

nei vari istanti <strong>di</strong> tempo.<br />

Algorithm 8 Algoritmo <strong>di</strong> t<strong>un</strong>ing del parametroεperfezionato<br />

<br />

<br />

1: δ(h−τ) = y(h−τ)<br />

<br />

y(h−τ−¯τ) <br />

z(h−τ) − z(h−τ−¯τ) <br />

<br />

<br />

2: δ(h) = y(h)<br />

<br />

y(h−τ) <br />

− <br />

3: if<br />

i=1<br />

z(h)<br />

z(h−τ)<br />

N N<br />

δi(h−τ) > δi(h) then<br />

i=1<br />

4: if ε è stato aumentato precedentemente then<br />

5: ¯ε = ε ⊲ continua ad aumentarlo<br />

6: if ε < 0.5 then<br />

7: ε = 1.5ε<br />

8: else<br />

9: ε = ε+(1−ε)/2.5<br />

10: end if<br />

11: else ⊲ se in precedenza è <strong>di</strong>minuito,<br />

12: ∆ε = |¯ε−ε|<br />

13: ¯ε = ε<br />

14: ε = ε+∆ε/2 ⊲ riportalo a <strong>un</strong> valore interme<strong>di</strong>o<br />

15: end if<br />

16: τ = τ/2<br />

17: if τ < 1 then<br />

18: τ = 1<br />

19: end if<br />

20: else<br />

21: if ε è stato aumentato precedentemente then<br />

22: ∆ε = |¯ε−ε|<br />

23: ¯ε = ε<br />

24: ε = ε+∆ε/2 ⊲ riducilo ad <strong>un</strong> valore interme<strong>di</strong>o<br />

25: else ⊲ se in precedenza è <strong>di</strong>minuito,<br />

26: ε = ε/2 ⊲ contin<strong>un</strong>a a <strong>di</strong>minuirlo<br />

27: ¯ε = ε<br />

28: end if<br />

29: τ = τ ∗2<br />

30: end if<br />

8<br />

6<br />

4<br />

2<br />

0<br />

−2<br />

−4<br />

−6<br />

−8<br />

0 1000 2000 3000 4000 5000 6000<br />

Fig. 18. Evoluzioni temporali degli stati xi(k),i = 1,...,N per N = 10 e<br />

coefficienti come in 56 ottenute con ε costante pari a 0.001, <strong>di</strong> poco inferiore<br />

a ε ∗ , (in blu a tratti) e con ε variabile secondo l’Alg. 7 (in nero) e secondo<br />

l’Alg. 8 (in rosso a tratti). Le mo<strong>di</strong>fiche apportate in ques’ultima versione<br />

dell’<strong>algoritmo</strong>, hanno consentito <strong>un</strong> ulteriore miglioramento.<br />

L’idea che è stata seguita è quella <strong>di</strong> utilizzare la stessa<br />

stategia <strong>di</strong> t<strong>un</strong>ing precedentemente illustrata in parallelo per<br />

ogni agente, con l’<strong>un</strong>ica <strong>di</strong>fferenza che il valore <strong>di</strong> εi viene<br />

aggiornato in base allo stato xi del singolo agente. Il co<strong>di</strong>ce<br />

con i dovuti aggiustamenti è presentato in Alg. 9 18 .<br />

Ora ogni agente procede con il t<strong>un</strong>ing del proprio parametro<br />

εi in modo in<strong>di</strong>pendente e sfasato rispetto agli altri. Questo<br />

perché ogni agente esegue l’aggiornamento ogni τi iterazioni<br />

e aggiusta il valore <strong>di</strong> τi solo in base al movimento della<br />

propria variabile <strong>di</strong> stato. Non è necessario lo scambio <strong>di</strong><br />

alc<strong>un</strong>a informazione aggi<strong>un</strong>tiva tra i <strong>di</strong>versi agenti e quin<strong>di</strong><br />

non si ha per<strong>di</strong>ta <strong>di</strong> efficienza. Tuttavia emergono altri tipi<br />

<strong>di</strong> problemi. Dato che gli agenti non com<strong>un</strong>icano sempre<br />

tra loro, come esposto nella Sez. II-D3, la convergenza al<br />

p<strong>un</strong>to <strong>di</strong> minimo globale è ritardata. Inoltre la casualità con<br />

cui avvengono gli scambi <strong>di</strong> dati si traduce in evoluzioni <strong>di</strong><br />

stato caratterizzate da andamenti <strong>di</strong>somogenei. Tutto ciò si<br />

ripercuote sul processo <strong>di</strong> t<strong>un</strong>ing dei vari εi con effetti molto<br />

<strong>di</strong>versi per ogni singolo agente. Risulta possibile, infatti,<br />

che <strong>un</strong> nodo della rete entri in fase convergente prima degli<br />

altri e quin<strong>di</strong> alzi in modo eccessivo il proprio parametro<br />

rischiando <strong>di</strong> ricadere in fase <strong>di</strong>vergente che causerebbe <strong>un</strong>o<br />

spreco <strong>di</strong> iterazioni. In alc<strong>un</strong>i casi, la procedura con cui<br />

vengono aggiornati i perio<strong>di</strong> τi può portare a <strong>un</strong> aumento<br />

spropositato degli stessi. L’effetto che ne deriva è quello <strong>di</strong><br />

<strong>un</strong> peggioramento delle prestazioni dovuto sia alla lentezza<br />

nell’aggiornamento <strong>di</strong> εi, sia al fatto che <strong>un</strong> periodo <strong>di</strong><br />

campionamento troppo l<strong>un</strong>go maschera, <strong>di</strong> fatto, la reale<br />

evoluzione dello stato.<br />

La soluzione a questo problema non è, però, <strong>di</strong>fficile da<br />

trovare. Infatti è sufficiente introdurre <strong>un</strong> valore massimo per<br />

18 Si noti che in questo caso nella riga <strong>di</strong> co<strong>di</strong>ce 3 non compaiono sommatorie.<br />

Questo perché ogni agente prende in considerazione esclusivamente<br />

l’evoluzione della propria variabile <strong>di</strong> stato. Ciò ha lo spiacevole effetto<br />

<strong>di</strong> aumentare la sensibilità alle rapide variazioni del singolo stato, ma è<br />

necessario per realizzare <strong>un</strong> <strong>algoritmo</strong> <strong>di</strong>stribuito

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

Saved successfully!

Ooh no, something went wrong!