Vous êtes sur la page 1sur 5

GRAPHICAL OBJECT ORIENTED SIMULATION WITH SIMIO

Patrick Kirchhof, Nicolas G. Meseth


University of Osnabrueck
email: Patrick.Kirchhof@uos.de, Nicolas.Meseth@uos.de

KEYWORDS lack of extensibility (Joines and Roberts 1999; p. 133).


Simio, Object-oriented, Manufacturing
Object-oriented modeling constitutes a compelling alter-
ABSTRACT native, because it is well suited for simulation and in-
troduces many benefits. Although today many vendors
While object orientation has long become a standard in of industrial simulation software claim their system pro-
software development, it has not been fully embraced in vides object-oriented modeling capabilities, this is only
simulation modeling. There are many simulation frame- partly correct. No product known to the authors fully
works which offer object oriented modeling based on a supports an entirely graphical and object-oriented mod-
programming language but no sophisticated graphical eling approach without the need for programming. Most
tool. This paper describes Simio, a new simulation soft- of today’s tools contain a set of generic objects that can
ware, which simplifies model building by fully integrat- be used for model composition. The modeler can cus-
ing an object-oriented modeling approach. Simulation tomize these base objects and enhance their function-
models are built from objects, which are stored in ob- ality by developing code in a programming language.
ject libraries and can be reused in multiple projects. Thus, the use of these tools is very limited unless the
Models themselves can be instantiated as objects in user is capable of programming in the supported lan-
other models. A comprehensive set of standard ob- guage. Well known examples are Extend, which uses
jects is contained in Simio, while more refined ones a procedural language similar to C, or Anylogic, which
can be developed completely graphically, and without integrates with Java (Edwin C. Valentin and Alexander
the need for programming. Following the concept of Verbraeck 2007; p. 788). PlantSimulation (former em-
object-orientation, objects are created through compo- Plant) uses SimTalk, a procedural language designed for
sition of existing objects, sub-classing existing objects, programming simulation applications (Bangsow 2008;
and overriding their behavior, or by building new objects p. 89). Another group of tools such as Simul8 can
from scratch. This paper is to provide a comprehensive be used completely graphically without the necessity of
overview of the Simio simulation software with a focus programming, but is limited to a fixed set of modeling
on its underlying object-oriented paradigm. objects.

This paper’s intention is to give an overview of the


INTRODUCTION
Simio1 simulation software, a new system which fully
supports object-oriented modeling in a purely graphical
Although the roots of object orientation can be traced manner without the need for programming2 . The most
back to simulation (Dahl and Nygaard 1966), the interesting features are pointed out, and it is shown
paradigm is not widely applied in today’s simulation how the modeler benefits from the underlying object-
software (Robinson 2005; p. 624). In the field of sim- orientation. Therefore, the following section explains
ulation of manufacturing systems process-orientation is how object-orientation is applied in Simio. Afterwards,
the predominant modeling paradigm of commercial sim- three different ways to extend Simio’s functionality are
ulation systems. Tools such as Rockwell Arena or En- described. The paper concludes with a summary of the
terprise Dynamics are well known examples belonging most important aspects of the object-oriented modeling
to this category. Process-oriented modeling is consid- approach and its implications for the modeler.
ered intuitive and effective in practice, but there are also
drawbacks. Modularity and reusability are limited and
maintenance is difficult due to the dependencies within
a model. Minor changes to the simulated system can
prove to be very difficult to implement because changes
1 Simio TM is a commercial product of Simio LLC.
have to be made at many different places in the sim- 2 The term programming in this work is defined as typing code
ulation model (Edwin C. Valentin and Alexander Ver- in a programming language such as C# or Java. Creating a pro-
braeck 2005; p. 655). Others argue that the greatest gram by clicking and arranging symbols is not considered pro-
limitation of the procedural modeling paradigm is the gramming in this context.
OBJECT ORIENTATION IN SIMIO ing the event-listener pattern and can evaluate events
fired by other objects. This is useful to control the in-
Simio Object Paradigm teraction between objects.
Building models in Simio is done using the graphical
In Simio, simulation models are built through the com- modeling interface, which divides an object (or model)
position of objects and the definition of their behav- into seven different views. While in the facility win-
ior and interaction. Objects of any complexity can be dow the user composes the model from existing objects,
stored and categorized in libraries. A set of objects with he can specify the resulting object’s appearance in the
basic functionality is contained in the standard library external window. In the process, data, and interface
included in Simio. It comes with a pre-defined set of window, the user defines the object’s behavior. More-
basic objects, which includes a source, sink, server, com- over, the dashboard and results window allow the user
biner, separator, as well as different types of links. These to watch the model’s response during the simulation
basic building blocks suffice to build simple models, but and define and analyze corresponding simulation exper-
in most real life cases they must be extended. iments.
Custom objects are stored in user defined libraries, It should be noted that no programming is required and
which can be shared and reused across multiple projects. that the skills needed to build custom objects via inher-
According to the equivalence principle there is no differ- itance are purely modeling skills and not programming
ence between an object and a model. Every model is by skills (C. Dennis Pegden 2008; p. 231). Object libraries
definition also an object and can thus be instantiated in Simio and template libraries share the same idea of
into another model (C. Dennis Pegden 2008; p. 230). user-defined libraries, but differ with regard to the mod-
This is highly efficient because every model can be hi- eling paradigm they are designed for. How objects can
erarchically used as a building block in a higher level of be defined and customized is explained in greater detail
models. below.
It is important to note the difference between object li-
braries and libraries of process templates known from Object Types
other commercial process-oriented tools such as Arena.
Template libraries in process-oriented simulation tools Any object in Simio is a subclass of either one of the
contain templates and not objects. Templates are hier- types displayed in figure 1. These classes provide basic
archically constructed from basic building blocks, which functionality, which serves as a starting point for the
are a graphical representation of a piece of functionality development of more refined objects. They only define
in a process-oriented simulation language. A typical ex- generic behavior to provide a very general basis for mod-
ample would be a template for a complex workstation, eling individual object definitions. Objects in the stan-
which is made of several building blocks such as resource, dard library are also descendants of one of these basic
queue, delay etc. Therefore templates are not more than types.
the logical organization of elementary constructs of the
underlying simulation or general purpose programming
language into a more abstract logical construct, gener-
ally combined with a visual parametrization interface.
In contrast, objects in Simio are true objects, which in-
herit attributes and behavior from their parent classes,
allow their behavior to be modified (overridden) and ex-
tended, encapsulate their internal structure, and know
abstraction and polymorphism. Objects own process
definitions that specify their behavior and can be viewed
as the equivalent of a method in object-oriented pro-
gramming. Process definitions are built fully graphical
from a comprehensive set of modeling elements called
steps. The processes of any standard library object are
also modeled using steps and can therefore be viewed
and edited.
Objects and therefore models can have properties and
states. A property can be thought of as a named param-
eter of an object instance and is usually constant dur- Figure 1: Class diagram showing the basic object types
ing a simulation run. States are output responses that contained in Simio.
change throughout the execution of the object logic.
An object can define its own set of events and use those Every object is derived from the Intelligent Object class.
events to trigger processes. Objects are designed follow- Intelligent Objects have the optional ability to be seized,
released or follow a schedule. They are abstract and used in a wide variety of application areas (C. Dennis
cannot be instantiated. Pegden 2008; p. 233). Domain specific extensions to
Fixed objects have a fixed location and are used to generic simulation packages provide a modeling aid in a
model stationary things in a system like machines in a certain domain and most vendors offer specialized mod-
manufacturing system, a plant in a supply chain model eling constructs (Edwin C. Valentin and Alexander Ver-
or a counter in an airport. braeck 2005; p. 654). Simio does not include domain
Objects of the Agent class are intended for agent-based specific extensions, but it is easy to develop and share
modeling approaches in which a large number of in- custom objects and libraries. Thus, domain specific li-
dependently acting agents form the system’s behavior. braries can be created from user defined objects and
Agents can move freely through continuous space with- distributed as a project file.
out the need of a specified network of paths. They can The past section has given an overview of how the
detect other objects and react to their actions. In the object-paradigm is applied in Simio. As stated earlier,
current version of Simio, Agents are not yet fully func- in most scenarios the standard library’s objects are not
tional and cannot be used. sufficient. Simio offers a number of ways in which it’s
Entity objects are derived from the Agent type and rep- functionality can be enhanced and they are subject of
resent non-stationary objects that have the ability to the next section.
move along specified paths and nodes. Paths and nodes
can be grouped into networks in order to limit the scope EXTENSIBILITY
of Entities. They can enter and exit other stationary ob-
ject types (Fixed, Node, Link ) and can be transported. The extensibility of a simulation tool is a critical factor
The Transporter class is derived from the Entity class for its acceptance in practice. Simio offers three general
and can therefore also move along a specified network. ways to implement functionality that is not provided
Transporters add the capability to load, carry, and un- by the standard library. The following sections describe
load other objects. By default they follow the shortest those three ways and give examples for each.
path to their destination but other modes of behavior
such as following a fixed route are also regarded. Creating Custom Objects
Node objects are derived from the Fixed object class and
are intended to represent vertices in a network, i.e. the For simple models with little specific logic, the stan-
starting or ending point of a Link object, or the entry or dard library described above is a good start. By nature,
exit points of a Fixed object. At a Node, Entity objects though, simulation models tend to require very specific
may be loaded or unloaded by a Transporter. Nodes can and sometimes complex logic to model real world situ-
be equipped with a crossing logic which can be executed ations. Simio offers a simple way to extend the library
when being visited. without having to write a line of code.
Links represent the edges in a network. Links have a Consider for example the server object from the stan-
length and can be split into sections for their graphical dard library. It has a set of two nodes, one input and
representation. Each Link must have a starting and an one output node, both having their own queue. Imagine
ending point defined by Node objects. this server should have a second output node, because
it should serve two types of customers (entities) sepa-
Projects and Object Libraries rately, and each type should leave the server through a
separate exit. The steps required to implement this are
In Simio, simulation models are part of a Project, which straightforward and do not demand any programming
is saved in a project file and contains all the elements skills.
of the model. A project comprises at least one model. The starting point for creating the new server model
By distributing a single project file, an entire simulation MyServer is the server object from the standard library.
project can be shared between users. By dragging it to the project library, a new object class
Objects modeled in Simio can be reused in other is created as subclass of the server. Subclassing has
projects by loading the respective object into a differ- the benefit that all parts of the parent class are auto-
ent project as a library. The models contained in the matically inherited. Those include all states, properties,
loaded project file appear as a user defined library be- elements, and processes, and only the extended func-
low the standard library and can be used for modeling tionality must be added.
alike. Like models of the standard library they can also To add the second node and to make it visible to the
be extended and sub-classed. Models can be password user, it must be added to the object’s external view.
protected so that they can be parameterized, used, and This can be done by selecting a node from the ribbon bar
distributed, but their inner working is hidden and can- and placing it wherever it should appear. Preferably, it
not be changed. should be next to the existing output node. After adding
Both, the basic objects and the objects in the standard a new node to the external view it must be connected
library described above are domain neutral and can be to the object’s internal logic.
so called elements. Elements are static parts that have Simio offers a powerful application programming inter-
a certain, in most cases general, functionality that they face (API), which allows flexibility that goes beyond cre-
provide the object with. The station element, for exam- ating custom objects.
ple, represents a physical place where entities can reside.
The server from the standard library has three station Customs Elements and Steps
elements to represent the different places an entity can
be within the server. The first station is used to model The first way to programmatically extend Simio is to
the input buffer where all arriving entities wait to be create custom elements and steps. Simio ships with a
processed. The second contains an entity for the time it class library that contains interfaces which can be im-
is processed. After the entity is finished processing, it plemented to define a new element or step. Because
enters the output station, which represents the server’s Simio and its API are based on the .NET framework,
output buffer. If the new output node should have its steps and elements can be programmed in any .NET
own output buffer, a new station in the process view language. Therefore, Simio is not platform independent
must be added and connected to the output node. and can only be used under Windows systems.
Connecting a station to a node in this context means
adding the right steps that send (transfer) an entity from Elements
the station to the node. The right place to add this step To define a custom element one must implement the
in case of the server object is the OnEnteredProcessing IElement interface. It specifies a single method
process. This process takes care of an entity that was Initialize(), which is called at the beginning of a
sent to the processing station and makes it wait in a simulation run. Here the programmer specifies what
delay step until the processing time has elapsed. Af- the element does, and has access to the simulation con-
terwards, the process transfers the entity to the output text via an object which is passed in the method as an
station. Now that MyServer has two output stations, argument. One possible application would be to sched-
the process must be enhanced to decide to which sta- ule events in the event calendar before the simulation
tion to send an entity based on some criteria (e.g. the begins.
value of an entity’s state). This can be done by drag- Elements can be viewed as complex objects that belong
ging in a decide step from the library and setting the to a model. Therby elements can fulfill very different
condition accordingly. The second branch of the decide functionality. The station element, for example, is a
step must now be equipped with a transfer step to send place where entities can sit within a model, and therefore
the entity to the alternative station. represents a physical location. In contrast, the file ele-
Finally, when the entity enters the new station, it ment enables an object to read data from a file, and thus
should immediately be sent to the external output node represents a connector to the outside world of Simio.
through which it leaves the object (if the node has suf- Connectors to different data sources are good examples
ficient capacity left; otherwise the entity waits in the for custom elements. To enable the model to query data
station until the node’s capacity becomes available). from a SQL Server database, the user could implement
Therefore, a process that is triggered whenever an en- a new element and make the connection string config-
tity enters the station must be created. Because the urable as a property of the element.
steps are the same as for the first output buffer, one can
simply copy the OnEnteredOutputBuffer process and re- Steps
name it. Elements are most useful when combined with accord-
To subsume, the necessary steps to extend the server ing steps that in some way reference the element. To
to distinguish two types of entities are the following, of create a new step, the user must implement the IStep
which cam all be done graphically: interface and put the desired functionality in its only
method Execute(). The method is run when the step
1. Create a model MyServer subclassing the server is executed as part of a process. To continue the exam-
model (drag & drop) ple of the SQL server connector, a useful step would be
2. Add a node in the external window (drag & drop) one that executes a SQL query statement against the
connection specified by the connector element.
3. Add a station in the process window (drag & drop) The possibility to define new elements and steps is very
powerful. It enables the modeler not only to extend
4. Add decide and transfer step to OnEnteredProcess- Simio within the tool itself, but to implement logic that
ing (drag & drop) interacts with the outside world. A database connec-
5. Create new process OnEnteredOutputBuffer2 and tor is a good example. Other useful elements could be
add transfer step (drag & drop) ones that query web-services on the internet or retrieve
data from a structured file format such as XML. It is
This simple example was to show how the user can also possible to implement standardized connectors for
extend Simio without any programming. Nonetheless, widely used ERP and PPS systems, such as SAP or Mi-
crosoft Dynamics NAV. fits of the object-oriented paradigm in an entirely graph-
ical manner. Most importantly, Simio allows the mod-
Design Add-Ins eler to easily create custom objects to meet highly spe-
cific requirements with no need for programming, tak-
The second way Simio offers to extend the software pro- ing advantage of inheritance. Nonetheless, the option
gramatically is by writing design add-ins. An add-in to extend Simio programmatically is also available and
is a compiled .NET library (.dll). Add-in libraries are twofold: custom steps and elements (the atomic units of
automatically displayed in the ribbon menu when they functionality) as well as so called design add-ins (appli-
are put in the designated folder, and can be activated cation plug-ins with full access to the software) release
by clicking on the corresponding icon. For Simio to rec- the modeler of any restrictions of what can be modeled.
ognize a valid design add-in, the class must implement Within in the scope of this paper, the author’s tried to
the provided interface IDesignAddIn. A design add-in give an overview of the benefits that derive from true
has a name, description, and a custom icon property, all object-orientation in a simulation tool; possible draw-
of which are set by the programmer. More important, backs such as a potential loss of performance, were not
though, is the interface’s sole method Execute(); this commented on. As Simio is a very novel tool, further
is the method that is invoked when the user activates investigations must be made to fully evaluate the tool
the add-in from the Simio software menu. with more aspects regarded.
Within this method, the programmer has access to the
currently open facility window and its model through REFERENCES
the API provided by the Simio software. The program-
mer is offered methods to add objects to the model and Bangsow S., 2008. Fertigungssimulationen mit Plant
place them by specifying their coordinates, delete ob- Simulation und SimTalk: Anwendung und Program-
jects from the model, and to set the model’s properties. mierung mit Beispielen und Lösungen. Hanser,
Thus, one has the same possibilities as a modeler who München. ISBN 9783446414907.
creates a model using the Simio GUI.
The option to create models programmatically makes C. Dennis Pegden, 2008. Introduction to Simio. In
it possible to dynamically generate models from exter- S.J. Mason (Ed.), 2008 Winter Simuation Confer-
nal data sources. The data-driven simulation approach, ence: Miami, Florida, USA, December 7 - 10, 2008.
where information about objects in the model is re- IEEE, Piscataway, NJ. ISBN 978-1-4244-2708-6, 229–
trieved from different applications that already host this 235.
information, can thus be implemented with Simio. A Dahl O.J. and Nygaard K., 1966. SIMULA - an
good example is to automatically read the bill of mate- ALGOL-Based Simulation Language. Communica-
rials from an ERP system instead of inserting it manu- tions of the ACM, 9, no. 9, 671–678.
ally.
Another application for custom design add-ins is to load Edwin C. Valentin and Alexander Verbraeck, 2005. Re-
models stored in a different file format. For this purpose, quirements for domain specific discrete event simula-
the add-in fulfills the task of translating the foreign for- tion environments. In M.E. Kuhl (Ed.), Proceedings
mat into a Simio model. This way, models from other of the 2005 Winter Simulation Conference: Orlando,
simulation tools such as Arena could be transformed into Florida, USA, December 4 - 7, 2005. IEEE, Orlando,
a Simio model automatically. For companies using other Fl. ISBN 0-7803-9520-4, 654–663.
tools, who would like to migrate to Simio, but do not
want to re-implement their existing models, this could Edwin C. Valentin and Alexander Verbraeck, 2007. Do-
be an option. main specific model constructs in commercial simu-
As described in this section, Simio offers three different lation environments. In S.G. Henderson (Ed.), Pro-
levels to achieve extensibility. Thereby, creating custom ceedings of the 2007 Winter Simulation Conference:
library objects is even possible for non-programmers. Washington, DC, USA, December 9 - 12, 2007,.
This is an enhancement that could widen the range of IEEE, New York, NY. ISBN 1-424-41306-0, 785–792.
users that can successfully apply simulation. In most Joines J.A. and Roberts S.D., 1999. Simulation in an
cases, the driver of a simulation study is one who un- object-oriented world. In P.A. Farrington; H.B. Nem-
derstands the business processes, but is not familiar with bhard; D.T. Sturrock; and G.W. Evans (Eds.), Pro-
programming. Simio has the potential to close this gap. ceedings of the 1999 Winter Simulation Conference.
Winter Simulation Conference.
CONCLUSION
Robinson S., 2005. Discrete-event simulation: from the
This paper has introduced the new object-oriented sim- pioneers to the present, what next? Journal of the
ulation software Simio. Simio is the first truly object- Operational Research Society, 56, no. 6, 619–629.
oriented simulation software, which embraces all bene-

Vous aimerez peut-être aussi