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. 2-D C 3-D
Automi Cellulari Il comportamento globale del sistema è determinato dall’evoluzione degli stati di tutte le celle come risultato di interazioni multiple tra le stesse.
Griglie bidimensionali e vicinati classici Automi Cellulari Griglie bidimensionali e vicinati classici
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) Papyrus is a distributed data mining system developed for clusters and super-clusters of workstations as composed four software layers: data management, data mining, predictive modeling, and agent or Bast. The data management layer is implemented as a global data warehouse that allows to move data from node to node. The Bast layer selects strategies and resources and move predictive models among the cluster nodes. Thus this system has the ability to combine data and models movement. For this Papyrus is based on mobile agents implemented using Java aglets. PaDDMAS is a component-based tool set that integrates pre-developed or custom packages (that can be sequential or parallel) using a dataflow approach. PaDDMAS provides three types of components: data managemnt components, data analysis components and data visualization components. Each component is wrapped as a Java or CORBA object with its interface specified in XML. Components can be located at distributed nodes and connectivity to databases is provided thorough JDBC bridges. Kensington Enterprise data mining is a PDKD system based on a three-tier client/server architecture in which the three tiers include: client, application server and third-tier servers (RDBMS and parallel data mining service). The Kensington system has been implemented in Java and uses the Enterprise JavaBeans component architecture. Via a CORBA interface C+MPI data mining packages can be integrated in the Java framework and databases located on the Internet can be accessed via a JDBC connection. JAM [12] is an agent-based distributed data mining system that has been developed to mine data stored in different sites for building so called meta-models as a combination of several models learned at the different sites where data are stored. JAM uses Java applets to move data mining agents to remote sites. In this way, the knowledge discovery is speeded up by executing in parallel a number of data mining processes on different data subsets and then combining the results through meta-learning. A sort of meta-learning, called collective data mining, is implemented also in the BODHI system [8]. BODHI is another agent-based distributed data mining system implemented in Java as a hierarchy of four main components: the individual agents, the agent stations on each processing node, the facilitator for coordination of agent stations and the user interface for system configuration and control. Like JAM and the Kensington system, BODHI support the migration of mining agents over the nodes where data are stored and collect the produced models on a central node where models are combined and analyzed.
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 semi- visuale 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
L’automa cellulare AC è definito dalla tripla: Il modello di AC L’automa cellulare AC è definito dalla tripla: è l’insieme finito dei valori che assume il vettore g-dimensionale dei parametri globali: è un vettore di funzioni di aggiornamento dei parametri globali. è un insieme di n layer di celle.
Un layer di celle è definito dalla tripla: Il layer Un layer di celle è definito dalla tripla: è un insieme di celle è l’insieme finito dei valori che assume il vettore r-dimensionale dei parametri di layer. un vettore di funzioni di aggiornamento dei parametri di layer
La cella è definita dalla sestupla: è l’insieme finito dei valori che assume il vettore q-dimensionale che definisce lo stato della cella è 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.
La cella è un vettore di n funzioni di vicinato definite come: Vicinato verticale Vicinato orizzontale
La cella è un vettore di funzioni di aggiornamento dei parametri locali con: è la funzione di transizione della generica cella del layer, che consente di aggiornare lo stato della cella ed è definita dalla:
Aggiornamento dei parametri di layer Le funzioni di aggiornamento dei parametri di layer sono definite dalla: I parametri di layer possono assumere valori dipendenti dalla configurazione attuale dell’intero layer, offrendo quindi un meccanismo di controllo globale dell’evoluzione del layer.
Aggiornamento dei parametri globali 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: 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 C++ compiler CAGE server PIPE TCP CAGE client CAGE client CAGE client
Caratteristiche di CAGE: modellazione della struttura nuovo layer Rappresentazione del flow-chart della funzione nuovo parametro Nuovo vicinato verticale Generazione funzione nuovo sottostato Rappresentazione ad albero della struttura Modifica attributi dell’elemento selezionato Testo della funzione
Per ogni layer è possibile specificare: il nome; 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
Per ogni vicinato orizzontale è possibile specificare se è: 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 selezionato Creazione del diagramma di flusso 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)
Rappresentazione ad albero Esempio: (a=1 AND b=2) OR (c=0) Condizioni logiche Rappresentazione ad albero Esempio: (a=1 AND b=2) OR (c=0) AND OR 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 aggregazione su layer 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 aggregazione su vicinato 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 almeno una istruzione di assegnazione del tipo: [NewName] = espressione Esempio (life): Risultato: if ( Attiva ) { if ( ( NeighCell[Mondo].NEqVal(Attiva,1)!=2 ) && ( NeighCell[Mondo].NEqVal(Attiva,1)!=3 ) ) 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) Vicinato generato al primo passo Cella dist(Obj, Cell[Layer].Obj)<100 (dist(Obj,Cell[Layer].Obj)<100) && (area(Cell[Layer].Obj) > 5000) Vicinato orizzontale Query di aggiornamento Attributi della query Frequenza Probabilità Condizione di inclusione della cella target Condizione
Creazione di una discretizzazione non regolare Strumenti di editing
Alcune altre funzioni utili Controllo visualizzazione oggetti Creazione colormap Editing dei valori delle variabili Controllo visualizzazione layers
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 !