Introducing Simio Version 9.158 – Mid-Year Academic and Public Release – July 2017

Simio 9.158 Overview

Review a highlight of some of the newest features of Simio 9.158 including many enhancements to existing object functionality!

Here are quick video summaries of some of the newest features of Simio 9.158. Detailed release notes are below.

New Features

Station Element - Reneging

The Station element has been enhanced to include reneging, which is when an entity decides to abandon waiting in a queue or station. Within the Advanced Options properties, a Renege Triggers repeating property editor allows users to define multiple triggers for reneging. Triggers can be Time or Event based, and ocne the trigger has occurred, the reneging can happen always or based on a probability or condition of the system.

There is also a new function, NumberReneged, that returns the total number of entities that have abandoned waiting in the station.

Buffer Logic – Reneging Options

Balking options is now included in the input and output buffers many objects including Source, Server, Combiner, Separator and Workstation within the Standard Library, as well as the Filler, Emptier, ItemToFlowConverter and FlowToItemConverter within the Flow Library.

For each input buffer and output buffer, the Balking & Reneging Options includes the balking properties as well as a Renege Triggers repeating property editor to specify one or more methods to trigger reneging within a buffer.

Within the Renege Triggers repeating property editor, there is a Trigger Type property to allow for either ‘Time Based’ or ‘Event Based’ triggering. For Time Based triggering, a Wait Duration expression is specified, while for Event Based triggering, the Triggering Event Name property is displayed.

If reneging is triggered, the action can happen either always (no conditions), or based on a probability or condition of the system. This allows for logic such as an entity evaluating the buffer size after a wait duration to determine whether to remain in the queue. The reneged entity can either be destroyed or sent to a different node for alternative processing.

Simio also includes statistics on the total number of reneged entities for a buffer in the automatically reported results.

State Assignments - On Balking and On Reneging

The Properties window of selected Standard or Flow Library objects has been enhanced to allow optional state assignments whenever an entity is balking at entering a buffer or reneging from a buffer. Options are available for making assignments under different conditions.

Failed and Repaired Events

The ‘Failed’ & ‘Repaired’ events for Standard and Flow Library objects that have resource capabilities and failures are now accessible. These events may now be used in Renege Triggers as event based triggers, thus minimizing or eliminating any excess process logic.

Entity ‘Queueing’ Functions 

To make it easier for a modeler to check in a conditional expression whether an entity is currently waiting for a specific type of constraint, the following new functions will be provided for an entity object:

  • Queuing.IsWaitingResourceAllocationQueue - Returns True (1) if the entity is currently waiting in the AllocationQueue of a resource. Otherwise, the value False (0) is returned.
  • Queuing.IsWaitingMaterialAllocationQueue - Returns True (1) if the entity is currently waiting in the AllocationQueue of a material. Otherwise, the value False (0) is returned.
  • Queuing.IsWaitingStationEntryQueue - Returns True (1) if the entity is currently waiting in the EntryQueue of a station. Otherwise, the value False (0) is returned.
  • Queuing.IsWaitingLinkEntryQueue - Returns True (1) if the entity is currently waiting in the EntryQueue of a link. Otherwise, the value False (0) is returned.
  • Queuing.IsWaitingNodeEntryQueue - Returns True (1) if the entity is currently waiting in the EntryQueue of a node. Otherwise, the value False (0) is returned.
  • Queuing.IsWaitingRidePickupQueue - Returns True (1) if the entity is currently waiting in the RidePickupQueue of a node to be picked up by a transporter. Otherwise, the value False (0) is returned.
  • Queuing.IsWaitingRouteRequestQueue - Returns True (1) if the entity is currently waiting in the RouteRequestQueue of a routing group element to be assigned a destination. Otherwise, the value False (0) is returned.
  • Queuing.IsWaitingBatchLogicParentQueue - Returns True (1) if the entity is currently waiting in the ParentQueue of a batch logic element to collect a batch of other entities. Otherwise, the value False (0) is returned.
  • Queuing.IsWaitingBatchLogicMemberQueue - Returns True (1) if the entity is currently waiting in the MemberQueue of a batch logic element to be added as a member to a batch. Otherwise, the value False (1) is returned.

Server / Combiner / Separator – Task Sequences Enhancement

If using the ‘Task Sequence’ for processing in Server, Combiner, or Separator, and a task’s Process Type is specified as ‘Submodel’, the user now has an option to copy over the attributes of the original entity to the created submodel entity (e.g., state values and table references). Previously only the ‘Create New (No Copying)’ behavior was supported. This new feature allows for greater flexibility for submodel type processing with the task sequences.

New Token Functions

As requested by customers, the Token.ContextObject function has been un-deprecated and for completeness, have added Token.TaskInfo.IDNumber function.

Token.TaskInfo.IDNumber - Returns the unique integer identifier number of the task assigned to the token. It is valid when using task sequences and the Task Precedence Method of either ‘Immediate Predecessors Method’ or ‘Immediate Successors Method’ where the task ID Number is specified.

New String Function

There has been a new string function that will compare sequence number strings.

String.CompareSequenceNumbers(sequenceNumber1, sequenceNumber2) - Compares two specified sequence number strings and returns 0 if the two sequence numbers have no implied dependency relationship, -1 if an item assigned the first sequence number must come before an item assigned the second sequence number, or 1 if an item assigned the first sequence number must come after an item assigned the second sequence number.

Each sequence number argument may be expressed as a string that contains either an integer or a dot- delimited sequence of integers (example: Or, in a data table, you may add a property (column) of type ‘Sequence Number’ and the arguments of this function may be references to row values in such table columns.


  • String.CompareSequenceNumbers(“10”, “10”) will return 0.
  • String.CompareSequenceNumbers(“10”, “20”) will return -1.
  • String.CompareSequenceNumbers(“20”, “10”) will return 1.
  • String.CompareSequenceNumbers(“10.1”, “10.2”) will return 0.
  • String.CompareSequenceNumbers(“10.1”, “20.1”) will return -1.
  • String.CompareSequenceNumbers(“20.1”, “10.1”) will return 1.

User Interface – Snap to Grid

The Snap to Grid has been updated slightly to snap to a quarter of a grid line in the default Facility window upon opening a model. This provides more flexibility in placing objects while maintaining the snap to grid feature ‘on’ setting at the start of the model building process.

Planning Tab Enhancement – Enterprise Edition

Within the Planning tab of Simio Enterprise Edition, the Work Schedules and Changeover Matrices panel buttons have been added to allow easy access to creating and modifying either resource work schedules or changeover matrices times. These are also available in ‘Scheduler mode’.

Updated Visual Studio Templates

The C# Visual Studio Templates has been updated to support Visual Studio 2012, 2013 and 2015, and have added corresponding templates for VB.NET.

New Scan Step

Simio has added a Scan step which provides a new polled waiting approach that allows a modeler to hold a process token until a specified condition is true, where the logical condition may be specified as any arbitrary expression.

Enhancement to Resource Plan Gantt - Selecting a row or rows displays the property grid for the selection - Enterprise Edition

The Resource Plan Gantt has been enhanced so that when a user clicks on a resource name in the Resource Plan, the Resource related tables are displayed in the property view. For example, this will be useful if there is a column in the Resources table than allows the user to specify the work schedule. The enhancement allows the work schedule to be changed for a Resource from the Planning tab.

Option to Toggle Data Table Bindings

There is a new menu item on the Data tab under Binding Options that lets users to NOT do the automatic importing it would normally do for data bound tables. This is a model-level setting that is saved to the project file.

Note that this does not “temporarily remove table bindings” but will bypass the automatic import at start of run. When a model is in this state, bound tables that are set to automatically import show the following statement in red: Automatic importing of bound tables is currently disabled.

Monitor Element Enhancement

The Monitor element is now able to monitor more than one state variable, which will simplify the event-driven waiting approach (Wait step). The enhancement will make it easier to model a single ‘Status Changed’ event that pertains to some logical grouping of state variables in the system, such as a set of variables that relate to the status of an area, a processing location, etc.

For example, suppose a single Monitor element named PackingAreaStatusChanged is defined that is monitoring discrete changes in the state variables Packer1.AllocationQueue, Packer1.ResourceState, Packer2.AllocationQueue, or Packer2.ResourceState. Somewhere in the modeled process logic, perhaps a Wait step is then used to hold a process token until event name PackingAreaStatusChanged occurs and event condition Packer1.ResourceState==0 && Packer2.ResourceState==0 is true.

New NotifyConstraint Step

The new NotifyConstraint step allow users to add custom (i.e. user-defined) constraint entries into the Constraint Log (and by extension the Entity Gantt chart).

Entries in the Constraint log show up like with the first two rows are existing automatic ones and the next two are custom ones.

When the user executes one of these steps with Notification Type set to ‘StartConstraint’, a new entry in the Constraint Log, setting the Start Time column to TimeNow. Then later, when the user executes one of these steps with Notification Type set to ‘EndConstraint’, with matching values for the other properties, that entry is closed in the log by setting the End time column to the current TimeNow.

New Dynamic Selection Rule Property – Filter Expression

The Dynamic Selection Rule grouping of properties has been enhanced to include a Filter Expression. This allows a user to optionally filter out any candidate entities that don’t satisfy a specified logical condition. It is like the Filter Expression property provided by the ‘Smallest Value First’ and ‘Largest Value First’ rules.

New Schedule Functions

New schedule based functions have been added to allow users more flexibility accessing schedule based information. These functions can be accessed using ScheduleName. or SchedulePropertyName.Schedule. (examples of this could be ResourceObjectName.WorkSchedule.Schedule. if the resource is following a work schedule or TableName.SchedulePropertyName.Schedule.)

  • AverageValue(fromDateTime, toDateTime) – Returns the average value over a specified time range.
  • MinimumValue(fromDateTime, toDateTime) – Returns the minimum value over a specified time range.
  • MaximumValue(fromDateTime, toDateTime) – Returns the maximum value over a specified time range.

Table Importing Enhancement

The Binding Options within Data tab and Tables now includes the option to append and update data when importing. If this option is enabled and data is imported into a table with existing data, any new data will be appended to the existing table. If a record already exists (based on a value in the key column of that table), the data will be updated.

Tables - Sequence Destination Property

A standard Data Table can now be changed into a Sequence Table by using the new ‘Sequence Destination’ property type. This can be done by adding a new column of that type or changing an existing column to that type. This is useful if the user has already defined multiple columns in a standard Data Table and realizes it should be a Sequence Table OR if the sequence destination column of a Sequence Table has been accidentally deleted.

New Entity Activity List – Enterprise Edition

Within the Planning tab, Results panel for Simio Enterprise edition, we have added an additional report named Entity Activity List. This report is an entity based listing of all resources and activities that have been allocated over time. The Entity Name, as well as Start Date and End Date are specified. As with the other reports in this section, the ‘Show Detail’ option provides more details on a resource by resource basis.

Pivot Grid – Public Views

Named views in the various pivot grids are now “Public” by default, allowing them to be used by any other pivot grid in the model or any of its experiments:

When using named views in a pivot grid, you’ll now see public ones from the other pivot grids associated with the same model. For example, when viewing the Results pivot grid for a model, you’ll see its own named views, followed by public named views from other pivot grids (including those defined by the model’s Experiments, as well as Planning results in Enterprise edition).

When applying a named view to a pivot grid, Simio will automatically hide or show certain columns as appropriate to the pivot grid. Specifically, the Minimum, Maximum, Half Width, and Standard Deviation columns will be hidden when applying an experiment’s named pivot view to a model’s pivot grid, while the Minimum, Maximum, and Half Width columns will automatically be shown when applying a named pivot view from a model’s pivot grid to an experiment’s pivot grid.

New Application Setting - Allow Add-ins To Create Properties With Invalid Names

There is a new application setting that lets users turn off the validity checking of names of properties created by the API.

Seize Step – Simultaneous Seizing Enhancement

The Seize step is upgraded so if multiple resources are required, there is an option that indicates whether all must be available before any can be seized. If Must Simultaneously Seize is set to ‘True’, all resources must be available before they are seized.

Seize Step – Enhanced Trace

The Simio ‘trace’ for the seize step now allows users to more easily view why a resource or group of resources is seized or not seized.

Standard and Flow Library Enhancements – Server, Combiner, Separator, Filler, Emptier

For task sequence type processing, processing tasks, the Must Simultaneously Seize is specified within the Processing Tasks repeating property. If the resources are specified and referenced within a table or if multiple objects are required as specified by the Number of Objects and/or Units per Object, this new field will be used.

For secondary resources within processing of the various objects, the ‘Other Resource Seizes’ sections of properties each have the option for Must Simultaneously Seize.

List Members in Tables – Enhancement to Seize/Move/Release

Simio added the capability within several steps to allow for list members to also be specified within tables (in addition to Lists). The Seize, Move and Release steps now all allow for the TableName.ColumnName reference to be used as the Object List Name property value. Note that this table reference does not currently appear on the pull-down list for that property. Given that the Standard Library objects use the Seize/Release steps for allocating secondary resources, these table references are also available within the Secondary Resources section of objects (as shown below), as well as the Resource Requirements section within Task Sequence type processing.

Please note that this also includes the use of table state columns (Enterprise edition) for the list which, combined with the Output tables and the RemoveRows step, allows for dynamic runtime building of Seize lists.

Gantt Scroll Wheel Support – Enterprise Edition

Simio Enterprise Edition Gantt charts can now use the scroll wheel on the mouse to zoom in and out. Within either the Resource Gantt or Entity Flow Gantt charts, the cursor should be placed within the time scaler area to enable the scroll wheel for zooming. This now functions similarly to the Simio Portal edition for the Gantt charts.

Enhancement to Allow for Easier Concurrent Modeling

Team and Enterprise Edition licenses no longer check for an overall signature on the entire file. This will enable merges in various source control scenarios to generate still readable files by the user modelers. Note that Simio added an additional signature on the “document info” section of the file that must be present for the file to load if the signature of the entire file is missing or incorrect. Thus, if a user does wish to use this functionality, they will need at least one save in the new version of Simio to generate this document info signature.

For multi-file save targets, Simio will save each Object Definition to its own file and each Table to its own file *IF* the project level property setting of Save Project As Multiple Files property is set to ‘True’ (which is the default for new projects). If it’s set to ‘False’ (the setting for all existing projects), Simio will continue saving the way it previously did.

To make use of the multi-file feature, the user should save the project as a .simproj. When the model is saved with this target, each object in the model will has its information stored in a folder by the same name located in the Model.Files\Models folder. For example, the HierarchyWithTables SimBit would look as follows:

Each folder will contain an XML file with information pertaining to that object type. If multiple modelers are working on the same project, but different objects, the updated object folder can be copied over the existing object folder. In the above example, if a modeler wanted to make changes only to the SearchTable object, the modeler can make the edits in a separate copy of the model, save the model as a  .simproj and then replace the old SearchTable folder with the updated folder.


Academic Licensing

Please Note: In this and future Simio versions, projects saved with an academic license will no longer have their contents written in human-readable XML.

New Identifier Rules - Expanded

Identifiers, such as names of objects within the Facility window and elements within the Definitions window, can now start with a number and/or use expanded character set. For example, ‘123abc’ is now a valid object and element name. We also have greatly expanded the available characters that are valid, so all Unicode uppercase and lowercase letter categories and well as others are supported

Simio doesn’t allow identifiers that evaluate to numbers so ‘123’ is not valid, but ‘3f4’ is valid. ‘3e4’ is not valid because that is exponential notation for 3 x 10^4.

Routing Group – Route Selection Algorithm Enhancements

The RoutingGroup element has been enhanced so that the route selection algorithm prevents a lower priority entity from bypassing a route request queue that potentially contains higher priority entities. Additionally, if multiple destination candidates available in the list of possible destination nodes, the route selection algorithm consistently applies the destination selection goal specified on the Route step or TransferNode.

More specifically, there are two changes that have been made to the route selection algorithm

  • When a Route step is executed, the arriving entity will no longer try to immediately select a destination. Instead, the entity will always be placed into the route request queue. The event types that trigger a routing group to schedule a late priority current event to try to select entities from its route request queue will now include any new entity arrival. See RoutingGroup element help for more information on current/new selection algorithms.

    In the Run tab of the Ribbon, in Advanced Compatibility Settings, there will be a new Allow Route Request Queue Bypassing setting. The default value for this setting will be True for old models and False for new models.
  • When checking its route request queue, the new selection algorithm used by the routing group will be as follows:
  • If no dynamic selection rule is being used (static queue ranking rule only)

        • Use the route request queue’s static ranking rule to select a queue item.
        • If there are multiple possible destination nodes available for the selected queue item, then use the entity’s destination selection goal to select one of those nodes.
        • If dynamic selection rule is being used

              • Find the best route request queue item for each possible destination node using the specified dynamic selection rule.
              • Use the route request queue’s static ranking rule to select a queue item from the best queue items found.
              • Memory Check for Trace

                If trace is on and Simio detects during trace that there is less than 50 MB of memory left, it now stops tracing and give you a warning, allowing for a model save.

                New SimBits

                We have added several new simbits during this release:

                • BatchingProcessUsingScanStepApproach - Batching process at a server where the batch size control is modeled using a Scan step approach (polled waiting).
                • BatchingProcessUsingWaitStepApproach - Batching process at a server where the batch size control is modeled using a Wait step approach (event-driven waiting).
                • RenegingCombiner – this model illustrates a palletizer or similar machine (Combiner object) that batches a standard number of parts together. After the parent (pallet) entity has waited for a given amount of time for the individual parts to arrive, it will renege, reset the batch size to the number of member parts currently waiting and then re-enter the combiner to continue with a smaller batch size.
                • VehicleDoingSimultaneousLoading – this model illustrates three entity types waiting to be picked up by a vehicle at the same time. Each entity type has a different load time and the vehicle departs after the last entity finishes loading. The logic in this model could be used to customize the Vehicle object.
                • SourceWithBalkingIfBlocked – This model shows the balking of entity arrivals at a source if there is no immediate space at the downstream server.
                • ServerQueueWithBalkingAndReneging – This model includes a single server queue with balking and reneging (impatient customers). Customers will balk from the queue if it’s above a certain length. Then, once customers enter the queue, they have a waiting time after which they evaluate their place in the line to determine whether or not to renege.
                • MultiServerSystemWithJockeying – This model is service system that consists of a group of parallel servers, where each server has its own waiting line. Customers switch between lines if they think they will get served faster.