Release 5, Sprint 65-68

Since this is a pretty long list of features, we have divided it into two lists. First we will describe some of the changes to Enterprise/Scheduling Editions and then below we will describe general simulation features.

Simio Enterprise Edition

Simio Enterprise adds a powerful set of patent-pending features. You can use Enterprise as either a richer, more feature-packed, environment for general modeling, or you can use it to extend your simulation models into daily operational support. Extend the use and lifespan of your previously built Simio models or build and execute new models for Risk-based Planning and Scheduling (RPS). Custom-tailor reports, graphs, and tables for use by schedulers. Reduce your risk and costs by analyzing your schedules in ways never before possible.

New Enterprise features include:

Dynamic Objects within Resource Plan – Gantt

The Gantt chart within the Resource Plan panel of the Planning tab for Simio Enterprise has been enhanced to now include dynamic objects, such as Workers and Vehicles. The Gantt chart for these objects shows the order of entity processing , any constrained entities and resource state by individual unit within the population (i.e., Worker[1] and Worker[2] if the object named Worker has an Initial Number in System of ‘2’).

States and Targets Displayed in Properties Window

The States and Target data that is generated for a given plan is now displayed within the Properties window for a given Entity using a particular Resource. This provides easier viewing of information about states and targets within a table in a grid format.

Gantt Chart Changes

Gantt charts can now be filtered by resource or entity by right clicking on the resource or entity and selecting the Filter to option. This will filter both the Gantt as well as the associated Log. This is available within both the Resource Plan Gantt, as well as the Entity Workflow Gantt.

Within the Resource Plan Gantt chart within the Enterprise edition, we’ve modified the presentation of Resource States, as well as Exceptions to be easier to view as well as edit.

Additionally, when a specific entity at a given resource is highlighted within the Resource Plan’s Gantt chart, the table properties of that entity are now displayed within the properties window on the right. Any editable properties can then be changed directly within the Gantt view without changing to the Data Tables window.

Performance Slider for Targets

Within the Targets / Tables / Gantt ribbons in the Enterprise edition, we’ve added a performance slider to easily allow users to change the upper and lower limits of target performance levels.

Resource Usage Log Columns

The Resource Usage Log now has an option to add columns within the Log. These additional columns have the option of being displayed in either the Resource Gantt or the Entity Gantt. The column values are calculated based on an expression value. This is useful for showing additional related info in the Gantt charts.

For example, if you would like to sort the Resource Gantt in a particular manner, you can add a column to the Resource Usage Log that would return a sorting value (1, 2, 3, 4, etc.). This may be based on a table entry or any expression specified. The most recent values in the log for that resource are then shown in the Gantt and can be sorted on. 

Simio University Enterprise Edition is now available

Simio University Enterprise features are now available for use in research and education programs involving simulation-based scheduling. This software approaches the problem from a significantly different perspective -- Risk-based Planning and Scheduling (RPS) which incorporates many innovations not currently available in any other software. Simio LLC is very receptive to collaboration on ideas that will move the industry forward and we welcome your participation. To apply for a grant for Simio University Enterprise Software for use in your simulation-based scheduling program follow this link.

General Simio Features

Even the highlights of this release make for a pretty long list, but there is probably something in here for everbody. In this release, we have continued to add features to Simio to support Flow Processing in the near future. These changes include the addition of weight and volume states (and rates) to entities, as well as some node internal changes to prepare for flow support. Many of our other changes are customer related enhancements, including the addition of arrays for string, element reference and object reference states, as well as variable expression threshold monitoring. Object referencing flexibility has been increased by providing more capability of how various functions are referenced.  We’ve added multiple unit measures in anticipation of additional Simio features in future sprints. Work schedules have been enhanced to include a cost multiplier (for overtime, as an example), and have also been added to the Vehicle object.  User requested enhancements include the addition of new functions for entities and a new EndRun step, which allows the user to dynamically end the simulation run. Usage time based failures for resources, vehicle enhancements, new SimBits, and a number of new functions have also been added.

Replication Runner (Enterprise and Team Editions)

Simio Replication Runner is a program that allows an Experiment in Simio to distribute its replications to other computers on the local network. When other network computers are running Simio Replication Runner, the Simio experiment will use the resources on that computer for the experiment run, thus distributing the processing requirements across multiple computers on the network.

Shadows within the View Ribbon

The Shadows icon within the View ribbon controls whether or not the shadows created by each object in the model are displayed. The light source in Simio is fixed in the corner at a 45 degree angle. However, if shadows are used in conjunction with a dynamic Skybox and the Day/Night cycle, the shadows will be adjusted for the change in the light source. Shadows were also added to the ThemePark example.

Day/Night Icon for SkyBox 

With dynamic skybox views in 3D, there is now a new day/night icon that can be turned off/on to display ambient light and a moving sun/moon.

Cost Multiplier support for Schedules

A Cost Multiplier property has been added to Work Schedules within the Day Patterns definition area.  This multiplier is applied to the idle and usage cost rates of a resource following the work schedule specified. The Cost Multiplier property can also be found within the Work Period Exceptions when defining a GeneralException.

Units Settings

We’ve added a Units Settings button with pull down to set the units to display times, lengths, volumes, mass, travel rates, volume flow and mass flow. This button can be on many ribbons and affects the units displayed within the reports, pivot grid, watch window, status bar and trace window.

Object Referencing

We have added the ability to get a reference to an object's external input or external output node, which will allow the user to get property, state or function information on an object's external nodes if they have a reference to the object itself.  For example, if you have a Server and you want to get a reference to its external input node, you could type ’Server1.Input.NumberRoutingIn’ to determine the number en route to that input node.  Alternatively, if you have an ObjectReferenceState that is holding a reference to Workstation1, then you could reference the queue for the output node by specifying ‘ObjectReferencState1.Workstation.Output.RidePickupQueue.NumberWaiting’.

The keyword ‘Is’ can now be used with an ObjectInstanceProperty so the user can decide if an object is the same type as the object specified in an object's ObjectInstanceProperty. As an example, if you have an object, let's call it ‘submodel’, and you put an ObjectInstanceProperty on that object, then you can now say Is.ObjectReferenceProperty in your logic. So, you might have an instance of Submodel in the Model and the ObjectInstanceProperty is set to ‘PartA’ but it has PartA and PartB going into it. The logic might contain a Decide Step that asks ‘Is.ObjectInstanceProperty’, which is essentially asking ‘Is.PartA’ but only because that instance's ObjectInstanceProperty is set to ‘PartA’.

Work Schedules for Vehicles

Vehicles have been enhanced to include Work Schedules, similar to Workers and other Standard Library objects. The Vehicle now includes an ‘Off Shift Action’ for determining its behavior when it goes offshift. Additionally, two add-on process triggers, Off Shift and On Shift have been added for users to modify logic when a vehicle goes on or off shift.

Entity State Changes

Entities now have Volume and Weight states. The volume is referenced as ModelEntity.Volume and represents the current logical volume of the entity. If not defined, the entity’s volume will be the implicit volume as calculated by the Size parameters. The weight is referenced as ModelEntity.Weight and has an initial value as calculated by the Density and Volume of the entity. Volume and Density can be specified within the Entity’s property grid. Any changes to weight (or volume) will change the volume (or weight) to keep a constant density of the entity. The ratio of the Size implicit volume to the logical volume is kept constant during the run.

A ‘Rate’ parameter is also available on the Volume and Weight states, as well as on the Size state under each of its Length, Width, and Height parameters. The Movement state of the entity also has this similar ‘Rate’ parameter. These ‘Rate’ states can be monitored as continuous variables.

Based on the above additions of volume and weight with the entity, the Station element’s Contents queue now has the following read-only parameters as well – Volume, Volume.Rate, Weight, Weight.Rate. These represent the cumulative volume and weight contents of the queue. These can be used in a Monitor, so that the total volume or weight of objects in a station doesn’t exceed a given value, for example.

Functions for Entities

  • Sequence.CurrentJobStep – Returns the current row index into the entity’s assigned sequence table.
  • Sequence.NumberJobsteps – Returns the total number of rows (i.e., job steps) in the entity’s assigned sequence table.
  • CurrentOperation – If the entity object is currently performing an operation, then this function returns a reference to that operation.
  • CurrentActivity – If the entity object is currently performing an operation activity, then this function returns a reference to that activity.

String and Element Reference State Arrays

The String, Element Reference and Object Reference states can now be defined as arrays. In the past, these states were scalar values.

New ‘Before Processing’ Add On Process Trigger

Within the Server, Separator, and Combiner, a new ‘Before Processing’ add-on process trigger has been provided. This trigger occurs when the entity has been allocated the server/combiner/separator capacity, but before entering (or ending transfer to) the object’s processing station.

Path, Conveyor and TimePath capacity Changes

The Path, Conveyor and TimePath objects in the standard library have been modified to have an Initial Traveler Capacity that can be an expression (previous software was ‘Traveler Capacity’ and was a static integer). This allows the dynamic changing of the capacity by using the ‘NodeName.CurrentTravelerCapacity’ state.

Node Changes

A node object in Simio now provides the following property:

  • Initial Traveler Capacity – The initial maximum number of travelers that may simultaneously occupy the node.
  • Entry Ranking Rule – The rule used to rank entry into this node among competing travelers.
  • Entry Ranking Expression – The expression used with a ‘Smallest Value First’ or ‘Largest Value First’ entry ranking rule.

Nodes also have the following states:

  • EntryQueue – The queue of entities that are waiting to enter the node.
  • CurrentTravelerCapacity – State used to get or set the current maximum number of travelers that may simulataneously occupy the node.

Nodes also have the following functions:

  • NumberTravelers – Returns the current number of travelers occupying this node.
  • NumberTravelers.RoutingIn – Returns the current number of travelers with their destination set to this node.

Auto-Completer and Drop-Down List Changes

We’ve taken non-resources off of ‘Seize’ drop-down lists and no longer show resource functions and states for non-resource objects in the auto-completer. This should make model building using lists easier to use and select from.

Monitor Element Enhancement

For Monitor elements that have a Monitor Type set to ‘CrossingStateChange’ , the Threshold Value has now changed to Initial Threshold Value. The monitor now has a state ‘MonitorName.CurrentThresholdValue’ that can be changed during the simulation run. Previously, this threshold was a constant real value. This provides additional flexibility for users to have changing thresholds for a given Monitor element.

New EndRun Step

A new EndRun step has been added for use in the Processes window. The EndRun 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.

Home Node Variable for Worker / Vehicle

A new HomeNode variable has been added for users to dynamically assign the home location for a given worker/vehicle, using either Vehicle.HomeNode or VehicleName[x].HomeNode. The Initial Home location of both workers and vehicles can be changed during the simulation run using an Assign step.

Usage Based Failures for Resources

Resources now have the usage time based failures within the Reliability section of properties. This provides greater functionality for resources, allowing downtimes to be based on not just calendar time, but alternatively based on the amount of time that the resource is actually in use.

Functions for Resource-enabled objects

  • Capacity.CurrentOwners – The objects that currently own (have seized) capacity units of this resource.
  • Capacity.CurrentOwners.NumberItems – Returns the number of objects that currently own (have seized) capacity units of this resource.
  • Capacity.CurrentOwners.FirstItem - Returns a reference to the first owner in the list of owners that have currently seized capacity units of this resource.
  • Capacity.CurrentOwners.LastItem - Returns a reference to the last owner in the list of owners that have currently seized capacity units of this resource.
  • Capacity.CurrentOwners.ItemAtIndex(index) - Returns a reference to the owner at a specified index position in the list of owners that have currently seized capacity units of this resource.
  • Capacity.CurrentOwners.IndexOfItem(owner) - Returns the one-based index of the first occurrence of a specified owner in the list of owners that have currently seized capacity units of this resource. If the owner has not seized the resource then the value 0 is returned.
  • Capacity.AllocatedTo(owner) - Returns the current number of capacity units of this resource that are allocated to (have been seized by) a specified owner object.

DateTime Functions
We’ve added new functions that return a number representing a minute, hour, day, month, year, etc. based on a datetime input. There are also additional functions that convert a datetime to/from a string and those that let you determine which day of the week, month or year corresponds to a given datetime. These functions include:

  • Year, Month, Hour, Minute, Second
  • DayOfYear, DayOfMonth, DayOfWeek
  • DaysInMonth
  • FromString, ToString

Activity Element Functions

  • ActualDurationFor(entity) - Returns the actual per batch time duration of this activity for the specified entity. Note that if the activity has not yet been started by the entity, then the duration returned will be based on if the entity was next to start the activity, respecting a sequence-dependent or change-dependent duration type accordingly.
  • BatchesRequiredFor(entity) - Returns the total number of sequential batches required for the specified entity to perform the activity as per the operation quantity and activity batch size parameters.

Workstation Functions

  • ActualSetupTime – This function may be used as the dynamic selection expression to select the next job at a workstation, or in the selection expression to select a workstation from a list of candidate workstations at a node. It returns the actual setup time duration that would be applied if the associated entity was next to start operation on the workstation, respecting a sequence-dependent or change-dependent duration type accordingly.

Operation Element Functions

  • EstimatedMakespanFor(entity) - Returns the estimated amount of time for the specified entity to perform this operation, from the start of the first activity to the end of the last activity, assuming the operation's activities will be spanned over (i.e., extended by) any off-shift periods for the operation’s primary resource.

New SimBits

We have added four new SimBits to our SimBit library, including:

  • InitializeObjectPropertiesFromATable.spfx demonstrates how to store and reference object specific data within a table. In this example, information about two servers is stored in different rows in a table. The Auto-set Table Row Reference property of an Object Reference column is used to point to the appropriate row.
  • RequestRideFromSameTransporter.spfx shows how to request the same worker from a ‘list’ of workers that an entity had utilized earlier in the model for a task later in the simulation. The function Entity.CurrentTransporter is utilized to store information with the entity for later use.
  • UpdateStateInModelFromObject.spfx demonstrates how a user-defined object can update the state of a model from within the object. The communication between objects in hierarchy is the focus of this example, which is an enhancement of the SimBit ‘ProcessModelWithinModel.spfx’.  
  • UsingAddRowAndOutputTable_Enterprise.spfx demonstrates how to use the AddRow step in conjunction with Output tables. This SimBit applies to Simio Enterprise edition, which includes Output tables. Simulation data is written out to a table at the end of a simulation run, including entity entry and exit times from the system, as well as which server the entity has been processed on.