1. Facolt di IngegneriaLAUREA SPECIALISTICA IN INGEGNERIA INFORMATICAIMPLEMENTAZIONE IN .NET DI UN FRAMEWORK PER L'ANALISI DI SISTEMI BIOLOGICI BASATO SULLA PROGRAMMAZIONE CONCORRENTE CON VINCOLI.Studente: Diego BANOVAZRelatore: Prof. Luca BORTOLUSSI
2. Prima analisi dellobbiettivoSi vuole ottenere un framework per la simulazione di modelliIl framework deve essere interfacciabile con programmi esterniDeve essere utilizzabile da utenti non esperti in programmazioneDeve avere prestazioni accettabili
8. Lotka-Volterra: Codice SCCPPredatore :- [X > 0 -> Y = Y + 1; X = X - 1]@{Km * X * Y}.Predatore() + [Y > 0 -> Y = Y - 1]@{Kd * Y}.Predatore();Preda:- [X > 0 -> X = X + 1]@{Kr * X}.Preda();
9. Lotka-Volterra: Codice SCCPNomi degli AgentiPredatore :- [X > 0 -> Y = Y + 1; X = X - 1]@{Km * X * Y}.Predatore() + [Y > 0 -> Y = Y - 1]@{Kd * Y}.Predatore();Preda:- [X > 0 -> X = X + 1]@{Kr * X}.Preda();
10. Lotka-Volterra: Codice SCCPNomi degli AgentiPredatore :- [X > 0 -> Y = Y + 1; X = X - 1]@{Km * X * Y}.Predatore() + [Y > 0 -> Y = Y - 1]@{Kd * Y}.Predatore();Preda:- [X > 0 -> X = X + 1]@{Kr * X}.Preda();Scelta
11. Lotka-Volterra: Codice SCCPNomi degli AgentiPredatore :- [X > 0 -> Y = Y + 1; X = X - 1]@{Km * X * Y}.Predatore() + [Y > 0 -> Y = Y - 1]@{Kd * Y}.Predatore();Preda:- [X > 0 -> X = X + 1]@{Kr * X}.Preda();SceltaChiamate di Agenti
12. Lotka-Volterra: Codice SCCPGuardieNomi degli AgentiPredatore :- [X > 0 -> Y = Y + 1; X = X - 1]@{Km * X * Y}.Predatore() +[Y > 0 -> Y = Y - 1]@{Kd * Y}.Predatore();Preda:- [X > 0 -> X = X + 1]@{Kr * X}.Preda();SceltaChiamate di Agenti
13. Lotka-Volterra: Codice SCCPasktellif (ask) {tell}ratePredatore :- [X > 0 -> Y = Y + 1; X = X - 1]@{Km * X * Y}.Predatore() + [Y > 0 -> Y = Y - 1]@{Kd * Y}.Predatore();Preda:- [X > 0 -> X = X + 1]@{Kr * X}.Preda();Tra tutti gli agenti attivi, lazione da eseguire viene scelta tramite una Race Condition tra le azioni con asktrue.La probabilit che unazione venga eseguita 竪 proporzionale al proprio rate.
14. Semantica per sCCPPredaPredatoreAgentiX > 0 -> X = X + 1X > 0 -> Y = Y + 1; X = X - 1Y > 0 -> Y = Y - 1AzionisCCP istanzia dal sorgente un ambiente fatto da agenti.Il sistema 竪 descritto completamente dagli agenti in vita e dallo stato delle variabili.
15. Semantica per ITSX > 0SVPreda > 0 && X > 0GuardiaX = X + 1X = X + 1; SVPreda--; SVPreda++UpdateKr * XSVPreda * Kr * XRateLo stato del sistema 竪 dato dalle definizioni degli Agenti, dalle variabili globali e dalle State Variables. Le State Variables vengono associate ad ogni agente e rappresentano il Numero di agenti attivi di quel particolare tipo.
16. Semantica per ODELa modifica alle variabili avviene proporzionalmente alla state variables dellagente e al rate dellazione stessa.
18. Le equazioni e cui si arriva sono le stesse equazioni matematiche che definiscono il sistema.Risultati SemanticheSCCPITSODE
19. AnalisiDerivare dal codice SCCP le tre semanticheFornire uninterfaccia utenteInput standardizzatoOutput standardizzatoOutput graficoCustom MemorySemanticPerformance
41. Compilatori e Simulatori(2)ConstraintStoreDefinition ManagerOperazioni sulle VariabiliOperazioni sulle DefinizioniParser ResultsParser ResultsParser AMParser CSRuntime ManagerParse CSXMLParse AMXMLInput Output
42. ConstraintStoreFrom ParserFrom/ToRuntime ManagerConstraintStoreDeclarationsResultsMathParserQueriesNuova VariabileNuova FunzioneNuovo ConstraintNuovo OperatoreNuovo ParametroNuova CostanteIl MathParser 竪 un modulo esterno che permette la risoluzione di equazioni. Il framework mette a disposizione due ConstraintStore, uno basato su muParser e uno basato su Flee.Il ConstraintStore si interfaccia al MathParser facendo da Wrapperintelligiente.Ask: richiede la validit di una formulaTell: impone un nuovo vincolo al sistemaGetRate: ottiene il valore di una formulaGetVariables: ottiene lo stato delle variabili.
43. Definition ManagerFrom ParserToRuntime ManagerDefinition ManagerDefinitionsInstancesNuova DefinizioneDefinition Manager contiene e gestisce tutte le definizioni. Ne esiste uno per ogni semantica, in modo che questi possa modellare il suo prodotto a seconda delle richieste.A seconda della sua implementazione ritorna Agenti oppure Transizioni
44. Runtime ManagerToUser InterfaceFrom User InterfaceRuntime ManagerCommandsResultsStartStopStepRuntime Manager 竪 lesecutore.Utilizza il ConstraintStore e lDefinitionManager per simulare il modello.Loop:Scegli AzioneEsegui AzioneIncrementa il tempo trascorsoStato del sistemaValori delle variabiliAgenti Attivi
48. PerformancesClient Server Peso del grafico e confronto ConstraintStoreIl grafico rallenta di molto la simulazioneIl ConstraintStoremuParser 竪 molto pi湛 lento di FleeIn questo caso ODE 竪 molto pi湛 lento di SCCP ed ITSLotka Volterra Differenza tra i compilatoriITS 竪 pi湛 veloce di SCCPODE 竪 pi湛 veloce di entrambiLactose Differenza tra i compilatori
50. Tracciare il grafico influenza pesantemente la velocit di simulazione (circa 50 volte)
51. ITS risulta pi湛 efficiente di sCCP, pi湛 agenti in gioco ci sono e pi湛 risulta efficiente
52. ODE risulta pi湛 efficiente in alcuni esempi rispetto ad altriConclusioni6 mesi di lavoroOltre 250 classi scritteOltre 20.000 righe di codiceProgetto funzionante al 100%Migliorie necessarie per incrementarne lusabilit