Introducing Simio Version 10.174 – July 2018

Simio 10.174 Overview

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

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

New Features

Separator – Buffer Logic support for Balking / Reneging from Member Output Buffer

We added support for balking and reneging from most input/output buffers within the Standard Library objects. However, one buffer that this did not include was the member output buffer for the Separator object. This object has now been enhanced to include the balking/reneging features as well.

New Token Wait Action for Create, Remove, UnBatch, and Search steps

The Create, Remove, UnBatch and Search steps all consist of the original (or parent) token exit from the right of the step, as well as the created/removed/member/found exit from the bottom of the step. By default, the created/removed/member/found tokens will exit first and continue until a delay in processing, followed by the original/parent token processing. The use of a Delay step with Math dot Epsilon could have been used to change this processing order.

These steps now include a Token Wait Action property to help users determine how the tokens exit the step. For compatibility, the default value of this property is ‘NewTokensExitFirst’ which allows the tokens to exit/process as they always have. Two additional options are ‘NoWait’ and ‘WaitUntilNewTokenProcessingCompleted’. ‘NoWait’ indicates that the execution of any new tokens (from created/removed/member/found exit) will be scheduled on the simulation’s current event calendar as an early priority event and that the original (or parent) token will immediately exit the step first. If the action is ‘WaitUntilNewTokenProcessingCompleted’, the original token will wait until the processing has been completed for all new tokens associated with created/removed/member/found before exiting. This includes any Delay steps of Math.Epsilon that the new tokens may encounter.

Search Step Enhancements

Because of feedback from our Simio Conference, we have made several other changes to the Search step functionality, including

  1. The Collection Type ‘ReservationOwners’ is now available to search the list of objects that have currently reserved capacity of a specified resource.
  2. If searching table rows, the table row references of the original token are now copied to any new tokens. Search steps in models built prior to Sprint 166 will run as they had and not include this functionality.
  3. The Search Types ‘Forward’ & ‘Backward’ no longer sum a specified Search Expression. Those search types are now simply for the most common use case of searching a collection of objects or rows of a table with an optional Match Condition. This simplifies the default presentation of the Search step’s properties by no longer showing Search Expression.
    New ‘ForwardSumExpression’ & ‘BackwardSumExpression’ search types are now provided if the expression summing behavior is desired. Search steps added prior to Sprint 166 will now have ‘ForwardSumExpression’ instead of ‘Forward’ and ‘BackwardSumExpression’ instead of ‘Backward’ for compatibility reasons.
  4. In conjunction with the above change, a new Save Search Expression Sum property is now provided along with the Search Expression property if the search type is ‘MinimizeExpression’, ‘MaximizeExpression’, ‘ForwardSumExpression’, or‘BackwardSumExpression’. This new approach was done to make it easier for users to both understand step behavior as well as to avoid unit conversion mistakes because we can save the search expression sum in a state variable of some unit type.
  5. The Limit property has been moved from the Advanced Options section of properties to the Basic Logic section of properties, as requested by several users.
  6. While making the other enhancements in this list, a small performance improvement in the code was identified if searching table rows. Simple test models run about 5-6% faster after the change.

State Statistic Element Enhancement

This element now allows for non-static Display Category value for use for the State Statistic element in the Gantt. This provides users the capability of using table data to categorize auto-created state statistic elements.

RidePickupQueue and Other Queue Statistics Changes

Queue statistics were the only type of statistics in that engine whereby, if the Report Statistics property of the parent object or element was set to ‘False’, then those statistics were neither collected or reported to the Results. No other statistics behaved that way, such as Tally Statistic or resource or entity population statistics. That behavior was sometimes causing user confusion.

Now, ALL statistics in the product are always collected. Thus any statistic function being referenced in an expression (such as animating SomeTransferNode.RidePickupQueue.AverageTimeWaiting) will always return the expected value.

The Report Statistics property behavior is now consistent across the board. For any object or element, that property simply filters out any automatic statistics reported by that object or element to the Results view. By default, the Report Statistic property for BasicNode and TransferNode is set to ‘False’, to simplify the default Results view presentation.

The potential confusion with using the queue statistics functions has now been eliminated.

RoutingGroup Element – On Confirming Destination Node Assignment Process

Within the Advanced Options of the RoutingGroup element, we have added a new process that may be called, On Confirming Destination Node Assignment Process. This was a user requested feature.

When using a dynamic selection rule, the existing On Evaluating Route Request Process is executed for every possible entity and destination node combination, to filter the list of possible destination node assignments. The best destination node assignment from the candidates that made it through the filtering is then selected per the specified rule.

The new On Confirming Destination Node Assignment Process on the other hand is only executed whenever a destination node assignment has been selected, to confirm it. If this decision process returns False, then the routing group goes back to the drawing board and using the dynamic selection rule again looking for the next best entity/node combination (which would then have to be confirmed and so forth).

BatchLogic Element/Standard Library Combiner – Multiple Enhancements

The BatchLogic element and related Combiner object within the Standard Library have several enhancements based on multiple user requests. These include:

  1. Allow Parent & Member Match Expressions To Return Values Of Any Data Type (e.g. Strings) This enhancement will allow matching attributes of any data type (e.g., strings).
    For example, you can now specify the Matching Rule for a Combiner or BatchLogic element as ‘Match Members’ and specify the Member Match Expression as ‘Entity.EntityType’, which means to only group members together that are of the same entity type reference. Or, as another example, specify the Member Match Expression as ‘Orders.OrderID’ where that table value to group member entities together is an order identifier string.
    Note that the trace detail for the Batch step/BatchLogic element was also to provide more detail in the trace of the match expression values being used to do the batching.
  2. Handling Simultaneous Entity Arrivals - Schedule Late Current Event To Try Batching When Batch Queue Item Inserted
    In Run Setup -> Advanced Compatibility Settings, a Schedule Late Current Event To Try Batching When Batch Queue Item Inserted compatibility setting was added.
    This setting indicates whether to schedule a late priority current event to try batching whenever a new item has been inserted into the parent or member queue of a batch logic element. Otherwise, batching will be immediately attempted before the execution of any other simulation logic in the system. To better handle simultaneous entity arrivals to batching queues, the recommended value for this setting is ‘True’.
    This setting is ‘False’ by default for models saved in Sprint 166 version or older, which was the implicit setting up to that point. The setting is ‘True’ for new models.

Suspend / Resume Steps – Enhancement

Both the Suspend and Resume steps now allow the ability to suspend and resume batching done within a Batch Logic element. The Suspend Type and Resume Type properties on these steps now include the option for ‘BatchLogic’.

suspend batch

resume batch

Standard Library Combiner – New Suspend Batching When Down Property

There is a new property for the Combiner object within the Standard Library, shown below within the Batching Logic section of properties. When the Suspend Batching When Down is set to ‘True’, the actual collection of batches will be stopped if the Combiner has failed or changes capacity to zero from a work schedule shift change. This means that the parent and member entities will reside in the input queues of the Combiner and not attempt batching. If this new property is set to ‘False’, parent and member entities will continue the ‘batching’ process and will be removed from the parent and member input queues but will not move through the Combiner object until the failure is repaired or work schedule changes.

*Note: The default value of this property is ‘True’ for new models, but ‘False’ if updating an old model (as that was the implicit setting in the previous object versions)

Standard Library Combiner – New Suspend Batching When Down Property

Model Properties/Compatibility – Parse Non-Entity Associated Objects for Property Reference

Within a model’s property window, under the Advanced Options / Compatibility section of properties, we have added a Parse Non-Entity Associated Objects for Property Reference property. In models built in sprint 166 and prior, this value will implicitly be set to ‘False’. This was a user requested issue that changed previous software behavior.

An Object, such as a custom server named MyServer for example, may have a property, such as a Table type property named MyTable, that can be referenced within the main model when that object is placed. Thus, in the above example, a SetRow step may reference ‘MyServe.MyTable’ as the Table Name property to set a particular table (based on the associated object MyServer’s property value for MyTable) row reference for any of the MyServer objects placed in a model.

Decision/OnRunEnding Processes - Remove Step Type Restrictions with Continued Error If Any Token Delay

Previously, Simio allowed only a specific set of steps (for example Assign, Decide) to be used in a decision process (e.g., the OnEvaluatingSeizeRequest process of a resource) or an OnRunEnding process of an object. The step type restrictions have been removed (thus allowing steps, such as user-defined Write step, per customer request). Simio continues, however, to issue an error when a token is delayed for any reason, such as with a Delay or Wait step, within a decision or OnRunEnding process.

Simio File > Settings … Graphics - DirectX 11, Anti-aliasing, and Hardware Skeletal Animation Support

There are now a few new options in the File -> Settings dialog related to graphics:

  1. An expanded set of options for the Graphics Type. Note that “DirectX” or “SoftwareDirectX” (currently) actually mean DirectX 9. Users also can explicitly say which DirectX they want. Note
    also that “SoftwareDirectX11” is using the DirectX WARP driver ( ), which should be a much better option than the existing SoftwareDirectX9 for VM.

  2. graphics
  3. A new Anti-aliasing Support option. When ‘Auto’ is selected, will be enabled for DirectX 11 and disabled for everything else.

  4. Anti-aliasing Support
  5. A new Hardware Skeletal Animation option. When in ‘Auto’ mode, will be enabled by default for DirectX 11, disabled for others.

  6. Anti-aliasing Support

Show Commonly Used Properties Only feature – Removed/Obsolete

Based on customer feedback, we have removed the Show Commonly Used Properties Only checkbox that used to reside at the top of all objects. This feature, if checked (default value) would cause only a few of the properties of an object to be visible. This was originally added to enable beginner users to see smaller amounts of information when they first started using Simio objects. The associated Commonly Used Property for object properties has also been removed.

Resource Type Objects - Log Resource Usage Property Enhancement

Within any resource type of object, such as Server, Worker, Vehicle, etc, there is a Log Resource Usage property under the Advanced Options section of properties. This Boolean (True/False) property can now be mapped to a model property. This is useful if you want to, for example, set up different groupings of resources that can be selectively included in the Resource Gantt by toggling a single property on the model.

Entity Workflow Gantt Enhancement – Enterprise Edition

In September 2017, we made some changes to the Entity Workflow Gantt to allow for task categorization using Task Group and Task Row within the Gantt ribbon. Now, we’ve added a different type of categorization within the main entity portion of the Gantt to allow for additional categorization as well. The new Owner Row option within the Gantt ribbon allows the user to split out the “main” time items into sub-rows under the main row.

Entity Workflow Gantt Enhancement – Enterprise Edition

Timer Element for Arrival Tables – Enhancements

We have added/changed several features within the Interval Type ‘ArrivalTable’ for the Timer element.
These changes are also reflected within the Source object.

The Timer element now will exclude unrelated rows if an arrival table used to schedule timer events has primary key/foreign key relationships. There is a compatibility setting Exclude Unrelated Rows In Timer Arrival Tables is set to ‘False’ for all models built prior to sprint 170 and ‘True’ for all models built in 170+. This will allow a single arrival table to be referenced from multiple source objects using foreign key reference. For example, if the model has Store1, Store2 and Store3 sources, a single arrival table may include the arrival time of orders but include all the various stores.

The Reset Event Name property is now available if a Timer’s Interval Type is ‘ArrivalTable’. Resetting a Timer that is using an arrival table to schedule events simply resets its EventCount (may be pertinent if using the Maximum Events stopping condition) and resets its ElapsedTime state value.

If the Repeat Arrival Pattern property is ‘True’, the Timer now re-evaluates the Arrival Events Per Time Slot property at each discrete time in the table on every recurrence. Thus, you can now reasonably specify a random distribution for the number of arrival events per time slot. Previously, that property was evaluated once at initialization, and the number of arrival events for the time slot was then fixed to that initial value on each recurrence.

Task Log and Gantt Enhancements – Task State (Enterprise Edition)

We have added a Task State Log and incorporated the information to the Task Id field within the Task Log. There are now three possible task states in the log and associated Gantts:

  1. Executing – The task was executing (incurring the specified processing time). - SOLID
  2. Constrained – An active constraint was holding up execution of the task (e.g., waiting time for a secondary resource or some material). - EMPTY
  3. Suspended – The execution of the task was suspended (this will happen if the primary resource or a secondary resource goes off-shift and the Off-Shift Rule is ‘Suspend Processing’). - HATCHED


Task Sequences Element Enhancement – Loopback Branches

We have enhanced the Task Sequences element to include a repeating property editor of loopback branches. This will allow for users to include conditional and/or probabilistic looping within a Task Sequence. In the below example, after Task3, 50% of the entities will loop back to Task2 and continue processing through the task sequence again. After Task4, 25% of the entities will loop back to Task2 and continue processing through the task sequence again.


Server, Combiner and Separator – Loopback Branches Enhancements

With the addition of the loopback branches to the Task Sequence element, these same enhancements have been made to the Server, Combiner and Separator. All these objects currently include the Task Sequence option for specifying processing information. If the object’s Processing Type is set to ‘Task Sequence’ and there are one or more entries in the Processing Tasks repeating editor, the Loopback Branches option will be shown.


Server, Combiner, and Separator – Task Sequence Process Type Enhancements

A State Assignments property category is now available for an individual processing task within the Task Sequence processing of a Server, Combiner or Separator. This will allow users to make changes to state variables within the repeatable property editor instead of through an add-on process. State assignments can be made when the task is ready to begin (not yet seizing resources or consuming materials), starting the task (resources and materials available, task delay about to start) or completed.

Server, Combiner, and Separator – Task Sequence  Process Type Enhancements

Breakpoints Enhancement

There is a new setting in the File -> Settings dialog, defaulted to False (opting everyone into “perfect breakpoints”). We have had a several instances where user’s models behaved slightly differently if a breakpoint was set than if it wasn’t set and have therefore added this feature.

Breakpoints Enhancement

Trace Enhancement – Include State Variable's Previous Value in Trace Message for Assign Step

We have updated the trace action statement for Assign steps to include the original state value as well as the new state value. This was a feature requested by customers for easier viewing and debugging in the Trace window

Task State Log – Entity Id and Entity

We have enhanced the Task State Log to include two new columns including the Entity Id and Entity. These fields were added to provide better dashboard support between various logs.

Create Object From This – Enhancement

We added a right click option for objects that created a new sub-classed object with the object instance property values. We have now added a second right click option which will only be seen for objects that were originally created from the ‘Create Object From This’. It appears if the object
instance you opened it on has it’s object/model in the current project.

Breakpoints Enhancement

Clicking it will update the property defaults on the object/model (and the defaults for any associated nodes), as well as update the property values any existing objects who hold values equal to the previous default to the new default. It WILL NOT update any graphical symbols, or “graphical” property options.

Simio Personal Edition – Expanded!

We have expanded the Simio Personal Edition (free for download) to include Simio Enterprise Edition functionality (Planning tab). Users will be able to download the personal edition software to run any of the Simio examples (including scheduling examples) provided with the software. In addition to building simulation models within the software, small scheduling models can be built to demonstrate the scheduling capability to potential users evaluating Simio.

Update to 3D Trimble Warehouse Importing

Based on changes that Trimble 3D Warehouse has recently made, we have had to modify our interface to that application. Now, when a symbol will be added or modified, there is an option to Go To 3D Warehouse (prior was named Download Symbol). This button will put the user in a web browser for 3D Warehouse where they can search for symbols and download to a Sketchup file. Sketchup files can then be imported using the Import Symbol button.

Update to 3D Trimble Warehouse Importing

Support for Sketchup 2018

We have now added support for importing Sketchup 2018 files. Within the Go To 3D Warehouse button, the user has the option of which Sketchup version of the software the symbol will be downloaded.

Gantt Enhancements – Enterprise Edition

We have enhanced the Resource Plan and Entity Flow Gantts to include hatching on the main bars of the Gantt when a resource/entity is constrained. The main bar of a resource/entity was solid color to show when the resource was seized (Resource Plan Gantt) or when the entity was processing (Entity Flow Gantt). While this solid color bar is fine when there are no constraints (secondary resources, materials, offshift times, etc.), it did not show any indication of constraint issues unless the +

Update to 3D Trimble Warehouse Importing

Users will now see, in the main Gantt bars, a hatch pattern indicating a constraint.

By using the + to open up the MainFrame1 resource, the Process task is shown as constrained. Hovering over the “Process” bar will show the task state details and time of constrained / executing states. Using the + to open the Tasks will show the constraints for the task (resources/materials). Hovering over the constraint will show the specific details for the entity, in this case resource availability of a secondary resource.

Double-clicking on the particular entity within the Resource Plan Gantt will take the user to the corresponding Entity Gantt view.

TransferNode – Entity Destination Type

We have added an option to the Entity Destination Type property within the TransferNode object (and all fixed objects that contain TransferNode). The user now has the option, upon leaving a TransferNode, to destroy the entity. The new option is ‘None (Destroy Entity)’.

UpdTransferNode –  Entity Destination Type

Updated Scheduling Examples

We have updated both the SchedulingBatchBeverageProduction and the SchedulingBicycleAssembly examples to use the auto-create objects functionality within the Resources tables. Note that custom objects are used in conjunction with Simio objects to build these models using the Resource Name column and x/z locations within the Resources table. Documentation and screenshots have also been updated with these examples.

Auto Creation of Objects – Enhancement

When using a table to auto-create object instances, users can now specify each object’s Initial Object Offset coordinates using Geographic values. Object Property has a new Location Type option to indicate if it uses Cartesian (x, y, z) or Geographic (latitude, longitude, elevation) coordinates.

UpdTransferNode –  Entity Destination Type

Selecting the default value of ‘Cartesian’ allows users to enter expressions for X, Y, and Z, which is existing behavior. Selecting the new value of ‘Geographic’ allows users to enter expressions for Latitude (-90.0 to +90.0), Longitude (-180.0 to +180.0), and Elevation (in meters, which is just like the existing Y Cartesian coordinate, but available here for completeness). Like the X, Y and Z values, the new Latitude, Longitude and Elevation values can optionally be specified as table columns and will take their values from the corresponding row in the table.

Object instances created using Geographic coordinates will remain at those coordinates even if the
Facility window’s Map Location origin is changed.

Visio Interface Release

Simio is releasing the first phase of a Simio-Visio interface that permits Visio drawings to be imported into Simio. This new capability can be found in the Shared Items forum of the Simio Insiders Forum.

This first phase provides two ways to input Intelligent Objects, Links, and Vertices from Visio into the Simio Facility view:

  1. Use Simio-Provided Visio Stencils to add Intelligent Objects and their Links, or
  2. Add Shape-Data (Visio properties) to existing Visio drawings to identify the Shapes and Connectors destined for Simio.


Additional features are:

  1. A Visio license is not required by the Add-In (only a Visio .vsdx file)
  2. No COM or .NET Interop or 3rd party software is required.
  3. Later phases will permit the import of Visio data for Simio Processes and Tasks.

    New SimBit

    We have added a new SimBits as well:

    DisplayingEntityDynamicStatusInformation – This SimBit displays multiple label types (dynamic label text as well as status label) that can be attached to an entity as it moves through the system. The example shows multiple lines of data for the entities and uses both strings and string functions to display the information.

    SimpleWorkerPool – Demonstrates how to incorporate individual worker walking speed and efficiency based on worker selection.

    ComplexWorkerPool – Demonstrates how to incorporate worker skill level or ability to work at particular servers. The selection of the worker from a pool (list) is based on efficiency factor.

    DashboardsForSchedulingExamples – This model demonstrates how to show results in graphical format using Dashboards with an Enterprise version. The model is based on the Scheduling Discrete Part Production Example.

    DashboardReportTallies – This model has been modified to include logging for all part type tallies and includes all entity tallies within the dashboard. The dashboard has also been enhanced to include three different sections of displaying information.

    CombineMultiplePartsTaskSequence – This model demonstrates how to batch different entities types together for subsequent processing using the Combiner’s Task Sequence. Each task batches a different entity type / quantity and uses a string value to match the member to the task.