# AnyLogic

AnyLogic è uno strumento per creare modelli di Simulazione sviluppato da The AnyLogic Company.

## Storia di AnyLogic

Nei primi anni novanta ci fu un grande interesse su come modellare e simulare matematicamente processi paralleli. Lo stesso approccio può tuttora essere applicato alla verifica della correttezza di programmi paralleli e distribuiti. Il gruppo di ricerca in Network di Computer Distribuiti(DCN) della Technical University di San Pietroburgo sviluppò un tipo di software per l'analisi della correttezza dei programmi; questo strumento prese il nome di COVERS (COncurrent VERification and Simulation). Questo strumento permetteva la modellazione delle strutture e dei comportamenti dei sistemi attraverso una notazione grafica. Questo strumento venne applicato anche per progetti di ricerca finanziati da Hewlett Packard.
Nel 1998 il successo di questo esperimento ispirò il DCN laboratory a fondare una nuova impresa con lo scopo di sviluppare un software di simulazione di nuova generazione. La maggior enfasi nello sviluppo venne data all'applicazione dei metodi quantitativi di: simulazione, analisi delle performance, comportamento dei sistemi stocastici e ottimizzazione. Il nuovo software, distribuito nel 2000, incapsulava lo stato dell'arte dell'informatica: un approccio di programmazione ad oggetti, elementi di standard UML, l'uso di Java, una moderna interfaccia grafica, ecc.
Allo strumento venne dato il nome di AnyLogic (letteralmente: ogni logica), dal momento in cui era in grado di supportare i tre principali paradigmi di simulazione:
* Dinamica dei sistemi,
* Simulazione ad eventi discreti,
* Agent-based modeling.
* qualunque combinazione di questi approcci all'interno di un singolo modello.
La prima versione fu AnyLogic 4, in quanto la numerazione continuò partendo da quella di COVERS 3.0. Un grande passo in avanti fu fatto nel 2003, quando venne distribuito AnyLogic 5 che era orientato alla simulazione dei processi di business nei seguenti campi:
* Marketing e Competizione,
* Sanità,
* Produzione,
* Catena di distribuzione,
* Logistica,
* Vendita al dettaglio,
* Processi di business,
* Scienze sociali e dinamiche degli Ecosistemi,
* Difesa,
* Project e Asset management,
* Infrastrutture IT,
* Dinamica delle folle e simulazione del traffico,
* Aeronautica.
* Fotovoltaico
L'ultima versione, AnyLogic 7, è stata lanciata nel 2014. La piattaforma su cui si basa l'ambiente di sviluppo integrato di AnyLogic 7 è Eclipse. AnyLogic 7 è un software di simulazione multipiattaforma ed è compatibile con ambienti Windows, Mac OS and Linux.

## AnyLogic e Java

AnyLogic include un linguaggio di modellazione grafico ed inoltre permette all'utente di estendere il modello di simulazione con del codice scritto in Java. La natura Java di AnyLogic si presta anche nella creazione di Java applets possono essere aperte con un comune browser; questo rende molto facile la condivisione di modelli creati con AnyLogic attraverso semplici siti web. In aggiunta, la versione Professional, permette anche la creazione di applicazioni Java runtime che possono essere distribuite agli utenti. Queste applicazioni Java possono diventare la base per degli strumenti software di supporto alle decisioni.

## Approccio multi-metodo per la modellazione

I modelli di AnyLogic possono essere realizzati basandosi su uno dei principali paradigmi di simulazione: discrete event o processo-centrico (DE), Dinamica dei sistemi (SD), ed agent-based (AB).
La System dynamics e il Discrete Event sono i due approcci tradizionali alla simulazione, agent based è l'ultimo nato. Tecnicamente, l'approccio attraverso la system dynamics è molto affine ai processi continui mentre il "discrete event" (termine con cui indichiamo tutti i linguaggi di programmazione discendenti da GPSS anche conosciuto come approccio di simulazione processo-centrico) e agent based lavorano prevalentemente con passo temporale discreto, i.e. saltano da un evento all'altro.
System dynamics e il discrete event simulation storicamente sono stati insegnati a due categorie di studenti universitari molto differenti tra loro, rispettivamente studenti di Economia e ingegneri che si occupano di ricerca operativa. Come risultato oggi ci sono due differenti filosofie di pensiero differenti che non collaborano tra di loro.
L'approccio Agent based è passato da pura ricerca accademica a approccio di simulazione applicata soltanto recentemente, da quando la crescente domanda di un'ottimizzazione dei differenti business globali ha portato i modellatori a ricercare approcci combinati che li aiutassero ad affrontare processi complessi, interdipendenti e di natura completamente differente.
Differenti approccio di modellazione corrispondono a diversi livelli di astrazione dei problemi da affrontare. System dynamics, lavorando con flussi aggregati e tempi continui, è ovviamente usata al più alto livello di astrazione. Discrete event è utilizzata ad un livello di astrazione basso e medio basso (processi fisici). La tecnica ad agenti, per sua natura tecnologia, abbraccia tutti i livelli di astrazione, e un agente può rappresentare oggetti di diversa natura e scala: al livello "fisico" un agente può, ad esempio, essere un pedone o un'automobile o un macchinario, al livello intermedio – clienti, al livello più alto – aziende concorrenti.
AnyLogic permette all'utente di combinare insieme, nello stesso modello, questi tre approcci secondo l'esigenza, senza nessuna gerarchia da rispettare. Così, ad esempio, è possibile creare un modello di una società di spedizioni dove i corrieri sono modellati come agenti che agiscono/reagiscono indipendentemente mentre il funzionamento interno del processo del trasporto e il networks delle infrastrutture può essere modellizzato attraverso la discrete event simulation. Analogamente, in un altro modello, è possibile modellizzare i consumatori come degli agenti il cui comportamento aggregato alimenta un modello, costruito con tecniche di systems dynamics, che intercetta i flussi quali possono essere ricavi o costi e che non necessitano di essere dettagliati a livello di singolo agente. Questo approccio di misto è direttamente applicabile ad una ampia varietà di problemi complessi e che difficilmente possono essere rappresentati attraverso l'utilizzo di un solo approccio se non con grandi compromessi.

## Linguaggio di simulazione

Il linguaggio di simulazione di AnyLogic consiste nei seguenti elementi:
* Diagrammi Stock e flussi sono usati per modellizzare attraverso la system dynamics.
* Statecharts sono usati in Agent Based per definire il comportamento di un agente. Sono spesso utilizzati in simulazioni discrete (DE), e.g. per simulare lo stato di attività/fermo di una macchina.
* Action charts sono usate per definire algoritmi. Possono essere utilizzate in Discrete Event, e.g. per le logiche di come instradare una chiamata in un call-center, o ad agenti (ABM), e.g. per le logiche di decisione di un agente.
* Process flowcharts rappresentano i "mattoncini" di base usati per definire un processo nel Discrete Event modeling. Guardando questi flowchart è facilmente intuibile perché Discrete Event è spesso chiamato Processo Centrico.
Il linguaggio include inoltre: elementi base di modellizzazione (variabili, equazioni, parametri, eventi etc.), elementi grafici (linee, linee spezzate, ovali etc.), elementi per l'analisi dei risultati (dataset, istogrammi, grafici), tools per connettività a fonti esterne di dati, immagini standard, e altro ancora.

## Librerie di AnyLogic

AnyLogic include le seguenti librerie standard:
* Process Modeling Library è stata creata per supportare modelli DES per la Produzione, Catena di distribuzione, Logistica e Sanità. Utilizzando gli oggetti della Process Modeling Library è possibile modellizzare sistemi reali in termini di entità (transazioni, consumatori, prodotti, oggetti, veicoli, etc.), processi (le sequenze di operazioni tipicamente coinvolgono code, attese, utilizzo di risorse), e risorse. I processi sono specificati nella forma di flowchart.
* Pedestrian Library è dedicata a simulare i flussi di persone in un ambiente "fisico". Questo permette di creare modelli di luoghi ad alta frequentazione (come stazioni della metropolitana, varchi per la sicurezza etc.) o strade (grande numero di pedoni). I modelli possono collezionare statistiche sulla densità di persone in differenti aree. È quindi possibile stimare un livello di servizio accettabile in base al carico di persone presenti in un'area, stimare in tempi di percorrenza o di permanenza, ed evidenziare potenziali problemi con le geometrie delle aree interne - quali l'effetto di aggiungere troppi ostacoli lungo un percorso - ed altri ancora. Nei modelli creati con la Pedestrian Library, la folla si muove in uno spazio continuo, reagendo differentemente ai differenti tipi di ostacoli: pareti, differenti tipi di aree e altri pedoni. I pedoni vengono simulati come agenti interattivi con un comportamento complesso, tuttavia la Pedestrian Library di AnyLogic fornisce un'interfaccia di alto livello in stile flowchart che risulta molto semplice e veloce nella creazione dei modelli di folle.
* Rail Library supporta la simulazione e la visualizzazione di tutte le operazioni logistico-ferroviarie di ogni complessità e scala. I modelli ferroviari possono essere combinati con modelli discreti o ad agenti in relazione a: carico/scarico, allocazione di risorse, manutenzione, processi di business, e altre attività connesse al trasporto ferroviario.
Oltre a queste librerie standard ogni utente può sviluppare e distribuire le proprie librerie.