1. Facoltà di Ingegneria LAUREA SPECIALISTICA IN INGEGNERIA INFORMATICA IMPLEMENTAZIONE IN .NET DI UN FRAMEWORK PER L'ANALISI DI SISTEMI BIOLOGICI BASATO SULLA PROGRAMMAZIONE CONCORRENTE CON VINCOLI. Studente: Diego BANOVAZ Relatore: Prof. Luca BORTOLUSSI
2. Prima analisi dell’obbiettivo Si vuole ottenere un framework per la simulazione di modelli Il framework deve essere interfacciabile con programmi esterni Deve essere utilizzabile da utenti non esperti in programmazione Deve avere prestazioni accettabili
8. Lotka-Volterra: Codice SCCP Predatore :- [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 SCCP Nomi degli Agenti Predatore :- [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 SCCP Nomi degli Agenti Predatore :- [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 SCCP Nomi degli Agenti Predatore :- [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 Chiamate di Agenti
12. Lotka-Volterra: Codice SCCP Guardie Nomi degli Agenti Predatore :- [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 Chiamate di Agenti
13. Lotka-Volterra: Codice SCCP ask tell if (ask) {tell} rate Predatore :- [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, l’azione da eseguire viene scelta tramite una Race Condition tra le azioni con asktrue. La probabilità che un’azione venga eseguita è proporzionale al proprio rate.
14. Semantica per sCCP Preda Predatore Agenti X > 0 -> X = X + 1 X > 0 -> Y = Y + 1; X = X - 1 Y > 0 -> Y = Y - 1 Azioni sCCP istanzia dal sorgente un ambiente fatto da agenti. Il sistema è descritto completamente dagli agenti in vita e dallo stato delle variabili.
15. Semantica per ITS X > 0 SVPreda > 0 && X > 0 Guardia X = X + 1 X = X + 1; SVPreda--; SVPreda++ Update Kr * X SVPreda * Kr * X Rate Lo 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.
41. Compilatori e Simulatori(2) ConstraintStore Definition Manager Operazioni sulle Variabili Operazioni sulle Definizioni Parser Results Parser Results Parser AM Parser CS Runtime Manager Parse CSXML Parse AMXML Input Output
42. ConstraintStore From Parser From/ToRuntime Manager ConstraintStore Declarations Results MathParser Queries Nuova Variabile Nuova Funzione Nuovo Constraint Nuovo Operatore Nuovo Parametro Nuova Costante Il 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 formula Tell: impone un nuovo vincolo al sistema GetRate: ottiene il valore di una formula GetVariables: ottiene lo stato delle variabili.
43. Definition Manager From Parser ToRuntime Manager Definition Manager Definitions Instances Nuova Definizione Definition 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 Manager ToUser Interface From User Interface Runtime Manager Commands Results Start Stop Step Runtime Manager è l’esecutore. Utilizza il ConstraintStore e l’DefinitionManager per simulare il modello. Loop: Scegli Azione Esegui Azione Incrementa il tempo trascorso Stato del sistema Valori delle variabili Agenti Attivi
45. Interfaccia Programmazione Menu Compilazione Scelta Semantica Scelta ConstraintStore Inizia Simulazione Definizione Agenti e Stato Iniziale Definizione ConstraintStore
48. Performances Client Server – Peso del grafico e confronto ConstraintStore Il grafico rallenta di molto la simulazione Il ConstraintStoremuParser è molto più lento di Flee In questo caso ODE è molto più lento di SCCP ed ITS Lotka Volterra – Differenza tra i compilatori ITS è più veloce di SCCP ODE è più veloce di entrambi Lactose – Differenza tra i compilatori
49.
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