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.
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.
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.
Because of feedback from our Simio Conference, we have made several other changes to the Search step functionality, including
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.
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.
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).
The BatchLogic element and related Combiner object within the Standard Library have several enhancements based on multiple user requests. These include:
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’.
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)
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.
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.
There are now a few new options in the File -> Settings dialog related to graphics:
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.
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.
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.
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.
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:
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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 +
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.
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)’.
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.
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.
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.
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:
Additional features are:
Later phases will permit the import of Visio data for Simio Processes and Tasks.
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.