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