L’algoritmo che `e stato realizzato in MatLab segue lo schema logico illustrato nella figura 7.4. La funzione di fitness valutata per ogni particella `e la funzione di handle citata nei paragrafi 5.2e 5.3, fatta in modo che abbia come unico ingresso il vettore temporale t e come unica uscita il valore della funzione penalizzata DV . Il tipo di penalizzazione applicata `e del tipo esterna, di modo che quando la funzione rientra in tutti i limiti imposti non viene in alcun modo penalizzata.
Gli input che devono essere forniti all’algoritmo di ottimizzazione sono: • La funzione di fitness
• I limiti inferiori dello spazio di ricerca espressi tramite il vettore lb espresso come lb = [x1min x2min . . . xnmin]
• I limiti superiori del dominio di interesse, tramite ub simile al precedente ub = [x1max x2max . . . xnmax]
• La dimensione della popolazione, ossia il numero di particelle che si vuole utilizzare
Al termine del processo di ricerca dell’ottimo, i dati ottenuti vengono raffinati attraverso l’u- tilizzo dell’ algoritmo di ottimizzazione di MatLab fminsearch Esso viene richiamato utilizzando sempre la stessa funzione utilizzata per il fitness del PSO e come punto di partenza il vettore degli stati dato come soluzione dall’algoritmo PSO. Questo permette di raffinare la ricerca locale, dell’ottimo, in quanto quest’ultimo algoritmo `e molto pi`u efficiente nella ricerca locale di quanto non lo sia l’algoritmo PSO. Spesso infatti dopo la ricerca combinata il ∆v totale risulta pi`u basso di circa 2 km/s, inoltre il tempo di esecuzione di quest’ultimo algoritmo `e veramente molto rapido e influenza in modo minimale il tempo di calcolo totale dell’algoritmo.
7 – L’algoritmo PSO
Capitolo
8
Prove e Risultati
Nell’ultima fase di questo lavoro, una volta implementato completamente il codice e aver aggiustato le possibili cause di errore durante l’esecuzione, si sono eseguite delle prove pratiche andando a cercare la soluzione ottima per alcuni tipi di missione che prevedano almeno tre trasferimenti interplanetari e che abbiano quindi almeno 2 manovre di powered flyby. Come abbiamo visto nella descrizione degli script, questi sono stati creati in modo da avere una forma il pi`u generale possibile; in particolare lo script che imposta la funzione da utilizzare come funzione di fitness all’interno dell’algoritmo della Particle Swarm Optimization si adatta a qualsiasi numero di pianeti incontrati durante la missione e a ciascun numero di rivoluzioni per ogni arco di orbita; questi parametri possono semplicemente essere impostati nello script prima del lancio dell’ottimizzazione.
8.1
Le missioni studiate
Sono state studiate 7 tipi differenti di missione, da una pi`u semplice con un doppio flyby ad una pi`u complessa che coinvolge in totale 6 pianeti: nello specifico queste missioni sono:
1. Una missione di trasferimento da Terra a Giove con un primo flyby su Venere ed un secondo flyby su Marte; in questo caso non vengono considerate traiettorie multirivoluzione, la so- luzione al problema di Lambert viene quindi cercato con n = 0 ; i parametri impostati per questo primo caso sono quindi
8 – Prove e Risultati
2. Una missione di trasferimento sempre tra Terra e Giove i cui pianeti per il flyby sono sempre Venere prima e Marte poi, ma con la differenza che si considerano traiettorie multirivoluzione in cui il primo e il secondo ramo possono avere fino a 2 rivoluzioni mentre il terzo fino a una rivoluzione (dati i tempi maggiori di un trasferimento Marte-Giove); i parametri impostati in questo secondo caso sono;
pianeta = [3 2 4 5]; n = [2 2 1]
3. Una missione di trasferimento tra Terra e Marte sfruttando nell’ordine Venere e Terra per il flyby, nella quale vengano sfruttate orbite con molte rivoluzioni in cui viene posto come limite superiore 5 rivoluzioni per ogni trasferimento
pianeta = [3 2 3 4]; n = [5 5 5]
4. Una missione senza considerare rivoluzioni multiple, dove viene effettuato un doppio flyby sui pianeti Marte e Giove per raggiungere Saturno;
pianeta = [3 4 5 6]; n = [0 0 0]
5. Una missione spinta ancora pi`u verso l’esterno del sistema solare: un trasferimento Ter- ra - Nettuno che sfrutti Giove e Saturno come pianeti di flyby. Vengono considerate solo traiettorie che non hanno rivoluzioni multiple
pianeta = [3 5 6 8]; n = [0 0 0]
6. Una missione di trasferimento tra Terra e Giove con flyby dei pianeti: Venere, Venere, Terra, Marte; questo rappresenta il trasferimento pi`u complesso in quanto vengono effettuati ben 4 flyby , vi sono quindi 5 risoluzioni del problema di Lambert da compiere; per appesantire meno questo calcolo ci si limita al solo caso di orbite non multirivoluzione; in questo caso i parametri sono
pianeta = [3 2 2 3 4 5]; n = [0 0 0 0 0]
7. Un’ultima missione cerca di unire tutte le caratteristiche che si possono avere: si considera un trasferimento Terra - Giove con flyby multipli nell’ordine sui pianeti Venere, Venere, Terra, Marte, con un numero di rivoluzioni che pu`o arrivare a 4 per le prime orbite e a 2 per il
8 – Prove e Risultati
penultimo trasferimento; riassumendo la missione `e descritta dai valori
pianeta = [3 2 2 3 4 5]n = [4 4 4 2 0]
pianeta = [3 4 3 4 5 6]n = [4 4 4 2 0]
Per tutte le missioni studiate sono stati impostati gli stessi parametri globali, che oltre agli elementi orbitali dei pianeti illustrati nei paragrafi ?? e 5.2
Per avere un riferimento sulla bont`a dei risultati ottenuti tramite l’ottimizzazione si usa come termine di paragone il ∆v necessario ad eseguire un trasferimento alla Hohmann tra le orbite di due pianeti. Questo tipo di manovra orbitale `e molto semplice da calcolare e rappresenta il termine di paragone ideale in quanto si pu`o dimostrare che qualora il rapporto tra il raggio dell’orbita finale rf e il raggio dell’orbita iniziale ri sia minore di 12, la manovra di Hohmann `e ottima, ovvero `e
quella che pu`o essere compiuta con il minimo ∆v e quindi con il minimo consumo di carburante. Per valori superiori di 12 (nei quali in realt`a rientrano solo le orbite dei pianeti pi`u esterni Urano, Nettuno e Plutone) la manovra pi`u conveniente `e una biellittica.
I valori calcolati di ∆v di una manovra di Hohmann sono riportati in tabella 8.1 per tutti i pianeti del sistema solare (i valori riportati sono espressi in km/s)
Mercurio Venere Terra Marte Giove Saturno Urano Nettuno Plutone
M 0 12.548 17.144 21.354 25.641 25.446 24.603 23.963 23.579 V 12.548 0 5.202 10.531 17.992 18.751 18.565 18.175 17.899 T 17.144 5.202 0 5.5935 14.436 15.731 15.940 15.707 15.500 M 21.354 10.531 5.5935 0 10.151 12.139 12.907 12.906 12.803 G 25.641 17.991 14.436 10.151 0 3.3368 5.6794 6.4735 6.7527 S 25.446 18.751 15.731 12.139 3.3368 0 2.7623 3.9021 4.3797 U 24.603 18.564 15.940 12.907 5.6794 2.7623 0 1.3503 1.9947 N 23.963 18.175 15.707 12.906 6.4735 3.9021 1.3503 0 0.6883 P 23.579 17.899 15.500 12.803 6.7537 4.3797 1.9947 0.6883 0
Tabella 8.1. ∆v per trasferimenti alla Hohmann
Dopo le prime prove i cui si sono variati i parametri della PSO, si `e deciso di dare pi`u importanza alla soluzione globale trovata , dando un valore maggiore al parametro c2 Il parametro χ `e stato tenuto pi`u alto dei valori trovati in letteratura poich´e l’algoritmo `e dotato di controlli sia sulla posizione che sulla velocit`a nel caso queste dovessero superare i limiti consentiti. I parametri impostati sono quindi
8 – Prove e Risultati
• c2 = 1.7 • w = 1.4 • χ = 0.8
il parametro w viene diminuito di un valore di 0.08 per ogni volta che l’algoritmo trova una posizione globalmente migliore della precedente, diminuendo cos`ı l’attitudine esplorativa dell’algoritmo. Esso viene inoltre ulteriormente diminuito di 0.02 per ogni 40 iterazioni che non hanno avuto successo