Review a highlight of some of the newest features of Simio 11.197 including many enhancements to existing object functionality!
Here are quick video summaries of some of the newest features of Simio 11.197. Detailed release notes are below.
There is a new “Trace Type” selection under the “Advanced Options” in the “Run Setup” group of the
“Run” tab of the “Facility Tools” ribbon category. “Trace Everything” is the default. The selection is saved
We have added an install shortcut option to start Simio 64 bit (instead of 32 bit).
We have added a new 'Auto Destroy Zero Volume Entities In Containers With Zero Rate Inflow' compatibility bit. This was done per a customer request. The default value of this setting is set to ‘True’, with models built prior to Sprint 190 having the setting of ‘False’.
We have updated our Sketchup import to support Sketchup 2019.
The DirectX9.0c folder is no longer in the Simio folder via C:\Program Files (x86)\Simio. It is still an option in the Application Settings Graphics Type (to support customers that still use DirectX9). We use DirectX11 by default.
There is a new “Minimum number of UI updates per second” entry in the Advanced Animation dialog. It’s defaulted to 5 and provides much better UI responsiveness for otherwise unresponsive models.
Gantt views now have a small search box at the top that does basic searching. If a user types or pastes a desired string in the search, Simio will go to the first row in the grid that contains that text. It also does partial matches.
In this example, searching for 21 matched a row containing that string, while searching for 101 finds the row for Order_101
Also within the Planning tab, if a user double-clicks on an order/entity within the Target Detail tab, the user is taken to the same order within the Entity Workflow Gantt.
There is a new Font Scale setting in File -> Settings allowing you to scale up the font used across the application:
So normally the UI looks like:
But if you set that scale to, say, 200 it would look like:
Modeling Helper Add-Ins – RPS Only
We have added the following new events that support modeling helpers when running Simio as an‘embedded’ solution via the SimioDLL.dll library: Tables Importing Table Importing Table Imported Tables Imported Plan Run Starting Plan Run Ended
We now provide the much-requested feature of changing the starting or ending node of an existing link without losing the link or any vertices. Right clicking on an existing link will allow the user to Change Starting Node or Change Ending Node. When one of these is selected, the user has the ability to choose another node by clicking on it, at which point the link will disconnect from the original node and reconnect to the selected node. Multi-select of links also allows these two options.
We have added the capability to auto-create links through data tables. Prior to this sprint, we’ve had the capability to auto-create objects (from a table) within the Facility window, such Server, Worker, Vehicle, TransferNode, etc. Now, we have a similar structure for generating links in the Facility window by specifying the starting and ending nodes.
If the Default Value Instantiation is ‘AutoCreateInstance’ and the Object Type is a link type (or an Object Type property), then the Link Starting Node and Link Ending Node appear in the property grid:
Users can also specify a detail table column (or static value) for the position of the vertices of an auto- created link in a table. The example below shows two tables, Links and Vertices. The Links table creates the connector links between the node names listed in Node1 and Node2 columns. The related Vertices table lists the x, y, and z cartesian coordinates of the vertices of the connector(s). Location Type can alternatively be ‘Geographic’.
We have added a new table function, TableName.KeyColumn.RowForKey(keyValue) that returns the row index of the row for which the specified KeyColumn has the specified keyValue (or zero if no row is found). It’s important to note that this function respects master-detail relationships, and only looks at the detail row subset for a given master row selection (and returns the row index as related to that subset, not the overall index).
Thus, the user could have a table, Resources, as below, with the ResourceName as the key column. The following expression, Resources. ResourceName.RowForKey(Weld1) would return the value ‘8’.
The function could alternatively be used to access other information within the Resources table for a given key value. Resources[Resources. ResourceName.RowForKey(Weld1)].ObjectType would return ‘SchedServer’.
The keyValue may also be an expression that holds the information, such as an entity object state,
Previously, the Search step could be used to access the row information. This new function method is faster than using Search step to access the same information, especially with large data table searches.
There is a new compatibility bit “Search Associated Objects Of Candidate Objects For Table References”
Default value of this setting is ‘False’ for models built prior to Sprint 11.191, ‘True’ for new models built in Sprint 11.191+.
In the past, when using the Candidate.TableName.ColumnName, for example, within an Entity Destination Type > Selection Condition, the candidate column required node name references. Many times, however, the data within a table may include the associated object names (Server names) and not the node names. Thus, as an enhancement when using the Candidate.TableName.ColumnName nomenclature, Simio will now search for either the object or associated object to find a value. This includes Search steps and any other construct where Candidate.TableName.ColumnName can be specified.
As an example, the user could have a TransferNode that selects the Entity Destination Type from a list of nodes. The options in the list contain multiple nodes that are associated with Servers. There is a table, named Resources, that includes the Server names and some associated columns such as Cost,
WorkSchedule, etc. The Selection Condition on the TransferNode can now reference
‘Candidate.Resources.Cost <= 30’ where the node names are not listed in the Candidate table, but the associated Servers and their cost column are evaluated as the candidates for selection.
There is a new Repeating property for Table Based Work Schedules that, if ‘True’, will repeat every specified time interval. For example, a user may define a 1 week work schedule within a table that will repeat every 7 days. Exceptions, such as holidays, can be specified within a referenced Exception Table.
It’s important to note that if the table schedule Start Date is AFTER the simulation start date, Simio will assume 0 capacity (no schedule specified in table) for the first X amount of time from simulation start date through schedule start date, then repeating after Interval time.
As an example, let’s say the simulation start date is 6/09/19 and the schedule starts 6/10/19 and contains a single day of schedule/capacity times. If the repeatable interval is 1 day, it will include 6/09/19 of 0 capacity and then repeat, thus the 6/10/19 schedule will not be realized. If the repeatable interval is 2 days, it will include 6/09/19 of 0 capacity, then 6/10/19 schedule from table and then repeat.
We have added a new Roller type path decorator that can be used with any of the links in Simio, including Conveyors and Paths.
We have added a number of features, detailed below, that will allow an efficiency value, expressed as a fraction, to be associated with any seized resource – particularly a secondary resource seized for processing or task processes within a Server, Combiner, or Separator object. The actual work duration is the planned work duration divided by the resource efficiency. Typically, the efficiency would be defaulted to 1.0. Values greater than 1 shorten the time and values less than 1 lengthen the time.
For example, if a task takes one hour at a 100% resource efficiency rate, then
If Resource Efficiency Is
Then Task Duration Will Be
If there is more than one seized resource with an efficiency, there is a aggregate efficiency value control to use (e.g., the minimum, maximum, average, sum, etc.), including an option to ignore seized resource efficiencies.
If using the ‘Switch Resources If Possible’ Off Shift Rule at a Server, Combiner, or Separator object, Simio automatically adjusts the remaining processing or setup time to reflect efficiency changes due to switched secondary resources.
Resource Efficiencies Details– Server/Combiner/Separator
Within the Secondary Resource for Processing as well as the Process Tasks areas, the Resource Efficiency Rule and Resource Efficiency properties have been added.
If the Process Type is ‘Specific Time’, the Resource Efficiency Rule is visible within the Other Processing Options of Process Logic area. This property is used to alter the rate at which work is performed if there are seized resources with defined efficiency values. The actual work duration is the planned work duration divided by the efficiency. The Resource Efficiency property is used within the Secondary Resources (Resource for Processing) area to alter the rate at which the task is performed using the seized resource(s), expressed as a fraction. An efficiency value greater than 1 shortens the time and a value less than 1 lengthens the time.
If the Process Type is ‘Task Sequence’, the Resource Efficiency Rule is visible within the Task Information area of the repeatable processing tasks. The Resource Efficiency property is specified within the Resource Requirements area for the task. Note that Resource Efficiency can be specified for each resource required if multiple resources have been referenced within a data table.
Resource Efficiencies Details– Delay and Changeover Steps
The Delay and Changeover steps have both been enhanced to allow for dynamic adjustments to the delay or setup time. A Delay Multiplier expression type property has been added to each of these steps to increase or decrease the delay time or total setup time due to the changeover by some factor. Note that expression is automatically reevaluated if the process is suspended and resumed, potentially adjusting the remaining delay or setup time.
Resource Efficiencies Details– Seize Step
The Seize step has been enhanced to include an optional Resource Efficiency value that can alter the rate at which work is performed using the seized resource(s), expressed as a fraction. The actual work duration is the planned work duration divided by the efficiency.
Resource Efficiencies Details– New Functions
We have added three (3) new functions to allow the user to access the aggregate efficiency of resource(s) that have been seized.
Object.SeizedResources.AggregateEfficiency(type) - Calculates and returns an aggregate efficiency value for the list of resources currently seized by the object.
Task.SeizedResources.AggregateEfficiency(type) - Calculates and returns an aggregate efficiency value
for the list of resources currently seized by the task’s associated object, filtered to only include the resource seizes that apply to the task’s execution.
Token.SeizedResources.AggregateEfficiency(type) - Calculates and returns an aggregate efficiency value
for the list of resources currently seized by the token’s associated object, filtered to only include the resource seizes that occurred specifically due to the token’s execution.
For all of the above functions, the aggregate type is an integer argument with possible values: 0 = None, 1 = Average, 2 = Count, 3 = Maximum, 4 = Minimum, 5 = Sum. Note that if the aggregate type is None or if there are no seized resources with defined efficiency values, then the value NaN is returned.
We have added the much-requested feature of being able to add or delete one or more nodes from an existing link.
As you can see from the below diagram, there is an existing Path link between Output@Source1 and Input@Sink1. By clicking on the path, the user is directed to the Edit menu which will allow for the addition (Insert) of any type of node to the path.
Alternatively, if the path has one or more existing nodes that are no longer required, the user may right click on the node (as in BasicNode1 below) and select ‘Remove Node and Join Links’, then select the path that will remain as the current link (e.g, Path1 below).
We have enhanced the secondary resources functionality within the Server, Combiner, and Separator in the Standard Library and Filler and Emptier in Flow Library. These enhancements allow for more flexibility in specifying either single or multiple secondary resources for processing or before/after processing.
These enhancements include having multiple Secondary Resources for Processing (resources used throughout the entire processing of an entity) to be specified using a repeat group data structure. If using a repeat group to specify Secondary Resources for Processing, we also provide Off Shift Rule, Must Simultaneously Seize, Immediately Try Seize, and Immediately Try Allocate When Released property values to be specified. If not using a repeat group to specify Secondary Resources for Processing, allow Number Of Objects, Units Per Object, and Must Simultaneously Seize property values to be specified for the single resource requirement.
For each Secondary Resources -> Other Resource Seizes repeat group, we now include a Resource Efficiency property for a resource seize requirement (inside repeatable property). See the above release notes on new efficiency features.
For each Secondary Resources -> Other Resource Seizes repeat group, we have added an Immediately Try Seize property value to be specified. Similarly, for each Secondary Resources -> Other Resource Releases repeat group, we now include an Immediately Try Allocate When Released property value to be specified. These features were added to Simio for the main resource and task resources several sprints ago.
If using a ‘Smallest Value’ or ‘Largest Value’ Selection Goal is used to seize a secondary resource, we now display a Value Expression (like Selection Expression) in the properties window.
We have added a new function for the process element. This function was added to support implementation of the OnSecondaryResourceCapacityChanged process logic in the Standard Library objects when multiple secondary resources for processing have been seized by a particular entity, and the ‘Switch Resources If Possible’ off shift rule is being used.
TokensInProcess.NumberLinkedToObject(object) - Returns the number of tokens in process whqose associated (primary) object reference is a specified object.
We have added two new examples to the Simio installation. Please note these examples are meant to show specific concepts and include basic object animations. We will follow-up within the next sprint or two with more detailed documentation. They include:
SchedulingLaborEfficiencies – This example is like the SchedulingDiscretePartProduction example, in that it uses various tables to generate the objects within the Facility window. There are 5 employees (worker objects) that use different work schedules, as defined in table based repeating work schedules. The new resource efficiency properties are specified within Labor table, based on which resource is being used. The task sequences within the Servers indicate the worker list, resource efficiency and selection rule based on largest efficiency. The model also uses the ‘Switch Resources If Possible’ OffShift Rule for workers.
SchedulingParallelRouteController – This example is a modification of the SchedulingDiscretePartProduction example. It is intended to show an option for easily modeling parallel routing steps.
The Routings table has been modified to include parallel production steps within the routings of
FinishedGoodA and FinishedGoodB. A ‘route controller’ Server object and it’s referenced process titled ‘PopulateImmediateSuccessorSequences’ are used to generate entities for the various parallel process steps.
For example, in the below routing, the Sequence Number is used in the process logic to determine the parallel activities within the routing – Cut and Weld (10.1 and 10.2) operations are done in parallel before Finish (20) and then Ship (40). The Entity Workflow Gantt shown below shows the resources and sequence for the order, as they are processed.
We have added three SimBits to our extensive list of small models that illustrate specific concepts. They include:
ServerBlockingApproaches – This project includes four models that demonstrate various ways of modeling blocking, that is, holding an entity at a Server or processing area until there is room at the next Server or processing area. The methods used include Connectors, Add-on Processes with Wait step and built in events and Entity Destination Types of selecting from a list / custom routing group element.
InventoryReplenish – This project includes three models that demonstrates some of the inventory
Replenish Policy options in Simio. This includes the ‘Min/Max’, ‘Order-Up-To’ and
‘ReorderPoint/ReorderQuantity’ rules. Both the Review Period options, including ‘Timer Review Period’ and ‘Continuous Review Period’, are shown in each of the models.
ResourceSelectionConcepts – This project includes four models that demonstrate the use of Secondary Resources For Processing. The Models increase in complexity and demonstrate methods for selecting resources based on attributes like cost, efficiency and skill.
We have made the Run.FreezePeriod function now visible to RPS users. This function has been used in the SchedulingBatchBeverageProduction example. For more information, see the Freeze Period section of the documentation for the model and refer to the OnRunInitialized_FreezeSchedule process logic.
We have added optional Routing Group for Node stipulations, and optional Seize Location for Resource stipulations for the Stipulate step. These are both logged to the Resource Usage Log, and that information is used for drag-n-drop on the Gantt. This feature was added to sprint 192+ and documented in this sprint.
We have added ability to specify an optional Direction X/Y/Z and Roll for orientation of entities on queue animations. This was a user-requested feature.
This orientation takes precedence over any other given orientation for the queue (for example, the
direction specified by an “Oriented Point” queue).
Additionally, there are some new functions in the Orientation namespace for objects:
Orientation.Direction.X – Returns the X component of the unit vector indicating the current direction the object is facing.
Orientation.Direction.Y – Returns the Y component of the unit vector indicating the current direction the object is facing.
Orientation.Direction.Z – Returns the Z component of the unit vector indicating the current direction the object is facing.
Orientation.Roll – Returns the current roll angle in degrees, measured clockwise from the +Y, of the object in the X-Y plane.
If the Location Based Inventory of a Material element is set to ‘False’, we now allow Review Period and
Replenishment Policy related properties to be specified for the single global inventory of that material.
This information used to only be specified with the Inventory element for the material. This was a user- requested feature from our Simio Sync user’s meeting.
We have added the ability to specify the lot identifier property, Lot ID, on location- based inventory within the Consume and Produce steps. This then also allows the Lot ID within the Task Sequences Material Requirements section of properties when Inventory Site Type is specified. This was also a user- requested feature.
Users can now give an alternate starting type/anchor point for a repeating table schedule. By default, it starts the schedule from the start of the run. Now users can alternatively tell it to start from some offset from midnight on the first Sunday before the run. If a repeating schedule is raw numbers for offsets (instead of datetimes), in terms of week- long repeating intervals, this mode is probably more appropriate. This is an enhancement to the recently added repeating schedules.
We have added a Dispatching Rules repeat group to support multi-level tie breaking within the Dynamic Selection Rule property. Users can keep the current configuration (Repeat Group property is ‘False’) where Dispatching Rule and Tie Breaker Rule are visible. Alternatively, users can use the new option (Repeat Group property is ‘True’), where multiple levels of the Dispatching Rule property can be specified.
This enhancement has been made in all areas of the product that use Dynamic Selection Rules. This includes Server, Separator, TransferNode, Worker and Vehicle objects in the Standard Library, Emptier and Filler in the Flow Library and RoutingGroup and Station elements.
We now allow the user to compare plans without running risk analysis, simply using Create Plan button. The Save for Comparing button is now available after using the Create Plan to generate the deterministic plan. This saves a copy of the model in the Baseline Folder in the Navigation Window. After a run was saved for comparing, changes can be made to model properties and/or data tables and Create Plan button used to run new plan. Under Results > Target Detail report, select the show Differences button (as seen below) to show the status change between the plans.
The RoutingGroup element has been enhanced to provide a new On Starting Route Request Queue Search add-on process trigger. This was added to provide greater flexibility to the RoutingGroup as well as eliminate unnecessary process execution.
You have 20 entities waiting in the routing group’s route request queue. And there are 4 available destination nodes. To assign entities to the four available nodes, you’d see the On Starting Route Request Queue Search process get executed 4 times (once per each search pass through the queue) and the On Evaluating Route Request process get executed 190 times (20 X 4 times during first search pass + 19 X 3 times during second search pass + 18 X 2 times during third search pass + 17 times during fourth search pass).
We have added a new TableBindings view, located within the Data tab below the Tables view. This has been added to support additional “Modern” binding type features that Simio will be adding over the next few sprints. Currently, this view displays “Classic” table binding names with their data table reference, as specified in the Tables view.
In sprint 193, we added a Start Type property to allow users to specify an offset starting time for table- based schedules. We’ve now enhanced this property with an option for Specific Date Time, where the Start Date Time property is then specified, as shown below.
For greater compatibility with the standard Overall Equipment Effectiveness (OEE) definition, the
resource utilization calculation setting of the ‘Setup’ and ‘OffShiftSetup’ resource states of the Server, Combiner, and Separator objects has been changed so that allocated capacity while in those states is no longer considered utilized capacity.
IMPORTANT NOTE: This means that, in Sprint 194 software, if you update models to the new Server/Combiner/Separator definitions and there are tasks of process type ‘Sequence Dependent Setup’, then you’ll now see lower utilization statistics for those objects where the setups occurred. If you have specified usage cost rates at the object, those usage cost rates will also no longer be accrued by entities during the setup times.
The Release step now provides a Skip Release If property, similar in functionality to the Seize step’s Skip Seize If property. It allows for an optional condition that indicates whether to completely skip that particular release requirement (i.e., simply ignore the repeat group row).
The Release step’s Release Condition property has been renamed to Selection Condition to be consistent with the Seize step and to help lessen any possible confusion that might have arisen between having Release Condition and Skip Release If properties.
In the Server, Combiner, Separator, Filler, & Emptier, for either Secondary Resources For Processing requirements or Task Resource Requirements, a new Skip Requirement If expression property is now provided. This feature allows for an optional condition that indicates whether to completely skip a resource requirement (both the seize and release steps).
For example, a user may have a modeling situation where a worker is only required sometimes for a particular task, thus needing the ability to filter out resource requirements on a requirement by requirement basis without having to define different tasks. For example, suppose the Object Name property for a resource requirement is specified as ModelEntity.WorkerReference where WorkerReference is a state variable on the entity that is set to Nothing if no worker is actually required.
You would specify the Skip Requirement If conditional expression for that resource requirement as
In the Server, Combiner, & Separator, for Task Material Requirements, a new Skip Requirement If expression property is now provided. Similar to the above feature for secondary resources, this feature allows for an optional condition that indicates whether to completely skip a material requirement (e.g., filter out a particular consume or produce material action for the task).
Simio now will break on a breakpoint in a decision process, as long as you have the ‘Use Scheduled Breakpoints’ setting in File -> Settings set to ‘False’ (which is the default). Some of the decision processes within Simio include OnEvaluatingMoveRequest, OnEvaluatingRiderAtPickup, OnEvaluatingRiderReservation, and OnEvaluatingSeizeRequest.
We now support the addition of new expression columns in all logs. Previously, the user could only add extra columns to the Resource Usage, Resource Info or Task Logs.
For logs that have both a start time and an end time column, you can set the expression to evaluate at the start or end. Note that even though the Transporter Usage Log has four datetime columns, there’s no provision for evaluating an expression at either Start Ride Time or End Ride Time.
Additional columns are useful in various logs for developing dashboards and table reports as well as filtering data.
For completeness, we have added ‘Skip Seize If’ and ‘Skip Release If’ advanced options to the Secondary Resources -> Other Resource Seizes/Other Resource Releases repeat groups. These properties allow users to optionally skip the seize or release requirement.
In sprint 193, we added a Start Type property to allow users to specify an offset starting time for table- based schedules. Then, in sprint 194, we enhanced the Start Type property with an option for ‘Specific Date Time’, where the Schedule Start Date Time property is then specified, as shown below. Now, in sprint 195, we’ve included a new Offset Calculation Type property when using the Start Type of ‘Specific Date Time’. This can be set at ‘Default’, ‘Relative’ or ‘Absolute’ and determines how the Schedule Start Date Time relates to the Start Date Time and End Date Time values.
There is a new tracing option (off by default) to trace additional information whenever the runtime is attempting to resolve a table row:
In the trace below, the feature is turned on. This can be helpful, as a user may realize “My tbl_Routings reference went from  to  (sequence table), and any foreign keys pointing into that row might have changed to (foreign key state in an output table). Maybe that is why I’m getting this odd runtime error.”
We have added a new RestartRun step may be used to set the ending time of the simulation run to the current time. This will cause the run to end once all simulation events scheduled for the current time have been processed. Interactive mode will require the next run to be started manually. Otherwise, a new run will be automatically started, treated as a restarted run for the same scenario replication instance if running in experiment mode.
If in interactive mode, using the Reset button to re-initialize the model to its starting conditions will cancel a restart command and set the run count using the new function, Run.RunNumber, back to 1.
We have added a new function Run.RunNumber that returns a one-based run count, incremented if a run restart occurs using the RestartRun step.
For example, if executing a simulation with run restarts, then for the first run you’d see Run.RunNumber return 1. For the next run, if restarted using the RestartRun step, you’d see Run.RunNumber return 2 and so on. An example of using the Run.RunNumber function in process logic might be in a condition expression to decide whether to execute a RestartRun step. For example, if implementing a two-pass algorithm, then you’d only want to execute the RestartRun step if ‘Run.RunNumber==1’.
We now allow Bill of Material (BOM) consumption to include entries for both location specific and not location specific (previously all or nothing for a BOM that is location based). This was a user-requested feature.
The Inventory Site Type property now reads “Indicates the fixed object that is the inventory location. Applies only to material elements whose Location Based Inventory property is set to True.” Thus, when the inventory for a material in a model is a single location-less inventory, there is no ambiguity about the inventory reference when trying to consume, produce, or reserve that material. We relaxed the Simio engine's error checking to simply ignore the Inventory Site Type settings if the Location Based Inventory property of a material is set to ‘False.’
We have added documentation for one of our new scheduling examples that was recently added to the installation. We’ve also updated some of our example animations, there will be more enhancements to come in the future.