Release 6, Sprint 92-97

What's New You Ask?

We're still not slowing down... our new development continues at incredible speeds. Simio continues to aggressively introduce innovations that are changing the landscape of simulation and stimulating new development across the industry. We are continuing to make Simio easier to use and more flexible, while adding still more technology breakthroughs. And our academic offerings leave no reason to go elsewhere.

This page highlights some of the wealth of new features that have been added in the last three months.

Enhanced Documentation

We know that many textbooks are outrageously priced. We take special effort to keep Simio book prices reasonable. The following books, all by noted authors, are now available in print version for under $40!

Rapid Modeling Solutions: Introduction to Simulation and Simio (Pegden and Sturrock) is a 150 page e-book included with Simio (see Support ribbon) as well as available in print. This is a significant update to our former e-book which has new content including an introduction to simulation, simulation success skills, and an enhanced glossary.

Simulation Modeling with Simio: A Workbook, (Joines and Roberts) is a 391 page workbook just updated to a 3rd Edition featuring use of many new Simio features as well as the new animated symbol library.

Simio and Simulation: Modeling, Analysis, Applications (Kelton, Smith, and Sturrock) is a 416 page textbook also just updated to a 3rd Edition including several new sections on simulation fundamentals, many new Simio features, and a new appendix on simulation-based scheduling.

Flow Library

New Flow Library Object - ContainerEntity
The ContainerEntity object may be used to model a type of moveable container (e.g., barrels or totes) for carrying flow entities representing quantities of fluids or other mass.
ContainerEntities include a container element that may include initial contents within the container. Similar to a ModelEntity, the ContainerEntity may have travel and routing logic (initial desired speed, network, priority and sequence). Additional features, such as state assignments and add-on processes when the container is full and empty, are also available.

New Flow Library Object - Filler
The Filler object may be used to model a filling process that fills container entities with flow entities representing quantities of fluids or other mass. The filling flow rate of the Filler is regulated by its ‘FlowInput’ flow node. Container entities enter the Filler through its ‘ContainerInput’ basic node and exit the Filler from its ‘Output’ transfer node.
The Filler is similar to the Server in that it has 3 stations, including the InputBuffer, Processing and OutputBuffer stations. Container entities may be filled until they are full or to a specific quantity. As with many objects in the Standard Library, the Filler object may have a work schedule, failures, state assignments and multiple add-on process triggers.

New Flow Library Object – Emptier
The Emptier object may be used to model an emptying process that removes flow product from container entities. The flow rate of the Emptier is regulated by its ‘FlowOutput’ flow node.
The Emptier is similar to the Server and Filler objects in that it has 3 stations, including the InputBuffer, Processing and OutputBuffer stations. Container entities may be emptied until they are completely empty or until a specific quantity has been removed. As with many objects in the Standard Library, the Emptier object may have a work schedule, failures, state assignments and multiple add-on process triggers.

Flow Library Enhancement
The FlowNode object (and associated nodes within the FlowSource and Tank objects) has been enhanced to include a Split Allocation Rule of ‘Evenly If Possible’ for splitting flow on the output flow from the node. When this rule is used, the flow regulator will distribute flow as evenly as possible to the node’s outbound links while maximizing total outflow.

Standard Library

Evaluating Seize Request for Server, Combiner, Separator, Workstation, Filler, and Emptier
Like the Worker and Resource objects, there is now an ‘Evaluating Seize Request’ add-on process trigger available for Server, Combiner, Separator, Workstation, Filler, and Emptier. These processes can be used when the object is evaluating whether to accept or reject a request to seize capacity of the particular object. In the executed decision process, assigning a value of less than or equal to ‘0’ to the executing token’s ReturnValue state (Token.ReturnValue) indicates that the seize request is rejected. This feature allows the server-type object to do “smart” seizes like other resource objects without having to subclass them.

Dashboard Reports

Dashboard reports allow you to display a dashboard based report of generated model data. A dashboard allows you to organize and present model information that is customizable and easy to read. Model data can be displayed in many graphical forms such as grids, charts and gauges. It also allows you to customize your dashboard by adding images, text boxes and filter ranges.

The major components of the Dashboard Report tool include creating a dashboard report and selecting a dashboard report to view, edit, rename or remove. There is also the option to set display settings such as time, length and distance, volume and mass and weight.


Multiple Symbols on Standard Library and Flow Library Objects
We have added pre-defined multiple animation symbols for many of the objects within the Standard and Flow Libraries. When you place an object, such as a Server, you will now see that there are multiple symbol values associated with that object, each with a distinguishing color.
For example, with a Server, there are 5 states including Starved, Processing, Blocked, Failed and Offshift. The default symbol value (0) is grey, but the Server automatically changes to green when the symbol value is 1 (Processing), 2 (Blocked), 3 (Failed) and 4 (OffShift). This is based on the Current Symbol Index for the Server, which is ‘Server.ResourceState’ by default.
If you resize the first object in the list, Simio will automatically resize all the corresponding objects. If you change the symbol from the default ‘block’ to something like a drill, for example, Simio will automatically change all associated pictures to the drill symbol, using the same color as the original (we do not change colors of new symbol pictures). 

Ability to Assign Additional Symbols for User Defined Objects through External Panel
The multiple symbols on library objects feature previously described is available because of the new capability to assign additional symbols for an object’s external view through the Definitions tab / External panel of the object.
Now, instead of just an External window, there is an Additional Symbols tab that will allow users to define the look, color and texture of multiple symbols for that object definition (not just the object instance when it is placed in a model).

Object Height on Status Objects
Object Height (on the Drawing ribbon) now applies to Status Label, Floor Label, Status Pie, Circular Gauge and Linear Gauge. If any of these have a non-zero height, they will be drawn as a box, with the same texture on the two largest sides. This is useful for creating a billboard or upright status information display as with the sign on a post illustrated here.

Merge/No Merge Options on Appearance Ribbon for Connecting Links - When a Node is highlighted, the Appearance ribbon now includes Merge and No Merge options for graphically showing the links that intersect at the node. Merge will smoothly connect the two paths, while No Merge will show a slight disconnect. This is primarily used when the paths coming into and out of the node include path decorators.

New Animations for Moving Objects (Walking People)  - We have added a number of new libraries of ‘animated’ moving symbols to support hospital, military/security, and various other people-intensive applications. Prior to this sprint, we had animated males and females. Our animations now additionally include children, elderly persons, soldiers and toons.

The Entity Instances icon enables users to visibly turn on and off the Entity and Transporter instances placed in the Facility window during the simulation run. For old models, this icon is enabled and will show all instances of Entity and Transporter objects in the Facility window. For new models, this icon is initially disabled.

The Dynamic Labels icon works in conjunction with a new property on Entities and Transporters (which includes Worker / Vehicle) named Dynamic Label Text (in the Animation category of properties). The Dynamic Label Text is an expression which returns a string to show a floating label below a dynamic entity at runtime. The Dynamic Labels icon on the Visibility ribbon allows users to enable or disable these labels separately from the (static) Labels. This floating label is similar to the label that can be placed in the background, in that is always “faces” the viewer and is always visible regardless of zoom level unless obstructed by another label or object. It is particularly useful when you have models covering a large scale and you want to locate an entity (for example see truck traffic on miles of roadway).

User Interface

Expression Editor Resize
The Expression Editor can now be resized to allow for viewing/input of larger expressions. To resize the editor, simply click and drag the left portion of the expression editor and resize it. This size will remain for all expression editing until it is changed by the user.

Gesture Support in 3D for Touch Screen Users
Pinch-to-zoom and two-finger-rotate gestures are now available within the 3D view, provided the user has a touch screen.

Pdf Viewer for SimBits
We have added a new pdf viewer for displaying pdf file associated with any model files. This interface allows zooming in/out as well as printing. This allowed us to continue to show our pdf files on the desktop, as various windows operating systems were handling pdf viewers differently.

Support for Nautical Distances and Speeds
If you are modeling shipping systems you will appreciate that Simio now supports length units of Nautical Miles and speed units of Nautical Miles per Hour (commonly known as a “knot”). For you land lubbers, a nautical mile represents 1 minute of longitude at the equator and 1 knot is about 1.15 mph.

Settings Button on File Menu
We have added a Settings option on the main File menu which allows users to specify their graphics card for displaying 3D graphics (currently includes DirectX and Open GL). These application settings also include options to load (or suppress loading) the Standard Library and Flow Library, plus an option to specify multiple additional user libraries to load upon opening Simio. For example if you seldom use the Flow Library, but frequently use the Crane Library, you can reflect that here for automatic loading

Experiment Window Use of Control – Category Name
When model properties are defined, they may be specified into different categories, using the Category Name field on the property. We now utilize these category names when displaying the properties within an experiment as well.

On Interval Process Option for Time-Indexed Tables
Within a Time-Indexed table (Advanced Options properties on the table), the optional On Interval Process is now available. When the index into the table is updated based on the time-interval specified, the On Interval Process is run at the start of each interval for any variable updating or calculations that a user may wish to make.


We now have three new logs that provide detailed information regarding state variables, tally statistics and material usage. For each of the State Statistic, Tally Statistic and Material elements, there is a new Log Observations / Log Material Usage option that can be specified as ‘True’ to enable logging.

The State Observation Log provides state variable information for those State Statistic elements that have logging specified as ‘True’. When the value of a state variable or expression changes, that value is recorded in the log.

The Tally Observation Log displays Tally Statistic observation values during the simulation run.

The Material Usage Log displays information on materials that are produced and consumed during the simulation run.

SimBits and Examples

DashboardReportTallies.spfxThis SimBit takes the original TallyStatisticsInTables project and includes a dashboard report plot for one of the entity type tallies in the system.

DashboardReportInteractiveResults.spfxThis SimBit is a revision of the VehicleVisitsServiceCenter project that graphically displays the resource utilization as well as a vehicle’s pickup and drop off times in chart format. 

Updated RPS Example - We have updated the RPSExample.spfx project to include forklift for material transfers, improved animation, and dashboard reports including Dispatch List and Order Details.

DisableFailureTimers.spfxThis SimBit illustrates how to turn off Failures in a model that runs only until a given number of entities in the system has been processed. Typically, failure events will keep a simulation model running even though there may be no other events occurring in the system.

KeepQueueTimeForLast10Entities.spfxThis SimBit demonstrates the use of storage queues to hold entity information while the actual entity is processing elsewhere. Copies of the most recent 10 entities in a queue are held in a storage queue for calculating a moving average type wait time statistics.

ChangingQueuesWhenServerFails.spfxThis SimBit shows the logic involved for searching an input queue of a server when the server fails to remove and redirect entities to another server for processing.

CheckingEntityAheadOnLink.spfxThis SimBit uses the EntityAheadOnLink function on a link to evaluate and make decisions on entity link spacing.

WF_AdditionalResource.spfxThis SimBit illustrates a work flow environment where multiple entity types require a different number of resources for processing and functions are used for processing times.

WF_Authorization.spfx – This SimBit illustrates the use of multiple sets of workers within a work flow environment such that various types of entities require workers with different sets of skills for processing.

SimpleFiller – This model illustrates the use of the new Filler and ContainerEntity objects within the Flow Library. ContainerEntity objects enter the Filler as discrete entities, while flow from a FlowSource enters the Filler object as flow type entities. The containers are filled and a full ContainerEntity exits the Filler to a Sink.

Performance Improvement

Table Performance Enhanced
Opening a grid view (or expanding a detail view) that has a foreign key column where there were a lot of foreign key selections should now be much faster. Combo drop downs in general should be faster as well.

Memory Usage for States
We now use much less memory for non-scalar states (e.g., vectors, matrix). This is especially noticeable with state arrays on entities.

Profile Reporting for Run Performance Evaluation
Within the Advanced Options button of the Run ribbon, there is a new option to Enable Run-Time Profiling. If this option is enabled, during interactive runs Simio will record execution counts and timing for various parts of the model. The results are summarized in the Profile window, which can be opened by selecting the Profile button in the windows area of the Project Home ribbon. This will allow users to evaluate where performance improvements to their model may be made.

General Functions

String.NewLine Function
The String.NewLine function will allow you to now put various strings together and a line is generated between the strings. This new string function is particularly useful in Write steps or with the Dynamic Labels described above. For example, within a Dynamic Label Text step, the expression "My name is:" + String.NewLine + Entity.Name will result in a label readable regardless of zoom level.

Enterprise Features

Gantt Visibility Option (Enterprise only)
There's a setting on each entity instance called "Gantt Visibility", an expression that is evaluated for each row in the Resource Usage Log, Transporter Usage Log, and Constraint log, to determine if this row should appear in the Entity Gantt chart.

Transporter Usage Log (Enterprise only)
The Transporter Usage Log now has "From Node" and "To Node" columns.

New Regulator Functions

OutputFlowReceivers.NumberItems - Returns the current number of entities receiving outflow from the regulator.
OutputFlowReceivers.FirstItem - Returns a reference to the first entity in the list of entities currently receiving outflow from the regulator.
OutputFlowReceivers.LastItem - Returns a reference to the last entity in the list of entities currently receiving outflow from the regulator.
OutputFlowReceivers.IndexOfItem(entity)- Returns a reference to the entity at a specified index position in the list of entities currently receiving outflow from the regulator.
OutputFlowReceivers.ItemAtIndex(index)- Returns the one-based index of a specified entity in the list of entities currently receiving outflow from the regulator. If the entity is not a current output flow receiver of the regulator then the value 0 is returned.
OutputFlowReceivers.Contains(entity)- Returns True (1) if the list of entities currently receiving outflow from the regulator includes the specified entity. Otherwise, the value False (0) is returned.

Table Property Functions

In previous software versions, the object/model could have a Table type property. However, there were some restrictions on when this property could be used. We now support the following table property syntax:
TableProperty[row, column] - Returns a value from a row, column location of a table pointed to by a table property. NOTE: row and column must both resolve to integer values.
TableProperty.AvailableRowCount - Returns the number of rows for a table pointed to by a table property.
TableProperty.TimeIndexedRow - Returns the time indexed row of a table pointed to by a table property.