A Camera Sequence is a sequence of instructions that can be played back either by selecting the sequence using the Play button or using a hotkey associated with the sequence. Named views, as well as the seconds to stay at that view and the amount of time to change views are specified for a given sequence. This sequence can then be used during the simulation run to demonstrate various views of the animation. The AirportTerminal example model contains an example of the new Camera Sequence. Simply click the Play button on the View Ribbon to see the camera sequences animated.
HotKeys on View Ribbon
Both Named Views and Sequences now support HotKeys. When adding/editing a named view or a camera sequence, you can now enter a HotKey as well as the Name. When a Named View has a HotKey assigned to it, hitting that key while in the Facility window, will take you to that Named View. When a Camera Sequence has a HotKey assigned to it, hitting that key while in the Facility window, will start running that sequence of camera views.
F11 – Full Screen Viewing
The function key, F11, now allows the capability of collapsing all of the ribbons and other windows so that the simulation animation can be seen on the full screen. Pressing theF11 or Esc key while in full screen will then put back the ribbons and windows that were collapsed. This key can also be used in other windows, such as Processes, Data (for tables), Results, and Experiments.
The Video group now contains the Record Run Animation and Stop Recording buttons. Clicking on the Record Run Animation button will prompt the user to choose a name and location for their .avi file. The user will also be prompted to select a video compressor. This capability can be used to generate simple videos of your animation files or more complex “how to” videos involving model-building or even interaction with other applications and is particularly useful when combined with the Camera Sequences option described above.
When using the optional OptQuest for Simio add-in, the Objective Type property is now available to select either ‘Single Objective’, ‘Multi-Objective Weighted’ or ‘Pattern Frontier’. This provides significant new flexibility in optimization. The HospitalEmergencyDepartment example has been updated to demonstrate the new multi-objective analysis
Single Objective – OptQuest determines the set of control values that optimizes the experiment’s Primary Response. This option is how OptQuest has worked in past sprints.
Multi-Objective Weighted – OptQuest optimizes across all responses with Objective set to Minimize or Maximize, taking into account each response’s Weight value, to determine a single ‘optimal’ solution.
Pattern Frontier – OptQuest optimizes across all responses with Objective set to Minimize or Maximize, and finds the set of scenarios that are optimal, rather than a single ‘optimal’ solution based on weights.
Free Space Movement Enhancements
Often you may want to travel between many locations, but don’t want to manually interconnect every possible node combination. While using a network with shared links saves a lot of time, it can sometimes still be tedious. In the case where you are looking for straight-line movement between nodes, Simio now has a new solution: Free Space Movements. While Simio has always supported movement through free space, it has now been made much easier with the addition of the Travel Step, updates to the SetNode and SetNetwork steps, enhancements to the Entity object and the Node, Worker and Vehicle library objects, and a host of new functions. In addition this feature provides support for easier detailed free space movements such as those you may want to include in a custom object or library.
New Textures and Symbols
Six additional skins (textures) were added for more choices in representing rocks and minerals. You can also add your own skins to Simio simply by copying a jpg or png file into your Skins Simio folder and restarting Simio. Many new symbols were added to the built-in library including new machines, various types of containers and storage places, and additional vehicles for hauling bulk materials and liquids.
Varying Shape for Flow Links
We have added the elliptical and trapezoidal shape for all links, such as Paths, Conveyors, and Connectors. These shapes affect only the flow type entities and the logical flow calculations (for example, an elliptical shaped link of width 1 and height 1 will carry less than a rectangular one). For trapezoidal shapes, an additional property, Trapezoid Ratio, is available. This value is the ratio of the top of the trapezoid to its bottom (which always set to the width of the Link). It can be any non-infinite value >= 0. A value of zero makes a triangle, a value of 1 makes a rectangle. The type of shape will affect not only the flow calculations, but the shape of the available area graphic for the link, and the shape of the entities that move through the link.
We have added a new graphic on the Animation ribbon. The Stacked Bar graphically displays the value of some expression evaluated for each item in a designated queue as a display of stacked blocks (for example, ModelEntity.Volume for a Server1.Processing.Contents queue). This can be used in the Facility window or External View window of an object. The Stacked Bar graphic supports various ‘types’ including Container, Queue and Expressions:
In order to enable additional functionality, we have changed to a new technology underlying the experiment design window. You might notice some subtle changes.
ModelEntity, Worker & Vehicle – Free Space Support
The Initial Network property now provides the choice ‘No Network (Free Space)’ so that free space movement of entities, workers and vehicles may be incorporated. The default value of this property still remains ‘Global’. There are now new OnEnteredFreeSpace standard processes for the Worker, Vehicle and ModelEntity objects.
Worker & Vehicle – Minimum Dwell Time
New capability to make it easier to control how long a vehicle will wait at a node before proceeding. The current default continues to be to wait only until all entities that can be immediately loaded are loaded. Now it is easy to add flexible waiting (“dwell time”) options to do such things as wait until full, wait until a scheduled departure time, or wait for a specific condition or event.
New Entity Property
Due Date Expression is used to return a ‘due date’ value for an entity.
Worker & Vehicle – Flexible Ride Capacity
The Ride Capacity property is now an expression property instead of an integer property. This allows greater flexibility in specifying the capacity for vehicles and workers. This property was also renamed Initial Ride Capacity.
The Node List property can now be independently evaluated for each entity route request (per table entry, for example). Within the Transfer Node, for example, if selecting the entity destination using the ‘Select From List’ option, the name of the node list might come from table data and differ based on the entity. The transporter ‘Selection Expression’ default value is now ‘Candidate.Transporter.RideStationOverload’ instead of ‘Candidate.Transporter.RideCapacityRemaining’.
Simio employs a novel approach to modeling flow by allowing entities to change shapes and transfer volume at a specified rate. Any entity in Simio can now be displayed either as symbol or as geometric shape that changes size with changes in volume. For example a pile of ore might be represented by a single entity that is displayed as a symbol that changes size as it transfers its volume to a new location over time. This library establishes the foundation & framework for fluid/mass flow based modeling and will continue to be expanded based on customer feedback. Flow Library objects include:
FlowSource – The FlowSource object may be used to generate a flow of fluid or other mass of a specified entity type. The source of supply is by default considered to be infinite, but alternatively may be configured to run out if a stopping condition is met. The flow rate out of the source is regulated by its 'Output' flow node.
FlowSink – The FlowSink object may be used to destroy the flow of entities representing quantities of fluids or other mass that have finished processing in the model. The flow rate into the sink is regulated by its 'Input' flow node.
Tank – The tank object may be used to model a volume or weight capacity constrained location for holding entities representing quantities of fluids or other mass. Tank features include:
FlowNode - The FlowNode object is a node specifically designed to regulate the flow of entities representing quantities of fluid or other mass. Common applications of a FlowNode object include use as an 'Input' or 'Output' node for controlling flow into or out of another object (such as the FlowSource, FlowSink, or Tank objects). A FlowNode may also be used to model a flow control point in a network of links. FlowNode features include:
FlowConnector – The FlowConnector object may be used to define a direct, zero travel distance connection from one flow node location to another. A Selection Weight property is provided to define priority or percentage based information for the connector, and will be used if the connector is attached to flow node with an input or output flow control mode requiring such link weight information.
Simio Enterprise Edition is Simio’s most comprehensive product and provides many innovations in planning and scheduling. Recent additions include features to better support comparison of various model alternatives. After a user performs the ‘Analyze Risk’ within the Operational Planning ribbon, the Results panel option on the left side allows for viewing of various results, including Target Summary, Target Detail, Risk Plots and others. Within the Target Detail tab, there are options on the Operational Planning ribbon for Plan Comparisons. These include ‘Save for Comparison’ and ‘Show Differences’ buttons.
The ‘Save for Comparison’ button will save the current model (including logic, data tables, etc. ) and place the saved information in a ‘Baselines’ folder in the Navigation window, named by the ModelName_Date_Time.
Once at least one baseline has been saved, the ‘Show Differences’ button becomes available and acts as a toggle between the Target Detail report for the baseline and a Target Detail report that shows the ‘Differences’ or ‘Changes from Baseline’ between the two models. This allows users to compare various models and discover what difference, if any, the model changes make to the final target results.
Planning Tab – New ‘Logs’ View (Enterprise Edition)
Within the Planning Tab of the Enterprise Edition, you will see that the views have changed slightly to include a new ‘Logs’ view. We have taken the various logs, including the Resource Usage Log, Resource State Log and Constraint Log, out of the Entity Workflow and Resource Gantt areas and into their own view. This will enable users to move more easily between the various log files, without having to move from Entity Workflow to Resource Gantt and back, as was the case with the previous layout.
New Travel Step
A new Travel step has been added for use in the Processes window. This step may be used to do a direct, straight-line movement of an entity in free space to a specified location. The executing token will be held at the Travel step until the travel movement is completed. The new destination may be specified as a fixed object, absolute coordinates or relative coordinates to the entity’s current location. A maximum desired movement rate and ending movement rate may also be specified. The Travel step also supports Acceleration and Deceleration properties for free space travel. In support of free space movement, the Travel step also includes the option for auto orienting the moving object towards its destination. This option is used to automatically orient the entity such that its front is facing the travel destination. Otherwise, the entity will stay in its current orientation.
New ClearStatistics Step
A new ClearStatistics step has been added to the Processes window. This step allows users to clear all model statistics or specific object/element statistics. Possible uses for this step include wanting to clear all statistics during an interactive run based on some triggering event or ‘warmup’ time, or wanting to collect and report periodic statistics (e.g., some logic that every hour writes out some object or element statistics and then clears them).
Search Step Enhancement
The Search step now has a new property within the Advanced Options section that allows you to Search Related Rows Only (True/False). If the searched table has a primary key / foreign key relationship, this property indicates whether or not to include only related rows in the search. If this property is ‘False’, then the search will include all rows in the table, regardless of table relationships. The previous sprint behavior only searched those related rows. Trace has been improved to include the exact items found by the search and the Save Index Found and Save Number Found values, if specified.
AddRow now supports a ‘SpecificObjectorElement’ Object Type value, asking for the specific ‘ObjectOrElement’ if that option is specified.
SetNetwork step - Network Name property now provides the choice ‘No Network (Free Space)’. This lets you dynamically change an entity or transporter from using a network to only traveling in free space and vice-versa.
SetNode step – If setting a specific node name, the Node Name property now provides the choice ‘No Destination’ to allow clearing a previous destination.
Ride Step Changes
The transporter ‘Selection Expression’ default value is now ‘Candidate.Transporter.RideStationOverload’ instead of ‘Candidate.Transporter.RideCapacityRemaining’
Wait Step Enhancement
The Wait step now allows multiple events and event conditions to be evaluated before releasing entities from the step. The user has the ability to specify for the tokens to wait until all events have been fired or wait until any one of the events have been fired before releasing the tokens from the Wait step.
Routing Group Element
The Routing Group element now supports the Node List property being independently evaluated for each entity route request (per table entry, for example). Within the Transfer Node, for example, if selecting the entity destination using the ‘Select From List’ option, the name of the node list might come from table data and differ based on the entity.
Schedule ‘Value’ and ‘Cost Multiplier’ Enhancements
Within a Schedule, under the Day Pattern section, the Work Periods specified allow the specification of a ‘Value’ which is the capacity value for a given resource. Additionally, a ‘Cost Multiplier’ can be specified that will factor the cost associated with that given work period and resource. Both of these fields may now be specified as an expression, which may include a property value. This will allow both fields to be changed through experimentation as well. ‘Value’ and ‘Cost Multiplier’ fields are also available within various Exceptions specified (in the Work Period Exceptions within the Schedule, as well as within the Work Period Exceptions specifically within the object’s properties).
HourlyStatistic.spfx – This SimBit displays the use of the Timer and TallyStatistic elements in calculating the average number of entities in a given input buffer on an hourly basis.
FlowConcepts.spfx – This SimBit includes six (6) unique models that show various concepts using the Flow Library. These include the following:
FreeSpaceMovement.spfx - This SimBit displays the use of various types of free space travel. There are three models within the project. The first demonstrates entity free space movement from a Source to multiple Servers then to a Sink. The second demonstrates entity free space movement between two nodes after using network based travel (including the new Travel step). The third model demonstrates both entity and vehicle free space movement.
AppointmentArrivals.spfx –This SimBit shows model arrivals that occur at a specific time, such as a scheduled appointment. In the example, entities arrive every 15 minutes between 8:00 – 4:30, but also have a time deviation to demonstrate early and late arrivals.
WorkersArriveLateToShift.spfx –This SimBit demonstrates the use of schedules for a worker, but also considers the fact that sometimes the worker arrives late to his/her shift. This is done by using a ‘sub-classed’ Worker object and adding additional properties for the worker’s probability of lateness and late time.
New Support Ribbon
A new ribbon has been added to the product that provides various support features that were previously found on the Start Page, in addition to numerous other resources for your use. This includes access to SimBits, Examples, and Books such as Introduction to Simio, Reference Guide and API Reference Guide, as well as links to videos, user forum and support email. Additionally, information regarding customer license type and version number and maintenance expiration can be found on this ribbon. We are sure you will find this product information useful.
Shared Items Forum
An object/library sharing forum has been created on the Simio User Forum. This is a place for users to exchange items that may be of use to others. There are already many items posted there including an Extended Flow Library and an early version of a library that supports multiple cranes operation on the same runway (see below). You can find these libraries via the Shared Items button on the Support Ribbon or in the Simio User Forum. We encourage you to post your own contributions in this forum.
Lock Edits Enhancement
All items within the Facility window are now able to be right clicked and have ‘Lock Edits’ turned on/off. This will enable you to lock any object into place so that it does not move when navigating around the Facility window.
Ctrl-Wheel now zooms within an individual process in the Processes window. Categories now have a better look and feel.
Zoom now works better when zooming in and out repeatedly. A problem with “fuzzy” graphics on view changes has been corrected.
Property Default Value Macros
Macros can now be put in the default value of a property that will expand to the correct value when an object when that property is instantiated. The new macros are: $(InstanceName), $(DefinitionName), $(AssociatedObjectInstanceName), and $(AssociatedObjectDefinitionName). You can use this in your objects to avoid problems when your objects are renamed.
External View Symbol
We added an option in the Right-Click menu when selecting an object that will allow the user to revert back to the ‘external view’ symbol originally specified. For example, perhaps you place a Server and change its symbol to another graphic. Later, you may wish to change the symbol back to its original default symbol, as shown in the External View of the object.
We have shared an Extended Flow library and examples illustrating some of the additional capabilities of the Simio Flow approach. Additional objects include Solidifier, Liquefier, Filler, Extractor and Stockpile. A Solidifier can be used to convert a specified quantity of flow into discrete entities. A Liquefier converts a discrete entity into an outbound flow. The Filler is similar to a Combiner that combines input flow of a specified volume with a discrete entity and the combined entity departs the Filler. The Extractor is the flow equivalent of the Separator. It will separate a batch member entity from the parent entity, with the flow transfer of the batch member entity then discrete transfer of the parent entity once flow is complete. The Stockpile object is similar to a Tank with different animation graphics.
The Simio Crane Library is a collection of objects designed for modeling multiple cranes operating simultaneously in a bay. The library is provided as an example of complex material handling using the standard features of Simio. The Crane library may be used in conjunction with the Simio Standard Library, and Crane pickups are done using the standard TransferNode (e.g. the output side of a Server). Crane drop-offs can be done at either a BasicNode or TransferNode. The Crane Library can also be used with custom libraries as long as they support rider pickups using the standard transporter ride features.
The Crane Library consists of objects representing the Bay, Bridge, Cab, Lift, and Crane (the end effecter that actually picks up and drops off the item). These objects are combined together to model multiple cranes moving in a single bay. The separation of objects in this way allows you to use your own symbol for each component. A Crane movement occurs by first rising up from the pickup node to a specified travel height, traveling laterally at that height, and then lowering down to the specified drop-off node. All travel is done through free space without the need to explicitly draw a network. The Crane library also fully supports independent acceleration/deceleration and the ability for one crane to cause another blocking crane to move out of the way. https://www.simio.com/downloads/public/video/CranePreview.mp4
New Entity Functions
LastLinkUsed - Returns the most recent link used by the entity to complete a travel or instant transfer (in the case of a connector link) into a new node location. The value returned by this function is updated whenever the entity transfers from the end of a link into a node, or transfers across a connector from one node into another node.
Entity.Sequence.NumberJobStepsRemaining – Returns the current number of steps remaining in the entity’s assigned sequence, including the current job step.
Entity.Sequence.ExpectedOperationTimeRemaining – Returns the sum of the expected operation times for the remaining steps in the entity’s assigned sequence, including the current job step.
Entity.Sequence.CriticalRatio – Returns an index for determining how much the entity’s assigned sequence is considered to be on schedule given the due date and expected operation time remaining. A value of 1.0 is ‘on schedule’. A value less than 1.0 is behind, while a value larger than 1.0 is ahead of schedule. This function returns a value equivalent to the expression ‘(Entiyt.Sequence.DueDate – Run.TimeNow) / Entity.Sequence.ExpectedOperationTimeRemaining’.
Entity.Sequence.SlackTime – Returns the expected amount of time that would be left until due date after completing the entity's assigned sequence, if the sequence's remaining operation time was started now. This function returns a value equivalent to the expression '(Entity.Sequence.DueDate – Run.TimeNow) - Entity.Sequence.ExpectedOperationTimeRemaining'.
Entity.Sequence.SlackTimePerOperation - Returns the average slack time per remaining operation for the entity's assigned sequence. This function returns a value equivalent to the expression 'Entity.Sequence.SlackTime / Entity.Sequence.NumberJobStepsRemaining'.
Entity.Sequence.DueDate - Returns a due date for the entity to complete its assigned sequence. The 'Due Date Expression' property for the entity type is used to get the due date value.
Entity.Sequence.ModifiedDueDate - Returns a modified due date value for the entity's assigned sequence, which is the highest of either the due date or the expected completion date if the sequence's remaining operation time was started now. This function returns a value equivalent to the expression 'Math.Max(Entity.Sequence.DueDate, Run.TimeNow + Entity.Sequence.ExpectedOperationTimeRemaining)'.
Entity.Sequence.DestinationNodes - The destination nodes in the entity's assigned sequence.
Entity.Sequence.DestinationNodes.NumberItems - Returns the number of destination nodes in the entity's assigned sequence.
Entity.Sequence.DestinationNodes.FirstItem - Returns a reference to the first destination node in the entity's assigned sequence.
Entity.Sequence.DestinationNodes.LastItem - Returns a reference to the last destination node in the entity's assigned sequence.
Entity.Sequence.DestinationNodes.ItemAtIndex(index) - Returns a reference to the destination node at a specified step index position (or job step) in the entity's assigned sequence.
Entity.Sequence.DestinationNodes.IndexOfItem(node) - Returns the one-based step index (or job step) of the first occurrence of a specified destination node in the entity's assigned sequence. If the entity does not have an assigned sequence then the value 0 is returned.
New Link Functions
StartingNode = Returns a reference to the node located at the drawn starting point of this link.
EndingNode = Returns a reference to the node located at the drawn ending point of this link.
New Link States
CurrentVolumeFlowIn – State used to get the current total volume flowed into a link.
CurrentVolumeFlowOut – State used to get the current total volume flowed out of a link.
CurrentWeightFlowIn – State used to get the current total weight flowed into a link.
CurrentWeightFlowOut – State used to get the current total weight flowed out of a link.
Network Element Functions
Distance(fromNode,toNode) Returns the shortest path distance between two nodes using this network.
NextLink(fromNode, toNode) Returns a reference to the next link on the shortest path between two nodes using this network.
NextNode(fromNode, toNode) Returns a reference to the next node on the shortest path between two nodes using this network. If the destination node is returned, then the two nodes are directly connected by a link.
PathExists(fromNode, toNode) Returns ‘True’ if a followable travel path exists between two nodes using this network.
New Regulator States
CurrentMaximumFlowRate – State used to get or set the current maximum flow rate of a regulator.
CurrentVolumeFlowOut – State used to get the current total volume flowed out of a regulator.
CurrentWeightFlowOut – State used to get the current total weight flowed out of a regulator.
New Container States
CurrentVolumeCapacity – State used to get or get the current volume capacity of a container.
CurrentWeightCapacity – State used to get or set the current weight capacity of a container.
CurrentVolumeFlowIn – State used to get the current total volume flowed into a container.
CurrentVolumeFlowOut – State used to get the current total volume flowed out of a container.
CurrentWeightFlowIn – State used to get the current total weight flowed into a container.
CurrentWeightFlowOut – State used to get the current total weight flowed out of a container.
New Transporter Functions
RideStationLoad – Returns the current ‘load’ on the station location that holds the entities riding on the transporter. The ride station ‘load’ is defined as the sum of current entities reserving space on and intending to ride the transporter plus the current number of riders.
RideStationOverload – Returns the current difference between the load and capacity values (a positive difference indicating an ‘overload’) for the station location that holds entities riding on the transporter. The ride station ‘load’ is defined as the sum of the current entities reserving a spot on and intending to ride the transporter plus the current number of riders.
New Node Property
Sequence Expected Operation Time – The expression used to estimate an expected operation time if this node is in the destination sequence of an entity's assigned sequence table.
New Node Functions
IsInputNode – Returns ‘True’ if this node is an external input node for entering another object. This function replaces the obsolete function, IsExternalInputNode.
IsOutputNode – Returns ‘True’ if this node is an external output node for exiting another object.
Nearest.Node – Returns the node that is the shortest straight-line distance from this node.
Nearest.InputNode – Returns the input node that is the shortest straight-line distance from this node.
Nearest.OutputNode – Returns the output node that is the shortest straight-line distance from this node.
AssociatedObject – For an external node, returns a reference to the associated object that may be entered or exited using the node. (For example, for Input@Server1 basic node, this function would return Server1 as its associated object).
AssociatedNode (description modified) – For an external node, this function returns a reference to the object that the node is attached to and which may be entered or exited using the node. If the node is not an external node, then the Nothing keyword is returned.
AssociatedStation– For an external input node, this function returns a reference to the immediate station location inside the node’s associated object that may be entered using the node. If there is no station location, then the Nothing keyword is returned.
AssociatedStationLoad – For an external input node, this function returns the current ‘load’ on the station locations inside the node’s associated object that may be entered using the node. The associated station ‘load’ is defined as the sum of current entities en route to the node intending to enter the stations, plus the current entities already arrived to the node but still waiting to enter the stations, plus the current entities occupying the stations.
AssociatedStationOverLoad – For an external input node, this function returns the current difference between the load and capacity values (a positive difference indicating an ‘overload’) for the station locations inside the node’s associated object that may be entered using the node. Overload = Load – Capacity.
NumberTravelers.RoutingInToEnterAssociatedObject – For an external input node, this function returns the current number of travelers with their destination set to this node and which can enter the node’s associated object.