CAGE Cellular Automata General Environment Alghero, Marzo 2003 Sommario Automi Cellulari (AC) Ambienti di simulazione e CAGE Il modello di AC in CAGE Caratteristiche dell’ambiente Programmazione di AC in CAGE Esempi di implementazione Automi cellulari Un Automa Cellulare è un sistema discreto dinamico composto da un grande numero di celle in una griglia nello spazio (1-D, 2-D, o 3-D). Ogni cella interagisce solo con le sue vicine ed esiste una regola di evoluzione dell’automa cellulare che cambia lo stato di tutte le celle simultaneamente ( in parallelo ) a passi discreti del tempo. Automi Cellulari Il comportamento globale del sistema è determinato dall’evoluzione degli stati di tutte le celle come risultato di interazioni multiple tra le stesse. Automi Cellulari Griglie bidimensionali e vicinati classici C C C C Automi Cellulari Gli automi cellulari (AC) sono sistemi dinamici discreti ma risultano spesso efficace alternativa alternativa ai sistemi di equazioni differenziali per la simulazione di sistemi dinamici continui In generale gli AC offrono un modello per studiare sistemi composti da un gran numero di diverse parti (celle) in cui non si ha un controllo centrale ma solo semplici interazioni locali L’idea di base è di simulare il comportamento di un sistema complesso dall’interazione di un grande numero di celle che che seguono semplici regole, e non di descrivere il comportamento globale mediante complesse equazioni Automi Cellulari e calcolo parallelo L’uso di computer paralleli risulta spesso inevitabile quale supporto per la modellazione mediante AC di problemi reali Gli AC rappresentano un modello di calcolo pararallelo che può essere efficacemente implementato in architetture parallele in virtù delle caratteristiche di parallelismo implicito e località L’approccio naturale prevede la suddivisione delle celle tra i diversi elementi di calcolo del computer parallelo (data parallelism) In pratica nelle architetture a memoria distribuita (MIMD computer) il parallelismo degli AC può essere implementato mediante l’approccio SPMD (Single Program Multiple Data) Ambienti di simulazione basati su AC Esistono molti ambienti di modellazione e simulazione basati su AC implementati sia in computer sequenziali (PCs, workstations) che paralleli: CAPE PECANS CAMEL P-CAM StarLogo NEMO DEVS CELLULAR CAM-8 (hardware) .... CAGE: Cellular Automata General Environment Le potenziali aree di applicazione sono diverse: fisica, biologia, genetica, chimica, pianificazione urbanistica, gestione ambientale, image processing, economia. Gli ambienti disponibili presentano diversi limiti (con particolare riferimento alle applicazioni nel campo dell’urbanistica) Alcuni limiti della formulazione classica e/o di molti ambienti ad AC Stazionarietà spaziale e temporale degli intorni In CAGE l’intorno può variare nel tempo ed è definito sulla base di relazioni, non necessariamente geometriche, che intercorrono tra gli oggetti della realtà. Regolarità della discretizzazione In CAGE l’oggetto geometrico associato alle celle è considerato un attributo la cui particolare occorrenza non è soggetta a vincoli di regolarità spaziale o temporale. Stazionarietà ed omogeneità della funzione di transizione In CAGE la funzione di transizione della cella è dipendente anche da parametri variabili nel tempo, locali alla cella o globali. Limitazione del numero di stati delle celle In CAGE non esiste una limitazione a priori del numero degli stati e sono disponibili diversi tipi di sottostati (intero, reale, carattere) Alcuni limiti della formulazione classica e/o di molti ambienti ad AC Chiusura rispetto ad eventi esterni In CAGE è prevista la possibilità che fenomeni esterni influiscano, anche a livello locale, sulla evoluzione della simulazione. Località del controllo dell’evoluzione In CAGE per consentire simulazioni realistiche esiste anche un meccanismo di controllo globale (steering) dell’evoluzione del sistema Difficoltà nell’importazione degli scenari da GIS In CAGE è prevista l’implementazione di specifiche funzioni di importazione di dati spaziali e alfanumerici da GIS esistenti Ambienti utilizzabili solo da esperti programmatori In CAGE il ciclo di modellazione-simulazione-analisi dei dati è semplificato da una specifica interfaccia grafica comprensiva di funzionalità di modellazione semivisuale delle regole di evoluzione Caratteristiche essenziali di CAGE GUI amichevole per la modellazione dell automa cellulare in modo visuale Applicazione cross-platform basata sulle librerie QT (Windows-Linux) Rimozione di molte delle restrizioni tipiche degli ambienti ad AC Strutturazione in layers dello scenario (nei diversi layers si svolgono, parallelamente e secondo le regole assegnate, le simulazioni dei vari fenomeni di interesse) Funzioni di libreria predefinite e facilitazioni per la scrittura delle regole di evoluzione Funzioni di importazione/esportazione di dati grafici o tabellari Esecuzione su elaboratore remoto mediante protocollo TCP La GUI di CAGE Finestre grafiche Modellazione della struttura Il modello di AC L’automa cellulare AC è definito dalla tripla: AC PG PG ,fG , L è l’insieme finito dei valori che assume il vettore g-dimensionale dei parametri globali: PG PG(1) PG( 2) PG( g ) fG f G(1) , f G( 2 ) ,, f G( g ) è un vettore di funzioni di aggiornamento dei parametri globali. L l1 , l2 ,, ln è un insieme di n layer di celle. Il layer Un layer di celle è definito dalla tripla: li Ci , PLi , f Li Ci è un insieme di celle PLi è l’insieme finito dei valori che assume il vettore r-dimensionale dei parametri di layer. f Li f Li(1) , f Li( 2 ) ,, f Li( r ) parametri di layer un vettore di funzioni di aggiornamento dei La cella La cella è definita dalla sestupla: ci Si , PCi , σi , fCi , i , Oi Si è l’insieme finito dei valori che assume il vettore q-dimensionale che definisce lo stato della cella PCi è l’insieme finito dei valori che assume il vettore r-dimensionale dei parametri locali della cella Oi è un insieme finito di oggetti geometrici, eventualmente georeferenziati e caratterizzati da opportuna descrizione vettoriale. ci Si , PCi , σi , fCi , i , Oi La cella σi i , i ,, i come: (1) ( 2) ( n) è un vettore di n funzioni di vicinato definite i( k ) : Ci Ck C PLi PG (Ck ), k 1..n k i( j )con i(i ) Vicinato orizzontale ji Vicinato verticale ci Si , PCi , σi , fCi , i , Oi La cella • f Ci f Ci(1) , f Ci( 2 ) , , f Ci( m ) è un vettore di funzioni di aggiornamento dei parametri locali con: n (k ) fCi : S k i PG PLi PCi PCi k 1 k i • i è la funzione di transizione della generica cella del layer, che consente di aggiornare lo stato della cella ed è definita dalla: i : Si i( i ) PG PLi PCi Si li Ci , PLi , f Li Aggiornamento dei parametri di layer Le funzioni di aggiornamento dei parametri di layer sono definite dalla: f Li : Si Ci PLi PLi I parametri di layer possono assumere valori dipendenti dalla configurazione attuale dell’intero layer, offrendo quindi meccanismo di controllo globale dell’evoluzione del layer. un Aggiornamento dei parametri globali AC PG ,fG , L Il valore del parametro globale k-esimo può essere calcolato sulla base dei valori assunti dagli altri parametri globali e da tutti i parametri di layer: fG( k ) n : PLk PG PG( k ) k 1 Il parametro globale può essere aggiornato, anche sulla base di variabili esterne, da un generico modello di calcolo che si evolve parallelamente all’automa cellulare Architettura (futura) di CAGE CA kernel CA CAkernel kernel C++ compiler CAGE server PIPE TCP CAGE client CAGE client CAGE client Caratteristiche di CAGE: modellazione della struttura nuovo layer nuovo parametro Rappresentazione del flow-chart della funzione nuovo sottostato Generazione funzione Nuovo vicinato verticale Rappresentazione ad albero della struttura Modifica attributi dell’elemento selezionato Testo della funzione Attributi dei layers Per ogni layer è possibile specificare: il nome; il tipo di discretizzazione dello spazio: regolare: una delle classiche discretizzazioni del piano in celle esagonali, rettangolari, triangolari. La scelta della discretizzazione regolare consente di scegliere anche tra uno dei vicinati classici (Moore, Von Neumann, ecc); non regolare: le celle sono costituite da oggetti grafici da inserire con gli strumenti di editing disponibili in CAGE; il tipo di contorno tra: toroidale, limitato, inattivo (le celle di bordo vengono impiegate nel vicinato delle celle interne ma i sottostati non vengono aggiornati) Parametri e sottostati Per ogni parametro è possibile specificare: il nome; il tipo: tra intero, reale, carattere il tipo di aggiornamento tra: costante o basato su una funzione Per ogni sottostato è possibile specificare le seguenti proprietà: il nome il tipo: tra intero, reale, carattere Vicinati Per ogni vicinato orizzontale è possibile specificare se è: del tipo classico (Moore, Von Neumann ecc. ), solo nel caso di discretizzazione regolare per il layer basato su una funzione (query) da fornire Per ogni vicinato verticale si devono specificare: il layer a cui lo stesso si riferisce la funzione di aggiornamento del vicinato Funzioni Per ogni funzione (aggiornamento dei parametri, sottostati e vicinati) è necessario specificare: il nome la frequenza di esecuzione la probabilità di esecuzione una condizione cui subordinare l’esecuzione Generazione di funzioni Proprietà del componente Creazione del diagramma di flusso selezionato Inserimento facilitato del codice (variabili e funzioni di libreria) Componenti del diagramma della funzione Flow-chart components Blocco di istruzioni in formato libero: è necessario rispettare la sintassi del linguaggio C Salto condizionale Salto condizionale secondo un valore di probabilità Singolo statement Uscita dalla funzione (corrisponde all’istruzione return del C) Condizioni logiche Rappresentazione ad albero Esempio: (a=1 AND b=2) OR (c=0) OR AND a=1 b=2 c=0 Proposizioni logiche Creazione di una proposizione logica composta Funzioni di libreria Funzioni geometriche dist(obj1, obj2) Restituisce la distanza tra i baricentri degli oggetti obj1 ed obj2 centroidX(obj) Restituisce la coordinata X del baricentro dell’oggetto obj centroidY(obj) Restituisce la coordinata Y del baricentro dell’oggetto obj area(obj) Restituisce l’area dell’oggetto obj perimeter(obj) Restituisce il perimetro dell’oggetto obj length(obj) Restituisce la lunghezza dell’oggetto obj Funzioni di libreria Funzioni matematiche abs(num) Restituisce il valore assoluto di num max(num1, num2) Restituisce il massimo tra num1 e num2 min(num1, num2) Restituisce il minimo tra num1 e num2 odd(num) Restituisce true se num è dispari even(num) Restituisce true se num è pari prob(num, over) Restituisce true con una probabilità di num su over Esempio: prob(10,100) restituisce true nel 10% dei casi div(n1, n2) Restituisce true se n1 è divisibile per n2 Funzioni di libreria Funzioni di aggregazione su layer Sum(var) Restituisce la somma dei valori della variabile var sulle celle Min(var) Restituisce il minimo dei valori della variabile var sulle celle Max(var) Restituisce il massimo dei valori della variabile var sulle celle Average(var) Restituisce la media aritmetica dei valori della variabile var sulle NEqVal(var, val) Restituisce il numero di celle per le quali la variabile var assume il valore val Funzioni di libreria Funzioni di aggregazione su vicinato NeighCell[lay].Sum(var) Restituisce la somma dei valori della variabile var sulle celle appartenenti al vicinato della cella corrente sul layer lay NeighCell[lay].Min(var) Restituisce il minimo dei valori della variabile var sulle celle appartenenti al vicinato della cella corrente sul layer lay NeighCell[lay].Max(var) Restituisce il massimo dei valori della variabile var sulle celle appartenenti al vicinato della cella corrente sul layer lay NeighCell[lay].Average(var) Restituisce la media aritmetica dei valori della variabile var sulle celle appartenenti al vicinato della cella corrente sul layer lay NeighCell[lay].NEqVal(var, val) Restituisce il numero di celle appartenenti al vicinato della cella corrente sul layer lay per le quali la variabile var assume il valore val. Aggiornamento di una variabile Per ogni variabile (parametro o sottostato) rappresentata dall’identificatore [Name] è definita la variabile [NewName] La funzione di aggiornamento della variabile deve contenere Risultato: almeno una istruzione di assegnazione del tipo: if ( Attiva ) [NewName] = espressione { if ( ( NeighCell[Mondo].NEqVal(Attiva,1)!=2 ) && ( NeighCell[Mondo].NEqVal(Attiva,1)!=3 ) ) Esempio (life): NewAttiva=0; } else if ( NeighCell[Mondo].NEqVal(Attiva, 1)==3 ) NewAttiva=1; Aggiornamento di vicinato basato su funzione (dist(Obj,Cell[Layer].Obj)<100) && (area(Cell[Layer].Obj) > 5000) Cella Vicinato generato al primo passo (dist(Obj,Cell[Layer].Obj)<100) && (area(Cell[Layer].Obj) > 5000) Vicinato Query di orizzontale aggiornamento dist(Obj, Cell[Layer].Obj)<100 Frequenza Probabilità Condizione di Condizione inclusione della cella target Attributi della query Creazione di una discretizzazione non regolare Strumenti di editing Alcune altre funzioni utili Creazione colormap Controllo visualizzazione oggetti Controllo visualizzazione layersdelle variabili Editing dei valori Colormap Alcune delle cose da fare (si accettano suggerimenti): Potenziamento del linguaggio di programmazione delle regole (costrutti per l’iterazione su insiemi di celle, ampliamento della libreria di funzioni) Gestione degli errori (messaggi di errore e di avvertimento) Potenziamento funzioni di editing/input/output Help in linea Versione parallela e architettura client-server Porting in ambiente linux ………………………….. GRAZIE !