Release 2, Sprint 40

This sprint provides a large number of new features including significant enhancements to the Experiment Window and the Response Charts window, a new Worker object in the standard library, enhancements to Vehicles, Resources, Data Tables, the Source object, enhanced documentation, thirteen new or updated SimBits, and OptQuest evaluation software (Beta) tightly integrated into the Experiment Window.

Experiment Window

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 (see below).

Response Charts

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:

Sprint 40
  • Maximum Value
  • Upper Percentile - User Definable
  • Confidence Interval Around Upper Percentile
  • Mean
  • Confidence Interval Around Mean
  • Median
  • Lower Percentile - User Definable
  • Confidence Interval for Lower Percentile
  • Minimum Value

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.

Worker Object

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’

Vehicle Object

We have added both major and minor enhancements to the Vehicle object. Within the properties window many of the properties have been relabeled and reorganized for both clarity and consistency with other similar objects. The somewhat confusing Idle Action of ‘None’ was changed to the clearer ‘Remain In Place’. Two new add-on process triggers were added ('Allocated' and 'Released') to allow better control and the 'Allocated' and 'Released' events fired by the vehicle were made public. We have added new states and state tracking to provide better analysis of vehicle activities. The ‘ResourceState’ state variable for the Vehicle object now tracks the possible state values:

  • Idle - The vehicle resource is not allocated to any task.
  • Busy - The vehicle resource has been seized by another object in the system for non- transport related tasks.
  • Transporting - The vehicle resource has been allocated to a set of transport tasks.
  • Failed - The Vehicle is failed and unable to move or perform transport pickups/drop-offs. Any transport or non-transport related processing using the vehicle resource has been assumed suspended or blocked.
  • FailedBusy - The vehicle has failed while seized by some other object in the system for a non-transport related task, but the task is assumed unaffected by the vehicle failure because the vehicle has already been moved to the task’s desired location.

Source Object

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.

Resource Object

We have added new states and state tracking to provide better analysis of resource activities. The ResourceState now has the following possible state values:

Idle - The resource is not allocated to any task. Busy - The resource has capacity allocated to one or more tasks. Failed - The resource is failed and not allocated to any tasks. OffShift - The resource is off shift and not allocated to any tasks. FailedBusy - The resource is failed but allocated to one or more tasks and still assumed ‘Busy’ though failed. OffShiftBusy - The resource is off shift but allocated to one or more tasks and still assumed ‘Busy’ though off shift.

The ‘FailedBusy’ and ‘OffShiftBusy’ states are new. At the beginning of a failure or off-shift period for the Resource object, if the resource is allocated to process tasks, then by default the resource is now considered ‘Busy’ during that time and its state is set to ‘FailedBusy’ or ‘OffShiftBusy’ respectively. The downtime period begins immediately, and no new seizes of the resource may take place, but by default any processes out in the system utilizing the resource are assumed to not be affected and will finish their processing. Refer to the new SimBit ‘ResourceStateWhenOffShift’.

To interrupt processes utilizing a resource when a downtime period begins, you may add your own custom logic using tools such as the Interrupt step to preempt and release the resource during the downtime period.


The following new SimBits were added:

  • ExamplesOfFunctions_StaticObjects
  • ExamplesOfFunctions_DynamicObjects
  • UsingAStorageQueue
  • ResourceStateWhenOffShift
  • AddAndRemoveCapacity
  • MovementInFreeSpace_WithATargetLocation
  • WorkerUsesWorkSchedule
  • WorkerUsedForMultipleTasks

The following SimBits were updated to illustrate new techniques:

  • EntityFollowsSequenceWithTable
  • EntityFollowsSequenceWithTable2
  • InterruptingServerWithMultipleCapacity
  • SelectEntityTypeFromTable
  • SortingConveyorSystem

ModelEntity Object

We made some minor changes within the properties window to improve both clarity and consistency with other similar objects.


When using the relational data tables feature, we have added a new viewing option, a Master- Detail View. For things 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…).

New Help Topics

In addition to continually enhancing our help and reference materials to describe new and revised features, we are continually improving our general content to better explain concepts that users have found confusing. Here are some new topics added to help better explain the available functions, states and events:

  • Functions, States and Events for Entity Objects
  • Functions, States and Events for Objects Enabled as Resources
  • Functions, States and Events for Node Objects
  • Functions, States and Events for Link Objects
  • Functions, States and Events for Transporter Objects

Also please refer to the two new SimBits: ‘ExamplesOfFunctions_StaticObjects’ and ‘ExamplesOfFunctions_DynamicObjects’.

User Interface

A new keyboard shortcut (‘Ctrl’ + ‘+’) was put in to insert rows into any data grid where items can be added (e.g. things like tables and lists).

Resized Entity Object Symbols

The size of the default entity has been reduced to better reflect sizes of typical entities.

OptQuest (Beta)

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 a up to 20 scenarios.

Look in the Experiment Window of the AirportTerminal example model for an example of applying OptQuest to a realistic project.