• Non ci sono risultati.

Lo Script

Nel documento Università degli Studi di Genova (pagine 85-92)

Capitolo 7: Ottimizzazione della gestione dell’impianto di propulsione

7.2 Lo Script

Capitolo 7: Ottimizzazione della gestione dell’impianto di

7.2.1 Definizione del problema

Nella prima sezione dello Script vi è la possibilità di inserire i dati e le condizioni per cui si vuole calcolare l’ottimizzazione. In Figura 7.1 si possono vedere le variabili che caratterizzano i casi che si vogliono studiare.

Figura 7.1 – Estratto dello Script del codice di ottimizzazione

• ‘’velocita’’: questa variabile è un vettore per cui si possono definire i valori del limite inferiore e superiore del range di velocità della nave per i quali si vuole svolgere lo studio. È inoltre possibile inserire il passo, che definisce l’intervallo tra le velocità e, di conseguenza, la quantità di elementi che compongono la variabile. Su questa variabile si ha la più assoluta libertà nella dimensione del vettore.

• ‘’stagione’’: il problema è definito per due diverse stagioni. Tale variabile assume valore uguale a 1 nel caso in cui si voglia studiare la condizione invernale e assume il valore 2 nel caso in cui si stia analizzando la condizione estiva. Tra le due condizioni, come spiegato nel capitolo 6, varia il carico elettrico hotel e la portata di vapore saturo richiesta dalle utenze di bordo.

• ‘’r’’: è un selezionatore di righe della variabile ‘’recuperi’’, nella quale sono definiti tutti i casi possibili in riferimento alla presenza di tecnologie per i recuperi energetici. Se la variabile assume valore 1 si analizza il caso in cui siano presenti entrambi i recuperi previsti (WHR E HTC). Nel caso in cui valga 2 o 3 l’algoritmo implementa il caso in cui, rispettivamente, siano presenti: la sola caldaia a recupero o la sola turbosoffiante ibrida. Infine, nel caso in cui la variabile assuma il valore 4 si presuppone che non sia presente alcun recupero.

Le tre variabili appena descritte possono essere composte da matrici 1 x 1 o, come visualizzato in Figura 7.1, è possibile, tramite i cicli for, definire dei vettori ed eseguire tutte le combinazioni dei casi possibili in successione. In questo modo si otterranno 8 soluzioni per ogni velocità, in quanto le combinazioni di recupero sono 4 e le stagioni sono 2.

7.2.2 Caratteristiche dei motori e dati relativi ai recuperi

In questa sezione dello Script vengono calcolati i risultati presentati nelle Tabelle 6.3, 6.4 e 6.5. Successivamente vengono caricati i risultati ottenuti dell’energia recuperata dalle tecnologie studiate, espressi nelle Tabelle 6.7, 6.8 e 6.9. Tali valori verranno, tramite cicli if, utilizzati a seconda del caso definito dalle variabili descritte nel paragrafo 7.2.1.

Viene inoltre definita la potenza al freno associata allo spillamento di vapore saturo adibito al soddisfacimento della richiesta delle utenze di bordo. Tale grandezza è calcolata essendo nota la portata massica di vapore saturo che viene mandata a soddisfare le utenze di bordo invece che essere utilizzata nei recuperi energetici. Questa potenza, che si differenzia tra le due diverse stagioni, viene sottratta dalla potenza fornita dai recuperi energetici associati ai motori.

Viene definita la curva di potenza richiesta dalla nave nel range delle velocità considerate, anche in questo caso, ridotta al freno, tramite le formule (6.2, 6.3 e 6.4) descritte nel capitolo 6. La curva permette, attraverso interpolazione lineare, di trovare una corrispondenza univoca tra la velocità nave, definita tra le variabili presentate al paragrafo 7.2.1, e la potenza richiesta al sistema propulsivo necessaria per raggiungerla.

7.2.3 Ottimizzazione della gestione dell’impianto IEP

Il concetto su cui si basa la logica del software di ottimizzazione della gestione dell’impianto IEP è di seguito descritto: selezionare i carichi dei motori x1, x2, x3, x4 e x5 per i quali si ha il valore massimo del rendimento meccanico globale dell’impianto di propulsione (equazione 6.9). La variabile x1 corrisponde al carico relativo al motore MAN da 14 MW, x2 e x3 sono relativi ai motori MAN da 12 MW, mentre x4 e x5 sono i carichi relativi ai motori di taglia inferiore (Bergen) che hanno una potenza pari a 2.43 MW ciascuno.

La funzione che si è scelta, tra quelle proposte da Matlab, è quella denominata fmincon con la quale è possibile calcolare il minimo di una funzione ponendo dei vincoli alle variabili (Figura 7.2). Volendo nel caso in esame trovare un massimo, si definisce la function f(x) da minimizzare come l’opposto del rendimento meccanico globale, definito nell’ equazione 6.9 (−𝜂𝑔𝑚).

min𝑥 𝑓(𝑥) 𝑠𝑢𝑐ℎ 𝑡ℎ𝑎𝑡 {

𝐴 ⋅ 𝑥 ≤ 𝑏

𝐴𝑒𝑞 ⋅ 𝑥 = 𝑏𝑒𝑞 (7.1)

Nell’equazione 7.1 è rappresentato un estratto dell’help di Matlab ossia una sezione del programma che spiega dettagliatamente tutte le funzioni implementate con relativi esempi. In tale equazione sono visualizzati i vincoli che è possibile introdurre:

• 𝐴 ⋅ 𝑥 ≤ 𝑏 : le x devono risolvere una disequazione di primo grado;

• 𝐴𝑒𝑞 ⋅ 𝑥 = 𝑏𝑒𝑞 : le x devono essere tali da risolvere una equazione di primo grado;

• 𝑙𝑏 ≤ 𝑥 ≤ 𝑢𝑏 : esistono dei limiti inferiori e superiori per la selezione delle x.

Nel codice si è fatto uso dell’ultimo vincolo su x. Il carico dei singoli motori, infatti, deve essere compreso tra il 25% e il 90% del rispettivo MCR. Come anticipato nel capitolo 6, infatti, si è scelto un Engine Margin pari al 10% e si vogliono evitare zone a basso carico che implichino uno SFOC troppo elevato (Figura 6.7 e 6.11). A questo vincolo è poi stato aggiunto un ulteriore vincolo di tipo non lineare (nonlcon), il quale è necessario per far sì che la combinazione dei motori sia tale da ottenere esattamente la potenza che corrisponda alla velocità per cui si sta svolgendo l’ottimizzazione.

Il procedimento della ricerca del minimo della funzione obiettivo è ripetuto per ciascuna combinazione possibile. Essendo i motori cinque, ma aventi tre taglie diverse, le combinazioni possibili sono 17, le quali vengono raccolte nella variabile ‘’y01’’ (Tabella 7.1).

y01 x1 x2 x3 x4 x5

5 motori 1 1 1 1 1

4 motori

1 1 1 1 0

1 1 0 1 1

0 1 1 1 1

3 motori

1 1 1 0 0

1 1 0 1 0

1 0 0 1 1

0 1 1 1 0

0 1 0 1 1

2 motori

1 1 0 0 0

1 0 0 1 0

0 1 1 0 0

0 1 0 1 0

0 0 0 1 1

1 motore

1 0 0 0 0

0 1 0 0 0

0 0 0 1 0

Tabella 7.1 – Tutti i casi di frazionamento dell’impianto IEP in esame

L’algoritmo, per tutti i 17 casi, calcola la combinazione dei motori attivi e dei rispettivi carichi per la quale si ha il massimo rendimento globale dell’impianto, definito dalla relazione 6.9. Di conseguenza si ottengono per ogni velocità, recupero energetico e stagione, 17 diversi rendimenti dell’impianto. È chiaro però che non tutte le combinazioni siano in grado di fornire la potenza necessaria per il raggiungimento della velocità. È stato posto quindi un controllo per cui se la potenza generata dalla combinazione scelta è minore di quella richiesta, questa venga esclusa dall’algoritmo tramite la sostituzione del rendimento con un NaN (Not a Number).

A questo punto si conoscono le combinazioni che possono fornire la potenza necessaria a raggiungere la velocità richiesta (e il carico elettrico della nave), quindi il solutore matematico riporta la/le combinazione/i di motori attivi che ha/hanno il rendimento maggiore (𝜂𝑔𝑚, equazione 6.9). Questo procedimento si effettua tramite la funzione find, la quale permette di trovare la posizione di un elemento all’interno di una matrice che soddisfi determinati requisiti definiti dall’utente; in questo caso si seleziona l’elemento per cui si abbia il valore massimo. Nell’esempio riportato nella Tabella 7.2, che si riferisce alla navigazione estiva, in assenza di recuperi e ad una velocità della nave richiesta di 20 kn, il caso per cui si ha il rendimento maggiore è uno tra i casi 6, 8 e 10 che risultano avere il rendimento circa pari a 0.473. Tra questi esiste una differenza di rendimento trascurabile, per cui è bene scegliere la soluzione relativa al caso 10. La scelta della configurazione che utilizza solo 2 motori è infatti migliore, rispetto alla soluzione ottenuta per i casi 6 e 8, per

via del maggior numero di motori in funzione contemporaneamente di queste ultime due soluzioni. Un minore numero di motori attivi comporta una minore manutenzione e un minore numero di sistemi ausiliari in funzione.

Caso x1 x2 x3 x4 x5 𝜂𝑔𝑚

1 0.521 0.548 0.548 0.250 0.250 0.461

2 0.501 0.524 0.524 0.850 0 0.463

3 0.658 0.693 0 0.850 0.850 0.471

4 0 0.730 0.730 0.850 0.850 0.472

5 0.537 0.589 0.589 0 0 0.466

6 0.750 0.750 0 0.886 0 0.473

7 0.900 0 0 0.900 0.900 NaN

8 0 0.811 0.811 0.900 0 0.473

9 0 0.900 0 0.900 0.900 NaN

10 0.828 0.838 0 0 0 0.473

11 0.900 0 0 0.900 0 NaN

12 0 0.900 0.900 0 0 NaN

13 0 0.900 0 0.900 0 NaN

14 0 0 0 0.900 0.900 NaN

15 0.900 0 0 0 0 NaN

16 0 0.900 0 0 0 NaN

17 0 0 0 0.900 0 NaN

Tabella 7.2 – Esempio per il caso estivo, no recuperi a 20 kn

Sempre dalla Tabella 7.2 si nota come per i casi 7, 9 e dall’11 al 17 la selezione dei motori non comporti la produzione di potenza tale da raggiungere la velocità richiesta, e vi sia quindi presente un NaN che esclude dalla selezione tale caso.

7.2.4 Raccolta dei dati

Il procedimento per l’ottimizzazione della gestione dell’impianto IEP, illustrato nel paragrafo 7.2.3, va ora ampliato ad ogni velocità e, successivamente, per ogni condizione di recupero e per le due stagioni.

Come visto nel paragrafo 7.2.1, e in particolare nella Figura 7.1, l’ottimizzazione viene quindi implementata attraverso cicli for ‘’concentrici’’ nella struttura seguente (dalla più interna alla più esterna) in modo da ottenere tutti i risultati per i casi voluti.

• Ciclo for per velocità;

• Ciclo for per recuperi;

• Ciclo for per stagioni.

Se si tiene conto che le velocità analizzate sono comprese tra i 16 kn e i 26 kn e si vuole utilizzare un passo di 0.5 kn, considerando che i recuperi e le stagioni compongono 8 diverse configurazioni per ciascuna velocità nave, si ha che le casistiche da analizzare sono 168. Se poi si considera che i casi per ogni velocità sono 17 si conclude che l’algoritmo, che determina le condizioni di funzionamento dei motori per ogni configurazione, è eseguito 2856 volte.

Per organizzare i 168 risultati si fa uso di un particolare oggetto all’interno di Matlab: le celle. Tali elementi sono particolari matrici ai cui elementi corrispondono ulteriori matrici.

Questo consente di avere dei ‘’contenitori’’ in cui collezionare tutte le 168 ottimizzazioni.

Quando si forma un vettore tramite un ciclo for, il tempo di calcolo si può ridurre notevolmente preallocando le matrici e le celle. Definendo in anticipo le variabili tramite matrici vuote delle dimensioni pari a quelle finali. Con tale accorgimento e utilizzando una metodologia di scrittura compatta, si possono ridurre i tempi di calcolo, che in questo modo si aggirano nell’ordine dei 4 minuti circa se si considerano tutte le combinazioni possibili.

Nel documento Università degli Studi di Genova (pagine 85-92)