tag:blogger.com,1999:blog-49197391489720318612024-03-21T08:58:26.200-07:00JaamSim BlogThoughts about JaamSim and JaamSim Pro discrete event simulation softwareHarry Kinghttp://www.blogger.com/profile/04571445530447771344noreply@blogger.comBlogger16125tag:blogger.com,1999:blog-4919739148972031861.post-5077025336482616452023-01-10T18:10:00.000-08:002023-01-10T18:10:18.014-08:00 JaamSim Downloads reach 76,000<p>As of the end of 2022, the number JaamSim downloads totaled 76,146 since the beginning of 2016 when we began to collect statistics. More than 16,000 copies were downloaded during 2022 alone. The following graph shows a steady increase in the annual numbers with only a slight dip during the years of 2019 and 2020. The trend seen during the earlier years has been resumed during the last two years.</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEii-9PUwpBmCDeR5y_OM5T_dFAAP-_rLZKi4_rwi6MV-ZD9WPQ3wpVp1RAJdDEfGeF0EhrKrrzsMDPftRTHn5UlJvAPiS4M-qebAE5zO_oleEraDOF0JusSLowEzc9FnsDhgdf6b7N47iGFsNWK0pqprW4gcKrlREC_0T-zqLns4JI-V1z6ovGWxyGMVQ" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="618" data-original-width="840" height="294" src="https://blogger.googleusercontent.com/img/a/AVvXsEii-9PUwpBmCDeR5y_OM5T_dFAAP-_rLZKi4_rwi6MV-ZD9WPQ3wpVp1RAJdDEfGeF0EhrKrrzsMDPftRTHn5UlJvAPiS4M-qebAE5zO_oleEraDOF0JusSLowEzc9FnsDhgdf6b7N47iGFsNWK0pqprW4gcKrlREC_0T-zqLns4JI-V1z6ovGWxyGMVQ=w400-h294" width="400" /></a></div><br />Since we issue multiple releases each year, one might wonder if these numbers of downloads represent a smaller number of people making multiple downloads, one for each new release. If this were the case, we would see the average number of downloads per week decrease with the length of time that the release was current, i.e. before the next release was made. This has not been the case. The following graphs shows the number of downloads for the seven releases made during 2022 plotted against the time during which the release was current. Clearly there is no fall-off in the number of downloads per week for the releases that were current for longer periods of time. To illustrate this point, note that approximately 6,000 downloads were made for a single release (2022-06) over a 123 day period and that this rate of downloads was very similar to the rates for four other releases each with a period of 36 - 44 days.<p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiwIG7KsPKKTdKo-SMv8j-sP-KLt2ucSiy7RwD0ubwQQwJFW_E2HcsH41jGieSDFs6u3TI1_JzabhKMCQd-H6Z-8XugqagjXPgymfHyucO-wGSzJ7Fdj9bOIMDmkcI5Qw-ix7NDVhT8n93i4WgMp7Mp_2ZOHdTzjM57oYkV-BYOkIPip-AZPyabKKLxzA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="591" data-original-width="858" height="275" src="https://blogger.googleusercontent.com/img/a/AVvXsEiwIG7KsPKKTdKo-SMv8j-sP-KLt2ucSiy7RwD0ubwQQwJFW_E2HcsH41jGieSDFs6u3TI1_JzabhKMCQd-H6Z-8XugqagjXPgymfHyucO-wGSzJ7Fdj9bOIMDmkcI5Qw-ix7NDVhT8n93i4WgMp7Mp_2ZOHdTzjM57oYkV-BYOkIPip-AZPyabKKLxzA=w400-h275" width="400" /></a></div><br />This analysis suggests that most JaamSim users have downloaded a single release and have continued to use it unless they have needed a bug fix or new feature that has become available in a newer release.<p></p><p>In other words, we can conclude that a large fraction of the 76,000 downloads represent new users of JaamSim, and that the number of JaamSim users is increasing rapidly each year. </p>Harry Kinghttp://www.blogger.com/profile/04571445530447771344noreply@blogger.com0tag:blogger.com,1999:blog-4919739148972031861.post-17951912054957855642022-12-04T21:32:00.000-08:002022-12-04T21:32:10.315-08:00Introducing JaamSim Pro<p>JaamSim Software Inc. is pleased to announce a new commercial software product 'JaamSim Pro' that extends the open-source JaamSim by adding libraries of objects for vehicle motion and material flow. It is targeted at the mining and oil & gas industries and the consultants that build models for these companies. These complex models include everything from the production and processing of one or more materials through various transportation modes and storage locations through to the end user. They often have hundred or even thousands of active components.</p><p>The following model prepared by Hypercube Scientific (<a href="https://www.hypercubescientific.com.au/" target="_blank">hypercubescientific.com.au</a>) is a good example of an end-to-end model for a hypothetical mining company:</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="314" src="https://www.youtube.com/embed/A8mhfmyA-Vs" width="479" youtube-src-id="A8mhfmyA-Vs"></iframe></div><br /><p>What makes JaamSim Pro special is that these models can be constructed in much less time and that they execute many times faster than the models built with other software. For example, the model shown above executes one year of simulated time in about 30 minutes on a typical computer. With other software a simulation run can require 2 or more hours of execution time.</p><p>JaamSim Pro executes so much faster than other simulation software because it simulates material flow and vehicle motion using next-event logic instead of the fixed time steps used by other software. Next-event logic is more difficult for our programmers to implement, but the increase in execution speed is enormous. It also avoids the problems of accumulated round-off error and makes it unnecessary for the model builder to choose the size of the time steps.</p><p>The JaamSim Pro website <a href="https://www.jaamsimpro.com/" target="_blank">(jaamsimpro.com)</a> provides a series of videos that show the types of models that can be constructed.</p><p>Lastly, please note that the free open source JaamSim can still be used for both academic and commercial purposes. Its Apache 2.0 license is one of the most permissive licenses for open source software. JaamSim Pro is only required if its libraries of material flow and vehicle motion objects are needed for a model. Any new features that are not related to these two libraries will be included in the open source JaamSim.</p><p><br /></p>Harry Kinghttp://www.blogger.com/profile/04571445530447771344noreply@blogger.com0tag:blogger.com,1999:blog-4919739148972031861.post-56592181924363426702022-01-31T13:00:00.014-08:002024-02-17T16:18:58.419-08:00Articles on JaamSim<p>The last few years have seen an increase in the number of scholarly articles regarding JaamSim. One article in particular caught our eye. In its review of open source simulation software for production and logistics, Lang et al. (2021) concluded that:</p><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><i>"JaamSim provides everything which is necessary to model typical planning tasks in production and logistics and proves as a real alternative to commercial discrete-event simulation tools."</i></blockquote><p>Of course, this observation was not news to us, but it was nice to see it recognized independently!</p><p>In an earlier article that reviewed a large number of open source simulation packages, Dagkakis and Heavey (2015) noted that:</p><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><i>"Out of all the OS DES projects we reviewed, JaamSim is the one with the most impressive 3d user interface that can compete against COTS [commercial off the shelf] DES software."</i></blockquote><i><br /></i><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><i>"The fact that a non-expert user can just download and test the software in a few minutes is something </i><i>that is a scarce attribute in OS projects and especially in the DES domain."</i></blockquote><i><br /></i><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><i>"It is the only tool we found that is clearly industry driven."</i></blockquote><div><br />These two articles and many more that are relevant to JaamSim are listed below:</div><div><br /></div><div><div>Duin, H.; Neu, W.; Schüning, T.; Eschment, L.; Nobel, T.; Wurst, S. (2023): The planning of hyperloop-based cargo tubes routes for sustainable logistic solutions, <i>ICPLT 2023: Advances in Resilient and Sustainable Transport, </i>306-320, doi: 10.1007/978-3-031-28236-2_19</div></div><div><br /></div><div>Ruane, P.; Walsh, P.; Cosgrove, J. (2022): Development of a digital model and metamodel to improve the performance of an automated manufacturing line, <i>Journal of Manufacturing Systems</i>, Vol. 65, 538-549, doi: 10.1016/j.jmsy.2022.10.011</div><div><br /></div><div><div>Kristiansen, O. S., Sandberg, U., Hansen, C., Jensen, M. S., Friederich, J., & Lazarova-Molnar, S. (2022). Experimental Comparison of Open Source Discrete-Event Simulation Frameworks. In D. Jiang, & H. Song (Eds.), Simulation Tools and Techniques: 13th EAI International Conference, SIMUtools 2021, Virtual Event, November 5-6, 2021, Proceedings (pp. 315-330). Springer. doi: 10.1007/978-3-030-97124-3_24</div><div><br /></div><div>Lang, S.; Reggelin, T.; Müller, M.; Nahhas, A. (2021): Open-source discrete-event simulation software for applications in production and logistics: An alternative to commercial tools?, <i>Procedia Computer Science</i>, Vol. 180, 978-987, doi:10.1016/j.procs.2021.01.349<div><br /><div> Possik, J.; Zouggar-Amrani, A.; Vallespir, B.; Zacharewicz, G. (2021): Lean techniques impact evaluation methodology based on a co-simulation framework for manufacturing systems, <i>International Journal of Computer Integrated Manufacturing</i>, doi:10.1080/0951192X.2021.1972468</div><div><br /></div><div>Gorecki, S.; Possik, J.; Zacharewicz, G.; Ducq, Y.; Perry, N. (2021): Business models for distributed-simulation orchestration and risk management, <i>Information</i>, Vol. 12, No. 71, doi:10.3390/info12020071 <br /><br />Ochs, J.; Biermann, F.; Piotrowski, T.; Erkens, F.; Nießing, B.; Herbst, L.; König, N.; Schmitt, R.H. (2021): Fully automated cultivation of adipose-derived stem cells in the StemCellDiscovery—a robotic laboratory for small-scale, high-throughput cell production including deep learning-based confluence estimation, <i>Processes</i>, Vol. 9, 575, doi:10.3390/pr9040575</div><div><br /></div><div>Amarantou,V.; Chatzoudes, D.; Angelidis, V.; Xanthopoulos, A.; Chatzoglou, P. (2021): Improving the operations of an emergency department (ED) using a combined approach of simulation and analytical hierarchical process (AHP), <i>Journal of Simulation</i>, doi:10.1080/17477778.2021.1981784 <br /><br />Xanthopoulos, A. S.; Koulouriotis, D. E. (2021): A comparative study of different pull control strategies in multi-product manufacturing systems using discrete event simulation, <i>Advances in Production Engineering & Management</i>, Vol. 16, No. 4, 473-484, doi:10.14743/apem2021.4.414</div><div><br /></div><div>Kumar, A.; Sharma, K.; Singh, H.; Naugriya, S. G. ; Gill, S. S.; Buyya, R. (2021): A drone-based networked system and methods for combating coronavirus disease (COVID-19) pandemic, <i>Future Generation Computer Systems</i>, Vol. 115, 1-19, doi:10.1016/j.future.2020.08.046</div><div><br /></div>Kumar, A.; Krishnamurthi, R.; Nayyar, A.; Luhach, A. K.; Khan, M. S.; Singh, A. (2021): A novel software-defined drone network (SDDN)-based collision avoidance strategies for on-road traffic monitoring and management, <i>Vehicular Communications</i>, Vol. 28, doi:10.1016/j.vehcom.2020.100313<div><br /></div><div>Izquierdo, F.; Garcia, E.; Cortez, B.; Escobar, L. (2021): Flexible manufacturing systems optimization with meta-heuristic algorithm using open source software, <i>Recent Advances in Electrical Engineering, Electronics and Energy</i>, Vol. 763, doi:10.1007/978-3-030-72212-8_18</div><div><br /></div><div>Larsson, R. (2021), Development and application of a tool for assessing the impact of failure modes on performance of underground drill rigs, Dissertation, Örebro University, Sweden <br /><br />Gorecki, S.; Possik, J.; Zacharewicz, G.; Ducq, Y.; and Perry, N. (2020): A multicomponent distributed framework for smart production system modeling and simulation, <i>Sustainability</i>, Vol. 12, No. 17, 6969; doi:10.3390/su12176969 <br /><br />Kumar, A.; Srikanth, P.; Nayyar, A.; Sharma, G.; Pulipeti, S.; Krishnamurthi, R.; Alazab, M. (2020): A novel simulated-annealing based electric bus system design, simulation, and analysis for Dehradun smart city, <i>IEEE Access</i>, doi:10.1109/ACCESS.2020.2990190</div><div><br /></div>Kumar, A.; Krishnamurthi, R.; Nayyar, A.; Sharma, K.; Grover, V.; Hossain, E. (2020): A novel smart healthcare design, simulation, and implementation using healthcare 4.0 processes, <i>IEEE Access</i>, Vol. 8, 118433-118471, doi:10.1109/ACCESS.2020.3004790</div><div><br /></div><div>Kumar, A.; Sharma, D. K.; Nayyar, A.; Singh, S.; Yoon, B. (2020): Lightweight proof of game (LPoG): a proof of work (PoW)’s extended lightweight consensus algorithm for wearable kidneys, <i>Sensors</i>, Vol. 20, 2868, doi:10.3390/s20102868<br /><div><br /></div><div>Kim, S.; Chepenik, L. G. (2020): Use of computer modeling to streamline care in a psychiatric emergency room: a case report, <i>Psychiatric Services</i>, Vol. 71, 92–95, doi:10.1176/appi.ps.201900040</div><div><br /></div><div>Kloock-Schreiber, D.; Siqueira, R.; Gembarski, P. C.; Lachmayer, R. (2020): Discrete-event simulation for specification design of products in product-service systems, <i>Proceedings of the Design Society: DESIGN Conference</i>, Vol. 1, 255-264, doi:10.1017/dsd.2020.295<br /><br />Kiss, T.; DesLauriers, J.; Gesmier, G.; Terstyanszky, G.; Pierantoni, G.; Abu Oun, O.; Taylor, S. J. E.; Anagnostou, A.; Kovacs, J.; (2019): A cloud-agnostic queuing system to support the implementation of deadline-based application execution policies, <i>Future Generation Computer Systems</i>, Vol. 101, 99-111, doi:10.1016/j.future.2019.05.062<br /><br />Zeng, W.; Baafi, E.; Walker, D. (2019): A simulation model to study bunching effect of a truck-shovel system, <i>International Journal of Mining, Reclamation and Environment</i>, Vol. 33, No. 2, 102-117, doi:10.1080/17480930.2017.1348284 <br /><br />Katsios, D.; Xanthopoulos, A. S.; Koulouriotis, D. E.; Kiatipis, A. (2018): A simulation optimisation tool and its production/inventory control application, <i>International Journal of Simulation Modelling</i>, Vol. 17, No. 2, 257-270, doi:10.2507/IJSIMM17(2)425 <br /><br />Ghafghazi, S.; Lochhead, K.; Mathey, A.; Forsell, N.; Leduc, S.; Mabee, W.; Gary Bull, G. (2017) Estimating mill residue surplus in Canada: a spatial forest fiber cascade modeling approach, <i>Forest Products Journal</i>, vol. 67, 205, doi:10.13073/FPJ-D-16-00031 <br /><br />Li, X.; Li, Z.; Wu, G. (2017): Lean precast production system based on the CONWIP method, KSCE Journal of Civil Engineering, doi:10.1007/s12205-017-2009-4</div><div><br /></div><div>Abas, Z. A.; Ee-Theng, L.; Rahman, A. F. N. A.; Abidin, Z. Z.; Shibghatullah, A. S. (2015): Enhanced scheduling traffic light model using discrete event simulation for improved signal timing analysis, <i>ARPN Journal of Engineering and Applied Sciences</i>, Vol. 10, No. 18<br /><br />Dagkakis, G.; Heavey, C. (2015): A review of open source discrete event simulation software for operations research, <i>Journal of Simulation</i>, Vol. 10, No. 3, doi:10.1057/jos.2015.9 <br /><br />Sterling, T.; Kogler, D.; Anderson, M.; Brodowicz, M. (2014): SLOWER: A performance model for Exascale computing, <i>Supercomputing Frontiers and Innovations</i>, Vol. 1, No. 2, 42-57, doi:10.14529/jsfi140203 <br /><br />King, D. H.; Harrison, H. S.; Chudleigh, M. (2014): “JaamSim” described in three simple examples, <i>Proceedings of the Operational Research Society Simulation Workshop 2014 (SW14) </i><br /><br />King, D. H.; Harrison, H. S. (2013). JaamSim open-source simulation software, <i>Proceedings of the 2013 Grand Challenges on Modeling and Simulation Conference</i>, doi:10.5555/2557668.2557669<br /><br />King, D. H.; Harrison, H. S. (2013): Open-source simulation software “JaamSim”, <i>2013 Winter Simulations Conference (WSC)</i>, 2163-2171, doi:10.1109/WSC.2013.6721593<br /></div></div></div></div><div><br /></div>King, D. H.; Harrison, H. S. (2010): Discrete-event simulation in Java: a practitioner's experience, <i>Proceedings of the 2010 Conference on Grand Challenges in Modeling & Simulation (GCMS '10)</i>, Society for Modeling & Simulation International, 436 – 441, doi:10.5555/2020619.2020678Harry Kinghttp://www.blogger.com/profile/04571445530447771344noreply@blogger.com0tag:blogger.com,1999:blog-4919739148972031861.post-64160884229372389892022-01-29T12:16:00.010-08:002022-12-04T20:36:48.732-08:00Teaching Simulation using JaamSimOver the years we have tried to keep track of all the universities and colleges that use JaamSim for their courses in discrete event simulation. Typically, we ask the instructor to provide details about the course in the form of a post to the JaamSim forum under the topic "Teaching Simulation using JaamSim" (<a href="https://groups.google.com/g/jaamsim-users/c/vRImCR4BD-E" target="_blank">link</a>). Some instructors have generously shared their course notes to make it easier for others to use JaamSim in their courses.<br /><br />Included in the post are the following institutions:<div><ul style="text-align: left;"><li>Rutgers University, USA</li><li>The Wharton School, University of Pennsylvania, USA</li><li>United States Naval Academy, USA</li><li>Karlstad University, Sweden</li><li>University of Zaragoza, Spain</li><li>Swiss Distance University of Applied Sciences, Switzerland</li><li>Maastricht University, The Netherlands</li><li>University of Antwerp, Belgium</li><li>Albstadt-Sigmaringen University, Germany</li><li>Derby College, UK</li><li>Conestoga College, Canada</li><li>Capilano University, Canada</li><li>University of Auckland, New Zealand</li><li>Universidad del Valle de Guatemala, Guatemala</li><li>Universidad de San Carlos de Guatemala, Guatemala</li><li>Universidad EAFIT, Colombia</li><li>Universidade Tecnológica Federal do Paraná, Brazil</li><li>Universidade Federal de Ouro Preto, Brazil</li><li>Universidade Federal Rural do Semi-Árido, Brazil</li><li>Universidade Federal de São João del-Rei, Brazil</li></ul></div><div><div>More information about these courses and names of the instructors can be found by clicking on the link to the forum post given above or by searching for this topic in the JaamSim forum.</div><div><br />With 12,000 downloads of the software per year, we expect that JaamSim is being used at many more institutions than the ones listed above. If you would like to add your university or college to this list, please post the requested information about your course under this topic in the JaamSim forum.</div></div>Harry Kinghttp://www.blogger.com/profile/04571445530447771344noreply@blogger.com0tag:blogger.com,1999:blog-4919739148972031861.post-75840815304975428672021-12-19T08:19:00.000-08:002021-12-19T08:19:52.286-08:00Optimum Number of Threads<div>The latest release of JaamSim (2021-06) has the ability to execute multiple simulation runs in parallel on a multi-core computer. The number of parallel runs is specified by the 'NumberOfThreads' input for the Simulation object. Although there is no upper limit on this input, specifying too many threads will result in excess context switching which reduces execution speed. So, how does one choose the best value for this input and how much faster will a set of simulation runs be completed?</div><div><br /></div><div>The 'Run Progress' pop-up, which appears when the runs are started, provides a way to answer these questions.</div><div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh5Phu__Rzitjn4UgZdelkfhqTcIn4kqR71WJPEBUu7ld-UKoX6DLQ10jJcAav339PPzqCv0Lak_oonc_sD_smA-ML1K_UcbARJwfiag-6tCsDfleMThujyPqZKLG47pWrhp3Ul1GeVRhHnC62OR8DSA2tfr18Q128khw1K62J8yTc01G8DaDDP8NR5cg=s443" style="display: inline; padding: 1em 0px;"><img alt="" border="0" data-original-height="186" data-original-width="443" src="https://blogger.googleusercontent.com/img/a/AVvXsEh5Phu__Rzitjn4UgZdelkfhqTcIn4kqR71WJPEBUu7ld-UKoX6DLQ10jJcAav339PPzqCv0Lak_oonc_sD_smA-ML1K_UcbARJwfiag-6tCsDfleMThujyPqZKLG47pWrhp3Ul1GeVRhHnC62OR8DSA2tfr18Q128khw1K62J8yTc01G8DaDDP8NR5cg=s320" width="320" /></a></div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">In addition to showing the scenarios and replications that being executed on each thread, the number in red at the bottom left corner shows the estimated rate at which simulation runs are being completed. This value is updated every 5 seconds based on the amount of progress made since the previous update. The optimum number of threads is the one that generates the greatest number of runs executed per hour.</div></div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">The only way to be sure that the right number of thread has been chosen is to experiment with the NumberOfThreads inputs for the model in question. In most cases, however, the optimum number will be the same for all models and determined by the type of CPU installed in the computer. The following analysis was performed for two computers: a laptop computer and a desktop computer, both with Intel i7 processors that have four cores and hyper-threading. Potentially, these processors could provide up to eight threads (4 cores x 2 for hyper-threading).</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">The model used for the analysis was the 'Factory Example' model, which can be found by clicking Help > Examples > Factory Model. After setting the 'RunDuration' input to 30 years and turning 'Real Time' model off, the model was executed for a series of runs with various inputs for NumberOfThreads. Before taking any measurements, the model was allowed to run for one minute to allow just-in-time compilation to be performed by the Java virtual machine. All runs were performed with no other applications opened and with JaamSim's view and tool windows closed. The runs per hour value shown in the Run Progress pop-up was recorded when the first thread reached 50% complete. The process was repeated three times for each NumberOfThreads input and the average runs per hour was calculated.</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">The following graph shows the ratio of the runs per hour for a given NumberOfThreads input divided by the runs per hour value for one thread.</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEieivp1l_mAF_mxOdqZUNzrCW3cF9BaQDEaLZfV_DvsiYLr_uSNg_B1T1XdglXtUOT7KRG2HkuMK90sCQz_k4ThLVW_l3QtzlcEs2VxK2sCo6WD9H5TM5R3wziN274Uunm1eMAAW2UB0navN4Li2NWZX100DnHQ_WyaNwoeljntEumd-j0RHm6Mgo_w_g=s1421" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1035" data-original-width="1421" height="291" src="https://blogger.googleusercontent.com/img/a/AVvXsEieivp1l_mAF_mxOdqZUNzrCW3cF9BaQDEaLZfV_DvsiYLr_uSNg_B1T1XdglXtUOT7KRG2HkuMK90sCQz_k4ThLVW_l3QtzlcEs2VxK2sCo6WD9H5TM5R3wziN274Uunm1eMAAW2UB0navN4Li2NWZX100DnHQ_WyaNwoeljntEumd-j0RHm6Mgo_w_g=w400-h291" width="400" /></a></div><br /><div class="separator" style="clear: both;">The graph shows that a NumberOfThreads input of 3 gave the best performance for the laptop computer and very nearly the best performance for the desktop computer. The poorer performance of the laptop computer with larger NumberOfThreads inputs is likely due to its limited cooling capacity. Note that the provision of hyper-threading on the Intel CPU did not allow a larger value to be used for NumberOfThreads.</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">The optimum run execution speed was about 2.2 - 2.5 times the rate for a single thread, which is about 73 - 83% of the potential processing power for three threads.</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">Although no tests were performed with CPUs that have more than four cores, it seems reasonable to guess that the following two formulae will hold approximately for other multi-core processors:</div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both; text-align: center;">Optimum Number of Threads = (Number of Cores) - 1</div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;">Optimum Run Execution Speed = <span style="text-align: left;">(0.8)(Optimum Number of Threads)</span></div><div class="separator" style="clear: both;"><br /></div><div class="separator" style="clear: both;">In some ways, it is disappointing that only three threads can be used for a CPU that is rated at eight threads. Nevertheless, the ability to execute a set of simulation runs 2.2 - 2.5 times faster is still a very satisfactory outcome for this new feature. Even bigger benefits should be available with newer CPUs that can have as many as 64 cores.</div><div class="separator" style="clear: both;"><br /></div>Harry Kinghttp://www.blogger.com/profile/04571445530447771344noreply@blogger.com0tag:blogger.com,1999:blog-4919739148972031861.post-8467210164827471762016-07-07T12:48:00.000-07:002016-07-07T14:11:14.030-07:00Citing JaamSim and Updated Release Policy<h3>
Citations</h3>
<div>
<span style="font-family: inherit;">We've seen an increasing number of papers written using JaamSim in the research process, to support this we've created some suggested text to help with citing JaamSim in your papers. Please cite JaamSim in the following way (Adjust the version as needed):</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">JaamSim Development Team (2016). JaamSim: Discrete-Event Simulation Software. Version 2016-14. URL <a href="http://jaamsim.com/">http://jaamsim.com</a>. doi:10.5281/zenodo.57118</span><br />
<br />
<span style="font-family: inherit;">For Latex users, the following Bibtex entry may be useful:</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">@Manual{,<br /> title = {JaamSim: Discrete-Event Simulation Software},<br /> author = {{JaamSim Development Team}},<br /> year = {2016},<br /> note = {Version 2016-14},<br /> url = {<a href="http://jaamsim.com/">http://jaamsim.com</a>},<br /> doi = {10.5281/zenodo.57118}<br />}</span><br />
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span></div>
<div>
<span style="font-family: inherit;">As you may have noticed, we also have created a Digital Object Identifier for JaamSim to help people with their citations.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<h3>
<span style="font-family: inherit;">JaamSim Downloads</span></h3>
<div>
<span style="font-family: inherit;">We've changed the download locations slightly to take advantage of the github release feature, all versions will now have a permanent address hosting each of the pre-built JaamSim executables rather than being hosted directly on jaamsim.com.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">The latest release will always be linked directly from the existing downloads page, but if you ever need an older version to replicate past results, they are now all archived at:</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<a href="https://github.com/jaamsim/jaamsim/releases" target="_blank">https://github.com/jaamsim/jaamsim/releases</a></div>
<div>
<br /></div>
<div>
That's all for now, as always, if you have any questions please find us on the JaamSim forum.</div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">Harvey Harrison</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
</div>
Anonymoushttp://www.blogger.com/profile/00789885462984589410noreply@blogger.com0tag:blogger.com,1999:blog-4919739148972031861.post-46659847489724149592016-04-23T15:30:00.000-07:002016-04-23T15:30:02.060-07:00JaamSim Software Inc.<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi592x8NGYPSp6bl7bvImoiWWxa0ZtG3FmiPJ5vrRY0cqBLG7YGtrr0NJamCpQthUaLjFYMbzFb84dluuOlQKc3UPRBSb05jS-VPQDi4dX_bGO8A8YkOeP7lxlll8Nz0ji38MOu6o8qI3cO/s1600/Logo+and+Wordmark.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="152" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi592x8NGYPSp6bl7bvImoiWWxa0ZtG3FmiPJ5vrRY0cqBLG7YGtrr0NJamCpQthUaLjFYMbzFb84dluuOlQKc3UPRBSb05jS-VPQDi4dX_bGO8A8YkOeP7lxlll8Nz0ji38MOu6o8qI3cO/s200/Logo+and+Wordmark.jpg" width="200" /></a></div>
We have formed a new company, JaamSim Software Inc., to develop, promote, and support JaamSim simulation software. The software will continue to be free and open-source, and we have no plans to introduce a "premium" version. Revenue will come from a range of services provided by the company:<br />
<ul>
<li><b>Technical support contracts</b>. Similar to commercial software vendors, we can provide on-call technical support with guaranteed response times to resolve technical problems.</li>
<li><b>Introductory courses</b>. Courses will be offered in Vancouver, Canada for both new-comers to simulation and for experienced analysts wishing to convert to JaamSim from other software.</li>
<li><b>Onsite training and technology transfer</b>. Customized training can be provided for groups of employees on their company's premises.</li>
<li><b>Paid development of new features</b>. When a user needs a new feature to build a model, we do our best to provide it in a timely fashion. However, if the feature is too specialized to receive a high priority in our development cycle, it may not become available soon enough to meet the user's timeline. In this case, a user can pay us to program the feature at hourly rates. Paid features will become part of free, open source code in the same way as normal features.</li>
<li><b>Preparation of client models</b>. When building a complex new model, it is often more cost-effective for a company to pay us to prepare and hand over an initial version of the model. It is much easier to modify a well-designed model than it is to build one from scratch.</li>
<li><b>Custom palettes of new objects</b>. Complex, highly-detailed models can be built more easily using specialized objects designed for that application. For example, it would be better to build a model of a road network using specialized objects such as vehicles, roads, traffic lights, etc. than using more abstract objects such as SimEntity, Server, Queue, etc. We can prepare palettes of these specialized objects to suit any industry.</li>
</ul>
<div>
Along with the company, we have introduced a new logo for JaamSim, shown above. The logo represents the magical wine-bowl or <a href="https://en.wikipedia.org/wiki/Cup_of_Jamshid" target="_blank">"Jaam-e Jam"</a> from Persian mythology, which I described in an earlier post. JaamSim's name refers to both "JAva Animation Modelling and SIMulation" and the magical wine bowl. Divinations from the bowl "... were said to reveal deep truths".<br />
<br />
Contact Dr. Harry King at d.harry.king@gmail.com for more information about the services we can provide.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
Harry Kinghttp://www.blogger.com/profile/04571445530447771344noreply@blogger.com0tag:blogger.com,1999:blog-4919739148972031861.post-45105809617006822072014-11-30T22:26:00.000-08:002015-03-31T13:01:39.345-07:00The Fastest Simulation SoftwareOne of my goals for 2014 was to perform the execution speed benchmarks described in my previous posts on a wide selection of mainstream simulation software packages. The software packages were compared by measuring the execution times for three basic activities:<br />
<ul>
<li>executing a delay block</li>
<li>creating and destroying an entity</li>
<li>seizing and releasing a resource</li>
</ul>
<div>
Note that in previous posts, the third benchmark was the time to execute a "simple" block, which was taken to be one-half of the time to seize and release a resource. The new benchmark avoids this inference and presents the quantity that was actually measured.</div>
<div>
<br /></div>
<div>
Execution times were measured by counting the number of entities processed in 60 seconds measured with a stop watch. The posted results are the averages of three runs for each benchmark. All the runs were performed on the same laptop computer with a Second Generation ("Sandybridge") Core i5 processor running at 2.5 GHz. To make the results less machine specific, execution times were converted to clock cycles.</div>
<div>
<br /></div>
<div>
The following bar graph presents the results of the comparison.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivl2-Xd6wroyf-SJ1wFOpPtnrm6df16OZ8PhyphenhyphenvDIz1BLCPkhumKp53XO41CZMnTZCvKmeyCHSXbAO5ZSca7gmgP1GAoOhkN5-zmd6SmUkigACQO5zIFgJPhslLqv-R5m3Jer7Cey27Q-28/s1600/Comparison+of+Benchmarks+17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivl2-Xd6wroyf-SJ1wFOpPtnrm6df16OZ8PhyphenhyphenvDIz1BLCPkhumKp53XO41CZMnTZCvKmeyCHSXbAO5ZSca7gmgP1GAoOhkN5-zmd6SmUkigACQO5zIFgJPhslLqv-R5m3Jer7Cey27Q-28/s1600/Comparison+of+Benchmarks+17.png" height="266" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
Previous versions of this graph were labelled as "preliminary" to provide a chance for the vendors or other interested parties to improve the benchmark models for the individual software packages. Now that I have corresponded with most of the vendors and incorporated their suggestions, these results can be considered to be final for the specified version of each software package.</div>
<br />
<b>Revision 1:</b> New results for Arena. Selecting the "Run > Run Control > Batch Run (No Animation)" option speeds up the benchmarks by a factor of ten. My thanks to Jon Santavy and Alexandre Ouellet for pointing this out.<br />
<br />
<b>Revision 2:</b> New results for SIMUL8. Setting travel times between objects to zero resulted in a large improvement for the first and third benchmarks. The default setting for SIMUL8 is to assign a travel time in proportion to the distance between work centres, which increased the computational effort for these two benchmarks. The setting can be changed to zero travel time by selecting File > Preferences > Distance. My thanks to Sander Vermeulen for auditing and correcting the benchmark models.<br />
<br />
<b>Revision 3:</b> New results for FlexSim. Execution speed was increased by approximately 10% by closing the “Model View (3D)” window during the run. The seize/release resource benchmark was also added to the result. After gaining more experience with FlexSim, it became clear that the Processor and Operator objects used for the first and third benchmarks are more complex objects than the simple seize, release, resource, and delay blocks that these two benchmarks are intended to evaluate. Since each object performs a series of actions to process an incoming entity, rather than just a single action, the results for the two benchmarks cannot be compared on a like-to-like basis with the other software packages. My thanks to Bill Nordgren for his help with the benchmarks.<br />
<br />
<b>Revision 4:</b> New results for ExtendSim. Execution speeds were increased significantly by replacing the "Activity" blocks in Benchmarks 1 and 3 with "Workstation" blocks. The Workstation block is faster because it supports less functionality (pre-emption, shut-downs, and state statistics) than the Activity block, decreasing its overhead. It may be possible for ExtendSim users to increase execution speed further by creating a customized Activity block with any unneeded functionality stripped from the ModL code. My thanks to Peter Tag his guidance on ExtendSim.<br />
<br />
<b>Revision 5:</b> New results for Simio. The entity creation and destruction benchmark was revised to use tokens instead of entities. All three benchmarks are now token-based. Tokens were used for the benchmark because they provide the same capabilities as the basic entity provided by some of the other simulation packages. The corresponding times for Simio's entity-based benchmarks are many times longer than the token-based ones. My thanks to David Sturrock preparing the new benchmark models.<br />
<br />
<b>Revision 6:</b> New results for Arena. All three benchmark models were revised to use elements instead of modules to avoid unnecessary overhead. It is common practice for Arena modellers to avoid modules in large models where execution speed is an important factor. The module-based benchmark times are about 50% longer than the element-based times. My thanks to Alexandre Ouellet for preparing the new benchmark models.<br />
<br />
<b>Revision 7:</b> Results for Simio 7.119. The latest release of Simio shows a significant improvement in execution speed for the seizing and releasing a resource (using tokens). Processing time was reduced from 21,000 clock cycles for release 7.114 to 4,300 clock cycles for release 7.119.<br />
<br />
I should caution readers not to put very much importance on differences in execution speeds of less than a factor of two. Ease of use and suitability for the system to be modelled will always be the primary criteria for selecting simulation software. Execution speed is only important if it is a significant time saver for the analyst (impacting ease of use) or if it is required for the model to be tractable (impacting suitability for the system to be modelled). For some systems, even very slow software will be quite fast enough.<br />
<br />
To put the execution times in perspective, consider the number of times an activity can be performed in one minute of processing time on a 2.5 GHz laptop computer. An activity requiring 150 clock cycles can be executed one billion times in one minute. One requiring 1,500 clock cycles can be executed 100 million times in one minute. Even one requiring 150,000 clock cycles can be executed one million times in one minute. In most cases, the fastest benchmark times measured by this exercise will be important only for very large models that require hundreds of millions of blocks to be executed over the course of each simulation run.<br />
<br />
SLX holds the crown as the fastest of the simulation packages with times of 60, 110, and 230 clock cycles, however, it differs from the others in that it is strictly a programming language and lacks any drag & drop capabilities. JaamSim is the fastest of the simulation packages that include a drag & drop interface, with times of 240, 530, and 2,400 clock cycles. Arena, SIMUL8, AnyLogic, and Simio turn in solid results in the 1,000 - 10,000 clock cycle range. ExtendSim is significantly slower, with one benchmark time that exceeds 20,000 clock cycles. The results for FlexSim are not directly comparable to the other software packages and are provided for reference only (see the notes for Revision 3).Harry Kinghttp://www.blogger.com/profile/04571445530447771344noreply@blogger.com6tag:blogger.com,1999:blog-4919739148972031861.post-33619009493668772422014-09-07T18:29:00.000-07:002015-03-07T22:07:54.688-08:00Another Big Performance Increase for Release 2014-36<h3>
Faster Event Processing</h3>
Harvey Harrison has done it again -- event scheduling and processing is about 50% faster in this week's release (2014-36). On my laptop, the benchmark runs at nearly 8 million events/second compared to 5 million last week. It wasn't many months ago when I was excited about 2 million events/second. The following graph shows the full results for the benchmark.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLjgS-pTrXyqpWHad8SnSzoGvphRCcNvOZXA1TdUKiuHoi1iNLll7DyaEMgcJni1Kz8V6uKLrHsyO-aEvvL3t6sphaJBMUn2QR6kl9JbQDGbud4MFKiQwDXLFyOQ0AwaUVO8kYmthCbYUW/s1600/graph5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLjgS-pTrXyqpWHad8SnSzoGvphRCcNvOZXA1TdUKiuHoi1iNLll7DyaEMgcJni1Kz8V6uKLrHsyO-aEvvL3t6sphaJBMUn2QR6kl9JbQDGbud4MFKiQwDXLFyOQ0AwaUVO8kYmthCbYUW/s1600/graph5.png" height="262" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h3 style="clear: both; text-align: left;">
SLX Software</h3>
<div class="separator" style="clear: both; text-align: left;">
A new entry on the above graph is the result for SLX from <a href="http://www.wolverinesoftware.com/" target="_blank">Wolverine Software</a>. The developer, Jim Henriksen, had sent me this result several months ago along with the input file. The results for other two benchmarks were described in a post Jim made to the LinkedIn group for the Society for Modeling & Simulation International a few weeks ago. You can read his post <a href="https://www.linkedin.com/groupItem?view=&gid=1055457&type=member&item=5905345320555945988&trk=groups_search_item_list-0-b-ttl&goback=%2Egna_1055457" target="_blank">here</a>. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Ideally, I should re-run the SLX benchmarks myself, but have not found the time to explore SLX enough to do so yet. In the interest of keeping things moving, the results Jim provided are shown in all the latest graphs.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
It is fair to say that SLX sets the gold standard for execution speed. This is one of its key features, and SLX achieves this status by being the only simulation software to provide a compiler for its proprietary programming language. Somewhat more effort is required to build an SLX model -- there is no drag and drop model building environment -- but the pay-off is the shortest possible execution time.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h3 style="clear: both; text-align: left;">
Concluding Remarks</h3>
<div class="separator" style="clear: both; text-align: left;">
With Harvey's latest improvements, JaamSim processes events about 6 times faster than Simio, but is still about 2.7 times slower than SLX. JaamSim's event processing code is unlikely to get any faster -- all reasonable optimizations have been made already -- so we will have to accept that SLX is faster in this area. To be completely honest, we were pleasantly surprised to have got this close to SLX.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
To put the event processing speed differences in in perspective, consider a model that requires one billion events to be executed. On my 2.5 GHz laptop, the event processing portion of the simulation run would total 13 minutes in Simio, 2.1 minutes in JaamSim, and 0.8 minutes in SLX. For this number of events, the difference between SLX and JaamSim amounts to only 1.3 minutes out of what is likely to be a much longer total duration for the run. Nearly 10 billion events would be required for the difference between SLX and JaamSim to reach 10 minutes. Beyond 10 billion events, SLX is likely to have a significant advantage over JaamSim. Below 1 billion events, the difference is likely to be insignificant.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Now that we have good performance for event processing, our next objective is to bring JaamSim's event creation/destruction time into line with the other benchmarks. SLX achieves its excellent result for this benchmark by providing an internal entity pool, so that used entities can be recycled instead of being destroyed. Up to now, we have shied away from an entity pool for JaamSim, preferring to focus our attention on making entity creation more efficient. Moving forward, we may have to reconsider various ways to implement an entity pool.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
Harry Kinghttp://www.blogger.com/profile/04571445530447771344noreply@blogger.com0tag:blogger.com,1999:blog-4919739148972031861.post-82134274875968804922014-08-28T23:23:00.000-07:002015-03-07T21:58:44.291-08:00Huge Performance Increase for Release 2014-35Some programming magic by Harvey Harrison and Matt Chudleigh has resulted in a major increase in JaamSim's execution speed for release 2014-35. The following graph show the latest result for Benchmark 1 compared to those in my previous posts.<br />
<br />
<h3>
Benchmark 1 - Event Scheduling and Processing</h3>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO0g5-XRLXQDyNkLIDXtkPlUGin1wOqzkut_FUw6MeEgtnV9HIvocYEVmf6JhaEK_T34Rajp8hVlfKIrKcd6uOJPDkuVfpCwVfbSgu_A4h8HIAsNLl6o56i6llZYm7oZzG63lfu3neINU3/s1600/graph4.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO0g5-XRLXQDyNkLIDXtkPlUGin1wOqzkut_FUw6MeEgtnV9HIvocYEVmf6JhaEK_T34Rajp8hVlfKIrKcd6uOJPDkuVfpCwVfbSgu_A4h8HIAsNLl6o56i6llZYm7oZzG63lfu3neINU3/s1600/graph4.png" height="263" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Event Scheduling and Processing</td></tr>
</tbody></table>
The bottom line on the graph is the result for JaamSim2014-35 with the graphics for the EntityDelay object turned off. Normally, EntityDelay shows the various entities moving along a line representing the fraction of time completed for each delay. Unfortunately, this graphic requires the data for each entity to be stored in a HashMap, adding considerable overhead unrelated to scheduling and executing events. A more realistic benchmark is obtained when this overhead is turned off.<br />
<br />
A practical example of JaamSim's speed advantage was revealed a few weeks ago when we delivered a very complex supply chain model to a mining industry client for their internal use. The model was prepared in our TLS software -- an add-on to JaamSim. The TLS model required only 7 minutes to complete a simulation run, while the less-detailed Arena model it replaced required 35 minutes. Our client was very pleased by this unexpected boost to his productivity.<br />
<br />Harry Kinghttp://www.blogger.com/profile/04571445530447771344noreply@blogger.com0tag:blogger.com,1999:blog-4919739148972031861.post-11693569635315884472014-08-22T00:27:00.000-07:002014-09-01T21:40:42.129-07:00What is in a name?Selecting a name for a new software product such as JaamSim can be a vexing process. Names are important -- a rose by any other name might smell as sweet -- but it would not sell very well if was hard to pronounce or evoked something negative.<br />
<br />
The <a href="http://www.igorinternational.com/process/naming-guide-product-company-names.php" target="_blank">Igor Naming Guide</a> provided some excellent advice, but it was hard to put it into practice. We thought of all sorts of clever, evocative names only to find that they had been used twice over or that someone was already sitting on the .com domain name. Even the names we had rejected as being too dumb or cute had been used already.<br />
<br />
According to Igor, an acronym is one of the worst possible ways to name something. However, we were getting desperate and the name JamSim -- "<u>J</u>ava <u>A</u>nimation, <u>M</u>odeling, and <u>Sim</u>ulation" seemed promising. That is, it did until a Google search showed that it had already been used for "<u>Ja</u>va <u>M</u>icro<u>Sim</u>ulation". The jamsim.com domain name was available, but there were too many references to JamSim for this name to be a viable option. How about "JaamSim" then?<br />
<br />
The name JaamSim seemed pretty weak until a search on Google revealed that the "Jaam-e Jam" or <a href="http://en.wikipedia.org/wiki/Jaam-e_Jam_(mythology)" target="_blank">Cup of Jamshid</a> is a magical wine bowl from Persian mythology. By looking into the bowl, one could see people and events taking place in other locations:<span style="font-family: inherit;"> </span><br />
<span style="font-family: inherit;"><span style="background-color: white; color: #252525; line-height: 17.920000076293945px;"><br /></span></span>
<span style="font-family: inherit;"><span style="background-color: white; color: #252525; line-height: 17.920000076293945px;"><i>"The whole world was said to be reflected in it, and divinations within the cup were said to reveal deep truths."</i></span></span><br />
<br />
This was great! I had been interested in Persian culture ever since reading <a href="http://en.wikipedia.org/wiki/Rub%C3%A1iy%C3%A1t_of_Omar_Khayy%C3%A1m" target="_blank">The Rubáiyát of Omar Khayyám</a> at an impressionable age. The idea that our software might "reveal deep truths" had me hooked, so the name "JaamSim" won out in the end.<br />
<br />
Now that you know the story of its name, perhaps JaamSim will help you to reveal your own deep truths.Harry Kinghttp://www.blogger.com/profile/04571445530447771344noreply@blogger.com0tag:blogger.com,1999:blog-4919739148972031861.post-5776223663039907952014-07-21T10:35:00.002-07:002015-03-07T17:37:44.129-08:00Benchmarking Part 3 - Executing Model Blocks<h3>
Introduction</h3>
My first post on the topic of benchmarking discrete event simulation software identified three processes that could potentially bottleneck a typical simulation model:<br />
<ol>
<li>Event scheduling and processing</li>
<li>Creating and destroying entities</li>
<li>Executing model block that do not involve simulated time</li>
</ol>
<div>
This post deals with the last item on the list - the time required to execute a model block that does not involve simulated time. This benchmark may seem a bit vague since there are many type of model blocks that do not advance simulated time. Its intent is to capture the overhead associated with moving an entity from one block to the next in a process flow type simulation model.</div>
<div>
<br /></div>
<div>
In a perfect world, we would benchmark a wide variety of blocks for each simulation software package. No doubt, the efficiency of each software package will vary with the type of block. Software A might be much more efficient the software B for one block, but much less efficient for another block. To get started, we chose to benchmark the blocks that seize and release a resource. These blocks are commonly used in simulation models and are implemented in one form or another in every simulation software package. Very little computation is required to seize or release a block - only statistics collection - so we expect that it provides an approximate measure of the overhead time to move an entity from one block to another. </div>
<div>
<br /></div>
<h3>
Model Block Execution Benchmark</h3>
<div>
The model used to benchmark the execution of model blocks that do not advance simulated time is shown in the following figure.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4v8Lh0GFbOZdtfa0txICtULm-CK-Rj82bLG6C7-HSONbG_PkyrAJKMj4v-Rzb02pakhnxgPycDTCR9j5MLVufpRu_jbSWR3sLAMEHWwLBfjCxUSGd1-jOAyemqQ0b4f575Nku7lnaqhf-/s1600/Benchmark3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4v8Lh0GFbOZdtfa0txICtULm-CK-Rj82bLG6C7-HSONbG_PkyrAJKMj4v-Rzb02pakhnxgPycDTCR9j5MLVufpRu_jbSWR3sLAMEHWwLBfjCxUSGd1-jOAyemqQ0b4f575Nku7lnaqhf-/s1600/Benchmark3.png" height="156" width="320" /></a></div>
<div>
<br /></div>
<div>
In this model, two entities are created at time zero and directed to the Seize block. The first entity seizes the resource and executes a one second delay. The second entity enters the Seize block's queue to wait for the resource. On completing the one second delay, the first entity releases the resource and is returned to the Seize block. This process continues endlessly, with one entity completing the delay during each second of simulated time. Two entities were used in the model to ensure that the Seize block always had an entity to process, avoiding a potential source of inefficiency for some software packages.</div>
<div>
<br /></div>
<div>
As with the previous benchmarks, the average time to seize and release a resource was measured by running the model for 60 seconds of real time (using a stopwatch) and counting the number of times the Release block was executed. The effect of computer speed was allowed for by converting the calculated time into clock cycles. All measurements were made using my laptop computer which has a second generation (Sandybridge) Core i5 processor running at 2.5 GHz.</div>
<div>
<br /></div>
<h3>
Performance Results</h3>
<div>
The results of the benchmark for Arena, Simio and JaamSim are shown in the following bar chart. </div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi503ZGIHKFmdXE-WGpYjN2SVoMTUxvv9vNs6m7rmRWqgIJqob9L5Y3CQqgD1IdcmeQmHMspHteXoKqbVnQ7r9PshRRPnCcuaN9PgmU52sJHoP8eBWV_uKyvKPKZxyYCLAVhTWCNr80fOSE/s1600/Seize+and+Release+Time.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi503ZGIHKFmdXE-WGpYjN2SVoMTUxvv9vNs6m7rmRWqgIJqob9L5Y3CQqgD1IdcmeQmHMspHteXoKqbVnQ7r9PshRRPnCcuaN9PgmU52sJHoP8eBWV_uKyvKPKZxyYCLAVhTWCNr80fOSE/s1600/Seize+and+Release+Time.png" height="290" width="320" /></a></div>
<div>
<br /></div>
<div>
The time to execute a model block was calculated by taking the average execution time per entity for the benchmark, subtracting the time to execute the delay, and dividing by two. The time for the delay was taken from the first benchmark for each software package. It was necessary to divide by two since two blocks were executed for each trip through the benchmark - a seize block and a release block.<br />
<br />
Only the result for JaamSim2014-20 is shown - there was no difference between the values for the three versions shown in the previous posts.<br />
<br />
The benchmark results show that JaamSim requires very little time to process simple blocks such as Seize and Release.<br />
<br />
<h3>
Concluding Remarks</h3>
This post concludes the series of three on the topic of benchmarking. Thanks to the hard work carried out by Harvey Harrison and Matt Chudleigh, JaamSim is now significantly faster.</div>
Harry Kinghttp://www.blogger.com/profile/04571445530447771344noreply@blogger.com0tag:blogger.com,1999:blog-4919739148972031861.post-29754106647034923092014-07-19T16:07:00.000-07:002015-03-07T17:32:02.426-08:00Benchmarking Part 2 - Creating and Destroying Entities<h3>
Introduction</h3>
My previous post identified three processes that can bottleneck a typical simulation model:<br />
<ol>
<li>Event scheduling and processing.</li>
<li>Creating and destroying entities.</li>
<li>Executing model blocks that do not involve simulated time.</li>
</ol>
<div>
Each of these activities has the potential to be slow enough to bottleneck a model's execution speed. By measuring the processing times for these activities, we can assess the relative strengths and weaknesses for each simulation software package.</div>
<div>
<br /></div>
<div>
Event scheduling and processing was investigated in my previous post. I now move on to the second item on the list: creating and destroying entities.<br />
<br /></div>
<h3>
Entity Creation and Destruction Benchmark</h3>
<div>
The simulation model used to benchmark entity creation and destruction is simplicity itself. A<span style="font-family: 'Times New Roman', serif; font-size: 11pt;">n EntityGenerator is used to create a series of entities that are sent immediately to an EntitySink block for destruction.</span><span style="font-family: 'Times New Roman', serif; font-size: 11pt;"> </span><span style="font-family: 'Times New Roman', serif; font-size: 11pt;">The following figure shows the JaamSim
model for this benchmark.</span></div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0YAVObbHyr5UNZiqcyfspUgtF2sg_r8FCiSkVweC9ifJBEoQbaMrocM3aVzxIwVqH8oLy_eqRSTy97rQHEEj7_pA4Pd1mjvliBPb9TpeHGaJULQ6X6lMnqF-HjPnIddOIQbEAoUdZIGcr/s1600/Benchmark2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0YAVObbHyr5UNZiqcyfspUgtF2sg_r8FCiSkVweC9ifJBEoQbaMrocM3aVzxIwVqH8oLy_eqRSTy97rQHEEj7_pA4Pd1mjvliBPb9TpeHGaJULQ6X6lMnqF-HjPnIddOIQbEAoUdZIGcr/s1600/Benchmark2.png" height="156" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Benchmark Model</td></tr>
</tbody></table>
<div>
The average time to create and destroy an entity was measured by running the model for 60 seconds of real time (using a stopwatch) and counting the number of entities that were destroyed. The effect of the computer speed was allowed for by converting the calculated time into clock cycles. All measurements were made using my laptop computer which has a second generation (Sandybridge) Core i5 processor running at 2.5 GHz.<br />
<br /></div>
<h3>
Performance Results</h3>
<div>
The following bar chart shows the results of the benchmarking exercise for Arena, Simio, and for the same three versions of JaamSim that were benchmarked in the previous post.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZjhpQM2ILwycRAndFpPUOq_tx_nTwOIGRWdbRYwUpKAFoctD1kdsWzTI1XCGaxsASChl4Ghp8N8RovlsJlUhwfOw7UHr6v0OVEkOhNGLhl7UwlHt8IpvP7IA_tBTtJqn8_5pqNkdawwS1/s1600/Create+and+Destroy+Entities+Graph.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZjhpQM2ILwycRAndFpPUOq_tx_nTwOIGRWdbRYwUpKAFoctD1kdsWzTI1XCGaxsASChl4Ghp8N8RovlsJlUhwfOw7UHr6v0OVEkOhNGLhl7UwlHt8IpvP7IA_tBTtJqn8_5pqNkdawwS1/s1600/Create+and+Destroy+Entities+Graph.png" height="287" width="320" /></a></div>
<br /></div>
<div>
The first thing to note about these results is that event creation and destruction is a very time consuming process! Even for the fastest version of JaamSim, the entity creation/destruction time is about fifteen times longer than the time to execute a delay. This activity can easily be the bottleneck for a simulation model that processes large numbers of entities.</div>
<div>
<br />
The version of JaamSim initially tested, JaamSim2014-11, was quite slow due to the slow method for event scheduling and processing used in this version (one future event is needed to generate an entity at a future time). Once a faster method was used in JaamSim2014-16, its time was only slightly slower than Arena and more than twice as fast as Simio. For the final version tested, JaamSim2014-20, some simple optimizations were performed that reduced the processing time by a factor of three to "only" 23,000 clock cycles.<br />
<br /></div>
<div>
<h3>
Concluding Remarks</h3>
Although JaamSim is now significantly faster, there is still room for further improvement. The time to create and destroy an entity is about fifteen times longer than the time to execute a time delay.<br />
<br />
The slowness of event creation/destruction is significant only when very large numbers of entities are to be created and destroyed. On the laptop computer used for these benchmarks, JaamSim can create and destroy about 110,000 entities per second. At this rate, only 9 seconds of processing time are required for a million entities - an insignificant amount. However, one hundred million would require 15 minutes and one billion would require 2.5 hours. Simulations involving such large number of entities will require more efficient entity creation and destruction methods or a model design that pools and recycles the entities instead of destroying them.</div>
Harry Kinghttp://www.blogger.com/profile/04571445530447771344noreply@blogger.com0tag:blogger.com,1999:blog-4919739148972031861.post-40211792911997251362014-05-19T22:19:00.002-07:002015-03-07T17:29:07.674-08:00Benchmarking Discrete Event Simulation Software<h3>
Introduction</h3>
Over the last several months Harvey Harrison and Matt Chudleigh have been working hard to increase JaamSim's execution speed. With the release this week of JaamSim2014-20, I am pleased to say that JaamSim is now faster than both Arena and Simio.<br />
<br />
Before starting our optimisation process, we searched the internet for any information on benchmarks for discrete event simulation software. Surprisingly, there are no published benchmarks of any kind that compare the execution speeds of the various simulation packages. Some articles compare the features and design of the software packages, but provide no quantitative data. To the best of my knowledge, this blog post is the first to give numerical results.<br />
<br />
The first step in any optimisation effort is to decide what to measure. For discrete event software, there are three activities that are likely to be slow enough to bottleneck execution speed:<br />
<ol>
<li>Event scheduling and processing.</li>
<li>Creating and destroying entities.</li>
<li>Executing blocks that do not involve simulated time.</li>
</ol>
<h3>
Event Scheduling and Processing Benchmark</h3>
This post focuses on the first of these activities -- scheduling and executing events. The following model was devised to measure this time.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5uWU2Cz88CBhCC9FDRNa66WiY3zClpftwptHi6v7gRNXWOIL8n9Kae47PhLg9YGpwK0xjp08uPaLUyvPMtSyI5DgnTTmLefXkJ_30oGC_zomMASnmCrGHl_NtiXZUtcKYDYSX2kTLYF4v/s1600/Benchmark1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5uWU2Cz88CBhCC9FDRNa66WiY3zClpftwptHi6v7gRNXWOIL8n9Kae47PhLg9YGpwK0xjp08uPaLUyvPMtSyI5DgnTTmLefXkJ_30oGC_zomMASnmCrGHl_NtiXZUtcKYDYSX2kTLYF4v/s1600/Benchmark1.png" height="156" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Benchmark Model</td></tr>
</tbody></table>
<div>
In this model, N entities are created at time zero and fed into a delay activity whose duration is selected randomly from the range 0 to 2N seconds (uniformly distributed). On completion of the delay, each entity is routed back to re-execute the delay again. This design results in an average of one entity per second completing the delay and an average of N events on the future event list. The use of the uniform distribution ensures that each new event is inserted in a random position in the future event list.</div>
<div>
<br /></div>
<div>
The average time to create, schedule, and execute an event was measured by running the model for 60 seconds of real time (using a stopwatch) and counting the number of times the delay activity was completed. The effect of the computer speed was allowed for by converting the calculated time into clock cycles. All measurements were made using my laptop computer which has a second generator (Sandybridge) Core i5 processor running at 2.5 GHz.<br />
<br />
<h3>
Performance Results</h3>
We began by benchmarking the initial version of JaamSim (2014-11) and comparing the results to those for Arena and Simio. The following graph shows the execution time per event for the three software packages over a range of future event list sizes. This is the "Before" picture for the simulation weight loss clinic.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8RvIPCXUuLhZRzr0e_WXxS9cCuax7YeYk7ZZwQ3o2uM08XlxIKQH71470bR0OiSVfG8Ipm2L8ulPRxkaXxatquD6evzlra2j0-Os_u6l8NzhJY3TmOx3-xjIzSutu9KxAf0HeLIZvepQr/s1600/graph1a.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8RvIPCXUuLhZRzr0e_WXxS9cCuax7YeYk7ZZwQ3o2uM08XlxIKQH71470bR0OiSVfG8Ipm2L8ulPRxkaXxatquD6evzlra2j0-Os_u6l8NzhJY3TmOx3-xjIzSutu9KxAf0HeLIZvepQr/s1600/graph1a.png" height="210" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Before Optimisation</td></tr>
</tbody></table>
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
Clearly, JaamSim2014-11 was quite a lot slower than both Arena and Simio for event scheduling and processing. This slowness was caused by its use of system threads to control simulated time. Each event required two context switches -- passing control from one thread to another -- a relatively time consuming process for the computer.<br />
<br />
Next we began optimising. The following graph shows the performance of two subsequent releases of JaamSim.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaUWT8Za03iLmCqkJvk1DqY-Rds2Ei2I_bAXDIvapBvKUcrYdRAJeq_LCfh4kl6AM7KRH2sUzn_-S6ZeFw6g7GE7LFx8BtesOdMm7uqrycpl11OhVbTNGGMFiHEPLDIV2LGY0xW4aUA1vD/s1600/graph2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaUWT8Za03iLmCqkJvk1DqY-Rds2Ei2I_bAXDIvapBvKUcrYdRAJeq_LCfh4kl6AM7KRH2sUzn_-S6ZeFw6g7GE7LFx8BtesOdMm7uqrycpl11OhVbTNGGMFiHEPLDIV2LGY0xW4aUA1vD/s1600/graph2.png" height="209" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">After Optimisation</td></tr>
</tbody></table>
<div>
The biggest gain came from re-designing the event processing engine so that events could executed without context switching. This was no small task and preparations had been made for this change over several previous months. Jaam2014-16 was the first release to implement the new system and the event processing time immediately dropped from 67,000 clock cycles per event to 1,200 clock cycles per event (with an empty future events list). For comparison, Simio required 1,800 clock cycles per event.<br />
<br />
The next step was to improve performance when there are a large number of events on the future events list. JaamSim2014-16 used a simple array structure that required O(N) clock cycles to insert a new event. This worked well up to about 100 events on the future event list, but became very inefficient for larger numbers of events. JaamSim2014-18 (not shown) improved this design enough to extend the range of efficient operation up to 1,000 future events, but became too slow at 10,000 events.<br />
<br />
Finally, in JaamSim2014-20, we replaced the future events array with a new data structure called a "red-black tree" that requires only O(logN) clock cycles to insert a new event. With this change, JaamSim provides excellent performance to at least 10,000 future events.<br />
<br />
<h3>
Concluding Remarks</h3>
</div>
<div>
As of JaamSim2014-20, we have improved event scheduling and processing to the extent that it is no longer a significant factor in model execution speed. As subsequent posts will show, the execution time for a JaamSim delay block is now about the same as that for any of the other blocks in the Basic Objects palette.<br />
<br />
So far, we have only benchmarked Arena and Simio, but more will come over the next 6 months. In particular, I'd like to see how well AnyLogic, FlexSim, and ExtendSim perform. Assistance from any readers who are familiar with these software packages would be most welcome. The hardest part of benchmarking other software is to learn enough to implement the various benchmarks in way that gets the best from the software. In the case of Simio, I am grateful to Alan Sagan for providing an implementation that performed ten times faster than my first attempt.</div>
Harry Kinghttp://www.blogger.com/profile/04571445530447771344noreply@blogger.com0tag:blogger.com,1999:blog-4919739148972031861.post-20730222665176979842014-05-13T11:38:00.000-07:002014-05-13T12:55:08.728-07:00The Birth of JaamSimJaamSim has its origin in the simulation models we prepare for the oil & gas and mining industries. These models simulate the movement of products such as crude oil, LNG, coal, and iron ore from production through marine terminals and ships to their final destinations. You can view some videos of these models using the link from the <a href="http://jaamsim.com/" target="_blank">JaamSim</a> webpage or at our YouTube channel: <a href="https://www.youtube.com/user/javasimulation" target="_blank">JavaSimulation</a>.<br />
<br />
Long before JaamSim, we wrote our models in commercial off-the-shelf software. In the early 1980's, we used GPSS, followed a few years later by SLAM. In the 1990's, we used Audition, a simulation package developed in part by the National Research Council of Canada. When Audition came to the end of its life a decade later -- it was incompatible with Windows 2000 and NT -- we had several large models that needed to be converted to a new simulation platform. What to do?<br />
<br />
We started by reviewing the lessons we had learned from our previous simulation packages:<br />
<ul>
<li>Most of our modelling effort goes into writing custom simulation objects. With SLAM, we had a small framework that was built from its standard components and a very large body of FORTRAN code that did the real work. SLAM did little more that manage the simulation clock and execute events.</li>
<li>A non-standard programming language is a bad idea. Audition was quite an advanced programming language in its day -- basically Smalltalk with extensions to do discrete-event simulation. As good as it was, it had a small user base and lacked many basic features. We spent a huge amount of effort writing code to do things that would already be provided in a standard programming language.</li>
<li>Simulation packages tend to become obsolete after ten or so years. Newer, more capable software appears on the scene and the old software becomes a legacy product that receives only token development. This is a healthy process for the simulation industry, but it leaves the model developer with a lot of software to rewrite.</li>
</ul>
As a result of this experience, we decided to adopt a mainstream object-oriented programming language and build our own simulation engine. We chose Java over C++ because it is simpler language and has a more productive programming environment. This proved to be a good decision. In eight months, we had constructed our simulation engine, written a compiler to translate Audition code into Java, and had converted and verified all our models.<br />
<br />
Our new simulation program, the "Transportation Logistics Simulator" (TLS), was still an application-specific model for product transportation. TLS evolved with each new project and over the years acquired all the features of a modern simulation package.<br />
<br />
JaamSim was born in 2010 when we separated TLS into a general purpose simulator and a set of application-specific components. In 2011, we released JaamSim as free, open source software and in 2013 introduced it to the simulation community with a Winter Simulation Conference <a href="http://informs-sim.org/wsc13papers/includes/files/190.pdf" target="_blank">paper.</a><br />
<br />
JaamSim now consists of over 50,000 lines of executable code and <a href="http://www.ohloh.net/p/JaamSim" target="_blank">Ohloh</a> estimates that it represents about 13 years of effort, or about one million dollars of programmer time. It is one of the most active open-source projects that they track.<br />
<br />
Enjoy!Harry Kinghttp://www.blogger.com/profile/04571445530447771344noreply@blogger.com0tag:blogger.com,1999:blog-4919739148972031861.post-55512766048682654032014-05-07T12:13:00.000-07:002014-05-07T12:13:20.422-07:00Why is JaamSim free?The first question most people ask me about JaamSim is "Why are you doing this?" This is a good question. We are going to a lot of trouble to develop and promote software that generates no revenue for us.<br />
<br />
There is a personal reason and a business reason for JaamSim. I'll start with the personal one. I've been a simulation consultant for more than thirty years now, and I would like to make a lasting contribution to the field. Over the years, I've developed strong opinions on how simulation models should be constructed and on the role simulation technology should play in the world. I'll say more about these topics in future posts, but suffice it to say that the present generation of commercial off-the-shelf simulation software is not suitable for this vision and that JaamSim is designed to fill this gap. JaamSim embodies all our ideas on how simulation software should work.<br />
<br />
The business reason for JaamSim is simple. We want to be recognized as a leader in simulation technology to help us sell our consulting services. It's no good for us to claim that our software is the most sophisticated because everyone else does this too. Clients have no way to make a technical evaluation and simply assume that the most popular software is the best and safest choice. The only way for us to prove the value of our software is for it to be widely used by other simulation professionals. We have made JaamSim free and open source so that more people will try it out and hopefully adopt it as their preferred software. At the end of the day, our reputation is more important to us than any money that JaamSim might have generated as a commercial offering.Harry Kinghttp://www.blogger.com/profile/04571445530447771344noreply@blogger.com1