Model-Driven Design using
XJ Technologies AnyLogic

Riandi Wiguna

MSDL

September, 2005

Overview

Introduction to AnyLogic

Basic Usage of AnyLogic

AnyLogic Features

Example: Answering Machine

Personal Experiences using AnyLogic

Conclusion

Introduction to AnyLogic

AnyLogic is software for model-based design

Users define systems with

AnyLogic structure diagrams

AnyLogic statecharts

mathematical equations

Java code

Users can use AnyLogic to create

animations of their running systems

graphical user interfaces for their systems

live-updating charts that graph data as their systems run

Project Window

Properties Window

Structure Diagram Toolbar

Main Class's Extra Code

Statechart Toolbar

Patient Class's patHlth statechart

Timer Expiry Code

Timer

Experiment

Animation Toolbar

Number of rectangles to

show during animation

Position, Color of rectangle

now and during animation

Model Toolbar

Introduction to AnyLogic

Demonstration

Basic Usage of AnyLogic

Create structure diagrams for classes

(Optional) Create statecharts for classes

(Optional) Create animations for classes

Create an experiment

Build project and run experiment

AnyLogic Features

Manuals, Tutorials, and Examples

General AnyLogic User Manual

Library usage tutorials

Agent-based modeling tutorial

System Dynamics tutorial

Class Reference API

Examples

Agent-based modeling

Business

Ecosystem Dynamics

Pedestrian Dynamics

Traffic

etc.

AnyLogic Features

Structure Diagrams

Variables can be real, integer, or boolean; Parameters can be of any Java class

Parameter propagation, variable linking

Ports send message objects between active objects

An object's setModified() function specifies that it has been altered

Simulations

Virtual Time Mode, Real Time Mode (Choice of mode may result in different output)

3D animation available

Input and

output variables

Below: Linked variables and ports

Right: The result of linking variables

(only encaps1.outC is incremented)

AnyLogic Features

Statecharts

If guard condition is True, transition is taken

immediately

after specified timeout

on events

on 'change events' (boolean expression is True)

at specified rates

Inner transitions taken over outer transitions, unlike Statemate statechart semantics

History (deep, shallow), Conditional Branches

No orthogonal components

Classes may have more than one statechart

AnyLogic Features

Code

Full API included (Help -> Class Reference)

Programming code is in Java

Array structures are replicated active objects

Get Item: arr.item(index)

Add Item: setup_arr(obj, index)

Delete Item: dispose_arr(obj)

Users can sample from probability distributions

bernoulli(p, r)

binomial(n)

exponential(lambda)

cauchy(lambda, theta)

etc.

AnyLogic Features

Users can instantiate encapsulated objects

Create Object: setup_myObj(myObj)

Destroy Object: dispose_myObj(myObj), and then unregister(myObj)

Users can control active object creation

Constructors

onCreate(), before statechart initialized, define in “Additional Class code”

“Startup Code”

Users can control active object destruction

cleanup(), define in “Additional class code”

onDestroy(), after all structure diagram elements destroyed, destroy manually created encapsulated objects

AnyLogic Features

Users can observe and control running system

Start New Thread: startThread()

Get Current Simulation Time: getTime()

Users can run systems outside of AnyLogic

java -classpath xjanylogic5engine.jar; myLib.jar;...myLibN.jar; package.root

Use AnyLogic to generate Java applet

Miscellaneous

Automatically handles algebraic loops in structure diagrams

Has support for matrices/arrays, lookup tables, enumerations, system dynamics/diff. equations

Can generate HTML reports of models

Variables defined using

Differential Equations

Synchronized Equations

Example of Generated Report

Example: Answering Machine

Use-Cases

Record incoming message

Play

outgoing message

currently-selected saved message

all saved messages

Delete

currently-selected saved message

all saved messages

Create new outgoing message

Change current message selection

up (+1)

down (-1)

Example: Answering Machine

Classes with statecharts

Chronometer

Tracks lengths of messages as user “speaks” into microphone

Main

Contains one instance each of Chronometer, Microphone, Recorder, Speaker

Contains “curInNum”, current message index

Contains “msgCount”, number of saved messages

Contains animated GUI of answering machine

Speaker

Plays outgoing message

Plays incoming messages

Plays informational messages

Example: Answering Machine

Classes without statecharts

Microphone

Receives incoming messages

MsgTuple

Contains string data “text”

Contains integer data “length”

Recorder

Saves message data

Discards data if “blankTape” is less than message length

Example: Answering Machine

Demonstration

Personal Experiences
using AnyLogic

Ease of Use

Easy to make simple systems; fairly intuitive

Slight learning curve for making animations, GUI

Switching between Java and Math can be a little awkward

Extent of Model-Driven Design

Functions in “Extra code” sections of classes don't show in Project Window

Stability of AnyLogic

Some crashes during animation runs

Conclusion

XJ Technologies AnyLogic

has

plenty of examples in many different kinds of domains

the ability to generate Java applets of systems

powerful tools for creating system animations/GUI

animated statecharts and structure diagrams, “animated” variables

3D animation capabilities

the ability to interface with databases

but lacks

the ability to run active objects as different threads

language agnosticism

statechart support for orthogonal components

more complete implementation of statechart formalism (for analysis purposes)

References

XJ Technologies. “User's Manual.” 2005.

XJ Technologies. “Agent-Based Modeling Tutorial.” 2005.

XJ Technologies. “AnyLogic 5.3 Class Reference.”

Riandi Wiguna

2005-09-11T15:24:26