# Discrete Event Modeling

The world around us appears to be "continuous": the greater majority
of processes we observe consist of continuous changes. However, when we
analyze those processes, in many cases it makes sense to
abstract from their continuous nature and consider only some
"important moments", "events" in the system lifetime. The modeling
paradigm that suggests to approximate the real-world processes with
such events is called Discrete Event Modeling. (The term Discrete Event
is also used in the narrower sense to denote "process-centric" modeling
where the system is described as a process flowchart.) Discrete Event modeling is fully supported by AnyLogic as well as System Dynamics and Agent Based Modeling.

Here are some examples of events: a customer arrives at a shop, a
truck finishes unloading, a conveyor stops, a new product is launched,
the inventory level reaches a certain threshold, etc. In discrete
event modeling the movement of e.g. a train from point A to point B
would be modeled with two events: departure and arrival, and the actual
movement will become a time delay (interval) between them. (This does
not mean however that you cannot animate the train as moving, in fact
in AnyLogic you can produce visually continuous animations for
logically discrete models).

Event in AnyLogic model (which as you know is an abstraction) takes
zero time to execute, is atomic (will not interfere with any other
event execution), may change the model when it is executed, in
particular may schedule other events. If AnyLogic engine is executing a
purely discrete model, the time is essentially a sequence of events,
and the engine just jumps from one event to another. If several events
are scheduled to occur at the same time (are simultaneous), they are
serialized, i.e. executed one after another in some internal (not
guaranteed) order. If the order is important for you, you should take
care of it when developing the model so that the simulation results do
not depend on the engine implementation.

At the low level (at the level of AnyLogic modeling primitives) events may be scheduled by two types of objects: events and statecharts.
There is however, a library of higher-level objects that help you to
create discrete event patterns frequently used in process-centric
modeling (queuing, resource usage, agent generation, etc.) - it is
called Process Modeling Library.

#### Related topics

Process Modeling
Library blocks