Here are quick video summaries of some of the newest features of Simio 11.189. Detailed release notes are below.
For a BatchLogic element or Standard Library Combiner, you can now specify a repeat group of batch quantity requirements Batch Quantities (More), that is required to be collected and attached to each parent entity. Additionally, a Must Simultaneously Batch property has been added.
For example, suppose at a Combiner, the parent entities represent pallets and the following quantities and entity types are required to be packed onto each pallet:
|Entity Type||Batch Quantity|
In the Batching Logic properties of a Combiner, you can now easily model the above example by simply specifying the Batch Quantity & Matching Rule information as a repeating list of requirements, like this:
|Batch Quantity||Matching Rule||Member Match Expression||Parent Match Expression|
|1||Match Members And Parent||ModelEntity.EntityType||A|
|3||Match Members And Parent||ModelEntity.EntityType||B|
|2||Match Members And Parent||ModelEntity.EntityType||C|
|1||Match Members And Parent||ModelEntity.EntityType||D|
There is also a new Boolean property (Must Simultaneously Batch) that indicates whether the full target number(s) of member entities must be available before any can be collected and attached to a parent entity. If this property is ‘False’, then batch members will be collected from the batch logic’s MemberQueue (and the Combiner’s MemberInputBuffer) as soon as they become available. The parent entity eventually gets released once the target batch quantity or quantities are reached.
If this property is ‘True’, then no batch members can be collected by a parent entity until its full target batch quantity or quantities are available. In that case, the collection of all batch members and release of the parent entity is always going to happen as a single event (at a single point in time). Note that one possible result if forcing simultaneous batching is parent entities may jump over other parent entities in the parent queue if requirements differ between parents. For example, if there is only 1 member entity waiting but the parent entity at the front of the queue needs 2 member entities, then that parent entity will have to wait until 2 are available before collecting any. However, if a parent entity behind it in the queue needs only 1 member entity, then that parent will be able to immediately collect it thus jumping the queue ranking.
Previously, the Matching Rule property for the Batch Logic/Combiner was read in once at initialization as a single hard-coded setting. Thus, every parent entity had to use the same Matching Rule. Now, all of the Batch Quantity and Matching Rule information can be parent entity dependent (presumably coming from data table). For example, you can have one parent entity that needs to collect 10 Batch Quantity using Matching Rule ‘Any Entity’, while another parent entity at the same Combiner needs to collect some batch quantities using Matching Rule ‘Match Members And Parent’ and so forth. Note that the Must Simultaneously Batch option can also be parent-entity dependent data.
The BatchLogic related trace messages have been enhanced to be similar to the level of detail currently provided by the resource seizing, material/inventory usage, and routing group related trace.
An example of the new trace is below, showing the type of detail now provided.
Within the Facility window, when a user selects an object or multiple objects, the property grid is provided for data input. We have now added this capability to data table row editing. When a single or multiple row are selected within a data table, the property grid now displays the column data for a single row or common data for multiple rows. This enables the user to multi-select (or filter to) rows and more easily edit multiple fields.
Within data tables, when a table is bound to a file, a message will be shown displaying the time of the last import (X days, Y hours and Z minutes ago). If the data table is bound to a file, but data not yet imported, that will be noted as well.
Also, within data tables, there is now an option to import the bound data upon loading the simulation model. This option is available with Simio RPS only.
Within Input Parameters, when an input parameter is based on a Table Value, the user now has more flexibility on what data within the table data is sampled. There is a new Ignore Zero Values property that may be used to filter out ‘0’ values from the table. If this property is set to ‘True’ and ‘0’ is sampled, the simulation will simply resample.
Additionally, the user may specify a Starting Index (which defaults to 1) and/or Ending Index (which defaults to all). Simio will then only sample from that subset of rows.
There is a new Trait Filter property for the expression columns for the Resource Usage and Task logs:
Within Simio Portal given the above example, a trait would be defined called ‘MyTrait’. Each user can then have their own value (or comma separated values) assigned to ‘MyTrait’. If the value of all
expression columns with Trait Filters assigned in a row of the log matches the values for the user’s trait(s), then they can see that row, otherwise they can’t.
The row filtering works for viewing the Logs, using them as data sources for the Dashboards, and the
Gantt data as well. The filtering is “filtering in”, meaning not assigning a trait value for a user, or not even having a referenced trait of that same name defined in the portal, will filter away all rows for that log.
Users can now author design-time ‘Modeling Helper’ Add-Ins. These are pieces of code “bound” to a
A normal Simio install will have no model helpers installed along with it. By selecting something in the drop list the user enables (or disables) that Add-In for the active model.
Once ANY add-ins have been enabled, that will disable Undo/Redo. Simio will make sure you know this:
Enabled Addins can optionally add their own “properties” alongside the model’s properties:
For a BatchLogic element or Standard Library Combiner, you can now specify options for releasing batches early, either based on time or events occurring in the system.
The Release Batch Early Triggers defined for a parent entity can be either time based (trigger fires when specified wait duration expires) or event based (trigger fires when a specified event occurs). By default, the release decision when a trigger has fired is ‘Always’ but may alternatively be ‘Conditional’ or‘Probabilistic’.
Within the Inventory element, there are three different processes that may be specified, including On Replenishment Order Process, On Balked At Backorder Process and On Reneged Backorder Process. We have added support for Input Arguments from those processes.
Within the OnEnteredFreeSpace processes of the ModelEntity, Worker and Vehicle, we have condensed the number of steps used from 15 to 7. This was done primarily for the Personal Edition limits, as each step within ModelEntity objects counts towards the limited number of steps allowed.
Within the Table Based Work Schedules, we have added the ability to specify an Exceptions table and associated data. Data within the Exceptions table will take precedence over the data within the Table work schedule. This is useful for defining multiple schedules that reference a ‘global’ exceptions table that specifies holidays, weekends, etc.
For example, in the below diagram, the data within the Exception table named TableExceptions (in red) will override the Table2 data for 6/29/2010 (in black with X).
It’s important to note that any Work Day Exceptions or Work Period Exceptions data specified within the
object instance will take precedence over the Exceptions table data.
Within the experiment of model, if the user has the OptQuest add-in, it now recognizes has any Enum properties or List properties defined as controls. In the example below, the ListProperty1 is a string list, consisting of East, West, North and South. The EnumerationProperty1 is a selection type enum.
OptQuest will then simply choose different combinations of these values as part of the optimization.
A new IModelHelperAddIn interface has been added to SimioAPI.Extensions. With this interface, there are methods to add code when the mode is loaded (CreateInstance) and when the model is closed (Dispose). There are also events handlers in the interface that can be used to add code when the model is saved and when the schedule is published to / or within Simio Portal.
When you install Simio, there is a code example of IModelHelper that gets installed at: C:\Users\Public\Documents\Simio\Examples\UserExtensions\WriteModelSummaryOnSave If a user has an RPS license, there is a Model Helpers menu on the Project Home ribbon.
Once enabled, there is a property added to the model. You might need to click on Model Entity and then back to Model to get the properties to show.
The file from this example is written after the model is saved.
Previously, when a secondary resource was used within an object for general processing or within task processing, the user had two options for Off Shift Rule, including ‘Suspend Processing’ and ‘Finish Work Already Started’. We have now enhanced the Off Shift Rule to also include ‘Switch Resources If Possible’. This will allow processing to continue when a shift change occurs, which changing the secondary resource. For example, FirstShiftWorker and SecondShiftWorker are members of a worker list. At a Server, if a process begins at 3:45 pm (during first shift) and lasts for 3 hours (into second shift), when the FirstShiftWorker goes offshift, Simio will seize a SecondShiftWorker (if available) to continue the processing the entity at the Server.
We have also made several supporting enhancements, as noted below, that allowed configuration of this feature.
We have added a new task function:
Task.PrimaryToken - Returns a reference to the token that is executing the task’s primary process.
To support the above ‘Switch Resources If Possible’ option for Off Shift Rule, we have added several properties to Seize and Release steps. First, within the Seize step, we have added a Quantity Type property (under Advanced Options) that indicates the type of resource quantity to seize. The options are ‘Specific’ , which represents the exact quantities entered in the Number Of Objects and Units Per Object properties and ‘Deficient’, which is derived by subtracting the already seized resources of the specified resource type from the quantities entered in the Number Of Objects and Units Per Object properties. For example, if the Number Of Objects property is specified as ‘5’ and the number of already seized resources that meet the requirement is ‘3’, then the deficient number of resource objects to seize is calculated to be ‘2’.
Then, within both the Seize and Release steps, we have added a Seize Resources Filter Type property that can be set to ‘None’ or ‘Token’. With the ‘Token’ option, an additional property named Filter Token Reference can be specified. To see how these new properties are used, please review the ‘OnSecondaryResourceCapacityChanged’ process within a sub-classed Server or review the Simio Help for these steps.
Unrelated to the ‘Switch Resources If Possible’ enhancement, the Seize and Release steps now include a Use Strict List Referencing property. For the Seize step, if seizing from list and quantity type is ‘Deficient’, this indicates whether the already seized resources must have been seized from the same specified list, instead of merely being members of the list. For the Release step, if releasing from list, this indicates whether the released resource(s) must have been seized from the same specified list, instead of merely being members of the list. This is particularly useful when resources are members of multiple lists.
Within the Create step, we have added the option to create a new token into the process. The Create step may now be used to create new entity objects of a specified type, create copies of an existing entity, or to simply create new tokens that reference existing objects. New tokens associated with the created or referenced objects will exit the 'Created' exit point of the step.
When a new token is created using the Create step, the user can specify the Token Associated Object and/or the Token Context Object. If not specified, the associated object reference and/or context object reference of the original token executing the Create step will be assumed.
In Run Setup -> Advanced Compatibility Settings, the default value for new models of the Schedule Late Current Event To Try Allocating When Resource Capacity Increased compatibility setting has been
changed from ‘False’ to ‘True’.
This setting indicates whether to schedule a late priority current event to try allocating whenever the capacity of a resource has been increased. Otherwise, allocation will be immediately attempted before the execution of any other simulation logic in the system.
In the Standard Library, the Vehicle and Worker objects OnCapacityChanged process logic has also been modified to delay for epsilon time when coming on-shift before any attempt to allocate the vehicle or worker resource.
If using the ‘Switch Resources If Possible’ Off Shift Rule for secondary resource requirements at a Server, this change now means that the default behavior of that feature is WIP tasks attempting resource switching will have priority seizing secondary resources coming on-shift before any new tasks that have been waiting in the resource allocation queues are able to try to seize.
In Run Setup -> Advanced Compatibility Settings, an Always Use Seize Selection Goal When Checking Resource Allocation Queue compatibility setting has been added. This setting indicates whether a Seize step's selection goal should be used not only at the initial seize attempt but also whenever any resource allocation queue checks occur - if waiting for resources is necessary - regardless of the Must Simultaneous Seize option setting. The recommended value for this setting is ‘True’ but will be set at ‘False’ for older models built prior to Sprint 186.
In a simple example, suppose an entity is waiting to Seize from a worker list, but all the workers are currently off-shift. Thus, the entity waits in all the allocation queues of the resource candidates. Then suppose all the workers in the list come on-shift.
In the old software behavior – if the above compatibility setting is left at ‘False’ for an old model – whichever candidate resource’s shift change happened to be processed first – usually based on the order that objects were placed in the model – was always the resource seized. The Selection Goal (i.e., resource selection rule) specified on the Seize step would be ignored. Now, what happens is regardless of which candidate resource happens to be checking its allocation queue, an entity always try to seize the best candidate resource per the specified Selection Goal on the Seize step. In the simple worker example described above, all the workers come on-shift and then the entity seizes the ‘best’ one per whatever resource Selection Rule has been specified. This has always been the way things worked if using the Must Simultaneously Seize option, but now that behavior is consistent across the board.
We have added the ability to add a Scenario timestamp column to the experiment scenarios. To view this column, right Click on a column header (such as Status, Required, or any column header) in the Experiment View. Select 'Column/Band Chooser' and a small box appears. In the box, double click 'Last Run Completed At'.
It now appears next to Status column. To hide the column, Right Click 'Last Run Completed At' and select 'Hide This Column'.
We have updated the destination availability constraints information on the Entity Gantt now shows the name of the parent item where entities are queued. The Constraint Log column named Facility Location now tracks the entity location.
There is a new Resource Info Log that holds one record per resource used in a model. It has Resource Id and Resource Name information, Display Category, and optionally one or more user expression columns. The expression columns can be matched to Portal traits, like expressions in the Resource Usage Log. It’s important to note that filtering the Resource Info Log by trait does not filter other logs. SimBits to instead utilize Server objects (Note: Workstation object is deprecated, see below).
We have removed the Scheduling and Wonderware MES buttons found on the Content ribbon within the Data tab. Users can now use the File > New From Template option to view a selection of templates that are pre-installed with Simio:
Users may also create their own templates by just saving a project file, ideally with a Name, Icon, and Description set in the Project Properties, and saving it to the Project Templates location: C:\Users\Public\Documents\Simio\ProjectTemplates.
We now include runtime error information within the Trace window. For example, when an error within Simio occurs, users can now open the Trace window (even if Trace was not turned on) and see the Entity/Object/Process/Step where the error has occurred.
We have added the ability to generate Dashboard Reports within the Experiments of a project. This can be done by using the new Dashboard Reports tab:
This tab opens a view like the Dashboard Reports view for interactive runs. Under Experiments, however, there are a different set of data sources, as shown below, where the “Summaries” data sources include average/half-with/min/max across replications, and the “Details” data sources have the individual replication observations.
In the below graph, the HospitalEmergencyDepartment example was used, with additional Responses to capture ScheduledUtilization statistics for the Nurse and Doctor workers. Once the experiment scenarios were run, the Response Results Summaries were used to generate a ‘Chart’ type dashboard. Within the Chart’s Data Items, the ‘ResponseName’ is used within the Series, the ‘ScenarioName’ is specified under Arguments and the ‘Mean’ under the Values section. A Filter Element (List Box) was used for the filtering section on the right side of the dashboard below (‘ResponseName’ under Dimensions Data Items).
In File > Settings within the Application Settings window, there are now two new settings for “Project Recovery”:
By default, this feature is off, as the Minutes Between Recovery Save is set to ‘0’ and the Save for Auto- Recovery Before Run is set to ‘False’. If a user was to turn one of those on to get a “Recovery Save” (wait the time limit or run), then end Simio using ‘End Task’ through the Task Manager (or other unexpected
‘crash’), the next time a Simio instance starts up, the user will see:
Clicking OK opens the recovery save, saves it in a new file named [ProjectName]_Recovered, and deletes the recovery save. Clicking Cancel keeps the recovery save. Users can explicitly delete them by deleting the contents of the %localappdata%\Simio\Recovery directory, where %localappdata% is configured on most systems to be C:\Users\[user name]\AppData\Local.
The Seize step now includes an Immediately Try Seize property that allows the user to specify whether to immediately seize any available resource(s) or to allow other same time events within Simio’s event calendar to occur prior to seizing any available resource(s). This feature is used within the ‘Switch
Resources If Possible’ logic for secondary resources Off Shift Rule option.
The document and help descriptions of the MultiEchelonSupplyChain example have been updated with screen shots and additional descriptions of internal logic.
The Workstation object has now been deprecated from the Standard Object Library. Note that any models that include Workstation object instances will continue to see the Workstation object in the library. Existing models that do not contain any Workstations, as well as new Models, will not have that object visible within the library. See the section below for more details on how to enable a deprecated object if necessary.
The “Visible in Library” model level property has changed to “Library Visibility”. A user can explicitly show/hide deprecated objects from the library right click menu (this menu item is only enabled for libraries with deprecated objects in them. Note that a deprecated object *will* be shown if it has any instances in the associated model, *no matter* the “Show Deprecated Objects” setting.
A new Immediately Try Allocate Boolean property is now available for the Release step. Note that the default value of this property is True (the present behavior).
This feature is useful when multiple resources may be released simultaneously, as setting this property to False will allow entities in resource allocation queues to wait until all resources have been released before attempting to allocate a resource to an entity(s) based on any resource selection rules.
For Server, Combiner, Separator, Filler, and Emptier objects, we have added a Process Logic -> Other Processing Options category in the Properties window with Immediately Try Seize and Immediately Try Allocate When Released properties.
By default, those properties are ‘False’ and ‘True’, respectively. Note that for any model saved in an earlier library object version, both those properties will be loaded with the value ‘True’ as that was the previous implicit behavior.
The default of Immediately Try Allocate When Released for the primary resource is set to ‘True’, so that by default the process logic will allow a new entity waiting for the Server (or other object type) to immediately seize it when the Server has been released by the previous entity, so as to potentially be first inserted into allocation queues for secondary resources before any secondary resource allocation attempts occur.
For all the same objects, there are also the same new properties within the Secondary Resources -> Resource for Processing -> Advanced Options category as they relate to the secondary resource.
By default, those properties are both ‘False’. Note that for any model saved in an earlier library object version, both those properties will be loaded with the value ‘True’ as that was the previous implicit behavior.
For a Server, Combiner, or Separator object, if using the Process Type ‘Task Sequence’, within
the Resource Requirements -> Advanced Options category in the Properties window of a processing task, there are new Immediately Try Seize and Immediately Try Allocate When Released properties.
By default, those properties are both ‘False’. Note that for any model saved in an earlier library object version, both those properties will be loaded with the value ‘True’ as that was the previous implicit behavior.
CombineMultipleEntityTypesOntoPallets - this new SimBit replaces the previous CombineMultiplePartsTaskSequence. This SimBit essentially models the same example, but now simply uses the new Batch Quantities repeat group on the Combiner to define the batch quantity requirements. Task sequences, extra process logic, data tables, etc. are no longer required to model this sort of problem.
CombinerReleasingBatchEarly - This new SimBit replaces the previous RenegingCombiner SimBit. This new SimBit simply uses the Release Batch Early Triggers feature instead of a parent input buffer renege
trigger approach with a standalone extra node that then reroutes the entity back into the combiner, extra state assignments to recalculate available batch quantities, etc.
Workstation SimBits - Updated to Server SimBits ServerWithMaterialConsumption - This new SimBit replaces the previous
WorkstationWithMaterialConsuption SimBit. This new SimBit uses the Material Requirements section of properties within a Server Task Sequences to consume and produce materials required for processing.
ServerWithMaterialConsumptionAndReplenishment - This SimBit is a second model within the above ServerWithMaterialConsumption project and replaces the previous WorkstationWithMaterialConsuptionandReplenish SimBit. In addition to using the ‘Task Sequence’ type processing for material requirements, it also uses Monitor elements to track the material inventory and Produce steps within processes to handle material replenishment.
ScheduledMaterialArrivals – This updated SimBit includes now material consumption within the ‘Task Sequence’ type processing of a Server instead of within a Workstation object. A data file is used to specify material arrival times into the system.
ScheduledMaterialArrivalsWithDeviation – This updated SimBit now includes material consumption within the Task Sequences of a Server instead of within a Workstation object. The model shows how variation around the material arrival times affects a system.
UsingRelationalTables – This updated SimBit now uses Server objects in place of Workstation objects in the Facility window. The model includes data that exists in different tables and the tables are linked together with Foreign Keys, as in a relational database.
ServerWithSequenceDependentSetup – This new SimBit replaces the previous WorkstationWithSequenceDependentSetup SimBit. The Server uses ‘Task Sequence’ type processing to specify Sequence Dependent Setup between various part types in the system.
Financials – This updated SimBit now includes Server objects in place of Workstation objects. The model demonstrates how to calculate costs, such as capital costs of objects, usage costs, holding costs and the cost of transporting an entity on a vehicle.
RelationalTablesInRepeatingProperty – This updated SimBit now uses Servers in place of Workstations for processing multiple patient entity types through a system. Relational data tables are used to specify different processing times, as well as multiple doctors and/or nurses for processing, for the patient types.