7.1 Schema logico di ottimizzazione
Come già descritto nel capitolo “Approccio alla procedura di ottimizzazione” l’obbiettivo della presente ottimizzazione è quello di definire, tra le diverse configurazioni analizzate, una possibile forma dell’alettone che minimizzi il coefficiente di resistenza (Cd) e massimizzi il coefficiente di portanza (Cl). L’ottimizzazione sarà quindi di tipo Multi-‐ obbiettivo in quanto si hanno due funzioni obbiettivo. L’ottimizzazione viene svolta ponendo un flusso d’aria orizzontale a velocità costante avente il valore di 33 m/s (circa 120 Km/h) e la dimensione totale dell’alettone è fissata e pari a 300 mm.
Osservando il workflow di modeFRONTIER costruito per il lavoro svolto è possibile individuare i seguenti nodi:
• Input node: Impostazione delle variabili di ottimizzazione unitamente al passo di discretizzazione e ai relativi estremi di variazione;
• Doe node: Definizione della popolazione di partenza e della modalità di generazione della stessa;
• Scheduler node: Scelta del tipo di algoritmo di ottimizzazione e dei relativi parametri di controllo;
• Matlab node: Selezione del file.m da eseguire;
• If node: Esegue il controllo del risultato fornito da Matlab e determina la continuazione o l’arresto del calcolo aerodinamico di una specifica configurazione; • Catia node: Genera la geometria dell’alettone da analizzare in STAR-‐CCM+ e la
esporta in formato .igs;
• SHH node: Impostazione dei parametri per la connessione al Linux Cluster del laboratorio
• Support file node: Assegnazione dei comandi .java per STAR-‐CCM+; • Output file node: Lettura del file di report prodotto da STAR-‐CCM+;
• Output node: Estrazione del valore da utilizzare dal file di report delle forze; • Design objective: definizione degli obbiettivi
Capitolo 7 – Procedura di ottimizzazione in modeFRONTIER
Figura 7.1: Workflow di modeFrontier per l’ottimizzazione dell’alettone
Capitolo 7 – Procedura di ottimizzazione in modeFRONTIER
7.2 Impostazione del modello CAD
Nel nodo Catia è necessario selezionare il file relativo al modello parametrizzato e ogni ciclo la geometria verrà aggiornata prima che la configurazione arrivi al nodo successivo. Affinchè Catia venga correttamente avviato ad ogni passo del ciclo iterativo si deve definire il driver con il quale è eseguito il software cad. La sua definizione avviene attraveso il pulsante Catia driver dalla finestra centrale di dialogo del nodo, riportata in figura 7.2.
Figura 7.2: Finestra per la definizione di avvio del driver di Catia
Capitolo 7 – Procedura di ottimizzazione in modeFRONTIER
Le variabili di input di modeFRONTIER devono essere connesse con i parametri che sono stati definiti all’interno del modello parametrico in Catia.
Ricordando che gli input del modello sono:
• Tre punti ausiliari per il dorso del profilo anteriore • Tre punti ausiliari per il ventre del profilo anteriore • Tre punti ausiliari per il dorso del profilo posteriore • Tre punti ausiliari per il ventre del profilo posteriore • Scalatura del profilo anteriore
• Scalatura del profilo posteriore
• Traslazione lungo l’asse z del profilo posteriore • Rotazione del profilo anteriore
• Rotazione del profilo posteriore
La connessione fra i parametri di input e quelli corrispondenti in Catia viene eseguita con il comando introspection, schematizzato come un binocolo vicino a ciascuna variabile, attraverso il quale il software fornisce un elenco di tutti i parametri che sono presenti nel modello CAD e ne permette il collegamento in modo semplice, come rappresentato in figura 7.3.
Capitolo 7 – Procedura di ottimizzazione in modeFRONTIER
Figura 7.3: Implementazione degli input all’interno di modeFRONTIER
7.3 Impostazione delle variabili di ottimizzazione
Precedentemente si sono individuate quelle che sono le variabili da fornire a modeFRONTIER per effettuare l’ottimizzazione, di tali parametri bisogna definire gli intervalli estremi di variazione.
Sarà dunque necessario dare, per ogni variabile di ingresso, un limite superiore (Upperbound), un limite inferiore (Lowerbound) ed il numero di discretizzazioni in cui deve essere suddiviso l’intervallo di variazione (Delta Value). A titolo di esempio, nella figura 7.4, è riportata la finestra di dialogo che si ottiene aprendo la variabile che definisce la rotazione del profilo anteriore.
Capitolo 7 – Procedura di ottimizzazione in modeFRONTIER
Figura 7.4: Finestra per l’impostazione delle variabili di ottimizzazione
7.4 Definizione del set di famiglia iniziale: DOE (Design of experiment)
Affinchè la procedura abbia inizio è necessario avere a disposizione un set iniziale di design da cui iniziare la ricerca della soluzione ottima. Attraverso il nodo scheduler è possibile definire sia la popolazione iniziale che l’algoritmo di ottimizzazione.Il nodo DOE permette di definire una popolazione iniziale di configurazioni, che generalmente si aggirano intorno al centinaio, la quale permette l’esplorazione dell’intero spazio definito dalle variabili di input e dai loro rispettivi intervalli di variazione. Attraverso poi l’algoritmo di ottimizzazione vengono selezionati i design di DOE considerati di interesse e su questi ne vengono creati di nuovi. In altre parole l’utilizzo di un nodo DOE in questi termini ha due vantaggi: il primo riguarda la diminuzione dei tempi dell’ottimizzazione, la quale aumenterebbe aumentando il numero di combinazioni generate da modeFRONTIER, il secondo è che, con l’utilizzo di una popolazione iniziale si riesce ad individuare quel range di intervalli in cui vanno a stabilizzarsi le configurazioni da cui è possibile ripartire per una ricerca più accurata e approfondita. Questo modo di procedere si presta a quelle ottimizzazioni caratterizzate da molteplici parametri, come nel caso del nostro lavoro.
Capitolo 7 – Procedura di ottimizzazione in modeFRONTIER
Figura 7.5: Sequenze all’interno del nodo DOE
7.5 DOE: sequenze utilizzate
Nelle procedure di ottimizzazione condotte nel presente lavoro si sono utilizzate due tipi di sequenze:
• Sobol: è un algoritmo di tipo deterministico simile al random, salvo il fatto che, a differenza di quest’ultimo, offre un campionamento più regolare del design space; • Monte Carlo: esso si basa su un algoritmo che genera una serie di numeri
incorrelati tra loro, che seguono la distribuzione di probabilità che si suppone abbia il fenomeno da indagare. L’incorrelazione tra i numeri è garantita da un test chi quadrato. Quindi il metodo Monte Carlo realizza una serie di realizzazioni del
Capitolo 7 – Procedura di ottimizzazione in modeFRONTIER
fenomeno in esame, con il peso proprio della probabilità di tale evenienza, cercando di esplorare in modo denso tutto lo spazio dei parametri del fenomeno. In entrambi i casi la popolazione iniziale è stata scelta pari a 100 design.
7.6 Impostazione dell’algoritmo di ottimizzazione (Scheduler Node)
Il processo di ottimizzazione è stato condotto attraverso l’uso di algoritmi genetici. Gli algoritmi genetici riproducono il processo evolutivo della specie umana. Partendo da una popolazione iniziale (definita nel nodo DOE) il nodo Scheduler produce nuove generazioni che contengono gli elementi migliori delle generazioni precedenti, muovendosi dunque verso una condizione di ottimo globale. La soluzione trovata non sarà legata ad una condizione di ottimo assoluto, bensì di ottimo relativo dipendente, come ovvio, alla popolazione a cui si fa riferimento. La qualità di ciascun individuo, che compone la popolazione delle possibili soluzioni del problema posto, è definito attraverso una funzione di fitness. La funzione di fitness indica la capacità di adattamento all’ambiente dell’individuo. Gli individui che hanno una capacità elevata di adattamento si riproducono e riescono così a trasmettere i loro geni alle generazioni future e , sono quelli, dunque, che presentano la funzione di fitness più elevata.Nel presente lavoro la funzione di fitness coincide con la funzione obbiettivo, quindi scopo dell’algoritmo sarà quella di ottimizzare la funzione di fitness. Ogni individuo della popolazione rappresenta un elemento all’interno dello spazio di ricerca (design space). I più importanti operatori di ricerca sono il crossover e la mutazione: il primo ricombina i geni in maniera tale che i loro figli abbiano caratteristiche di entrambi i genitori, il secondo reintroduce nella popolazione materiale genetico perduto.
Gli algoritmi di ottimizzazione utilizzati sono i due algoritmi genetici denominati MOGA II (Multi objective genetic algorithm) e l’ ARMOGA (Adaptive Range MOGA). Per entrambi è necessario settare diversi parametri per avere la completa funzionalità dell’algoritmo.
• Numero di generazioni: a partire dal numero di individui della generazione di partenza (DOE), l’algoritmo crea ad ogni nuova generazione, un identico numero di individui. Nel presente lavoro è stato scelto un numero di generazioni pari a 15.
Capitolo 7 – Procedura di ottimizzazione in modeFRONTIER
• Probabilità di Crossover direzionale: consente di ottenere individui sempre migliori e il suo valore è compreso tra 0 e 1. Porre valore uguale a 0 significa ottenere un crossover di tipo classico e dunque le nuove generazioni verranno prodotte con l’incrocio del DNA. Porre un valore uguale a 1 vuol dire ottenere le nuove generazioni come combinazioni delle configurazioni tra loro più vicine. Scegliere un valore troppo alto porterebbe ad avere delle soluzioni di ottimo che convergono tutte, molto presto, tuttavia la scelta di un valore troppo basso allungherebbe di molto i tempi. Nel presente lavoro si è scelto un valore pari a 0,5. • Probabilità di selezione: generalmente questo valore viene lasciato pari a quello di default pari a 0,05. Esso rappresenta la possibilità che un individuo riesca a trasmettere tutto il suo patrimonio genetico qualora sia inserito nella popolazione successiva.
• Probabilità di mutazione: generalmente questo valore viene lasciato quello di default pari a 0,1 e rappresenta la probabilità che il patrimonio genetico di un individuo venga mutato in maniera random.
• DNA String Mutation Ratio: rappresenta la percentuale di DNA che viene cambiata dalla mutazione. Si è scelto in questo caso un valore pari a 0,05.
• Elitismo: si sceglie di abilitarlo dal momento che questo parametro garantisce una migliore efficienza ed accuratezza dell’algoritmo, poiché vengono preservati i migliori individui che costituiscono la popolazione.
• Trattamento dei vincoli: è possibile trattare i vincoli in due modi differenti: penalizzazione dei vincoli che violano i vincoli imposti o penalizzazione delle soluzioni che violano la definizione della funzione obbiettivo. Nel presente lavoro si è scelta la seconda soluzione.
• Tipo di algoritmo: è possibile scegliere tra differenti tipi di algoritmo, sulla base di lavori fatti precedentemente si è usato il criterio generazionale. Questo tipo di algoritmo aggiorna ad ogni generazione un certo numero di configurazioni con cui si lavora.
Oltre a questi parametri l’ARMOGA ha bisogno del settaggio di:
• Inizio della generazione del range di adattamento: tale valore definisce la generazione in cui inizia il range di adattamento: chiaramente se tale valore è
Capitolo 7 – Procedura di ottimizzazione in modeFRONTIER
superiore al numero di generazione il range di adattamento viene ignorato. Esso può prevenire la prematura convergenza dell’ottimo locale. Nel presente lavoro tale valore è stato posto pari a 2.
• Intervallo di generazione del range di adattamento: esso definisce l’intervallo del range di adattamento. Tale valore è stato scelto pari a 5.
Nella figura 7.6 è mostrato il settaggio nel caso dell’ottimizzazione eseguita con l’algoritmo genetico MOGA II.
Figura 7.6: Algoritmo genetico MOGAII
Capitolo 7 – Procedura di ottimizzazione in modeFRONTIER
7.7 Nodo ssh: connessione al cluster remoto
Questo passaggio viene fatto avvalendosi del protocollo shh (secure shell), tale collegamento viene effettuato attraverso un apposito nodo che risiede in modeFRONTIER. È dunque sufficiente impostare i parametri relativi alla connessione e il percorso sul cluster del file di avvio di STAR-‐CCM+ per consentire l’esecuzione del programma.
I parametri da impostare per la connessione del nodo richiedono l’impostazione del nome dell’host, del numero della porta e della password per la connessione come riportato in figura 7.7. Il percorso del file di avvio ed il numero di processori utilizzati viene invece indicato nello script, che viene eseguito subito dopo aver stabilito la connessione come visibile in figura 7.8.
Figura 7.7: Impostazione del nodo ssh
Capitolo 7 – Procedura di ottimizzazione in modeFRONTIER
Figura 7.8:Impostazione del nodo ssh
Capitolo 7 – Procedura di ottimizzazione in modeFRONTIER
7.8 Impostazione del nodo transfer file
Il processo di ottimizzazione che avviene in modeFRONTIER può essere paragonato ad un insieme di scatole cinesi. Durante l’esecuzione del processo di ottimizzazione, infatti, il software modeFRONTIER genera all’interno della cartella della simulazione in corso un insieme di sottocartelle, ciascuna delle quali corrisponde ad un differente design generato. In ogni cartella appartenente al design generato è presente un ulteriore gruppo di sottocartelle, dalle quali vengono avviati i software utilizzati nella simulazione: è necessario quindi specificare quali debbano essere trasferiti da una cartella di lavoro all’altra. Di conseguenza il file .igs relativo al modello e alla superficie del box deve essere copiato dalla cartella di lavoro di Catia alla cartella di lavoro di STAR-‐CCM+. Questa operazione viene fatta proprio attraverso il nodo transfer file come riportato in figura 7.9 e figura 7.10.
Figura 7.9:Transfer file
Capitolo 7 – Procedura di ottimizzazione in modeFRONTIER
Figura 7.10: Transfer file
7.9 Selezione del file di output e definizione della funzione obbiettivo
La lettura degli output, registrati dal nodo di STARCCM+, avviene attraverso i file di output. Si può notare che l’output file deve essere collegato con l’uscita del nodo ssh, affinchè la lettura del file avvenga nella stessa cartella di lavoro. Quindi lo scopo del file di output è quello di estrarre il file dalla cartella di lavoro del Linux Cluster e di poterlo utilizzare sul computer locale di lavoro, come visibile in figura 7.11.Figura 7.11: Output file
Capitolo 7 – Procedura di ottimizzazione in modeFRONTIER
Per estrarre i valori del coefficiente di portanza e di resistenza dai rispettivi file di testo è necessario specificare la loro posizione all’interno della finestra che si apre cliccando sul tasto Open Output File. Per identificare tale posizione è necessario utilizzare un file caratteristico di esportazione delle grandezze, relativo all’esame di una configurazione di prova. L’importazione di un file campione è definito in figura 7.12.
Figura 7.12: Esportazione dei file di report del calcolo CFD
Capitolo 7 – Procedura di ottimizzazione in modeFRONTIER
L’obbiettivo dell’ottimizzazione è quello di massimizzare il coefficiente di portanza e di minimizzare il coefficiente di resistenza. Di conseguenza all’interno del workflow saranno presenti due nodi chiamati rispettivamente massimizza e minimizza.
Il primo sarà collegato all’output variable del coefficiente di portanza mentre il secondo a quello del coefficiente di resistenza. Si riporta nella figura 7.13 la definizione del nodo relativo alla massimizzazione del coefficiente di portanza.
Figura 7.13: Settaggio dell’obbiettivo
Per settare correttamente la funzione obbiettivo sarà necessario definire i seguenti parametri:
• Name: dovrà essere introdotto il nome che sarà usato da modeFRONTIER per identificare l’oggetto di ottimizzazione;
• Enabled: qualora spuntato specifica se l’oggetto deve essere considerato o ignorato dall’algoritmo scelto nel nodo scheduler;
• Format: ossia la tipologia del formato numerico che sarà usato nelle varie tabelle per visualizzare i valori dell’oggetto;
• User Expression: ossia l’espressione che definisce la funzione obbiettivo;
• Type in questa casella si decide se minimizzare o massimizzare la funzione obbiettivo.
Capitolo 8 – Analisi dei risultati