As Simio continues to be the most advanced simulation and scheduling software on the market, we are excited to share with you our latest public and mid-year academic release. This release includes many new features, new symbols and animations, and new SimBits. Read the highlights below!
The Release step now provides a new option that allows an owner object to keep the released resource capacity, the base transporter class, all processor-oriented objects in the Standard & Flow Libraries and transfernode reserved for possible later reuse. These reserved objects are set aside for a specific future owner thus preventing its use by anyone else, although unallocated.
Whenever these objects become available, they cannot be allocated to a seize request waiting in the resource’s allocation queue unless that there is either sufficient unreserved objects available or the owner of the seize request has sufficient reservation(s).
A resource reservation will be automatically cancelled if one of the following events occurs:
Note that if the Reservation Timeout is specified as the value ‘Math.EPSILON’ then the reservation will be automatically cancelled at the end of the current simulation time step if there has been no immediate re-seize of the object by the same owner object.
A new Reserve step has been added that will allow a modeler in process logic to arbitrarily reserve a resource’s capacity for possible later use. Also, a new UnReserve step has been added that can be used in process logic to cancel any reservations for a resource made by a specified owner up to a desired number of reserved capacity units cancelled.
The Allocate step now provides an option to cancel all active reservations for a resource before attempting to allocate the resource’s capacity to any waiting seize requests.
Reserved Evaluation - When executing a Ride step, if the rider entity attempts to select a transporter from a group of candidates (e.g., from a list or from a population of some specific transporter type), the preference will be to select a transporter resource that the entity has ‘reserved’. For example, if an entity is attempting to seize a transporter from a list that contains candidates ‘Worker1’, ‘Worker2’, and ‘Worker3’, and the entity has an active resource reservation for ‘Worker2’, then the entity will have a preference to select ‘Worker2’ irrespective of the Ride step’s specified reservation method and selection goal.
Token Wait Action - The Ride step provides a new Token Wait Action property in its advanced options. This property will give a modeler control over whether the token executing the Ride step immediately continues to the next process step (the only behavior currently supported), or whether the token waits until the rider entity starts or has finished transferring onto a selected transporter.
A new OnCapacityReservationCancelled interface process is now automatically provided for any resource-enabled object. This process will be immediately executed by the engine whenever a capacity reservation for the resource has been cancelled (e.g., due to a reservation timeout expiring or because an entity owning a reservation was destroyed).
The Server within the Standard Library has been enhanced to include a section of Resource Requirement properties within the Processing Tasks repeating properties when using Process Type of ‘Task Sequence’. This allows for resources (both single or from a list) to be utilized for the various processing tasks. The resource(s) may also then be ‘reserved’ for future processing tasks.
If there is no immediate re-seize then the resource reservation(s) will be automatically cancelled at the end of the same time step as the epsilon reservation timeout period expires. This default behavior is intended to make it easy for the user to model the same task resource(s) being used for multiple tasks that are performed consecutively.
The Release step has been enhanced to include a Seized Resource Filter option under the Advanced Options section of properties. This is a filter that will apply to the owner object's list of current seized resources before attempting the resource releases. The options include ‘None’ and ‘TokenSeizedResourcesOnly’. The latter filters the seized resources of the owner object’s list to only include resource seizes that occurred specifically due to Seize step execution(s) by the same token now at the Release step.
This functionality was also added to the Server's PerformProcessingTask process used when the Server Process Type is ‘Task Sequence’.
A new property, Visibility Expression, has been added to all animated queues that is evaluated per object in the queue to determine if that object is visible or not. To reference an object in the queue for which the expression is being evaluated, use the "Candidate" keyword.
For example, the "Candidate.ModelEntity.Priority > 1" assumes all objects in the queue will always be of type ‘ModelEntity’ and will only show those that have a ‘Priority’ value greater than 1.
This new feature will allow users to place a single queue multiple places graphically while having entities visible based on the visibility expression specified.
Additionally, for queues that are associated with transporter type objects, such as Vehicle and/or Worker, a new option was added on the Appearance ribbon to ‘Match Attached Animation Speed’. If an entity that has been allocated to a Vehicle/Worker is of an ‘animated’ type (moving legs, etc.), this feature will cause the entity to graphically move along with the Vehicle/Worker instead of gliding (no moving legs).
The states within data and output tables may now be organized by using the new Move Left and Move Right buttons on the States ribbon.
The ability to hide a Dashboard Card’s Actual value from the display can be done via the Edit button on the Dashboards ribbon.
If this toggle is checked, the numbers will not be displayed on the cards as shown below.
A Scheduler Edition user now has the ability to view model errors, search via the Search Window and Reset docking windows to their default layout windows. These are features available in all other Simio Editions.
The buttons for these options appear on the Operational Planning tab to the far right of the ribbon as shown.
Simio now allows the ability to filter a models list of libraries for specified objects based on the filtering values. To enable this feature, right click on the library panel in the Facility window and select Show Filter. This will display a dialog on the top of the library pane allowing you to enter a value to filter upon.
The filter value will apply to all libraries that have been added to that particular model. The Show Filter value applies to each individual model in a project. When a project is saved, the Show Filter value is saved with the project.
The filtering option is also available in the Processes window. The filter values apply to all buttons within the Processes window. Unlike in the Facility window, there is no option to toggle the filtering within the Processes window.
The following steps and elements now provide a new ‘Random Number Stream’ advanced option, to allow a user when applicable to optionally specify the random number stream to be used.
A new TotalDistanceTraveled function is available on entities and transporters. This records a cumulative total of the distance that object has travelled. Workers, Vehicles, and other non-destroyable dynamic objects will also have this statistic automatically reported in the output statistics.
Based on user feedback on the Flow Library, we have added an additional flow split allocation rule to the FlowNode. The FlowNode is included in various Flow Library objects such as FlowSource, Tank, Emptier and ItemToFlowConverter.
When the rule is specified as the new rule ‘Proportional Based On Link Weights If Possible’, then the flow regulator will distribute flow as proportionally as possible to the node’s outbound links using the ratios of the link selection weights, while still adjusting when necessary to maximize total outflow. For example, if there are three outbound links designated to receive 20%, 30%, and 50% of the flow and the outbound link designated for 50% becomes blocked, then this rule will automatically adjust so that the other two outbound links will receive 40% and 60% of the flow until the blockage is cleared.
We have added a folder of examples that correspond with the Process Improvement Principles book (found within the Support ribbon / Books button). The ProcessImprovementPrinciples folder can be found within the Examples and it contains 22 small examples that correspond to the ideas discussed in the book.
Resource.Capacity.Reserved – This function returns the current number of capacity units of the resource that have been reserved.
Resource.Capacity.ReservedTo(owner) – This function returns the current number of capacity units of the resource that have been reserved for use by a specified owner object.
TaskInfo.Name – This function returns the name of the task assigned to the token.
TaskInfo.SeizedResources.NumberItems – This function returns the number of task-specific resources currently seized by the task’s associated object.
TaskInfo.SeizedResources.FirstItem – This function returns a reference to the first resource in the list of task-specific resources currently seized by the task’s associated object.
TaskInfo.SeizedResources.LastItem – This function returns a reference to the last resource in the list of task-specific resources currently seized by the task’s associated object.
TaskInfo.SeizedResources.IndexOfItem(resource) – This function returns the one-based index of the first occurrence of a specified resource in the list of task-specific resources currently seized by the task’s associated object. If the resource is not found then the value 0 is returned.
TaskInfo.SeizedResources.ItemAtIndex(index) – This function returns a reference to the resource at a specified index position in the list of task-specific resources currently seized by the task’s associated object.
TaskInfo.SeizedResources.Contains(resource) – This function returns True (1) if the list of task-specific resources currently seized by the task’s associated object includes the specified resource. Otherwise, the value False (0) is returned.
TaskInfo.SeizedResources.CapacityOwnedOf(resource) – This function returns the total number of capacity units of a specified resource, specific to the token’s assigned task, that are currently seized by the task’s associated object.
We have added over 100 new “low-poly” symbols (e.g. symbols that are small and fast, but still look good) to the built-in symbol library. These are primarily in the areas of Equipment, Medical Equipment, and Furniture. We have added 22 new animated people, including various male/female symbols in scrubs and lab coats. All existing animated male symbols now have the actions: Sit, Carry, and Push. While these actions and symbols are particularly useful in healthcare applications, we think they will be useful in many other domains as well.
To help you select from this increased number of symbols, we have added filtering. Within the Symbol ribbon, new filtering options will help you quickly get to the symbols that interest you. This includes filtering by:
The ability to create or add your own symbols to the Simio library has been significantly enhanced. We now support the FBX 3D object format and we have significantly enhanced the import capabilities and options to import DAE formatted objects. This better supports the use of external tools like Autodesk Character Creator and Mixamo.
You can also categorize your symbols for use with the filter described above by specifying the data in the Project > Symbols properties:
We have added new SimBits to our library of examples to further illustrate some of the new Simio features.
ServerUsingTaskSequenceUsingWorkers.spfx - This model demonstrates the Server object use of the task sequence features to execute a series of tasks from within a Server object. In addition, Worker objects are required for use within each processing task. The use of token functions and resource requirements, both features that were added to the previous sprint, are shown in this new SimBit.
TaskSequenceAndWorker.spfx - This includes two models that demonstrate use of the task sequence features to execute a series of tasks from within a Server object. The first model, TaskSequeenceAndWorker_InServer, includes the data for the processing tasks specified within the Server itself. The second model, TaskSequeenceAndWorker_InTable, includes the data for the processing tasks within a table and references to the table within the Server.
KeepingWorkerReserved.spfx - This model demonstrates the concept of ‘reserving’ a worker/vehicle for multiple tasks including transport tasks. In this model, a worker is required to move entities from the Source to a Server. The same worker is then required for processing tasks at the Server and then for movement to the next Server location. The ‘Keep Reserved If’ properties are used after transport and processing to continue to use the same worker for a given entity.
AnimatingQueuesWithVehiclesAndWorkers.spfx – This model demonstrates two of the latest animation features for queues. One portion of the model shows different priority entities in different queue locations on a vehicle, while the other portion of the model shows an animated entity walking with an animated worker.
RecordDistanceTraveled.spfx The existing SimBit RecordDistanceTraveled has been updated to illustrate use of TotalDistanceTraveled as well as demonstrate how it can be used for periodic statistics like travel per hour or day.