Introduction To Simio
Introduction To Simio
INTRODUCTION TO SIMIO
Renee M. Thiesing
C. Dennis Pegden
Simio LLC
504 Beaver St.
Sewickley, PA, 15143, USA
ABSTRACT
This paper describes the SimioTM modeling system that is designed to simplify model building by promoting
a modeling paradigm shift from the process orientation to an object orientation. Simio is a simulation
modeling framework based on intelligent objects. The intelligent objects are built by modelers and then
may be reused in multiple modeling projects. Although the Simio framework is focused on object-based
modeling, it also supports a seamless use of multiple modeling paradigms including event, process, object,
systems dynamics, agent-based modeling, and Risk-based Planning and scheduling (RPS).
Figure 2: 3D object imported directly into Simio from Google Symbol Warehouse
4091
Thiesing and Pegden
The abstraction principle can be summarized as focusing on the essential. The basic principle is to
make the classes structure as simple as possible.
The encapsulation principle specifies that only the object can change its state. Encapsulation seals the
implementation of the object class from the outside world.
Polymorphism provides a consistent method for messages to trigger object actions. Each object class
decides how to respond to a specific message.
Inheritance is a key concept that allows new object classes to be derived from existing object classes:
this is sometimes referred to as the “is-a” relationship. This is also referred to as sub-classing since we are
creating a more specialized class of an object. Sub-classing typically allows the object behavior to be
extended with new logic, and also modified by overriding some of the existing logic.
Composition allows new object classes to be built by combining existing object classes: this is some-
times referred to as the “has-a” relationship. Objects become building blocks for creating higher level
objects.
Many people assume that object-oriented programming concepts were developed within the program-
ming world; however this was not the case. These principles were developed for building simulation mod-
els, and then adopted by the programming world.
Although the simulation world created the original object-oriented concepts, until recently it had yet to
produce an object-oriented modeling framework that practitioners have widely embraced. Although there
have been a number of attempts to provide such a framework, in the end practitioners have for the most
part stuck to their proven process orientation for modeling. One of the big reasons for this is that most
object-oriented simulation tools still require the user to step back in time 25 years and code their models
and/or objects in a programming language. Simio has a significantly better way.
4092
Thiesing and Pegden
setup. The creator of the object decides on the number and the meaning of the properties. The properties
in Simio are strongly typed and can represent numeric values, Booleans, strings, object references, dates
and times, etc. Since any model that you build is by definition an object, you have the opportunity to
parameterize your model through properties as well.
In addition to properties, objects also have states. States are also strongly typed but always map to a
numeric value. For example the Booleans true and false map to 1 and 0, and an enumerated list of state
names map to the list index position (0, 1, …., N) in the list. A state changes as a result of the execution of
the logic inside the object. Properties can be thought of as inputs to an object, and states can be thought of
as output responses that change throughout the execution of the object logic. A state might represent a
count of completed parts, the status of a machine selected from an enumerated state list, the temperature of
an ingot heating in a furnace, the level of oil in a ship being filled, or the accumulation level on a conveyor
belt.
There are two basic types of states: discrete and continuous. A discrete state is a value that only changes
at event times (customer arrival, machine breakdown, etc.) A continuous state (e.g. tank level, position of
a cart, etc.) has a value that changes continuously over time.
4093
Thiesing and Pegden
almost what we want, and then we modify and extend it as necessary to make it serve our own purpose.
For example, we might build a specialized drill object from a generalized machine object by adding addi-
tional processes to handle the failure and replacement of the drill bit. An object that is built in this way is
referred to as a derived object because it is sub-classed from an existing object.
Regardless which method is used to create an object, once created it is used in exactly the same way.
An object can be instantiated any number of times into a model. You simply select the object of interest
and place it (instantiate it) into your model.
7 OBJECT CLASS
There are six basic classes of objects in Simio (Figure 3). These six classes of objects provide a starting
point for creating intelligent objects within Simio. By default, all six of these classes of objects have very
little native intelligence, but all have the ability to gain intelligence. You build intelligent versions of these
objects by modeling their behavior as a collection of event driven processes. The Standard Library included
with Simio provides a rich and customizable set of objects that are derived from these six basic classes of
objects.
The first class is the fixed object. This object has a fixed location in the model and is used to represent
the things in your system that do not move from one location to another. Fixed objects are used to represent
stationary equipment such as machines, fueling stations, etc. The Simio Standard Library contains a number
of fixed objects, such as the Source, Sink, Server, Workstation, Resource, Combiner and Separator.
Agents are objects that can freely move through 3-dimensional space. Agents are also typically used
for developing agent-based models. This modeling view is useful for studying systems that are composed
of many independently acting intelligent objects that interact with each other and in so doing create the
overall system behavior. Examples of applications include market acceptance of a new product or service,
or population growth of competing species within an environment.
An entity is sub-classed from the Agent class and has one important added behavior. Entities can move
through the system from object to object over a network of links and nodes. Examples of entities include
customers in a service system, work pieces in a manufacturing system, ships in a transportation system,
tanks in a combat system, and doctors, nurses, and patients in a health delivery system.
Note that in traditional modeling systems the entities are passive and are acted upon by the model
processes. However in Simio the entities can have intelligence and control their own behavior.
Link and node objects are used to build networks over which entities may flow. A link defines a
pathway for entity movement between objects. A node defines a starting or ending point for a link. Links
and nodes can be combined together into complex networks. Although the base link has little intelligence
we can add behavior to allow it to model unconstrained flow, congested traffic flow, or complex material
handling systems such as accumulating conveyors or power and free systems. The Standard Library con-
tains four link objects and two node objects. The Connector, Path, TimePath and Conveyor are derived
4094
Thiesing and Pegden
from the Link object and the Basic Node and the Transfer Node are derived from the Node object.The fi-
nal class of object is a transporter and is sub-classed from the entity class. A transporter is an entity that
has the added capability to pickup, carry, and drop off one or more other entities. By default transporters
have none of this behavior, but by adding model logic to this class we can create a wide range of transporter
behaviors. A transporter can model a taxi cab, bus, AGV, subway car, forklift truck, or any other object
that has the ability to carry other entities from one location to another. The Standard Library contains a
Vehicle object and a Worker object, both of which are derived from a Transporter object.
A key feature of Simio is the ability to create a wide range of object behaviors from these six basic
classes. The Simio modeling framework is application domain neutral – i.e., these six basic classes are not
specific to manufacturing, service systems, healthcare, military, etc. However it is easy to build application
focused libraries comprised of intelligent objects from these six classes designed for specific application.
For example it is relatively simple to build an object (in this case a link) that represents a complex accumu-
lating conveyor for use in manufacturing applications. The design philosophy of Simio directs that this
type of domain specific logic belongs in the objects that are built by users, and not programmed into the
core system.
The flexibility provided by this architecture is unprecedented. For example, consider the problem of
modeling multiple cranes on a common runway. This has traditionally been a rather tough application to
model because of the interference between cranes and the wide possibility of interactions. Add movement
in 3 dimensions and acceleration/deceleration to this and it’s a problem that most products solve poorly if
at all. Now consider the new style of underhung cranes that ALSO allow crane cabs to move from bridge
to bridge and even between buildings – a dramatic new level of flexibility, but also modeling complexity.
The Simio transporter object was extended to completely model these new types of cranes entirely in pro-
cess logic WITH NO CODING! Since it is part of the object instead of the Simio engine, users can examine
and even change this logic using graphical processes.
4095
Thiesing and Pegden
events we can completely control the movement of entities across the link. For example, to add accumula-
tion logic to the link we simply write a small process that its triggered when an entity collides with the
entity it is following, and reassigns the speed of the entity to match the speed of the entity that it is following.
The process steps that are used to define the underlying logic for an object are stateless – i.e., they have
properties (input parameters) but no states (output responses). This is important because this means that a
single copy of the process can be held by the object class definition, and shared by an arbitrary number of
object instances. If the process logic is changed, this fact is automatically reflected by all instances of the
object.
4096
Thiesing and Pegden
throughput, maintaining high utilization on a bottleneck, minimizing changeovers, or meeting specified due
dates.
Because of the special requirements imposed by scheduling applications (e.g., the need for specialized
decision rules and the need to view the results in the form of an interactive Gantt chart), simulation-based
scheduling applications have typically employed specialized simulators specifically designed for this ap-
plication area. The problem with this approach is that the specialized simulators have built-in, data-driven
factory models that cannot be altered or changed to fit the application. In many cases this built-in model is
an overly simplified view of the complexities of the production floor. This one model fits all approach
severely limits the range of applications for these tools. Some production processes can be adequately
represented by this fixed model, but many others cannot.
Simio takes a different approach by allowing the factory model to be defined using the full general-
purpose modeling power of the tool. Hence the range of applications is no longer restricted by a fixed built-
in model that cannot be altered or changed between applications. The complexities of the production pro-
cess can be fully captured by the user-built Simio model. This not only includes the logic within each work
center, but also the material handling required to move jobs between work centers.
The specialized requirements for FCS applications are addressed by incorporating features into Simio
to specifically support the needs of FCS. These features include the support for externally defined job data
sets along with very flexible modeling of resources and materials. Although these features are specifically
designed to unleash the full modeling power of Simio for FCS applications, they are also useful in general
modeling applications.
A Simio job data set allows a list of jobs to be externally defined for processing by the simulation
model. The jobs are defined in a data set containing one or more tables, with relations defined between
table columns. The specific schema for holding the job data is arbitrary and can be user defined to match
the data schema for the manufacturing data (e.g., an ERP system). The job data typically includes release
and due date, job routings, setup and processing times, material requirements, as well as other properties
that are relevant to the system of interest.. The objects in Simio can directly reference values specified in
the job data set (e.g., processing time) without knowing the schema that was implemented to store the data.
Any object in Simio can serve as a capacitated resource and can have its own independent behavior.
Resources can be selected from a list based on flexible rules such as minimum changeover time or longest
idle time. Resources also support very flexible rules (earliest due date, least remaining slack, critical ratio,
etc.) for selecting between competing jobs that are waiting to seize the resource. Finally the job usage
history for resources can be displayed on an interactive Gantt chart (Figure 5).
The Materials element in Simio provides direct support to model things that can be consumed and
produced during the execution of the model. Materials can also be defined hierarchically to model a tradi-
tional Bill of Materials (BOM) for manufacturing applications. Hence a manufacturing step can be modeled
as the consumption of a specific list of materials within the hierarchical BOM.
A critical problem with the traditional APS approach is that it requires that all the data be fully known and
deterministic. For example all processing times must be fixed and there can be no unexpected events or
delays. Hence the resulting schedule with APS is by nature optimistic, and is typically very different from
what occurs in the real facility. It is common that what starts off as a feasible schedule turns infeasible over
time as variation and unplanned events degrade performance. It is normal to have large discrepancies be-
tween predicted schedules and actual performance. To protect against delays the scheduler must buffer with
some combination of extra time, inventory, or capacity; all adding cost to the system.
Risk-based Planning and Scheduling (RPS) extends traditional APS to fully account for the variation that
is present in nearly any production system, and provides the necessary information to the scheduler to al-
low the upfront mitigation of risk and uncertainty. Simio provides a family of products that let you
4097
Thiesing and Pegden
leverage your existing investment in planning systems, such as SAP's APO, to finally close the gap be-
tween master planning and detailed production scheduling, thereby driving more revenues and greater
customer satisfaction at reduced cost with existing assets.
Simio's family of RPS products (patent pending) allows for flexible scheduling strategies to support
your key production objectives and lets you quickly reschedule in response to unplanned events. You can
accurately model your complex production processes to capture all critical constraints so that the resulting
schedules reflect the reality of your systems. You can display schedules in a wide range of outputs, includ-
ing interactive Gantt charts that display individual waiting times at critical resources as well the root causes
for non-value added time in the system. Simio products also integrate a 3D animation of your planned
schedule to provide a unique and insightful preview of your facility operations. Simio's RPS solution is
built on the Simio simulation engine and can be flexibly applied across a wide range of industries.
10 SUMMARY
Simio is a new modeling framework based on the core principles of object oriented modeling. It is unique
in the following ways:
The Simio framework is a graphical object-oriented modeling framework as opposed to simply a set of
classes in an object-oriented programming language that are useful for simulation modeling. The
graphical modeling framework of Simio fully supports the core principles of object oriented modeling
without requiring programming skills to add new objects to the system.
Simio supports 3D animation as a natural part of the modeling process. Simio provides a direct inter-
face to Google Warehouse to make it easy to incorporate realistic 3D symbols into your model.
4098
Thiesing and Pegden
The Simio framework is domain neutral, and allows objects to be built that support many different
application areas. The process modeling features in Simio make it possible to create new objects with
complex behavior without programming (no C#, Java or custom language use is required).
The Simio framework supports multiple modeling paradigms. The framework supports the modeling
of both discrete and continuous systems, and supports an event, process, object, systems dynamics, and
agent modeling views.
The Simio framework provides specialized features to directly support applications in emulation and
finite capacity scheduling that fully leverage the general modeling capabilities of Simio.
Risk-based Planning and Scheduling (RPS) extends traditional APS to fully account for the variation
that is present in nearly any production system, and provides the necessary information to the scheduler
to allow the upfront mitigation of risk and uncertainty.
Joines, J. A., S. D. Roberts. 2013. Simulation Modeling with Simio: A Workbook. 3nr ed. Pittsburgh: Simio
LLC
Kelton, W. D., J. S. Smith, and D. T. Sturrock. 2014. Simio and Simulation: Modeling, Analysis, Applica-
tions. 3rd ed. Pittsburgh: Simio LLC
Nygaard, K and O-J Dahl. 1962. “SIMULA -- An Extension of ALGOL to the Description of Discrete-
Event Networks.” Presented at the Second International Conference on Information Processing.
Pegden, C. D. 2015. Process Improvement Principles: A Concise Guide for Managers. 1st ed. Sewickley,
Pennsylvania: Simio LLC
Pegden, C. D., D. T. Sturrock. 2013. Rapid Modeling Solutions: Introduction to Simulation and Simio.
Pittsburgh: Simio LLC
Sturrock, D. T. 2011. Success in Simulation, Ongoing blog and discussion. Accessed July 15.
http://simio.com/blog/about-this-blog/.
AUTHOR BIOGRAPHIES
RENEE M. THIESING is a Senior Application Engineer for Simio LLC. She provides technical support,
consulting services and training to Simio’s global customer base. Renee has taught Simio to both users who
are new to the simulation field and to experts who are ready to create their own custom library objects. She
has provided support to simulation projects in the fields of manufacturing, aerospace, healthcare and supply
chain. Renee is also involved with internal product strategy and software testing.
Renee received her bachelor's degree in industrial engineering from The University of Michigan and her
master’s degree in industrial engineering from Auburn University, with a concentration in discrete event
simulation.
C. DENNIS PEGDEN is the founder and CEO of Simio LLC. He was the founder and CEO of Systems
Modeling Corporation, now part of Rockwell Software, Inc. He has held faculty positions at the University
of Alabama in Huntsville and The Pennsylvania State University. He led in the development of the SLAM,
SIMAN, Arena, and Simio simulation tools. He is the author/co-author of three textbooks in simulation
and has published papers in a number of fields including mathematical programming, queuing, computer
arithmetic, scheduling, and simulation. His email is cdpegden@simio.com. Additional company infor-
mation can be found at www.simio.com.
4099