Skip to main content
Log in

Ururau: a free and open-source discrete event simulation software

  • Published:
Journal of Simulation

Abstract

This paper has the purpose of describing the architecture and operation of Ururau, a software used to create discrete event simulation models based on the Java Simulation Library. Ururau is a free and open-source multiplatform software, which allows the user to develop models in the graphical interface or implement them directly in the source code. This characteristic allows the user to employ it as a tool for modeling and simulation of discrete event systems and also as a learning tool. Thus, an experienced modeler can add specific algorithms to simulation models or new features to the simulator. Also, with access to the source code, a beginner modeler can understand the internal structure of a discrete event simulation software. Initial results have demonstrated this new software’s ability in building small and simple models efficiently.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Figure 12
Figure 13
Figure 14
Figure 15
Figure 16
Figure 17
Figure 18

Similar content being viewed by others

References

  • Dagkakis G and Heavey C (2016). A review of open source discrete event simulation software for operations research. Journal of Simulation 10: 193–206. doi:10.1057/jos.2015.9.13.

  • Dagkakis G, Papagiannopoulos I and Heavey C (2015). ManPy: An open‐source software tool for building discrete event simulation models of manufacturing systems. Software: Practice and Experience. doi:10.1002/spe.2347.

    Google Scholar 

  • Goldsman DA, Nance RE and Wilson JR (2010) A brief history of simulation revisited. In Johansson B, Jain S, Montoya-Torres J, Hugan J and Yücesan E (Eds) Proceedings of the 2010 Winter Simulation Conference. Institute of Electrical and Electronic Engineers, Inc: Piscataway, NJ, pp 567–574.

  • Heavey C, Dagkakis G, Barlas P, Papagiannopoulos I, Robin S, Mariani M and Perrin J (2014). Development of an open-source discrete event simulation cloud enabled platform. In Tolk A, Diallo SY, Ryzhov IO, Yilmaz L, Buckley S, and Miller JA (Eds) Proceedings of the 2014 Winter Simulation Conference. Institute of Electrical and Electronic Engineers, Inc: Piscataway, NJ, pp 2824–2835.

  • Henriksen JO and Crain RC (2000). GPSS/H: A 23-Year Retrospective View. In Joines JA, Barton RR, Kang K, and Fishwick PA (Eds) Proceedings of the 2000 Winter Simulation Conference. Institute of Electrical and Electronic Engineers, Inc.: Piscataway, NJ, pp 177–182.

  • King D and Harrison H (2010). Discrete-event simulation in Java: A practitioner’s experience. In Proceedings of the 2010 Conference on Grand Challenges in Modeling & Simulation, Society for Modeling & Simulation: International Vista, CA, pp 436–441.

    Google Scholar 

  • King DH and Harrison HS (2013). Open-source simulation software “JAAMSIM”. In Pasupathy R, Kim S-H, Tolk A, Hill R, and Kuhl ME (Eds) Proceedings of the 2013 Winter Simulation Conference. Institute of Electrical and Electronic Engineers, Inc.: Piscataway, NJ, pp 2824–2835.

  • Lang NA, Jacobs PH and Verbraeck A (2003). Distributed open simulation model development with DSOL services. In Proceedings of the 15th European Simulation Symposium, pp 210–218.

  • Law AM (2007). Simulation Modeling and Analysis. 4th edn, McGraw-Hill: New York.

  • Montevechi JAB, Leal F, Pinho AF, Costa RFS, Oliveira MLM and Silva ALF (2010). Conceptual modeling in simulation projects by mean adapted IDEF: An application in a Brazilian tech company. In Johansson B, Jain S, Montoya-Torres J, Hugan J, and Yücesan E (Eds) Proceedings of the 2010 Conference on Winter Simulation. Institute of Electrical and Electronics Engineers, Inc.: Piscataway, NJ, pp 1624–1635.

  • Muller K and Vignaux T (2003). SimPy: Simulating systems in Python. ONLamp.com Python Devcenter. http://www.onlamp.com/python/, accessed 22 July 2014.

  • Peixoto T M, Rangel JJA and Matias IO (2014). Free and open-source simulation software Ururau. In Tolk A, Diallo SD, Ryzhov IO, Yilmaz L, Buckley S, and Miller JA (Eds) Proceedings of the 2014 Winter Simulation Conference. Institute of Electrical and Electronics Engineers, Inc.: Piscataway, NJ, pp 4097– 4098.

  • Rangel JJ and Cordeiro ACA (2015). Free and Open-Source Software for sustainable analysis in logistics systems design. Journal of Simulation 9(1): 27–42.

    Article  Google Scholar 

  • Rangel JJA, Oliveira GL, Peixoto TA, Cardoso LD, Matias IO and Shimoda E (2013). Simulation model in a free and open-source software for carbon monoxide emissions analysis. In Pasupathy R, Kim S-H, Tolk A, Hill R, and Kuhl ME (Eds) Proceedings of the 2013 Winter Simulation Conference. Institute of Electrical and Electronics Engineers, Inc: Piscataway, NJ.

  • Robinson S (2008). Conceptual modelling for simulation Part I: definition and requirements. Journal of the Operational Research Society 59(1): 278–290.

    Article  Google Scholar 

  • Rossetti MD (2008). Java Simulation Library (JSL): An open-source object-oriented library for discrete-event simulation in Java. International Journal of Simulation and Process Modeling 4(1): 69–87.

    Article  Google Scholar 

  • Sargent RG (2013) Verification and validation of simulation models. Journal of Simulation 7(1): 12–24.

    Article  Google Scholar 

  • Smith JS and Cho Y (2008). Offline commissioning of a PLC-based control system using Arena. In Mason SJ, Hill RR, Mönch L, Rose O, Jefferson T, Fowler JW (Eds) Proceedings of the 2008 Winter Simulation Conference. Institute of Electrical and Electronics Engineers, Inc: Piscataway, NJ, pp 1802–1810.

  • Swain JJ (2007). Discrete event simulation software: New frontiers in simulation. OR/MS Today - INFORMS 34(5): 32–43.

    Google Scholar 

  • Vita V and Christodoulou CA (2016). Comparison of ANN and finite element analysis simulation software for the calculation of the electric field around metal oxide surge arresters. Electric Power Systems Research 133: 87–92.

    Article  Google Scholar 

Download references

Acknowledgments

The authors thank the Coordination for the Improvement of Higher Education Personnel (CAPES), the National Council for Scientific and Technological Development (CNPq), and the Research Foundation of the State of Rio de Janeiro (FAPERJ) for financial support for this research. The authors also thank Maria Marta Garcia and Tatiane Stellet Machado for their assistance in translating the paper into English.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to João José de Assis Rangel.

Appendices

Appendix I: How to get Ururau

The researchers of Ururau use the controller of versions for FOSS named Bitbucket. Bitbucket is a site for collaborative development, that is, it allows multiple developers to work on the same source code. Thus, the developer, interested in cooperating, registers himself/herself, and the project manager allows the developer to submit the code changes to the site. However, anyone has access to the code; there is no need to register. The process consists of installing the Mercurial (https://mercurial.selenic.com) making the command "hg clone https://bitbucket.org/ururau/ururau". Then, for the development and use of Ururau software, the user goes freely to http://ururau.ucam-campos.br. After downloading the zip file, he/she unzips it into a directory and runs ururau.jar. It is important to highlight that the Environment Java Runtime (JRE) version 6.0 or higher, which can be obtained in http://java.com/getjava, must be installed on the computer.

To build the model, using the source code, it is required a development environment – Integrated Development Environment (IDE), preferably NetBeans 8.0, which can be obtained in http://www.netbeans.org.

The environment of Ururau is internally composed of one or more process commands, which extends functionalities of the JSL. The README.TXT file, which presents an explanation on how to operate each command can also be downloaded at the same address in the software.

Appendix II: Modules and commands of Ururau

Next, it can be observed all modules existent in the version 1.0 and some process commands of the JSL. All commands come from a module; however, not all module is a command. There are only modules in the GUI of Ururau. Nevertheless, in the lower layers of the software, the process commands can be accessed.

2.1 Entity generator

EntityProcessGenerator (entity generator – Create) is not necessarily a ProcessCommand. This class comes before all other commands in the process of model building. It is responsible for generating entities. The entity is marked as visible (by an attribute), and the nesting level (nesting attribute) is used for the Batch and Separate commands. An entity that is invisible is not processed by any command, that is, it is ignored.

2.2 Batch

This module makes a specific number of entities enter into a queue and is transformed into one entity. The batch may be temporary, i.e., it can be subsequently undone by a command that separates batches (Separate) or may be permanent. The operation of this module is as follows: the entities that pass through this module are marked as invisible but the ninth entity; for example, if the batch is of 10, then, nine are invisible and one visible. It also goes up one level of nesting, because there can be a batch subsequent to other one.

2.3 Hold

This module holds the entities in a queue until a condition is met.

2.4 Separate

This module releases a temporary batch performed by the Batch command. The command decreases the nesting level and makes it visible.

2.5 Seize

This module and command holds one or more entities for processing. For each entity that passes through the Seize command, one or more resources are occupied, depending on the amount of resources required. One entity may be stuck, while two or more resources remain “working” in this entity if the requested amount exceeds one. The entities that cannot be met enter the queue until the resource is released.

2.6 Release (local)

This module and command releases the requested resource for the entity. Just point which resource and which queue in order that the resource used by the current entity is released.

2.7 Delay (function)

It is the time that an entity takes to processing. It receives an expression that is a probability distribution. Delay is a module and command.

2.8 Process (function)

This command aggregates, in a single command, and commands Seize, Delay, and Release.

2.9 Terminate

This command ends the list of commands. The visible entities are accounted at this point.

2.10 JumpTo

It diverts the processing of commands to another command. An index is passed, which symbolizes the position where the command is.

2.11 Decide (X – decisor)

Along with JumpTo, it diverts the execution of commands depending on a condition. There are three types of decision: by chance, by condition, and by ANN. If it is by chance, the deviation happens when it is defined that the JumpTo has x% chance of occurring to a position previously specified, if not, the process goes to the command with the false branch. If the type of the Decide is by condition, then the JumpTo diverts the flow if the specified logical expression is true. If this expression is false, the flow of entities follows the false branch. Being the kind of the Decide by ANN, the JumpTo diverts the flow by means of the examples given to the net in the training.

2.12 AddAtribute

This command adds an attribute within the current entity. The attribute value is a real number, which is the result of the evaluation of an expression specified in the command.

2.13 AddVariable

This command adds a variable in the model. The value of the variable is a real heat, which is the result of the evaluation of an expression specified in the command.

2.14 Record

This module serves as a counter or measures the time interval depending on an attribute (previously defined) with the value of the current simulation time.

2.15 Write

This module is used to write data, such as time of arrival or another variable, to .txt file.

2.16 Emissions

This module allows calculating the emissions of CO in systems that involve the vehicle movement.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Peixoto, T.A., de Assis Rangel, J.J., de Oliveira Matias, Í. et al. Ururau: a free and open-source discrete event simulation software. J Simulation 11, 303–321 (2017). https://doi.org/10.1057/s41273-016-0038-5

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1057/s41273-016-0038-5

Keywords

Navigation