CAGE Cellular Automata General Environment

Slides:



Advertisements
Presentazioni simili
Lezione 8 Anno accademico Titolare corso: Prof. Costanza Torricelli
Advertisements

1 Introduzione ai calcolatori Parte II Software di base.
Classe III A A.s – 2010 Programma di Informatica
Classe III A A.s – 2011 Sistemi di Elaborazione e Trasmissione dell’Informazione 4 ore settimanali (2 laboratorio) Docenti Prof. Alberto Ferrari.
PROGRAMMARE IN PASCAL (le basi)
PHP.
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Algoritmi e Programmazione
1 2. Introduzione alla probabilità Definizioni preliminari: Prova: è un esperimento il cui esito è aleatorio Spazio degli eventi elementari : è linsieme.
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
Sistemi basati su conoscenza (agenti intelligenti) Prof. M.T. PAZIENZA a.a
JAVASCRIPT DIFFERENZA TRA JAVASCRIPT E JAVA TAG LO SCRIPT OGGETTI LE CLASSI FUNZIONE GESTORE DI EVENTI ELEMENTI DEL LINGUAGGI è un vero e proprio linguaggio.
ANNO ACCADEMICO CORSO LAUREA MAGISTRALE IN SCIENZE DELLA PRODUZIONE ANIMALE Riconoscimento elettronico, management informatizzato e tracciabilità.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
Automi Cellulari Def. formale di AC e di AC unidimensionale
Automi Cellulari Automi Cellulari Binari Unidimensionali con r>1
Introduzione agli Automi Cellulari
Il linguaggio Fortran 90: 2. Istruzioni di Controllo
Introduzione alla programmazione ll
Introduzione alla programmazione lll
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer.
Fogli di Calcolo Elettronici Corso di Informatica Generale per SMID a.a. 2002/03 docente: Giorgio Delzanno (DISI)
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
Strutture di controllo in C -- Flow Chart --
Fondamenti di Informatica1 Software di base Tra il linguaggio macchina (basso livello) e i linguaggi evoluti (alto livello) esiste uno strato di software.
Le funzioni.
Progettazione di una base di dati
Gli algoritmi.
AN FI Un denominatoe comune Lo stile funzionale Concetti fondamentali.
Fondamenti di informatica Linguaggio C Main Program: Architettura di un PC Diagrammi di flusso Linguaggio C.
Reti di Calcolatori L-S Un Sistema Decentrato di Allocazione del Carico per Applicazioni di Calcolo Distribuito Mauro Bampo.
INFORMATICA MATTEO CRISTANI.
L’ingegneria del software
Automi LAVORO SVOLTO DA MARIO GERMAN O
CODIFICA Da flow-chart a C++.
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
Architettura del calcolatore
Programmazione di Calcolatori
Realizzato da Roberto Savino
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Corso di Laurea in Ingegneria per l’Ambiente e il Territorio Informatica per l’Ambiente e il Territorio Docente: Giandomenico Spezzano Tutor: Alfredo Cuzzocrea.
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
LABVIEW Sommario Che cosa è uno strumento virtuale (VI) creato con LABVIEW Parti di un VI: pannello frontale diagramma a blocchi Confronto tra il principio.
Dal problema all’ algoritmo
Introduzione a Javascript
Rappresentazione degli algoritmi
Informatica 3 V anno.
Calcolatori Elettronici Il Processore
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
© Piero Demichelis Tipi strutturati I tipi considerati finora hanno la caratteristica comune di non essere strutturati: ogni elemento è una singola entità.
Cosa sono i Fogli Elettronici? Software applicativo nato dall’esigenza di –organizzare insiemi di dati tramite tabelle, schemi, grafici, ecc. –effettuare.
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
Progettazione di una base di dati Ciclo di vita di un sistema informativo Studio di fattibilità definisce le varie alternative possibili, i relativi costi.
L’esecuzione dei programmi
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Che cosa è e a cosa serve un GIS?
Definizione e proprietà
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Diagrammi a blocchi.
Informatica e Informatica di Base
Di Pietro Demurtas. È il nome di un pacchetto statistico implementato a partire dai primi anni ‘90 da Ihaka e Gentleman. È un linguaggio di programmazione.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
0 Laboratorio Informatica - SAS – Anno Accademico LIUC Alcune indicazioni Dettaglio lezioni: Prima : Michele Gnecchi – Introduzione a SAS Guide.
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 I STITUTO T ECNICO SECONDO BIENNIO T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Transcript della presentazione:

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 !