Post on 18-Jul-2015
transcript
Università degli Studi di Trieste
DIPARTIMENTO DI INGEGNERIA E ARCHITETTURA _________________________________________________________________
Corso di Laurea in Ingegneria dell’Informazione
STIMA DELLA PRESSIONE TRACHEALE NEL CONTROLLO DELLA VENTILAZIONE MECCANICA
MEDIANTE GENETIC PROGRAMMING
LAUREANDA RELATORE Ngouoyiwouo Mfouapon Nadine Prof. Alberto Bartoli
CORRELATORE Dott. Alessandro Turco
SESSIONE STRAORDINARIA _______________________________________________________________________________
Anno Accademico 2012-2013
2
Indice
I – INTRODUZIONE 3 II- ANALISI E STRUMENTI 5
1) Programmazione Genetica 5
2) Evolutionary Design 7
3) Dati 10
III- ESPERIMENTO NUMERICO 12
1) Organizzazione dei dati 12
2) Ricerca dei parametri ottimali 13
3) Risultati 19
IV- VALIDAZIONE 20 V- CONCLUSIONI E POSSIBILI SVILUPPI FUTURI 21 Bibliografia e Sitografia 22 Ringraziamenti 24
3
I. INTRODUZIONE
In medicina, la ventilazione meccanica consiste nel compensare o assistere la
respirazione spontanea del paziente, utilizzando un dispositivo chiamato “ventilatore”. Essa
è più spesso praticata in un contesto di cure critiche (medicina d’urgenza, terapia intensiva o
intermedia) e di anestesia. Esistono numerose metodologie di ventilazione meccanica. In
questa tesi ci siamo interessati in particolare alla “ventilazione percussiva ad alta
frequenza”.
La ventilazione percussiva ad alta frequenza (High Frequency Percussive
Ventilation, HFPV) è una metodologia di ventilazione meccanica non convenzionale che
associa gli aspetti benefici della ventilazione meccanica convenzionale (CMV) con quelli
della ventilazione ad alta frequenza (HFV) [1]. Nel corso degli anni, questo tipo di
ventilazione si è dimostrato molto utile nel trattamento di alcune condizioni patologiche:
trauma cranico chiuso [2], sindrome da distress respiratorio dell’adulto (adult respiratory
distress syndrom, ARDS) causato da ustioni ed inalazione di fumo [3], [4], pazienti con
insufficienza respiratoria acuta (acute respiratory failure, ARF) [5], neonati con malattia
delle membrane ialine o sindrome da distress respiratorio (RDS) [6].
L’utilizzo della ventilazione percussiva ad alta frequenza in generale comporta l’uso
del tubo endotracheale1 (EET) che connette il circuito del ventilatore alla via respiratoria del
paziente. La Figura 1 mostra un tubo endotracheale inserito in trachea [20]. La pressione
misurata dal ventilatore è la somma della variazione di pressione nel tubo e della pressione
tracheale dissipata per gonfiare i polmoni. La pressione del flusso d’aria insufflato dal
ventilatore deve essere controllata molto accuratamente per evitare danni ai polmoni come il
volutrauma e il barotrauma [7]. Poiché, al momento la pressione al livello della trachea non
può essere misurata, è necessario avere un modello per stimare tale pressione basandosi
sulle proprietà del tubo (EET) e sulle proprietà del flusso d’aria che al momento possono
essere misurati in pratica clinica.
1 Tubo di materiale plastico, spesso monouso, che viene inserito nella trachea del paziente attraverso la bocca oppure attraverso il naso. [13]
4
Figura 1. Tubo endotracheale inserito in trachea attraverso la bocca: A- tubo endotracheale
(blu), B- cuffia del tubo di gonfiaggio con palloncino, C- trachea, D- esofago.
Nell’articolo “A Novel Estimation Methodology for Tracheal Pressure in
Mechanical Ventilation Control” [8] si descrive un esperimento basato sulla
Programmazione Genetica, fatto per generare tale modello. In questa tesi ci proponiamo di
riprodurre con il software modeFRONTIER l’esperimento numerico descritto nell’articolo e
di confrontarne i risultati. Ovvero, si vogliano testare le prestazioni dell’algoritmo di
programmazione genetica (Evolutionary Design) presente in modeFRONTIER su un
problema già studiato.
5
II. ANALISI E STRUMENTI
1) Programmazione genetica
Il nostro esperimento si basa sulla programmazione genetica (Genetic Programming,
GP).
La programmazione genetica è un metodo sistematico di programmazione
automatizzata, ispirata dall’evoluzione biologica, per creare programmi informatici che
risolvano un determinato problema [9]. La GP è stata usata in una vasta gamma di
applicazioni quali la web security [10], la predizione del prezzo dell’elettricità [11], il text
mining [12], la progettazione di sistema(per esempio per aerei, treni,circuiti elettronici, etc.).
La GP parte da una popolazione iniziale di programmi che nel nostro caso specifico
sono semplicemente formule matematiche. Tali formule sono generate in modo casuale da
un insieme predefinito di funzioni (function set) e di terminali (terminal set). Ciascuno di
questi programmi chiamato individuo, costituisce una soluzione candidata per il problema.
La rappresentazione ad albero è usata per raffigurare ciascuna formula. Ogni nodo-
foglia è un elemento preso dall’insieme predefinito di terminali e ogni nodo-padre è un
elemento preso dall’insieme predefinito di funzioni. Come esempio, la Figura 2 mostra la
rappresentazione in struttura ad albero di un individuo in GP.
Figura 2. Rappresentazione ad albero della formula “
€
Paw (t)-
€
Rtube˙ V (t) -
€
I ˙ ̇ V (t)”
6
La versione di base della programmazione genetica richiede di specificare le cinque
principali fasi preparatorie elencate di seguito:
a. L’insieme di terminali (terminal set) che consiste generalmente di variabili e costanti dei
programmi, numeri random, etc.
b. L’insieme di funzioni (function set) che contiene generalmente funzioni primitive come,
ad esempio, operatori aritmetici.
c. La funzione d’idoneità (fitness function) per misurare esplicitamente o implicitamente
l’idoneità degli individui nella popolazione (cioè quanto bene un individuo è capace di
risolvere il problema).
d. Determinati parametri di controllo dell’esecuzione del programma (numero d’individui
nella popolazione, numero di generazioni, etc.).
e. Il criterio di terminazione e il metodo per scegliere il risultato dell’esecuzione.
Le fasi preparatorie sono gli input definiti dall’utente umano del sistema GP. La formula
ancora chiamata individuo è il risultato dell’esecuzione di GP.
Partendo dalla generazione casuale della popolazione iniziale (come detto più in
alto), l’esecuzione di GP procede in una ricerca evolutiva strutturata in modo seguente:
a. Esegue tutti questi programmi e raccoglie i risultati.
b. Valuta l’idoneità di ogni individuo con la funzione di fitness.
c. Costruisce nuovi individui (figli) applicando gli operatori genetici scelti (come ad
esempio il “crossover”, la mutazione) sugli individui (genitori) con maggiore idoneità.
d. Costruisce una nuova popolazione composta da individui con maggiore idoneità scelti
tra genitori e figli. Questa popolazione costituisce una nuova generazione.
e. Questo processo viene ripetuto fino a quando, un criterio di terminazione è soddisfatto.
Al giorno di oggi, esistono numerosi software di Programmazione Genetica, scritti
nei tanti e diversi linguaggi di programmazione. Ad esempio i software “LIL-GP” scritto in
C, “GPC++” scritto in C++, “JGProg” scritto in Java, etc. [14]
Il software usato in questa tesi è “modeFRONTIER” scritto in Java; è prodotto da
ESTECO spa, azienda insediata presso l’Area di Ricerca di Trieste, che ha supportato la
realizzazione di questa tesi. modeFRONTIER® è una piattaforma di integrazione che
7
permette un interfacciamento diretto con un gran numero di strumenti Computer-
Aided Design e Computer-Aided Engineering, dedicata all’ottimizzazione multiobiettivo,
all’automazione dei processi di progettazione ingegneristica, all’analisi dei dati e al decision
making in contesti multidisciplinari.
Per l’esperimento in questa tesi, è stato usato il programma genetico Evolutionary
Design (ED) implementato in modeFRONTIER, che descriveremmo nel paragrafo
seguente.
2) Evolutionary Design
ED è un’implementazione effettiva della metodologia GP per la regressione
simbolica[15], [16], [17]. In generale, l’obiettivo del compito di regressione è di scoprire la
relazione tra un insieme d’ingressi (o variabili indipendenti) x e un’uscita osservabile (o
variabile dipendente) y.
Nelle tecniche di regressione standard, il modello della forma funzionale f è noto in
anticipo. Le uniche incognite sono alcuni coefficienti, cioè i parametri liberi del modello.
ED utilizza funzioni primitive elementari. Queste funzioni possono essere combinate per
specificare la funzione completa. Dato un insieme di funzioni, la forma funzionale
complessiva indotta dalla programmazione genetica può assumere una varietà di forme. Le
funzioni primitive sono di solito le funzioni aritmetiche standard come addizione,
sottrazione, moltiplicazione e divisione, ma potrebbe includere anche funzioni
trigonometriche e trascendenti. Qualsiasi combinazione ammissibile delle funzioni e delle
variabili può essere ottenuta.
La regressione simbolica è quindi una composizione di variabili di ingresso,
coefficienti e funzioni primitive tale che l‘errore della funzione rispetto al risultato atteso sia
minimizzato. Né la forma, né la dimensione sono specificate prima della regressione. Il
numero di coefficienti e quali valori essi assumono sono ulteriori problematiche determinate
nel processo di ricerca stesso. Attraverso l'uso di tali funzioni primitive, la programmazione
genetica è in linea di principio capace di esprimere qualsiasi forma funzionale che utilizza le
funzioni primitive fornite dall'utente. A differenza dei metodi tradizionali, il processo
8
Evolutionary Design ottimizza automaticamente sia la forma funzionale che i valori dei
coefficienti.
ED è in grado di fornire risposte nel linguaggio simbolico della matematica, mentre
altri metodi forniscono solo risposte in forma di serie di numeri, pesi, validi nel contesto di
un modello definito in anticipo. Così, dopo l'allenamento la formula esplicita del modello di
regressione è disponibile.
Per lanciare l’allenamento di ED in modeFRONTIER, bisogna prima di tutto
importare la tabella dei dati costituta di valori delle variabili di input e output. Ogni colonna
corrisponde a una variabile ed ogni riga corrisponde ad un design (una combinazione di
valori delle variabili). modeFRONTIER dispone di un wizard di importazione dei dati per
guidare l’utente nell’ importazione dei dati, da un file (file di testo o file di Excel) oppure da
un database server. Questo wizard consente anche di configurare la tabella impostando le
variabili di input, di output e le loro proprietà. Nel nostro caso, abbiamo importato il file csv
dei dati dell’esperimento tramite tale Data Import Wizard.
Per quest’algoritmo di programmazione genetica, possono essere definiti diversi parametri:
1. Training set: Database/Insieme dei design per l’allenamento di Evolutionary Design. È
possibile scegliere tra All Designs (in questo caso saranno usati per l’allenamento, tutti i
design della tabella dei dati) e Only Market Designs (in questo caso, solo i design selezionati
saranno usati per l’allenamento di ED.).
2. Exclude Error Designs: se selezionata, l'algoritmo scarta quei design che presentano
errori di una o più variabili(di input o di output) non selezionate. Ad esempio se un design
contiene una o più variabili senza valore oppure con un errore, allora viene rimosso dal
training set. I design che presentano errori di una o più variabili selezionate sono già
automaticamente esclusi dal training set.
3. Number of Jobs: numero di diverse ricerche evolutive gestite da ED. I risultati dei
diversi jobs sono tutti presentati nel log, e il risultato migliore viene scelto automaticamente.
4. Tempo massimo ammissibile (s): l'algoritmo si ferma al raggiungimento di tale limite di
tempo.
5. Crossover Depth: questo valore definisce la profondità massima per l’operazione di
crossover. Tale operazione è applicata a degli alberi che rappresentano formule. Essa
consiste nel generare due figli scambiando il ramo di un genitore con il ramo di un altro
genitore. Il procedimento è esplicitato in Figura 3. Il Crossover depth è quindi la profondità
massima del ramo preso da un genitore.
9
6. Generations Number: questo valore definisce il numero di generazioni per il processo
evolutivo.
7. Population Size: questo valore definisce il numero d’individui nella popolazione. Il
numero di individui è uguale in tutte le generazioni durante il processo evolutivo.
8. Significant Decimals: numero di decimali significativi utilizzati per arrotondare i valori
calcolati e la funzione di fitness .
9. Unbounded Expressions Policy: è possibile scegliere tra due diverse politiche: Allow
Unbounded oppure Penalize Unbounded. Il range di variazione (codominio) di espressioni
candidate del modello di regressione può essere illimitato (funzione con discontinuità
infinita), oppure, al contrario può venire richiesto di essere limitato . I confini stimati delle
espressioni risultanti da diversi job sono tutti presentati nel log.
10. Random Generator Seed: la modifica di questo valore permette l'esecuzione di ricerche
diverse partendo dalla stessa popolazione iniziale . Il seed è un numero intero utilizzato per
la ripetibilità di sequenza. Se due sequenze Evolutionary Design sono valutate con lo stesso
seed, si generano e restituiscono sequenze identiche di numeri. Se il valore di
inizializzazione è 0 , la sequenza è seminata automaticamente ad un valore basato
sull'orologio macchina .
11. Functions Set: l'insieme delle funzioni primitive da utilizzare nel modello di regressione
deve essere specificato in questo campo.
12. Multi-threading Policy: è possibile scegliere tra due diverse politiche: Use Maximum
Number of Available Processors (utilizzo del numero massimo di processori disponibili)
oppure User Defined (definito dall'utente). Infatti, la formazione di diversi lavori può essere
eseguita in parallelo; in questo modo è possibile sfruttare i sistemi multi-core, riducendo il
tempo di allenamento totale dell'algoritmo.
13. Number of Threads: questo campo è attivo solo quando il Multi-threading Policy è
definito dall'utente. Questo parametro determina il numero di thread dei diversi job che sarà
utilizzato in parallelo. Il limite superiore è fissato automaticamente al numero di processori /
core disponibili sulla macchina locale.
10
Figura 3. Un esempio di crossover.
3) Dati
Al fine di stimare la pressione tracheale per mezzo di Evolutionary Design siamo
partiti da un database di variabili con valori misurati sperimentalmente in vitro (esperimento
col polmone artificiale descritto nell’articolo su-citato) [8]. Questo database è costituito da
due tabelle, una corrispondente all’esperimento col tubo endotracheale da 6.5 mm di
diametro (tubo per bambini) e l’altro corrispondente all’esperimento col tubo endotracheale
da 7.5 mm di diametro(tubo per adulti).
Ciascuna delle due tabelle contiene valori per le variabili seguenti:
- La pressione tracheale Ptr (t)
- La pressione misurata dal ventilatore Paw (t)
- Il flusso
€
˙ V
11
- L’accelerazione volume
€
˙ ̇ V
- La frequenza percussiva fp
- La pressione di lavoro Pwork
- Il diametro del tubo DEET
- Carico resistivo del simulatore di polmoni Rsim
- Carico di conformità del simulatore di polmoni Csim
I valori delle variabili V’, Paw (t), Ptr (t) e V’’ costituiscono un insieme di segnali respiratori2
rilevati durante la fase inspiratoria di ogni singolo ciclo respiratorio per una durata di 4 (s).
Quindi, per ogni tubo endotracheale e per ogni combinazione diversa dei parametri Pwork, fp,
Rsim, Csim è stato raccolto un insieme di segnali respiratori composto di 8000 x 4 campioni.
La Figura 4 evidenzia solo due dei quattro componenti di tale segnale respiratorio: Paw (t) e
Ptr (t) che sono rappresentati in ordinata. Il tempo è rappresentato in ascissa.
Figura 4. Misurazioni di Ptr (t) e Paw (t) per il tubo di diametro 6.5 mm e per la
combinazione di parametri Pwork = 40 cmH2O, fp =300ciclo/min, Rsim = 20 cmH2O/(Ls) e Csim =
10 mL/cmH2O.
2 insieme di segnali respiratori: insieme dei valori di V’, Paw (t), Ptr (t) e V’’ raccolti durante ogni singolo ciclo respiratorio. Hanno considerato 108 combinazioni dei parametri Pwork, fp, Rsim, Csim quindi hanno esperimentato 108 cicli respiratori.
12
III. ESPERIMENTO NUMERICO
L’esperimento numerico fatto in questa tesi per generare un modello di stima della
pressione tracheale Ptr (t) ignota, per mezzo dell’algoritmo di programmazione genetica E-D,
si è svolto nel modo seguente:
1) Organizzazione dei dati.
Per ogni tubo endotracheale è stata suddivisa la corrispondente tabella in 5 blocchi
ciascuno per la ricerca e la scelta di un modello e 1 blocco per il test delle formule. I primi 5
blocchi sono composti ciascuno da 7 insiemi di segnali respiratori per il training set e 3
insiemi di segnali respiratori per il validation set. L’ultimo blocco è composto dai rimanenti
insiemi di segnali respiratori per il testing set. La Figura 5 illustra questa divisione; le parti
in blu sono le tabelle di training set, in rosso le tabelle di validation set e in verde la tabella
di testing set.
In questo modo avremmo per ogni tubo, 5 modelli per la pressione tracheale.
Figura 5. Organizzazione dei dati per ogni tubo.
Tabella iniziale
⇓
Blocco1 Blocco2 Blocco3 Blocco4 Blocco5 Testing set
⇓
13
Abbiamo riprodotto la stessa organizzazione dei dati dell’articolo, ma non abbiamo
usato il validation per scegliere, come modello, l’individuo con fitness migliore. Infatti,
l'implementazione di ED inclusa in modeFRONTIER sceglie automaticamente la migliore
formula tra tutti i job e tra tutte le generazioni basandosi sul training set e sull'esito
dell'ottimizzazione interna affidata a NSGA-II []. Abbiamo invece utilizzato il validation set
per il tuning dei parametri di ED, calcolando l’errore quadratico medio (mean square error,
MSE) sulle funzioni/formule ottenuti negli esperimenti test.
2) Ricerca dei parametri ottimali
La variabile Ptr (t) nelle tabelle è impostata come variabile di output.
Abbiamo usato come variabili di input o Terminal set:
- La pressione misurata dal ventilatore (P1) Paw(t)
- Il flusso (V)
- L’accelerazione volume (dV1)
- La frequenza percussiva (f) fp
- La pressione di lavoro (Pw) Pwork
Non sono stati usati le variabili Rsim e Csim perché essendo variabili legate al simulatore di
polmoni non sono misurabili in vivo.
Il function set è composto di:
operatori aritmetici: +, -, *, / , le funzioni esponenziale(exp) e potenza(pow)
Per ogni tubo e per ogni blocco, sono stati eseguiti diversi esperimenti (esecuzioni
GP) mantenendo immutati i valori di certi parametri e cambiando ogni volta i valori di altri
parametri per valutare (in base all’errore quadratico medio, MSE) quali di essi portassero a
risultati migliori. I parametri fissi sono:
- Crossover Depth: 10
- Significant Decimals: 6
- Random Generator Seed: 1
14
- Multi-threading Policy: Use Maximum Number of Available Processors (utilizzo del
massimo numero di processori disponibili). Inizialmente abbiamo provato diversi set di
parametri sul primo blocco e sul secondo blocco del tubo da 6.5 mm di diametro. Le tabelle
seguenti illustrano tali esperimenti preliminari:
Primo Blocco (tubo da 6.5 mm)
funzione P2_ED_0 P2_ED_1 P2_ED_2 P2_ED_3
Parametri Number of Jobs 5
Maximum Allowable Time (s)
600
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s)
600
Generations Number 1500
Population Size 200
Number of Jobs 5
Maximum Allowable Time (s)
600
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s)
600
Generations Number 1000
Population Size 500
MSE 8.202932124 32.85895217 1.476096763 35.26441583
Attraverso le prove eseguite sui primi due blocchi del tubo di diametro 6.5 mm, abbiamo scelto di proseguire l’esperimento anche su tutti gli altri blocchi con il set dei parametri seguenti:
Number of Jobs =5,
Maximum Allowable Time (s) =3600,
Generations Number =1000,
Secondo Blocco (tubo da 6.5 mm)
funzione P2_ED_0 P2_ED_1 P2_ED_2 P2_ED_3
Parametri Number of Jobs 5
Maximum Allowable Time (s)
600
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s)
600
Generations Number 1500
Population Size 200
Number of Jobs 5
Maximum Allowable Time (s)
3600
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s)
7200
Generations Number 1000
Population Size 500
MSE 18.57442143 13.20723808 0.921172951 0.926792459
15
Population Size =500
Ma non abbiamo ottenuto buoni valori di MSE per alcuni blocchi, perciò abbiamo riprovato
su tutti i blocchi dei due tubi, cambiando solo il Maximum Allowable Time (s) = 7200.
Abbiamo visto che aumentando il Maximum Allowable Time, l’errore era
decrescente. Perciò abbiamo di nuovo riprovato aumentando sempre il Maximum Allowable
Time (s) =10800.
Di seguito sono riportate delle tabelle riassuntive degli esperimenti test eseguiti su
tutti i blocchi:
Primo Blocco (tubo da 6.5 mm)
Funzione P2_ED_2 P2_ED_4 P2_ED_5
Parametri Number of Jobs 5
Maximum Allowable Time (s) 3600
Generations Number
1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s) 7200
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s) 10800
Generations Number
1000
Population Size 500
MSE 1.476096763 1.263911571 0.911725899
Secondo Blocco (tubo da 6.5 mm)
Funzione P2_ED_2 P2_ED_3 P2_ED_4
Parametri Number of Jobs 5
Maximum Allowable Time (s) 3600
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s) 7200
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s) 10800
Generations Number 1000
Population Size 500
MSE 0.921172951 0.926792459 0.891277087
16
Terzo Blocco (tubo da 6.5 mm)
funzione P2_ED_0 P2_ED_1 P2_ED_2
Parametri Number of Jobs 5
Maximum Allowable Time (s) 3600
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s) 7200
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s) 10800
Generations Number 1000
Population Size 500
MSE 8.556076443 1.425119226 1.266567463
Quarto Blocco (tubo da 6.5 mm)
funzione P2_ED_0 P2_ED_1 P2_ED_2
Parametri Number of Jobs 5
Maximum Allowable Time (s) 3600
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s) 7200
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s) 10800
Generations Number 1000
Population Size 500
MSE 1.11920401 0.987614867 0.943222165
Quinto Blocco (tubo da 6.5 mm)
funzione P2_ED_0 P2_ED_1 P2_ED_2
Parametri Number of Jobs 5
Maximum Allowable Time (s) 3600
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s) 7200
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s) 10800
Generations Number 1000
Population Size 500
MSE 6.851476818 0.796142996 0.836486433
17
Primo Blocco (tubo da 7.5 mm)
funzione P2_ED_0 P2_ED_1 P2_ED_2
Parametri Number of Jobs 5
Maximum Allowable Time (s) 3600
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s) 7200
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s) 3600
Generations Number 1000
Population Size 500
MSE 6.343043788 1.259394091 0.590351923
Secondo Blocco (tubo da 7.5 mm)
funzione P2_ED_0 P2_ED_1 P2_ED_2
Parametri Number of Jobs 5
Maximum Allowable Time (s) 3600
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s) 7200
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s) 10800
Generations Number 1000
Population Size 500
MSE 3.062922721 3.180353145 2.436940922
Terzo Blocco (tubo da 7.5 mm)
funzione P2_ED_0 P2_ED_1 P2_ED_2
Parametri Number of Jobs 5
Maximum Allowable Time (s) 3600
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s) 7200
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s) 10800
Generations Number 1000
Population Size 500
MSE 3.893228619 3.014154427 2.244820308
18
Quarto Blocco (tubo da 7.5 mm)
funzione P2_ED_0 P2_ED_1 P2_ED_2
Parametri Number of Jobs 5
Maximum Allowable Time (s) 3600
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s) 7200
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s) 10800
Generations Number 1000
Population Size 500
MSE 1.380432086 1.370436148 1.37036796
Quinto Blocco (tubo da 7.5 mm)
funzione P2_ED_0 P2_ED_1 P2_ED_2
Parametri Number of Jobs 5
Maximum Allowable Time (s) 3600
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s) 7200
Generations Number 1000
Population Size 500
Number of Jobs 5
Maximum Allowable Time (s) 10800
Generations Number 1000
Population Size 500
MSE 5.729861654 0.823379 0.733360558
I risultati ottenuti durante la fase di tuning ci hanno permesso di capire che il limite
temporale imposto era troppo stringente e non permetteva all'algoritmo di eseguire tutte le
generazioni. Pertanto abbiamo stabilito il Maximum Allowable Time al valore massimo
inseribile (100000). Nello scopo di poter meglio confrontare i risultati con quelli del
sopracitato paper, abbiamo fissato i rimanenti parametri con gli stessi valori:
- Number of jobs: 32
- Generetions number: 500
- Populations size: 500
19
3) Risultati
Al termine dell’esperimento finale, abbiamo ottenuto 5 modelli generati da ED per
ciascun tubo. Infatti, com’è stato detto più in alto, ED è in grado di fornire risposte nel
linguaggio simbolico della matematica. Così dopo l'allenamento, la formula esplicita del
modello di regressione è disponibile.
I modelli generati da ED al termine di questo esperimento sono molto lunghi. Perciò
non forniremmo qui tali modelli. Ad esempio la formula generata da ED al primo blocco del
tubo con diametro DEET = 6.5 mm è:
0.46239061043995733 + ((((((((((P1 - V) - (V * 1)) - V) - (V * (V * (V + V)))) - ((V
* (V * (V + V))) * 1)) - (V * 1)) - V) - (dV1 * 0.1)) - ((V * (V * (V + (V * 1)))) * 1)) +
(((((((V * (Pw - P1)) * (V + V)) - (((Pw / Pw) - (dV1 * 0.1)) - (((Pw - V) - (Pw / P1)) - V))) -
((dV1 * ((dV1 * 0.1) - (V + V))) * V)) - ((V + V) * (((((V * 0.1) - (V * dV1)) - (1 + V)) - (V
* (Pw - P1))) - ((V + V) * ((V + V) * ((dV1 * 0.1) * (dV1 * 0.1))))))) * 0.1) * 0.1))
I risultati in termini di errore quadratico medio (mean square error, MSE) calcolati
sul testing set, sono riassunti nella tabella seguente:
DEET blocchi MSE Media
Primo blocco 0.848919056
Secondo blocco 0.883064535
Terzo blocco 0.749136696
Quarto blocco 0.869143543
6.5
Quinto blocco 0.842826817
0.838618129
Primo blocco 0.916212388
Secondo blocco 0.901631216
Terzo blocco 1.065465306
Quarto blocco 1.038365051
7.5
Quinto blocco 0.904561585
0.965247109
20
IV. VALIDAZIONE
Nello scopo di valutare l’accuratezza dei nostri risultati, abbiamo considerato i
modelli GP realizzati nell’esperimento descritto nell’articolo su-citato [8] e altri due modelli
di base LM e NM ampiamente usati nella letteratura e realizzati da esperti del settore [18],
[19].
L’accuratezza dei modelli generati da ED, dei modelli GP dell’articolo e dei modelli
di base LM(Linear Model) e NM(Non-linear Model) è stato quantificato dai rispettivi errori
medi quadratico calcolati sul testing set.
La tabella seguente mostra i valori delle MSE per ogni blocco di ogni tubo e per ogni
modello e i valori medi di MSE per ogni tubo.
MSE per blocco Media MSE per ogni tubo DEET ED GP LM NM ED GP LM NM
0.85 1.01 3.44 1.94
0.88 0.78 3.47 1.92
0.75 0.76 3.57 1.98
0.87 0.82 3.48 1.89
6.5
0.84 0.84 3.29 2.06
0.84
0.84
3.45
1.96
0.92 0.90 3.33 1.94
0.90 1.06 3.35 1.95
1.07 1.03 3.24 1.90
1.04 3.21 3.27 1.89
7.5
0.90 1.03 3.25 1.94
0.97
1.44
3.29
1.91
21
V. CONCLUSIONE E POSSIBILI SVILUPPI FUTURI
L’esperimento numerico svolto in questa tesi, consisteva nel generare dei modelli per
la stima della pressione tracheale durante la ventilazione percussiva ad alta frequenza
mediante l’algoritmo di programmazione genetica Evolutionary-Design e di valutarne
l’accuratezza. I risultati dell’esperimento ci portano a dedurre che Evolutionary-Design
implementato in modeFRONTIER è in grado di generare dei modelli accurati in termine di
MSE. Abbiamo valutato le prestazioni di ED su questo problema di grande importanza nel
contesto di anestesia e di cure critiche, confrontando i nostri risultati con quelli ottenuti
nell’articolo sopracitato e con quelli ottenuti dai due modelli di base LM e NM. In base
all’errore quadratico medio (MSE) i nostri risultati in generale sono migliori.
Per quanto riguarda il tempo di esecuzione delle evoluzioni GP (job), non possiamo
fare un confronto perché è un parametro che dipende dalle caratteristiche del calcolatore
usato. Poiché i diversi job possono essere eseguiti in parallelo, sfruttando i sistemi multi-
core si riduce il tempo di allenamento totale dell'algoritmo. Inoltre, il fatto che
modeFRONTIER sia dottato di un’ampia interfaccia grafica e che sia usabile sotto diversi
sistemi operativi, fa si che Essa pregiudica le performance temporali nel lancio di ED a
vantaggio del monitoring da interfaccia grafica.
modeFRONTIER offre altre superficie di risposta che potrebbero permettere di
risolvere questo tipo di problema. Superficie di risposta come ad esempio Kriging e Radial
Basis Function e Neural Network sono metodologie potenzialmente molto promettenti.
Pertanto, si potrebbe eseguire altri esperimenti con tali metodologie usando lo stesso
database e confrontare i risultati per vedere se i modelli generati sono più accurati o meno.
Questi nuovi esperimenti rappresentano un nuovo tema di ricerca aperto da questa tesi che
potrebbero portare in futuro significative migliorie nella stima della pressione tracheale.
22
Bibliografia e Sitografia.
[1] U. Lucangelo, V. Antonaglia, W. Zin, L. Fontanesi, A.Peratoner, F. Bird, and A. Gullo, “Effects of mechanical load and flow, volume and pressure delivered by high-frequency percusive ventilation,” Respiratory physiology & neurobiology, vol.142, no. 1, pp. 81-91, 2004.
[2] J.M. HURST, R. D. BRANSON, e C. B. DEHAVEN, “The role of high-frequency ventilation in post-traumatic respiratory insufficiency,” the Journal of trauma and acute care surgery,vol. 27, no. 3, pp. 236-242,1987.
[3] C. W. Lentz e H. Peterson, “ Smoke inhalation is a multilevel insult to the pulmonary system,” Current Opinion in Pulmonary Medecine, vol. 3, no. 3, pp. 221-226, 1997.
[4] S. K. Alpard, J. B. Zwischenberger, W. Tao, D. J. Deyo, D. L. Traber, e Bidani, “New clinically relevant sheep model of severe respiratory failure secondary to combined smoke inhalation/cutaneous flame burn injury,” Critical care medecine, vol. 28, no. 5, pp. 1469-1476, 2000.
[5]http://www.minervamedica.it/it/riviste/minerva-
anestesiologica/articolo.php?cod=R02Y2003N11A0853
[6] G. C. Velmahos, L. S. Chan, R. Tatevossian, E. E. Cornwell, W. R. Dougherty, J. Escudero, e D. Demetriades, “High-frequency percussive ventilation improbe oxygenation in patients withs ARDS,” CHEST Journal, vol. 116, no. 2, pp. 440-446, 1999.
[7] P. Rocco e W. Zin, “Modelling the mechanical effects of tracheal tubes in normal subjects.” European Respiratory Journal, vol. 8, no. 1, pp. 121-126, 1995.
[8] M. Ajcevic, A. De Lorenzo, A. Accardo, A. Bartoli and E. Medvet,” A Novel Estimation Methodology for Tracheal Pressure in Mechanical Ventilation Control”,DIA – University of Trieste,Italy, 8th International Symposium on Image and Signal Processing and Analysis(ISPA 2013).
[9] http://it.wikipedia.org/wiki/Programmazione_genetica
23
[10] E. Medvet, C. Fillon, e A. Bartoli, “Detections of web defacements by means of genetic
programming,” in Information Assurance and Security, 2007. IAS 2007. Third International
Symposium on. IEEE, 2007, pp. 227-234.
[11] A. Bartoli, G. Davanzo, A. De Lorenzo, e E. Medvet, “GP-based electricity price forecasting,”
in Genetic Programming, ser. Lectures Notes in Computer Science, S. Silva, J. Foster, M. Nicolau,
P. Machado, e M. Giacobini, Eds. Springer Berlin Heidelberg, 2011, vol. 6621, pp. 37-48.[online]
Available: http://dx.doi.org/10.1007/978-3-642-20407-4_4
[12] A. Bartoli, G. Davanzo, A. De Lorenzo, M. Mauri, E. Medvet, e E. Sorio, “Automatic
generation of regular expressions from examples with genetic programmino,” in Proceedings of the
fourteenth International conference on Genetic and evolutionary computation conference
companion. ACM, 2012, pp.1477-1478.
[13] http://it.wikipedia.org/wiki/Tubo_endotracheale
[14] http://www.geneticprogramming.com/GPpages/software.html
[15] Fillon, C., New Strategies for Efficient and Practical Genetic Programming, PhD Thesis,
Università degli Studi di Trieste, 2008.
[16] Koza J. R., Genetic Programming: On the Programming of Computers by Means of Natural
Selection, MIT Press, 1992.
[17] Banzhaf, W., Nordin, P., Keller, R.E., Francone, F.D., Genetic Programming – An Introduction; On the Automatic Evolution of Computer Programs and its Applications, Morgan Kaufmann, dpunkt.verlag, 1998.
[18] S. Schumann, M. Krappitz, K. Moller, R. Hentschel, G. Braun, e J. Guttmann, “Pressure loss caused by pediatric tubes during high-frequency-oscillation-ventilation,” Respiratory physiology & neurobiology, vol.162, no. 2, pp.132-137, 2008.
[19] M. Sullivan, J. Paliotta, e M. Saklad, “Endotracheal tube as a factor in measurement of respiratory mechanics,” Journal of applied physiology, vol. 41, no. 4, pp. 590-592, 1976.
[20] http://pictures.doccheck.com/it/photos/2/6142/intubazione-endotracheale-schema/
24
Ringraziamenti
Desidero ricordare tutti coloro che mi hanno aiutato nella stesura della tesi con
suggerimenti, consigli, critiche ed osservazioni: a loro va la mia gratitudine, anche se a me
spetta la responsabilità per ogni errore contenuto in questa tesi.
Ringrazio anzitutto il Prof. Alberto Bartoli, Relatore e il Dott. Alessandro Turco, Correlatore
di questa tesi per la grande disponibilità e per tutto l’aiuto fornito durante la stesura.
Un ringraziamento speciale ai miei genitori, a tutta la mia famiglia, a tutti i miei amici che in
qualche modo mi hanno sostenuto e incoraggiato durante i miei anni di studi.
Infine, vorrei ringraziare con tutto il cuore, il Signore Dio che nella sua immensa grazia mi
fortifica e mi guida ogni giorno della mia vita.