Intelligent Objects: The Future Of Simulation And Simulation Software

ING PARADIGMSexecution and hold only the model state variables and
In the early days of discrete event simulation thea reference to their parent object instance. This is a
dominant modeling paradigm was the event orientationhighly efficient structure that is crucial for large scale
implemented by tools such as Simscript (Markowitz, etapplications such as agent-based models that can
.al 1962.) and GASP (Pritsker, 1967). In this modelinghave many thousands of object realizations.
paradigm the system is viewed as a series of7 THREE WAYS TO BUILD OBJECT DEFINITIONS
instantaneous events that change the state of theThe previous example in which we defined a new
system. The modeler defines the events in the systemobject definition (work cell) by combining other objects
and models the state changes that take place when(machines and a robot) is one example of how we
those events occur. This approach to modeling is verycan create object definitions in Simio. This type of
flexible and efficient, but is also a relatively abstractobject is called a composed object because we
representation of the system. As a result many peoplecreate this object by combining two or more
found modeling using an event orientation to be difficult.component objects. This object building approach is
In the 80's the process orientation displaced the eventfully hierarchical, i.e. a composed object can be used
orientation as the dominant approach to discrete eventas a component object in building higher level objects.
simulation. In the process view we describe theThis is only one way of building objects in Simio there
movement of passive entities through the system as aare two other important methods.
process flow. The process flow is described by aThe most basic method for creating objects in Simio is
series of process steps (e.g. Seize, Delay, Release)by defining the logical processes that alter their state in
that model the state changes that take place in theresponse to events. For example, a machine object
system. This approach dates back to the 1960's withmight be built by defining the processes that alter the
the introduction of GPSS (Gordon, 1960) and providedmachine state as events occur such as part arrival,
a more natural way to describe the system. Howevertool breakdown, etc. This type of modeling is similar to
because of many practical issues with the originalthe process modeling done in traditional modeling
GPSS (e.g. an integer clock and slow execution) it didsystems in use today such as Arena or GPSS. An
not become the dominant approach until improvedobject that is defined by describing its native
versions of GPSS (Henriksen, 76) along with newerprocesses is called a base object.A base object can
process languages such as SLAM( Pegden/Pritsker,in turn be used as a component object for building
79) and SIMAN (Pegden, 82) became widely used inhigher level objects.
the 80's. During the 80's and 90's graphical modelingThe final method for building objects in Simio is based
and animation also emerged as key features inon the concept of inheritance. In this case we create
simulation modeling tools. Graphical model buildingan object from an existing object by overriding (i.e.
simplified the process of building process models, andreplacing) one or more processes within the object, or
graphical animation dramatically improved the viewingadding additional processes to extend its behavior. In
and validation of simulation results. The introduction ofother words we start with an object that is almost
Microsoft Windows made it possible to build improvedwhat we want, and then we modify and extend it as
graphical user interfaces and a number of newnecessary to make it serve our own purpose. For
graphically based tools emerged (e.g. ProModel andexample we might build a specialized drill object from a
Witness).generalized machine object by adding additional
Another conceptual advance that occurred during thisprocesses to handle the failure and replacement of the
time was the introduction of hierarchical processdrill bit. An object that is built in this way is referred to
modeling tools that supported the notion of domainas a derived object because it is sub-classed from an
specific process libraries. The basic concept here is toexisting object.
allow users to create new process steps byRegardless which method is used to create an object,
combining existing process steps. The widely usedonce created it is used in exactly the same way. An
Arena modeling system (Pegden/ Davis, 1992) is aobject can be instantiated any number of times into a
good example of this capability.model. You simply select the object of interest and
Since the wide spread shift to a graphics-basedplace it (instantiate it) into your model
process orientation there have been refinements and8 OBJECT CLASS
improvements in the tools, but no real advances in theThere are six basic classes of objects in Simio. These
underlying framework. The vast majority of discretesix classes of objects provide a starting point for
event models continue to be built using the samecreating intelligent objects within Simio. By default, all six
process orientation that has been widely used for theof these classes of objects have very little native
past 25 years.intelligence, but all have the ability to gain intelligence.
Although a process orientation has proven to be veryYou build intelligent versions of these objects by
effective in practice, an object orientation provides anmodeling their behavior as a collection of event driven
attractive alternative modeling paradigm that has theprocesses.
potential to be more natural and easier to use. In anThe first class is the fixed object. This object has a
object orientation we model the system by describingfixed location in the model and is used to represent the
the objects that make up the system. For examplethings in your system that do not move from one
we model a factory by describing the workers,location to another. Fixed objects are used to
machines, conveyors, robots, and other objects thatrepresent stationary equipment such as machines,
make up the system. The system behavior emergesfueling stations, etc.
from the interaction of these objects.Agents are objects that can freely move through
Although a number of products have been introduced3dimensional space. Agents are also typically used for
to support an object orientation, to date manydeveloping agent-based models. This modeling view is
practitioners who have elected to stick with theuseful for studying systems that are composed of
process orientation. A big reason for this is that whilemany independently acting intelligent objects that
the underlying modeling paradigm might be simpler andinteract with each other and in so doing create the
less abstract, the specific implementation may beoverall system behavior. Examples of applications
difficult to learn and use (e.g. require programming), orinclude market acceptance of a new product or
slow in execution. This is no different than theservice, or population growth of competing species
challenges faced by the process orientation inwithin an environment.
unseating the event orientation. Although the firstAn entity is sub-classed from the Agent class and has
process modeling tool (GPSS) was introduced in 1961, itone important added behavior. Entities can move
took 25 years before the process orientation wasthrough the system from object to object over a
developed to the point that practitioners werenetwork of links and nodes. Examples of entities
persuaded to make the paradigm shift. This paperinclude customers in a service system, work pieces in
describes Simio -- a new simulation modeling tool thata manufacturing system, ships in a transportation
is designed to make the object orientation easy to usesystem, tanks in a combat system, and doctors,
and efficient to execute. Although Simio incorporates anurses, and patients in a health delivery system.
number of innovative features in pursuit of this goal,Note that in traditional modeling systems such as
only time will tell if this tool has bridged the manyGPSS or Arena the entities are passive and are acted
practical issues that must be addressed to trigger aupon by the model processes. However in Simio the
widespread paradigm shift in the way practitionersentities can have intelligence and control their own
build models.behavior.
The tool is designed from the ground up to support theLink and node objects are used to build networks over
object modeling paradigm; however it also supportswhich entities may flow. A link defines a pathway for
the seamless use of multiple modeling paradigmsentity movement between objects. A node defines a
including a process orientation and event orientation. Itstarting or ending point for a link. Links and nodes can
also fully supports both discrete and continuousbe combined together into complex networks.
systems, along with large scale applications based onAlthough the base link has little intelligence we can add
agent-based modeling. These modeling paradigms canbehavior to allow it to model unconstrained flow,
be freely mixed within a single model.congested traffic flow, or complex material handling
2 THE SIMIO OBJECT PARADIGMsystems such as accumulating conveyors or power
Simio is a simulation modeling framework based onand free systems.
intelligent objects. The intelligent objects are built byThe final class of object is a transporter and is sub-
modelers and then may be reused in multiple modelingclassed from the entity class. A transporter is an entity
projects. Objects can be stored in libraries and easilythat has the added capability to pickup, carry, and drop
shared. A beginning modeler may prefer to useoff one or more other entities. By default transporters
pre-built objects from libraries, however the system ishave none of this behavior, but by adding model logic
designed to make it easy for even beginning modelersto this class we can create a wide range of
to build their own intelligent objects for use in buildingtransporter behaviors. A transporter can model a taxi
hierarchical models.cab, bus, AGV, subway car, forklift truck, or any other
An object might be a machine, robot, airplane,object that has the ability to carry other entities from
customer, doctor, tank, bus, ship, or any other thing thatone location to another.
you might encounter in your system. A model is built byA key feature of Simio is the ability to create a wide
combining objects that represent the physicalrange of object behaviors from these six basic
components of the system. A Simio model looks likeclasses. The Simio modeling framework is application
the real system. The model logic and animation is builtdomain neutral -- i.e. these six basic classes are not
as a single step.specific to manufacturing, service systems, healthcare,
An object may be animated in 3D to reflect themilitary, etc.. However it is easy to build application
changing state of the object. For example a forkliftfocused libraries comprised of intelligent objects from
truck raises and lowers its lift, a robot opens andthese six classes designed for specific application.. For
closes its gripper, and a battle tank turns its turret. Theexample it is relatively simple to build an object (in this
animated model provides a moving picture of thecase a link) that represents a complex accumulating
system in operation.conveyor for use in manufacturing applications. The
Objects are built using the concepts of object-design philosophy of Simio directs that this type of
orientation. However unlike other object orienteddomain specific logic belongs in the objects that are
simulation systems, the process of building an object isbuilt by users, and not programmed into the core
very simple and completely graphical. There is no needsystem.
to write programming code to create new objects.9 CREATING INTELLIGENT OBJECTS WITH
The activity of building an object in Simio is identical toPROCESSES
the activity of building a model -- in fact there is noModeling in Simio begins with base objects -- it is the
difference between an object and a model. Thisfoundation on which higher level objects are built. A
concept is referred to as the equivalence principle andbase object in Simio is a fixed object, agent, entity, link,
is central to the design of Simio. Whenever you build anode, or transporter that has intelligence added by one
model it is by definition an object that can beor more processes. Processes give an object its
instantiated into another model. For example, if youintelligence by defining the logic that is executed in
combine two machines and a robot into a model of aresponse to events.
work cell, the work cell model is itself an object thatEach process is a sequence of process steps that is
can then be instantiated any number of times intotriggered by an event and is executed by a token.A
other models. The work cell is an object just like theprocess always begins with a single Begin step, and
machines and robot are objects. In Simio there is noends with a single End step. A token is released by the
way to separate the idea of building a model from theBegin step and is simply a thread of execution (similar
concept of building an object. Every model that is builtto entities in Arena). A token may have properties
in Simio is automatically a building block that can be(input parameters) and states (runtime changeable
used in building higher level models.values) that control the execution of the process
3 THE OBJECT ORIENTED FOUNDATIONsteps. You can define your own classes of tokens
Many popular programming languages such as C++,that have different combinations of properties and
C#, and Java are all built around the basic principles ofstates.
object oriented programming (OOP). In thisThe modeling power of Simio comes from the set of
programming paradigm software is constructed as aevents that are automatically triggered for the six
collection of cooperating objects that are instantiatedbasic classes of objects, along with the process steps
from classes. These classes are designed using thethat are available to model state changes that occur in
core principles of abstraction, encapsulation,response to these events. Fully mastering the art of
polymorphism, inheritance, and composition.building intelligent objects involves learning the events
The abstraction principle can be summarized asand the collection of available process steps, along
focusing on the essential. The basic principle is to makewith the knowledge and experience of how to
the classes structure as simple as possible.combine these steps to represent complex logic.
The encapsulation principle specifies that only theEach step in Simio models a simple process such as
object can change its state. Encapsulation seals theholding the token for a time delay, seizing/releasing of
implementation of the object class from the outsidea resource, waiting for an event to occur, assigning a
world.new value to a state, or deciding between alternate
Polymorphism provides a consistent method forflow paths. Some steps (e.g. Delay) are general
messages to trigger object actions. Each object classpurpose steps that are useful in modeling objects, links,
decides how to respond to a specific message.entities, transporters, agents, and groups. Other steps
Inheritance is a key concept that allows new objectare only useful for specific objects. For example, the
classes to be derived from existing object classes: thisPickup and Dropoff steps are only useful for adding
is sometimes referred to as the "is-a" relationship. Thisintelligence to transporters and the Engage and
is also referred to as sub-classing since we areDisengage steps are only useful in adding intelligence to
creating a more specialized class of an object.Links.
Sub-classing typically allows the object behavior to beEach object class has its own set of events. For
extended with new logic, and also modified byexample, a link provides events that fire when entities
overriding some of the existing logic.enter and leave the link, merge fully onto the link, collide
Composition allows new object classes to be built bywith or separate from other entities that reside on the
combining existing object classes: this is sometimeslink, move within a specified range of another entity,
referred to as the "has-a" relationship. Objectsetc. By providing model logic to respond to these
become building blocks for creating higher level objects.events we can completely control the movement of
It is interesting to note that the roots of these ideasentities across the link. For example, to add
date back to the early 1960's with the Simula 67accumulation logic to the link we simply write a small
simulation modeling tool. This modeling tool wasprocess that its triggered when an entity collides with
created by Kristen Nygaard and Ole-Johan Dahl (1962)the entity it is following, and reassigns the speed of the
of the Norwegian Computing Center in Oslo to modelentity to match the speed of the entity that it is
the behavior of ships. They introduced the basicfollowing.
concepts of creating classes of objects that own theirThe process steps that are used to define the
data and behavior, and could be instantiated into otherunderlying logic for an object are stateless -- i.e. they
objects. This was the birth of hierarchical modeling andhave properties (input parameters) but no states
object-oriented programming.(output responses). This is important because this
Many people assume that object-orientedmeans that a single copy of the process can be held
programming concepts were developed within theby the object class definition, and shared by an
programming world; however this was not the case.arbitrary number of object instances. If the process
These principles were developed for building simulationlogic is changed, this fact is automatically reflected by
models, and then adopted by the programming world.all instances of the object.
Although the simulation world created the originalThe states for an object instance are held in elements.
object-oriented concepts, it has yet to produce anElements define the dynamic components of an
object- oriented modeling framework that practitionersobject and may have both properties (input
have widely embraced. Although there have been aparameters) and states (runtime changeable values).
number of attempts to provide such a framework, inWithin an object the tokens may execute steps that
the end practitioners have for the most part stuck tochange the states of the elements that are owned by
their proven process orientation for modeling. One ofthe object.
the big reasons for this is that most past attemptsAn example of an element is the station that defines a
have simply been object- oriented programminglocation within an object. Stations are also used to
libraries that require the user to step back in time 25define entry and exit points into and out of an object.
years and again code their models and/or objects in aEntities can transfer into and out of stations (using the
programming language.Transfer step), and a station maintains a queue of
4 THE SIMIO OBJECT FRAMEWORKentities currently in the station as well as entities waiting
The Simio object framework is built on the same basicto transfer into the station. A station has a capacity
principles as object oriented programming languages;that limits transfers into a station. Hence an entity
however these principles are applied within a modelingarriving to an object over a link can only exit the link
framework and not a programming framework. Forand enter the object if the entry station for the object
example the Microsoft development team thathas capacity available.
designed C# applied these basic principles in the design10 FINITE CAPACITY SCHEDULING
of that programming language. Although these sameAlthough simulation has traditionally been applied to the
principles drive the design of Simio, the result is not adesign problem, it can also be used on an operational
programming language, but rather a graphical modelingbasis to generate production schedules for the factory
system. This distinction is important in understanding thefloor. When used in this mode, simulation is a Finite
design of Simio.Capacity Scheduler (FCS) and provides an alternative
Simio is not simply a simulation modeling tool that isto other FCS methods such as optimization algorithms
programmed in an OOP language (although it isand job-at-atime sequencers. However simulation
programmed in C#). Likewise it is not simple a set ofbased FCS has a number of important advantages
classes available in an OOP language such as Java or(e.g. speed of execution and flexible scheduling logic)
C++ that are useful for building simulation models. Simiothat make it a powerful solution for scheduling
is a graphical modeling framework to support theapplications
construction of simulation models that is designedSimulation provides a simple yet flexible method for
around the basic object oriented principles. Forgenerating a finite capacity schedule for the factory
example when you create an object such as afloor. The basic approach with simulation-based
"machine" in Simio, the principle of inheritance allowsscheduling is to run the factory model using the starting
you to create a new class of machines that inheritsstate of the factory and the set of planned orders to
the base behavior of a "machine", but this behaviorbe produced. Decision rules are incorporated into the
can be modified (overridden) and extended. Whereasmodel to make job selection, resource selection, and
in a programming language we extend or overriderouting decisions. The simulation constructs a schedule
behavior by writing methods in a programmingby simulating the flow of work through the facility and
language, in Simio we extend or override behavior bymaking "smart" decisions based on the scheduling rules
adding and overriding graphically defined processspecified. The simulation results are typically displayed
models.as jobs loaded on interactive Gantt chart that can be
This distinction between object oriented modeling andfurther manipulated by the user. There are a large
object oriented programming is crucial. With Simio thenumber of rules that can be applied within a simulation
skills required to define and add new objects to themodel to generate different types of schedules
system are modeling skills, not programming skills.focused on measures such as maximizing throughput,
5 THE ANATOMY OF AN OBJECT (MODEL)maintaining high utilization on a bottleneck, minimizing
When you create a model in Simio, you are creatingchangeovers, or meeting specified due dates.
an object class from which multiple instances can beBecause of the special requirements imposed by
created. This process is referred to as instantiation.scheduling applications (e.g. the need for specialized
When you instantiate an object into a model, you maydecision rules and the need to view the results in the
specify properties of the object that govern theform of an interactive Gantt chart), simulation-based
behavior of this specific instance of this object. Forscheduling applications have typically employed
example the properties for a machine might include thespecialized simulators specifically designed for this
setup, processing, and teardown time, along with a billapplication area. The problem with this approach is that
or materials and a operator required during the setup.the specialized simulators have built-in, data-driven
The creator of the object decides on the number andfactory models that cannot be altered or changed to
the meaning of the properties. The properties in Simiofit the application. In many cases this built-in model is an
are strongly typed and can represent numeric values,overly simplified view of the complexities of the
Booleans, strings, object references, dates and times,production floor. .This one model fits all approach
etc. Since any model that you build is by definition anseverely limits the range of applications for these tools.
object, you have the opportunity to parameterize yourSome production processes can be adequately
model through properties as well.represented by this fixed model, but many others
It should be noted that instantiating a model is not thecannot.
same as copying or cloning the model. When a modelSimio takes a different approach by allowing the
is used as a building block in the construction of otherfactory model to be defined using the full
models it may be instantiated many times in manygeneral-purpose modeling power of the tool. Hence the
different models. The model instance simply holds arange of applications is no longer restricted by a fixed
reference to the one model definition that is used overbuilt-in model that cannot be altered or changed
and over again. The instance also holds the propertybetween applications. The complexities of the
values since these are unique to each instance.production process can be fully captured by the
However the model logic is shared by all instances.user-built Simio model. This not only includes the logic
Regardless of how many instances are created, therewithin each work center, but also the material handling
is only one class definition of the object, and eachrequired to move jobs between work centers.
instance refers back to this single definition. EachThe specialized requirements for FCS applications are
instance holds the properties that are unique to thataddressed by incorporating features into Simio to
instance, but looks back to the definition to get itsspecifically support the needs of FCS. These features
underlying behavior. If the behavior in the definition isinclude the support for externally defined job data sets
changed then all instances automatically make use ofalong with very flexible modeling of resources and
this new behavior.materials. Although these features are specifically
In addition to properties, objects also have states.designed to unleash the full modeling power of Simio
States are also strongly typed but always map to afor FCS applications, they are also useful in general
numeric value. For example the Booleans true andmodeling applications.
false map to 1 and 0, and an enumerated list of stateA Simio job data set allows a list of jobs to be
names map to the list index position (0, 1, …., N) in theexternally defined for processing by the simulation
list. A state changes as a result of the execution ofmodel. The jobs are defined in a data set containing
the logic inside the object. Properties can be thought ofone or more tables, with relations defined between
as inputs to an object, and states can be thought oftable columns. The specific schema for holding the job
as output responses that change throughout thedata is arbitrary and can be user defined to match the
execution of the object logic. A state might representdata schema for the manufacturing data (e.g. an ERP
a count of completed parts, the status of a machinesystem). The job data typically includes release and
selected from an enumerated state list, thedue date, job routings, setup and processing times,
temperature of an ingot heating in a furnace, the levelmaterial requirements, as well as other properties that
of oil in a ship being filled, or the accumulation level on aare relevant to the system of interest.. The objects in
conveyor belt.Simio can directly reference values specified in the job
There are two basic types of states: discrete anddata set (e.g. processing time) without knowing the
continuous. A discrete state is a value that onlyschema that was implemented to store the data.
changes at event times (customer arrival, machineAny object in Simio can serve as a capacitated
breakdown, etc.) A continuous state (e.g. tank level,resource and can have its own independent behavior.
position of a cart, etc.) has a value that changesResources can be selected from a list based on
continuously over time.flexible rules such as minimum changeover time or
6 THREE OBJECT TIERSlongest idle time. . Resources also support very flexible
One of the important and unique internal designrules (earliest due date, least remaining slack, critical
features of Simio is the use of a three tier objectratio, etc) for selecting between competing jobs that
structure that separates an object into an objectare waiting to seize the resource. Finally the job usage
definition, object instance, and object realization. Thehistory for resources can be displayed on an
object definition specifies the object behavior and it isinteractive Gantt chart.
shared by all instances of the object. An objectThe Materials element in Simio provides direct support
instance is simply an instance of that object within ato model things that can be consumed and produced
parent object definition (e.g. a lathe machine instance isduring the execution of the model. Materials can also
placed inside a work cell definition). The object instancebe defined hierarchically to model a traditional Bill of
defines the property values for each individual instanceMaterials (BOM) for manufacturing applications. Hence
of the object and this instance data is in turn shared bya manufacturing step can be modeled as the
all object realizations.consumption of a specific list of materials within the
The object realization is used to represent a specifichierarchical BOM.
realization of an instance within an expanded model11 SUMMARY
hierarchy. For example, each time a new work cellSimio is a new modeling framework based on the
instance is placed in a parent object definition (e.g. acore principles of object oriented modeling. It is unique
production line) it creates the need for a newin the following ways:
realization for the embedded lathe. Although the workThe Simio framework is a graphical object- oriented
cell definition is built from a single lathe instance, thismodeling framework as opposed to simply a set of
single lathe instance cannot hold the state valuesclasses in an object-oriented programming language
corresponding to multiple lathe realizations that resultthat are useful for simulation modeling. The graphical
from multiple instances of the work cell. The objectmodeling framework of Simio fully supports the core
realizations provide the mechanism for holding thisprinciples of object oriented modeling without requiring
hierarchical state information in a very compact form.programming skills to add new objects to the system.
The object realizations are only created during model