The team behind Simio uses the agile development process so every three weeks, a new batch of enhancements are released to its users. This allows changes to be made available under maintenance as soon as it was completed, rather than waiting for annual development milestones. Users also play an active roll in suggesting changes and often the requests are included in a subsequent sprint.
Below are few of the enhancements and additions we made to Simio since Version 2 was released in January. For release notes, click here. Click below to see any of the individual releases that make up Version 3.
Release 32 | Release 33 | Release 34 | Release 35 | Release 36 | Release 37
Release 38 | Release 39 | Release 40 | Release 41 | Release 42
We have taken advantage of state-of-the-art research in output analysis to build in a graphical tool to help you analyze and compare scenarios. We have extended recent developments by Dr. Barry Nelson to generate SMORE Plots (Simio Measure of Risk & Error) to display both the expected value of a scenario and multiple levels of variability behind the expected value.
The chart features:
A Response Chart Ribbon allows you to enable/disable specific graphic features: confidence intervals, individual observations, upper/lower bounds, and connecting lines between means of scenarios.
A Raw Data Tab allows you to view the full analysis data in a tabular format.
Two types of Constraints have been added. Input Constraints identify expressions that can be evaluated before a run and possibly prevent a scenario from being executed (or sometimes even generated). Output Constraints identify expressions that are analyzed after a run and can mark results as invalid if they are out of range. Simio automatically determines if a constraint is an input or output constraint. Ribbon buttons are available to add and remove constraints.
Algorithms by Dr. Barry Nelson have been implemented to assist with automatic Ranking and Selection of the best scenarios for a particular response. Often it is hard to determine a clear "best" with statistical rigor. In that case the group of scenarios which contain the best scenarios will be distinguished from those that are not the best. This same algorithm is used in the response charts.
OptQuest is offered for Simio as an optional add-on to the standard Simio products. OptQuest enhances the analysis capabilities of Simio by searching for optimal solutions to your models. OptQuest helps remove some of the complexity by automatically searching for the optimal solution for you. You describe your simulation problem and it searches for input controls to maximize or minimize your objective (i.e. maximizing profit or minimizing cost).
Although the full use of OptQuest for commercial use requires activation, the included evaluation mode allows up to two controls and two constraints, and will produce up to 20 scenarios.
Look in the Experiment Window of the AirportTerminal example model for an example of applying OptQuest to a realistic project.
It is now possible to directly interact with properties of a specific vehicle or entity. Previously it was difficult to do so unless you had a token for that entity. You can now use a bracketed index to reference directly to a specific member of the population. For example "Truck*3+.ResourceState" could be used in a pie chart to show the resource state of the 3rd object named Truck in your system. You can also use expressions for the index and even nest these. This works in State and Event properties, Expressions, and in references on animation objects.
We have improved the expression editor to make it clear when there are additional optional choices available for a function. When you the expression has enough to be considered complete, it will be displayed in bold. When additional choices (required or optional) are available, you will see an indicator that more choices are available.
Any drop down list that could have lots of items now includes a filter at the top that will limit the choices to only those containing the specified characters. For example, typing "server1" into the filter will limit choices to only items involving Server1, or typing "capacity" will limit it to only items involving capacity.
The multi-select feature for the property grid is now available. You can select multiple items and the intersection of their set of properties will show up in the property grid. If they share values for a property, the value will show up, otherwise the value will be blank. You will be able to do things like select multiple links and turn them all bidirectional, or select multiple output nodes and have them all use the same transporter.
Copy/Paste now supports copying spreadsheets to/from many new constructs.
We've added a comprehensive undo and redo capability across the product to make it easier to safely explore and to recover from any accidents. You will notice undo and redo buttons on the quick access toolbar on the upper left. Ctrl-Z and Ctrl-Y also work.
While we have always had support for units on selected properties, we have now extended that support throughout the product.
A Worker Object was added to the Standard Library to make it easier to model typical activities associated with people. A Worker may be used as a moveable resource that is seized and released for process tasks in the system. Additionally, the worker object may be used as a transporter to transport entities between node locations. Workers can follow shift schedules and they have a full set of states to allow tracking and analysis of their activities.
Each Worker object instance defines a dynamic population of moveable unit resources in the modeled system. Each individual worker in the population may have a resource capacity of 0 (Off Shift) or 1 (On Shift). A worker/vehicle can follow an On Shift/Off Shift work schedule or always be available (i.e., have a ‘Fixed' capacity of 1).
Use the Seize and Release steps to seize or release a Worker for a process task. Upon seizing a worker object, you may use the ‘Request Visit' option in the Seize step (Advanced Options) to optionally require the seized worker to visit a specified node location before the seize is considered ‘completed'.
Refer to the two new Worker-related SimBits: ‘WorkerUsesWorkSchedule' and ‘WorkerUsedForMultipleTasks'
For many standard library objects there is now a State Assignments property category where you can easily specify the assignment of state values when an entity is entering an object, or when an entity is ready to exit an object. This feature makes it much easier to do common state assignments without having to use add-on processes and manually place Assign steps.
We have added a new Table Reference Assignment category to the standard library source object. This allow you to associate a particular row and table with an entity that is about to be created or an entity that has just been created, without having to use process logic. This also makes it easier to create entities where the distribution of entity types is specified in a table. See the SimBit ‘SelectEntityTypeFromTable.spfx' for an example.
The Interrupt step may be used to interrupt process delays. A token delaying at a process' Delay step is considered a candidate for interruption if the Interruptible property of the Delay step evaluates to True. To add logic for handling interrupted items (e.g., re-routing logic), the Interrupt step can create new tokens that are associated with the interrupted items. These tokens will exit the 'Interrupted' exit point of the step.
The Interrupt step may be used to model resource preemption scenarios, allowing model logic to interrupt a process delay activity that is using a resource, in order to release the resource for a higher priority activity. This approach allows very flexible preemption capability with precise control over which entities are preempted and how the preempted entities are subsequently processed.
Relational tables allow you to define multiple tables which can automatically reference each other. When using the relational data tables feature, we have added a new viewing option, a Master-Detail View. For rows with "detail" views (collections of rows pointing to a specific keyed row in a table), you'll see a little plus sign at the front of the row you can use to see the detail view. The detail view essentially allows you to view the associated rows of the related table. The detail view can be edited just like the main view (insert, remove rows, edit rows, copy/paste, etc…).
Execution speed is significantly faster. Most users will see their models execute from two times faster (e.g. runs in half the time) to ten times faster or more. The enhancements were implemented throughout the product so your performance improvement will vary depending on exactly what you are doing. One notable enhancement is that experiments with many replications may now run 5 to 10 times faster. Also models with many concurrent entities will be much faster. We even had one customer model that runs over 70 times faster (but that level of improvement will probably be uncommon).
A Documentation Report button has been added to the Project Home ribbon. This generates an html report containing a summary of all objects and the non-default data and properties in your model. This is useful for capturing a snapshot of your model for examination or storage outside of Simio.
Project files can now be saved in a format that is significantly compressed. The new default extension for saving is spfx. New projects will save in this format unless you change the extension to spf (the old format). Existing files will keep their current extension when you click "Save", so old files will continue to save as spf unless you "Save As" and specify the extension spfx.
Starting with Version 3, all sprints with be cross compatible.
An application programming interface (API) is an interface implemented by a software program to enable interaction with other software. Though Simio has had a small but growing API for quite a while, significant work was done since Version 2 to enhance the offering including the introduction of a new method on the IModel interface called BulkUpdate, which can be used to greatly improve performance when adding a large number of objects to a model.