Berkeley Madonna: istruzioni per
l’uso
Prof. Eugenio Parente
SSAFAA- Università della Basilicata
In questa presentazione:
• introduzione all’uso di Berkeley Madonna
per la modellazione dinamica
• le finestre di Madonna
• la sintassi delle equazioni
o convertitori o formule: built-in in Madonna
o flussi: equazioni differenziali, equazioni a
differenze finite, elementi discreti
o vettori e matrici
Berkeley Madonna
Berkeley Madonna: la finestra delle equazioni
un commento
un’equazione
differenziale e
un inizializzatore
convertitori
(formule)
Berkeley Madonna: la finestra dei grafici
Berkeley Madonna: la finestra del diagramma di flusso
Berkeley Madonna: la finestra dei parametri
Berkeley Madonna: la finestra delle note
Berkeley Madonna: il menu File
Berkeley Madonna: il menu Edit
Berkeley Madonna: il menu Flowchart
Berkeley Madonna: il menu Model
Berkeley Madonna: il menu Compute
Berkeley Madonna: il menu Graph
Berkeley Madonna: il menu Parameters
Berkeley Madonna: il menu Window
Berkeley Madonna: il menu Aiuto (Help)
Introduzione all’uso
Per apprendere i primi elementi dell’uso di
Berkeley Madonna apri il modello “5
minutes tutorial” dall’aiuto e esegui gli
esercizi
Sintassi delle equazioni in Madonna.
1. Tipi di equazioni
Convertitori e formule
Flussi e serbatoi:
equazioni differenziali
equazioni a differenze finite
equazioni ad elementi discreti
Calcolo iterativo delle soluzioni di equazioni o sistemi
di equazioni (ROOTI e ROOT)
Miscellanea
Sintassi delle equazioni in Madonna.
2. Convertitori o formule
Esempi:
A=B*C
B=10
C=125
A=if B>9 then B*C else 0.001
B=10*TIME
C=125
A=normal(B,C)
Sintassi delle equazioni in Madonna. 3. Equazioni
differenziali ed equazioni a differenze finite
Sono composte da due equazioni: un inizializzatore, che
attribuisce il valore iniziale allo stock o serbatoio, e un flusso
(integratore), che modifica il valore del serbatoio ad ogni
passaggio di integrazione.
Il metodo usato per l’integrazione, il tempo iniziale e finale, il
passo di integrazione sono definiti dalle istruzioni:
METHOD, STARTTIME, STOPTIME. DT (usate in Euler, RK2 e
RK4)
DTMIN, DTMAX e TOL (usate nei metodi con DT variabile)
Sintassi delle equazioni in Madonna. 3. Equazioni
differenziali ed equazioni a differenze finite
Gli inizializzatori possono avere le seguenti forme:
X(STARTTIME)=...
INIT X=...
INIT (X)=...
Il valore dell’espressione sulla destra viene inserito nell’icona del
serbatoio se si usa il flowchart editor.
Sintassi delle equazioni in Madonna. 3. Equazioni
differenziali ed equazioni a differenze finite
Le equazioni differenziali possono avere le seguenti forme:
d/dt(X)=...
X’=...
FLOW X=...
X(t)=X(t-dt)+(...)*dt
X=X+dt*(...)
Il valore dell’espressione sulla destra viene inserito nell’icona del
FLUSSO se si usa il flowchart editor.
Sintassi delle equazioni in Madonna.
4. elementi discreti
Berkeley Madonna 8 introduce tre tipi di elementi discreti presenti
in STELLA:
• nastri trasportatori (conveyor)
• forni (oven)
• code (queue)
Il loro funzionamento è notevolmente diverso da quello delle
equazioni differenziali e dalle equazioni a differenze finite. Gli
elementi discreti accumulano input, li trattengono per un ceerto
periodo di tempo e poi li rilasciano.
Il loro valore viene calcolato ad ogni passaggio di integrazione
moltiplicando la somma di tutti gli input per DT.
Sintassi delle equazioni in Madonna. 4. elementi discreti
Nastri trasportatori (conveyors).
Ad ogni passaggio del modello un input viene aggiunto sul nastro
trasportatore. L’input rimane sul nastro trasportatore per la durata
del tempo di transito e poi viene rilasciato. La sintassi è:
name=CONVEYOR(input,tt,cap)
dove input è l’espressione di input, tt il tempo di transito, cap è la
capacità (opzionale). La somma degli input che escono dal
conveyor è:
output=OUTFLOW(name)
La capacità può essere limitata definendo:
input=...
limited_input=MIN(input,MAXINFLOW(name))
name=CONVEYOR(limited_input,tt,cap)
Sintassi delle equazioni in Madonna. 4. elementi discreti
Forni (ovens).
Il forno si riempie durante il “fill time”, poi passa alla cottura per la
durata del “cook time” e rilascia gli input istantaneamente nella
fase di svuotamento, per poi ritornare in riposo (idle) o cominciare
a riempirsi se sono disponibili input. La sintassi è:
name=OVEN(input,ct,ft,cap)
dove input è l’espressione di input, ct il tempo di cottura, ft il
tempo di riempimento, cap è la capacità (opzionale). La somma
degli input che escono dal forno nella fase di svuotamento (che
dura un solo passaggio) è:
output=OUTFLOW(name)
Sintassi delle equazioni in Madonna. 4. elementi discreti
Forni (ovens).
Lo stato del forno può essere determinato con la funzione:
state=OSTATE(name)
che restituisce 0 per idle, 1 per filling, 2 per cooking e 3 per
emptying
La capacità può essere limitata definendo:
input=...
limited_input=MIN(input,MAXINFLOW(name))
name=OVEN(limited_input,ct,ft,cap)
Questa procedura è necessaria soprattutto se il forno è alimentato
da uno stock che non deve continuare a svuotarsi a meno che il
forno non si stia riempiendo.
Fai girare il modello Use Ovens per comprendere il funzionamento
di un forno.
Sintassi delle equazioni in Madonna. 4. elementi discreti
Code (queues).
Una coda accetta uno o più input il cui valore sia diverso da 0 e li
rilascia nell’ordine in cui li ha accettati. L’uscita degli elementi
dalla coda è controllata da una funzione. La sintassi è:
name=QUEUE(input1,input2,...,inputN)
ad ogni intervallo di tempo la coda controlla i suoi input e, se sono
diversi da 0 li mette in coda.
Per far uscire gli input dalla coda si usano le funzioni:
output=QPOP(name,maxel,maxamt)
output=QPOPS(name,maxel,maxamt)
dove name è il nome della coda. QPOP rimuove dalla coda solo
elementi interi. Vengono rimossi elementi finchè il loro numero è
inferiore a maxel e la loro somma è inferiore a maxamt.
Sintassi delle equazioni in Madonna. 4. elementi discreti
Code (queues).
output=QPOPS(name,maxel,maxamt)
A differenza di QPOP, QPOPS rimuove dalla coda anche parti di
elementi. Vengono rimossi elementi finchè il loro numero è
inferiore a maxel e la loro somma è inferiore a maxamt. Se solo
una parte di un elemento viene sottratto da QPOPS la parte restante
rimane sulla coda.
A differenza dei nastri trasportatori e dei forni, gli elementi possono
essere rimossi dalla coda anche nello stesso intervallo di tempo in
cui sono stati aggiunti. Se una coda alimenta un forno bisogna
usare la funzione MAXINFLOW del forno per impedire che
elementi escano dalla coda se il forno non si sta riempiendo.
Fai girare il modello Use Queues per capire il funzionamento delle
code.
Vettori e matrici
Vettori e matrici (fino a tre dimensioni) sono utili quando in un
convertitore o in un flusso compaiono equazioni con espressioni
identiche sul lato destro. Per esempio:
rX[1..10]=mu[1..10]*x[1..10]
può essere utilizzato per definire contemporaneamente la
crescita di 10 diversi batteri, i cui valori di popolazione (x) e
velocità specifica di crescita (mu) sono diversi.
Gli elementi di una matrice possono essere definiti con
equazioni diverse:
rX[1..3]=mumax[1..3]*(1-x[1..3]/xmax[1..3])*x[1..3]
rX[4..10]=mumax[4..10]*(S/(KS[4..10]+S)*x[4..10]
Vettori e matrici
E’ inoltre possibile riferirsi agli elementi da assegnare
utilizzando le variabili speciali i, j, k, che si riferiscono
rispettivamente agli indici della prima, seconda e terza
dimensione della matrice:
s[1..3,1..4,5]=f[i,j]*g[j,k].
Gli elementi vengono assegnati nel seguente ordine:
a[1..2,1..2]=
a[1,1]
a[1,2]
a[2.1]
a[2,2]
L’ordine è estremamente importante: se un elemento usato in un
assegnazione non è definito il programma restituisce un errore.
Vettori e matrici
Nella definizione degli indici è possibile usare delle variabili.
Ciò consente di variare la dimensione di una matrice senza
ricompilare il modello:
factorial[1]=1
factorial[2..n]=factorial[i-1]*i
n=10
Per comprendere il funzionamento delle matrici in Madonna fai
girare il modello Use Indexed Variables.
Some rights reserved
Questa presentazione è stata creata da Eugenio
Parente, 2007 e modificata nel 2012. Il materiale è
coperto da licenza Creative Commons Public License
“Attribuzione - Non commerciale - Condividi allo stesso
modo” (http://creativecommons.org/licenses/by-ncsa/3.0/it/deed.it).
Scarica

Introduzione alla modellazione dinamica in (micro)biologia