Simio Compatibility Notes

Download as pdf or txt
Download as pdf or txt
You are on page 1of 21

Compatibility Notes and Known Issues

We prepared this list to help you avoid or work around known problem areas. If you encounter problems that are
not on this list, please email them to [email protected] so we may fix them.

Known Issues
Issue Work-around
If you use the features to auto create elements in tables, If you export the table and then import it that will
and you add new properties after already populating force all rows (elements) to be auto-created and the
elements, those new property values may not correctly properties will be correctly handled.
reflect in the elements previously created.
When used on a non-English OS, default values might You will have to manually correct them.
come in with commas and periods (decimal points)
switched.

Exceptions
An “exception” happens when Simio encounters an unusual combination of actions that it does not know how to
handle. In general, when an exception occurs you will be presented with a dialog asking you to report the
situation. In most cases you can continue modeling with little inconvenience.
It is our intention that you should never encounter any exception, and in particular you should never encounter an
unhandled exception where you risk loss of data. Please help us find and fix exceptions by reporting the first
occurrence of any exception that you might encounter using the exception dialog, or by copying the exception
details to an email and send to [email protected]. Including the model, when possible, is very helpful.
Please do not report the same exception multiple times.

Compatibility Notes
In general each release will load all models from the previous releases. Unfortunately, in order to add important
features or to fix issues, it is occasionally necessary to make changes that require changes to previous models. We
try to minimize and automate such changes.
When manual changes are required, the changes are usually required only for rarely used features or modeling
situations. We apologize for requiring such changes and we will try to make such situations less likely in the future.
But for now, please review the compatibility notes below carefully, especially if you have a model that no longer
runs as it did.
If you encounter problems updating a model from an older sprint, we suggest that you start by looking at the
compatibility notes below for all sprints since the one in which your model was last working correctly.

(See detailed Compatibility Notes starting on the next page)


Compatibility Notes
Simio Version 12
Sprint 216 Issues Solution
In Run Setup -> Advanced Compatibility Settings, an This setting is False by default for models saved in
Allow Cross-Node Comparisons Using Routing Group Sprint 215 version or older, which was the implicit
Dynamic Selection Rules compatibility setting was setting up to that point. The setting is True for new
added. models. No action is necessary if older model behavior
was satisfactory. For any dynamic selection rules that
Indicates whether routing groups are allowed to imply cross-node comparisons, like Standard
compare dynamic selection rule results across Dispatching Rule – LeastSetupTime, make sure this
destination nodes, in order to determine the best setting is True to improve the selection behavior.
overall entity destination assignments. The
recommended value for this setting is True.
Simio Version 11
Sprint 198 Issues Solution
In Run Setup -> Advanced Compatibility Settings, a This setting is False by default for models saved in
Search Step Uses Explicit Copy Over Table Row Sprint 197 version or older, which was the implicit
References compatibility setting was added. setting up to that point. The setting is True for new
models. No action is necessary if older model behavior
Indicates whether the copying of table row references was satisfactory.
over from an original token executing a Search step to
new tokens associated with found items is based solely
on the step's Copy Over Table Row References property
value, removing all restrictions that were required by
previous Simio versions. Enabling this option also
ensures that the table row references for the original
token are always included in match condition and
search expression evaluations. The recommended value
for this setting is True.
Sprint 196 Issues Solution
In Run Setup -> Advanced Compatibility Settings, an This setting is False by default for models saved in
Auto Cancel Move Request If Resource Released Sprint 195 version or older, which was the implicit
compatibility setting was added. setting up to that point. The setting is True for new
models. No action is necessary if older model behavior
This setting indicates whether to automatically cancel a was satisfactory.
resource move request if that resource is released. The
recommended value for this setting is True.

Sprint 194 Issues Solution


If an older model is modeling ‘Sequence Dependent If you update an older model to the latest server object
Setup’ tasks at servers with ‘Setup’ resource state definition, and there are sequence dependent setup
occurrences, note that those servers are no longer tasks at the servers, then you will see lower utilization
considered to be utilized resources during the setup statistics for those servers than seen in the previous
time. This change to the server object design was made version. If this is undesirable, you have the option of
to be more consistent with the standard Overall not updating the older model to the latest server
Equipment Effectiveness (OEE) definition. design.
Routing Group element – Add-on process triggers – If you have an older model using custom routing groups
Each time any of a routing group’s add-on processes is with add-on processes, the routing groups are being
executed (e.g., On Evaluating Route Request), the referenced data tables with auto-set table row
created prow token is now always automatically references option enabled, and the process logic is
initialized with the same table row references as the using Search steps to search table rows, it may be
routing group element. possible that a table row conflict (error message) now
occurs. The simplest way of fixing the model if that
(probably unlikely) situation occurs would be to make
sure the auto-set table row references on the table
column that is specify the routing group element names
is set to False.
Sprint 191 Issues Solution
In Run Setup -> Advanced Compatibility Settings, an On This setting is True by default for models saved in Sprint
Seized Process Compatibility Mode compatibility 190 version or older, which was the implicit setting up
setting was added. to that point. The setting is False for new models. No
action is necessary if older model behavior was
This setting indicates whether to execute the On Seized satisfactory.
Process of a Seize step using token associated object
and token context object references that are
compatible with Simio version Sprint 190 or earlier. If
this setting is True, then the token associated object
reference will be the seized resource and the token
context object reference will be the resource’s owner.
Otherwise, the token’s references will be the opposite.

In Run Setup -> Advanced Compatibility Settings, an On This setting is True by default for models saved in Sprint
Released Process Compatibility Mode compatibility 190 version or older, which was the implicit setting up
setting was added. to that point. The setting is False for new models. No
action is necessary if older model behavior was
This setting indicates whether to execute the On satisfactory.
Released Process of a Release step using token
associated object and token context object references
that are compatible with Simio version Sprint 190 or
earlier. If this setting is True, then the token associated
object reference will be the released resource and the
token context object reference will be the resource’s
owner. Otherwise, the token’s references will be the
opposite.

Simio Version 10
Sprint 187 Issues Solution
In Run Setup -> Advanced Compatibility Settings, an This setting is True by default for models saved in Sprint
Automatically Adjust Timer's Target Triggering Event 186 version or older, which was the implicit setting up
Count If Zero To One compatibility setting was added. to that point. The setting is False for new models. No
action is necessary if older model behavior was
If this setting is True, and an event count-based timer's satisfactory.
Triggering Event Count expression property has
returned the value zero, then the target triggering
event count for that timer will be automatically
adjusted to one. The recommended value for this
setting is False.
Sprint 186 Issues Solution
In Run Setup -> Advanced Compatibility Settings, an This setting is False by default for models saved in
Always Use Seize Selection Goal When Checking Sprint 185 version or older, which was the implicit
Resource Allocation Queue compatibility setting was setting up to that point. The setting is True for new
added. models. No action is necessary if older model behavior
was satisfactory.
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.
In Run Setup -> Advanced Compatibility Settings, the This setting is False by default for models saved in
default value for new models of the Schedule Late Sprint 185 version or older. The setting is True for new
Current Event To Try Allocating When Resource models. No action is necessary if older model behavior
Capacity Increased compatibility setting was changed was satisfactory.
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.
Sprint 182 Issues Solution
In Run Setup -> Advanced Compatibility Settings, an This setting is False by default for models saved in
Always Do Full Checks Of Batch Logic Parent Queues Sprint 181 version or older, which was the implicit
compatibility setting was added. setting up to that point. The setting is True for new
models. No action is necessary if older model behavior
If this setting is False, then depending on the matching was satisfactory.
rule used, a batch logic element may stop further
checking of entities waiting in its parent queue if the
entity waiting at the front of the queue cannot collect
its required batch quantity. The recommended value for
this setting is True so that further checking is always
allowed.
Sprint 175 Issues Solution
In Run Setup -> Advanced Compatibility Settings, a This setting is False by default for models saved in
Schedule Late Current Event To Try Allocating When Sprint 174 version or older, which was the implicit
Material Produced compatibility setting was added. setting up to that point. The setting is True for new
models. No action is necessary if older model behavior
This setting Indicates whether to schedule a late priority was satisfactory.
current event to try allocating to waiting consumption
requests whenever material has been produced.
Otherwise, allocation will be immediately attempted
before the execution of any other simulation logic in
the system. The recommended value for this setting is
True.

In Run Setup -> Advanced Compatibility Settings, an This setting is True by default for models saved in Sprint
Allow Material Allocation Queue Bypassing 174 version or older, which was the implicit setting up
compatibility setting was added. to that point. The setting is False for new models. No
action is necessary if older model behavior was
This setting Indicates whether an object executing a satisfactory.
Consume step is allowed to immediately consume
material bypassing the material allocation queue. The
recommended value for this setting is False.
Sprint 170 Issues Solution
In Run Setup -> Advanced Compatibility Settings, an This setting is False by default for models saved in
Exclude Unrelated Rows In Timer Arrival Tables Sprint 169 version or older, which was the implicit
compatibility setting was added. setting up to that point. The setting is True for new
models. No action is necessary if older model behavior
This setting indicates whether to exclude unrelated was satisfactory.
rows if an arrival table used to schedule timer events
has primary key/foreign key relationships. The
recommended value for this setting is True.

Sprint 167 Issues Solution


In Run Setup -> Advanced Compatibility Settings, a This setting is False by default for models saved in
Schedule Late Current Event To Try Batching When Sprint 166 version or older, which was the implicit
Batch Queue Item Inserted compatibility setting was setting up to that point. The setting is True for new
added. models. No action is necessary if older model behavior
was satisfactory.
This setting indicates whether to schedule a late priority
current event to try batching whenever a new item has
been inserted into the parent or member queue of a
batch logic element. Otherwise, batching will be
immediately attempted before the execution of any
other simulation logic in the system. To better handle
simultaneous entity arrivals to batching queues, the
recommended value for this setting is True.

Simio Version 9
Sprint 164 Issues Solution
Standard Library Server, Combiner, and Separator When opening a model using an older library object
objects. Flow Library Filler and Emptier objects. version, if updating the Server, Combiner, Separator,
Renamed the SecondaryResourceSeizesRequestVisit Filler, & Emptier objects, then the values entered in the
properties to SecondaryResourceSeizesRequestMove. old property names will be automatically loaded as the
Renamed the SecondaryResourceSeizesNodeName values of the new property names. So no action is
properties to required if simply opening and updating an old model
SecondaryResourceSeizesDestinationNode. with no sub-classed objects.
Renamed the SecondaryResourceSeizesVisitPriority
properties to SecondaryResourceSeizesMovePriority. However, if you have sub-classed the Server, Combiner,
Separator, Filler, & Emptier and overridden one or more
overridden processes in the sub-class, and manually
choose to update the base class to the new object
version, then you may see messages in the Error
window indicating that the old property name is no
longer found. To fix these errors, go to each of the error
locations and change the old property name to the new
property name.
Flow Library Filler object. If you have any decision logic in an existing model that
is using a Filler’s current ResourceState value for a
The resource state is now set to ‘Starved’ only if there decision, and updating to the new Filler object design
are no container entities waiting at or being processed affects that logic, then you may need to either defer the
at the filler. That state value no longer also includes Filler object update or adjust the decision logic
flow input starvation occurrences. Note that a future accordingly.
enhancement goal is to provide separate flow status
reporting for an individual flow regulator to help track
flow starvation.

Flow Library Emptier object. If you have any decision logic in an existing model that
is using a Emptier’s current ResourceState value for a
The resource state is now set to ‘Blocked’ only if the decision, and updating to the new Emptier object
current container entity has finished processing and is design affects that logic, then you may need to either
attempting to exit the emptier. That state value no defer the Emptier object update or adjust the decision
longer also includes flow output blockage occurrences. logic accordingly.
Note that a future enhancement goal is to provide
separate flow status reporting for an individual flow
regulator to help track flow blocking.

Sprint 163 Issues Solution


Standard Library Server, Combiner, and Separator When opening a model using an older library object
objects. Flow Library Filler and Emptier objects. version, if updating the Server, Combiner, Separator,
Renamed the Filler, & Emptier objects, then the values entered in the
SecondaryResourceForProcessingRequestVisit property old property names will be automatically loaded as the
to SecondaryResourceForProcessingRequestMove. values of the new property names. So no action is
Renamed the required if simply opening and updating an old model
SecondaryResourceForProcessingNodeName property with no sub-classed objects.
to SecondaryResourceForProcessingDestinationNode.
However, if you have sub-classed the Server, Combiner,
Separator, Filler, & Emptier and overridden one or more
overridden processes in the sub-class, and manually
choose to update the base class to the new object
version, then you may see messages in the Error
window indicating that the old property name is no
longer found. To fix these errors, go to each of the error
locations and change the old property name to the new
property name.
Sprint 162 Issues Solution
In Run Setup -> Advanced Compatibility Settings, a This setting is True by default for models saved in Sprint
Token.IsSuspended Function Considers Only 161 version or older, which was the implicit setting up
Suspensions Applied Explicitly To The Token was to that point. The setting is False for new models. No
added. Indicates whether the IsSuspended function action is necessary if older model behavior was
provided by a token (or any related functions such as satisfactory.
the ResourceOwners.AllProcessingSuspended function
provided by a resource) considers only suspensions
applied explicitly to the token, not any suspensions
applied to the token’s parent process.
Sprint 161 Issues Solution
The following properties have been deprecated: To display and edit the deprecated properties of a
selected item in Simio’s Properties window, go to the
• Seize step – Seize Operation Resources application menu and select File -> Settings -> GUI ->
property Display Deprecated Properties In Properties Window
• Release step – Release Operation Resources and change that setting to True.
property
Then reselect the item and in the Properties window go
to Advanced Options -> Deprecated Properties.
By default, a deprecated property of a selected item is
not displayed in Simio’s Properties window unless the
property has a non-default value. If that is the case,
then the property value is shown but in a read-only
state.

To support suspending and resuming execution of None. However, if your model has multi-capacity
individual process tokens using the Suspend and servers using work schedules where the processing time
Resume steps, as well add new process functions to of multiple entities is scheduled to end at the same
provide improved user access to the collection of time, it is possible that when resuming processing at a
tokens currently in process, each process executed by server because of coming back on-shift then the order
the simulation engine now holds a list of the tokens of entities finishing processing at the same time may
that are currently executing it. The list order is always have changed (from a random order to now always
token creation order. being in the order of entity entry into the server).

Thus, when resuming execution of a process using the


Resume step, the execution of the individual tokens is
now also always resumed in the token creation order
instead of a random order as before.
A bug in the Wait step was fixed whereby, if you This bug has been fixed in Sprint 161. The work-around
specified the same Event Name multiple times with to the bug in previous software was to define the Event
different event conditions and the Token Wait Action Name only a single time with an event condition using
was WaitUntilAnyEvent (e.g., Event1 and Cond1 OR ‘||’ syntax (e.g., Event1 and Cond1 || Cond2 || Cond3).
Event1 and Cond2 OR Event1 and Cond3) then it was
possible for some event occurrences to be missed and
tokens not exiting the Wait step as expected.
In Run Setup -> Advanced Compatibility Settings, a Use This setting is False by default for models saved in
Executing Token To Evaluate Route Step Selection Sprint 155 version or older, which was the implicit
Condition Expression compatibility setting was added. setting up to that point. The expression in those older
Indicates whether to evaluate the Selection Condition sprints was incorrectly being evaluated only in context
expression property of a Route step using the executing of the requesting entity. The setting is True for new
token. models. No action is necessary if older model behavior
was satisfactory.
In Run Setup -> Advanced Compatibility Settings, a This setting is False by default for both old models
Schedule Late Current Event To Try Allocating When (which was the implicit setting) and new models. No
Resource Capacity Increased compatibility setting was action is necessary unless new behavior is desired.
added.

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. The
recommended value (as of now) for this setting is False.
Sprint 160 Issues Solution
If using the Must Simultaneously Seize option on the None. However, note that if using the Must
Seize step, previously when a resource became Simultaneous Seize option on a Seize step that is
available (e.g., due to being released or a scheduled attempting to seize resources from multiple resource
capacity increase), it would search its AllocationQueue lists with resources shared between lists (e.g.,
and an assumption was forced whereby the initial seize Resource1 is a candidate in both ResourceList1 and
of the simultaneous seizes had to be that newly ResourceList2 and the Seize step needs to
available resource regardless of the selection goal(s) simultaneously seize a resource from both
specified on the Seize step. ResourceList1 and ResourceList2), then the new
more predictable behavior gives a modeler improved
Now, when the seize requests in a resource’s flexibility using the seize selection goals to find the best
AllocationQueue are searched, if simultaneous seizing is mix of resources from the multiple lists to seize.
required then the engine’s algorithm will always
consistently use the selection goals specified in the
Seize step to determine the candidate resource
preference order. This means that the resource whose
AllocationQueue is being searched may or may not be
part of the simultaneous seize, depending on what
other resource candidates are also available and what
the specified resource selection goals are.

In Run Setup -> Advanced Compatibility Settings, a Run This setting is False by default for models saved in
Resource OnCapacityAllocated Process After Seize previous sprint versions. But set to True for new
Step On Seized Process compatibility setting was models. No action is necessary if older model behavior
added. When a resource is seized, indicates whether was satisfactory.
the resource’s OnCapacityAllocated process is executed
after the On Seized Process optionally specified by the
Seize step.
In Run Setup -> Advanced Compatibility Settings, a Run This setting is False by default for models saved in
Resource OnCapacityReleased Process After Seize Step previous sprint versions. But set to True for new
On Released Process compatibility setting was added. models. No action is necessary if older model behavior
When a resource is released, indicates whether the was satisfactory.
resource’s OnCapacityReleased process is executed
after the On Released Process optionally specified by
the Seize step.
Sprint 147 Issues Solution
We made a minor change to the statistics produced by Update the datasource in each report or dashboard to
the Sink object. Statistics that used to have a data use the new name.
source of [DestroyedObjects] now have a datasource of
[DestroyedEntities]. This may impact reports and
dashboards.
Simio Version 8
Sprint 146 Issues Solution
We made a minor adjustment to the random number Models may now return slightly different results,
generator – 1 out of 4 billion samples of the base particularly short-run models with a single replication.
random uniform sampling could have returned a value No discernable impact should be seen in statistically
of 1, even though the definition specifically excludes significant results.
that possibility. We corrected that issue.
There is an issue that was changed related to the Write If user has analysis that is being done with Excel file on
step. Originally we added a space between items to DateTime values (which were written out as strings
make it easier to read in Notepad. However, this originally), no extra conversion will be necessary to
changed those values to string values when opened in change a string into DateTime value.
Excel if they were DateTime values. However, the first
column would remain as a DateTime value because
there was no space before it. Now we have removed
the extra space, so all DateTime values will appear as
DateTime in Excel not string.
In Run Setup -> Advanced Compatibility Settings, an This setting is False by default for models saved in
Always Allocate Resource Capacity To First Eligible previous sprint versions. But set to True for new
Seize Requests compatibility setting was added. This models. If you see in the Trace that a resource is unable
setting indicates whether to always allocate a to continue further checking of its allocation queue due
resource's available capacity to the first eligible seize to this advanced compatibility setting being False, then
request(s) waiting in its allocation queue. If this setting that may indicate an issue with the model’s behavior. It
is False and no dynamic selection rule is being used, is recommended to go to Run Setup -> Advanced
then a resource will be unable to continue further Compatibility Settings and change this setting to True.
checking of seize requests waiting in its allocation
queue if the seize request at the front of the queue is
ineligible. The recommended value for this setting is
True so that further checking is allowed.
Sprint 144 Issues Solution
Models built prior to this sprint containing Server / Highlight the animated symbol for Server / Combiner /
Combiner / Separator will NOT have animated graphics Separator and within the Symbols ribbon, click on Add
for newly added resource states including Setup (7) and Additional Symbol to include active symbols Setup (7)
OffShiftSetup (8). and OffShiftSetup (8). Change symbol colors as desired.
Sprint 141 Issues Solution
Models built prior to this sprint containing Server / Highlight the animated symbol for Server / Combiner /
Combiner / Separator will NOT have animated graphics Separator and within the Symbols ribbon, click on Add
for newly added resource state OffShiftProcessing (6). Additional Symbol to include active symbol
OffShiftProcessing (6). Change symbol colors as
desired.
Sprint 133 Issues Solution
A model that has extra process logic executing Transfer Set the Initial Travel Mode property on the entity
to ‘FreeSpace’ steps for an entity that has an assigned instance to ‘Network If Possible’.
network value, rather than relying on the Standard
Library object behaviors where assumption is that
Entity.CurrentNetwork==’Nothing’ to transfer an entity
into free space, may have issues with the new Initial
Travel Mode property set to ‘Network Only’.
Simio Version 7
Sprint 113 Issues Solution
The Flow Library issue noted in Sprint 112 with splitting Splitting flow to multiple pipe objects now works
flow to multiple Pipe objects has now been fixed within properly in Sprint 113.
Sprint 113.
Simio Version 6
Sprint 112 Issues Solution
The Flow Library does not currently support splitting The Simio development team is actively investigating
flow to multiple Pipe objects. this issue and possible solutions. Until the problem is
resolved, if flow splitting is required at a flow node then
it is recommended to use FlowConnector objects
instead.
Sprint 107/108 Issues Solution
Related to the duplicate identifiers issue listed in sprint Any model built in sprint 106 and prior should have the
106 - in sprint 106, we gave a warning if model built Parse Element Functions in Expressions Last set to
prior to that had a duplicate identifier. Now, in sprint ‘False’. If not, there may be conflicts with a user defined
107/.108, we have a new property on the Model itself state or property and an internal element function,
that will allow users to Parse Element Functions in such as the newly added internal element function.
Expressions Last. Element functions are built in named ModelEntity.EntityType.
functions that come off of elements, or Intelligent
Objects, such as Object.Capacity,Timer.EventCount, If you believe you have a conflict with a user defined
Station.Capacity.Average , etc), ModelEntity.EntityType, stateor property, you can change the name of your
etc. state or property to be unique from Simio’s internal
element functions and change any references to that
The setting for this Parse Element Functions in user defined state or property.
Expressions Last is set to ‘False’ for all models built in
sprint 106 and prior. For new models, it is set to ‘True’.
Sprint 106 Issues Solution
Although Simio has always tried to prevent the use of Although you can ignore the warning and continue to
duplicate identifiers, sometimes it still can happen - for run, we recommend that you rename the items
example when an updated object introduces new involved to provide unique names and avoid the
constructs. Simio now detects duplicate identifiers and potential model error.
warns that you might have a logic error because of it.
If using Collection.ItemAtIndex(index) function syntax in Make sure the ‘index’ argument passed to an
an expression (e.g., QueueStateName.ItemAtIndex(3) or ItemAtIndex function is within the bounds of the
NodeName.InboundLinks.ItemAtIndex(3)), then when current collection size.
evaluating the function a runtime error will be thrown if
the index argument is out of range. Advanced users who wish to disable this error check for
a project may go to Run Setup – Advanced Compatibility
Previously, an undefined or null value was returned Settings (click the in the bottom right-hand corner of
without any error. the ribbon group) and set the Throw Error If Index Out
Of Range When Evaluating An 'ItemAtIndex' Function
Note that any model saved in a Sprint version prior to setting to False. Note that the recommended value for
Sprint 106 has this index checking still disabled by this setting is True as not doing index checking can
default to maintain model compatibility. result in other null reference errors that perhaps
require more effort to discover.
Sprint 99 Issues Solution
Search Step - If the 'Save Index Found' state variable is This was considered a bug fix and the desired Search
specified as a state variable of the original token, then step behavior.
for each new token that exits the 'Found' exit point of
the Search, the found item's collection index will be
assigned to that same state variable of the new token.
The original token's state variable is still always
assigned the index of the last item found if multiple
found items.

For example, if you specify in the Search step that the


'Save Index Found' state variable is 'MyToken.MyState',
and the Search finds three items at indexes {3,5,7} in
the collection, then the original executing token will
have its 'MyState' state variable assigned the value '7'.
And the three tokens that exit the 'Found' exit point of
the search will have their 'MyState' state variables
assigned the values 3, 5, and 7 respectively.

Simio Version 5
Sprint 92 Issues Solution
Flow Library Tank monitoring of ‘Mark’ threshold If an older model opened in Sprint 92 or later software
crossings, Monitor element: is using a Monitor element to monitor a continuous
state variable for threshold crossings, or is using a Flow
A flaw in Simio’s Monitor element was discovered where Library Tank object with ‘Marks’ and the provided
if monitoring for a continuous state threshold crossing, triggers to detect when the level ‘rises above’ or ‘falls
the monitor would potentially fire false crossing events if below’ a mark, then possibly the Monitor may be firing
process logic triggered by a crossing event immediately differently depending what kind of response logic was
adjusted the Rate of the monitored continuous variable. put in to react to a threshold crossing. Because the
Monitor will no longer be firing incorrect, false
For example, if you defined a Monitor element that was crossing events.
monitoring a level variable and set to detect when the
level passed a threshold in the positive direction, and if In many cases, probably the behavior of the model will
when a threshold crossing was detected there was be unaffected or even slightly improved because the
response logic defined that adjusted the Rate of the level false events will be eliminated. However, there may be
(still a positive rate, just maybe a slower or faster rate), a case where the model logic was relying for whatever
then the Monitor would incorrectly immediately fire reason on the false crossing event occurrences.
again even though the level had not really risen above
the threshold again. Depending on the Rate adjustment If this is the case, then what might be done is when the
logic, the result could possibly be ‘no harm no foul – just monitor first fires, if you want to adjust the level’s rate
an extra duplicate assignment’ or be as bad as causing variable and then for whatever reason want to ‘reset’
the model to go into an infinite logical loop of Monitor the Monitor to immediately consider the threshold
events and Rate assignments. again crossed, you have the option of disabling and
then reenabling the Monitor which will essentially
The Monitor element’s behavior starting in Sprint 92 If ‘reset’ it.
Monitoring a Continuous State for Threshold Crossings

If the Monitor is monitoring threshold crossings in the


positive crossing direction, the Monitor will only fire
when the level is detected to be crossing the specified
threshold value in the positive direction (or ‘rising above’
the threshold value).

In order for another threshold positive crossing event to


be detected and fire, the monitored level variable will
have to first be detected falling below the threshold
value, essentially causing the threshold to go from
‘covered’ to ‘uncovered’. And then the Monitor will
again fire if the level is detected rising above the
threshold again.

If the Monitor is monitoring threshold crossings in the


negative crossing direction, the Monitor will only fire
when the level is detected to be crossing the specified
threshold value in the negative direction (or ‘falling
below’ the threshold value).

In order for another threshold negative crossing event to


be detected and fire, the monitored level variable will
have to first be detected rising above the threshold
value, essentially causing the threshold to go from
‘uncovered’ to ‘covered’. And then the Monitor will
again fire if the level is detected falling below the
threshold again.

Sprint 88 Issues Solution


The Object.DistanceTo(object), There is a small possibility that a model had some
Entity.NetworkDistanceTo(node), and ‘Largest Value’/’Smallest Value’ selection rules, or
Global.Distance(fromNode, toNode) functions now all Minimize/Maximize expression searches, that were
return an undefined value (NaN) if a distance cannot be selecting a candidate with a NaN value (depending on
calculated, instead of throwing a runtime error. where in the product the particular rule or search was
being used). If this situation occurs, then that is
Also, for any ‘Largest Value’/’Smallest Value’ selection probably a modeling mistake and it should be
rules or minimize/maximize expression searches in the investigated why a NaN value was being returned by
product, if the evaluated value of a candidate is NaN the selection or search expression for a particular
then that candidate will now be discarded (i.e., not candidate. If necessary, you might modify the
selectable by the rule or search). Previously, the Simio expression to check for a NaN result and if so, instead
engine was inconsistent in how NaN values were handled return a number in the expression that is most
by largest value/smallest value selection rules or appropriate for your application to represent the
min/max expression searches. In some cases a NaN undefined value (such as 0.0, -1.0, Infinity, etc.).
would be discarded and in other cases a NaN would not
be. The treatment and handling of NaN in the product is
now consistently implemented.
The Entity.NetworkDistanceTo.NextEntityAheadOnLink If there is model logic is using these functions, then
and Entity.NetworkDistanceTo.NextEntityBehindOnLink verify that this change has no impact. If necessary,
functions now return an undefined value (NaN) if there is modify the logic such as including a check for
no next entity ahead or behind on the same link. Entity.NextEntityBehindOnLink== Nothing or
Previously, the value ‘Infinity’ was returned. Entity.NextEntityAheadOnLink == Nothing in the logic
or expression.

The Process element provides an Advanced Options -> This change in default settings will have no impact on
Token Actions – On Associated Object Destroyed option the behavior of old models. However for new models
that allows you to indicate whether or not tokens being built, if entities are being destroyed with active
executing the process will automatically end processing tokens pointing to those entities, you may by default
(be disposed of) if the token’s associated object is now see cases of ‘object or element reference not set
destroyed. Previously, the default for this option was for to an instance of an object’ runtime errors being
a token to end processing but that default has now been thrown (e.g., thrown by process steps trying to access
changed to continue the process. information on a non-existent, destroyed entity). If so,
setting this option to ‘EndProcess’ on the Process
element is an easy way to automatically stop
execution of any tokens that were pointing to an entity
that has been destroyed. Or, alternatively, in your
process logic before attempting to reference a token’s
associated entity, you may do a check that the token
has an associated object (Token.AssociatedObject !=
Nothing).
Sprint 83 Issues Solution
The Entity.Population.IndexOfItem(entity) function was Make sure the ‘entity’ argument passed to the
fixed to only accept a valid entity object argument. The Entity.Population.IndexOfItem(entity) function is an
function continues to return the one-based member entity.
index of the entity if the entity is a member of the
population, or 0 if the entity is not a member. The
function will throw an error if the ‘entity’ argument is
not an entity object (e.g., is not an object reference or is
a non-entity object such as a node or link).
Sprint 80 Issues Solution
Seize step – If using the ‘SmallestDistance’ or If it is still desired to always use the direct (straight
‘LargestDistance’ selection goals, the candidate line) distance from the candidate resource to the
resources to seize are moveable resources, and the owner object, then use the ‘SmallestValue’ or
‘Request Move’ option requesting a move by the seized ‘LargestValue’ selection goal instead. The expression
resource(s) to a node is specified, then the distance used would be something like
to evaluate a candidate is now the network distance of ‘Candidate.Object.DirectDistanceTo.Object(Entity)’ if
the candidate resource to the destination node. for example the owner trying to seize the resource is
Previously, the distance used was always the direct an entity.
(straight line) distance from the resource to the owner
object.

(See next pages for earlier releases)


Simio Version 4
Sprint 76 Issues Solution
We are now reporting errors for Several options for fixing include marking the model as "Runnable" =
required properties with no value at the False (this could a problem if you have a subclassed object that really
model level of runnable models. shouldn’t be runnable but is marked as such), marking a property as
"Required Value" = False, or providing values for properties for the top
level model instance (the properties on the model itself).
Sprint 75 Issues Solution
The Standard Library Vehicle and In the Vehicle and Worker process logic, the ‘OnCapacityChanged’
Worker process logic was updated to process no longer does a SetNode step to clear the destination value if
support free-space travel between node the object is idle or fully offshift after the shift change. This change was
locations by those objects. The is a small made to better handle situations where the vehicle or worker was
chance that the process logic updates traveling in free space at the time of the shift change. In the
may have caused issues with any OnVisitingNode process, in the Decide ‘IfNotVisitingNode’ step deciding
custom transporter objects sub-classed whether or not the vehicle/worker needs to visit the node, the
from (i.e., derived from) the Vehicle and condition expression was changed to no longer require the possible
Worker. destination clearing on work schedule events.

If you have created a custom vehicle/worker and have overridden the


‘OnVisitingNode’ process but not the ‘OnCapacityChanged’ process,
and you have work schedules being used, there is a chance the
worker/vehicle may no longer visit nodes at shift changes like they did
before. The easiest fix for this might be to simply replace the Decide
‘IfNotVisitingNode’ step conditional expression in the ‘OnVisitingNode’
process with the new conditional expression that you see the updated
inherited Vehicle/Worker process logic now using.
Any models built prior to Sprint 75 will In an existing model that was built prior to Sprint 75, in order to take
not automatically have ModelEntity advantage of the built in free space movement of entities (moving to a
logic for free space movement node in free space), you must enter the Processes window of the
(OnEnteredFreeSpace standard ModelEntity and select ‘OnEnteredFreeSpace’ from the Select Process
process), as ModelEntity is an editable pull down. You will then need to open another Simio window where
object definition and not a standard you can build a ‘new’ model (Sprint 75+). In the new model, click on
library object that can be updated. ModelEntity and go to the Processes window. Note how there are steps
within the ‘OnEnteredFreeSpace’ process. You can then copy / paste
from the new ModelEntity processes window into the existing model’s
ModelEntity Processes window, being careful to make all necessary
connections between steps.
Sprint 73 Issues Solution
The Standard Library Vehicle and In the Vehicle and Worker process logic, the ‘RiderPickupsFinished’
Worker process logic has been changed event and the ‘OnRiderReservationsPickedUp’ process that was
to support the new ‘Minimum Dwell triggered by that event were removed due to conflicts with timing logic
Time’ feature, which may cause issues added to support the new ‘Minimum Dwell Time’ feature.
with the process logic in any custom
transporter objects sub-classed from If any inherited processes were overridden referencing the
(i.e., derived from) the Vehicle and ‘RiderPickupsFinished’ event or the ‘OnRiderReservationsPickedUp’
Worker. process, then those references will need to be removed. In the case
where you have overridden the ‘OnVisitingNode’ process of the Vehicle
or Worker, it may be easiest to simply reset to the original inherited
logic and re-modify the process again from scratch with the desired
custom changes. The primary motivation to go that route is if you
would like to have the ‘Minimum Dwell Time’ feature that was added
be available and working satisfactorily in the custom object.

Another option is, when opening the old model with the custom
transporter, to not update to the new vehicle or worker definition,
instead choosing to keep your old object design as is.
Sprint 72 Issues Solution
The Random Number Stream property Standard Library BasicNode and TransferNode objects now provide a
on a node (which was hidden by default) Random Number Stream property in Advanced Options if you would
was removed from the node and instead like to explicitly specify the random number stream used when
is now available on the Transfer step if selecting an outbound link from the node by link weight. That property
transferring from a node to outbound displayed by the node now maps down into the new Random Number
links. Stream property that was added to the Transfer step.

Sprint 69 Issues Solution


For any integer or real numeric property If there was model decision logic based on values entered in real or
(e.g., the ‘Buffer Capacity’ related integer numeric properties, then this change could possibly have
properties in Server), previously the changed model behavior.
‘INFINITY’ keyword was being
interpreted as the maximum value of an As an example, if ‘INFINITY’ was entered as the input or output buffer
integer or double number. Conversely, capacities for the Server object in the Standard Library, then an
in an expression property, the ‘INFINITY’ expression like Server.InputBufferCapacity – 10 would have previously
keyword was being interpreted as been returning Int.MaxValue – 10 or 2,147,483,647 – 10 =
PositiveInfinity. This inconsistency in 2,147,483,637. Now, with this change in Sprint 69, that same
Simio’s interpretation of ‘INFINITY’ expression will return double.PositiveInfinity (because infinity – 10 is
depending on the type of property was simply still infinity).
a source of possible confusion and
issues in model behavior. The ‘INFINITY’ Dynamic routing logic using functions such as the ‘Load’ and ‘Overload’
keyword is now always consistently node functions, because they often include ‘buffer capacity’ values in
interpreted and returned as their calculations when working with the Standard Library objects, are
PositiveInfinity. also functions which would now be returning different values and thus
possibly affecting model behavior. For example, models that before
were perhaps interpreting the remaining capacity of a candidate
‘infinity capacity’ buffer as Int.MaxValue – buffer contents will now be
always interpreting the remaining capacity of the buffer as
Double.Positive regardless of the current buffer content level.
Sprint 68 Issues Solution
We have added a new Existing models that assign a value to the Current Symbol Index that do
warning/notification when a model is not exist in the Symbol Index will now get a Warning of a Bad Symbol
trying to assign a value that does not Index. To get rid of this warning, change the model so that it no longer
exist in the Symbol Index. assigns a non-existent symbol index value or add an additional symbol
to the object so that the assigned value exists in the symbol index.
The behavior of the Basic and Transfer The traveler capacity functionality now provided by BasicNode &
Nodes was changed to replace the TransferNode is very similar to the resource-based approach, but there
resource behavior with a more efficient, are some differences:
but equivalent behavior that was more • Any references to NodeName.CurrentCapacity should be changed to
consistent with how most people NodeName.CurrentTravelerCapacity.
actually use nodes. • Any references to NodeName.Capacity.Allocated should be changed
BasicNodes and TransferNodes are no to NodeName.NumberTravelers.
longer enabled as resources, and thus • Entities that used to wait in the <NodeName>.AllocationQueue, will
there are no longer Capacity, Ranking now wait in the <NodeName>.EntryQueue.
Rule, and Ranking Expression properties • Now an entity cannot actually enter the node and execute the
shown under the ‘Crossing Logic’ ‘OnEntered’ process and the ‘Entered’ add-on process trigger until it
category. actually is allocated traveler capacity and thus selected from the
New Initial Traveler Capacity, Entry node’s EntryQueue. Before, an entity would always first enter the
Ranking Rule, and Entry Ranking node, execute the ‘Entered’ add-on process trigger if specified, and
Expression properties have instead then have to seize the node resource to continue ‘crossing’ through
replaced them, and when opening an the node.
old model to support model conversion, • If you have sub-classed the Standard Library BasicNode or
the values that were entered into the TransferNode objects to create a custom type of node, and the
now hidden & unused resource-related custom node is overriding the inherited process logic that contained
properties will be automatically entered the Seize or Release steps to seize or release the parent node
into the new traveler capacity-related crossing capacity, then those Seize and Release steps will need to be
ones. Additionally, because those node manually removed from the logic because the node is no longer a
objects are no longer resources, there is resource.
no longer any Seize or Release related
logic in the process logic of the
BasicNode or TransferNode.

We now prevent a model from assigning Update your model so that a negative number is not assigned to a Size
a negative value to a Size state, such as state. Consider wrapping any existing expression with a Math.If
Size.Length or Size.Height expression, such as Math.If(MyOldExpression<0, 0, MyOldExpression)
which will assign a value of 0 if your old expression is trying to return a
negative value.
We now prevent destroying an entity If you get this error message, then the model logic needs to be
traveling on a link because this can adjusted to not destroy an entity traveling in the middle of a link.
sometimes cause loss of data integrity Before destroying you can test if it is on a link and not at a node
(e.g. a crash). “(Entity.CurrentLink != Nothing) && (Entity.CurrentNode == Nothing)”
and if True, then defer destroying the entity.
Sprint 65 Issues Solution
We have removed the Existing models that include a ‘subclassed’ vehicle will need to have the
IgnoredDestinationNodeID variable that OnVisitingNode process manually updated. The
was utilized in the OnVisitingNode IgnoredDestinationNodeID variable that was removed was referenced
process of a vehicle. in an expression and Assign step within the process. This must be
removed. Please refer to the current vehicle’s OnVisitingNode process
and search for the new ‘IgnoreVisitingCurrentNode’ approach that is
used.
Sprint 60 Issues Solution
We have added new predefined names Although your models should continue to work if the conflict is in an
in Simio (e.g. “Cost”) that may conflict embedded object, if the conflict is at your model level, you should
with user-defined names. rename your conflicting name (e.g. rename your “Cost” to “TotalCost”).

Sprint 58 Issues Solution


Functions that apply to the class of Existing models will continue to work as before. When entering new
dynamic objects (like all of a certain expressions look for the “Population” keyword. For example,
entity type) are now referred to as “ModelEntity1.TimeInSystem.Average” will now be referenced as
“Population” functions. “ModelEntity1.Population.TimeInSystem.Average”.

Execute step changes have been made If an old model was relying on the old Execute (Continue) behavior to
for ‘WaitUntilProcessCompleted’ and execute the specified process ‘in-line’ rather than scheduling its
‘Continue’ Token Wait Actions. execution on the calendar, then it is possible you will need to change
the Token Wait Action to ‘WaitUntilProcessCompleted’ as part of
updating the model. See release notes for Execute step behavior
changes.

Parking at a BasicNode or TransferNode. A change was made related to the timing of ending transfers into the
ParkingStation of either a BasicNode or TransferNode. Previously, the
EndTransfer to complete a parking was scheduled as a current event on
the simulation calendar. Now, the EndTransfer is instantaneously
executed upon the Park step attempt. If you have custom logic using
Park steps in your model, and that logic was sensitive to (relied upon) a
specific order of simultaneous events occurring at the same simulation
time, this change may have possibly caused an issue with your logic.
The corrective action would be to make sure your process logic does
not rely upon (is sensitive to) simultaneous event ordering.
Simio Version 3
Sprint 51 Issues Solution
A library change prevents Workers were enhanced in 51 in such a way that models built in 51 will often not
some backward work correctly in earlier versions, even if the new features are not explicitly used.
compatibility of Workers. You may need to delete the Workers and re-add them in the earlier sprint.
Sprint 49 Issues Solution
The conversion utility for If you need to convert SPF files to the SPFX format you can use Simio software
SPF files is no longer version 3.48 or earlier, or download the stand-alone conversion utility from:
included in Simio. http://www.simio.com/downloads/public/software/ConvertSimioSPFFileToSPFX.zip
Sprint 46 Issues Solution
The CurrentCapacity state of Assign an integer or value instead. Use the Math.Floor or Math.Ceiling functions if
a resource object or station necessary to round a real value to an integer.
element has been changed
from data type Real to data
type Integer. Thus,
attempting to assign a real
value directly to the current
capacity (e.g., “4.3”) will
now result in a runtime
error.
The Enabled state of a Assign a value or condition returning a value of True(1) or False(0) instead.
timer, monitor, or process
element has been changed
from data type Real to data
type Boolean. Thus,
attempting to assign a real
value directly to the state
(e.g., “4.3”) will now result
in a runtime error.
Sprint 42 Issues Solution
We have provided more -A frequent error that is now detected is using a reference like “LiftTruck.Priority”
stringent error checking. to refer to the state of a dynamic object. That form of reference is incorrect and
Some errors that were must be changed to the form “LiftTruck[1].Priority”.
previously overlooked are - If you were using an expression for a delay time (e.g. Processing Time) that could
now reported, for example evaluate to a negative number (like “Random.Normal(10,5)”) we previously
using a negative number for converted negative times to 0. That resulted in a distribution spike at time 0 and
a delay time or invalid actually shifts the mean of the numbers generated. Now, when a negative number
parameters for a is detected, we will generate an error. If you still want the previous behavior, you
distribution. can obtain it using the Max function. For example “Math.Max(0,
Random.Normal(10,5))”
- In most other cases even though your model was “working” it may have been
generating unexpected results due to the errors. Please correct the indicated
error(s).
Simio Version 2
Sprint 40 Issues Solution
‘Open’ and ‘Close’ public If you were using an Execute step to call those public methods:
processes on Conveyor, • To replace calling a Close, replace the Execute with an Assign step assigning
TimePath, and Path have been the link’s ‘DesiredDirection state variable to the value
removed ‘Enum.TrafficDirection.None’.
• To replace calling an Open, user can replace the Execute with an Assign step
assigning the link’s ‘DesiredDirection’ state variable to the value
‘Enum.TrafficDirection.Forward’, ‘Enum.TrafficDirection.Reverse’, or
‘Enum.TrafficDirection.Either’.
Vehicle and Resource object If you have animation or decision logic referencing the ResourceState of either a
states have been enhanced Resource object or Vehicle object, then note the changes to the possible
ResourceState values. The animation or process logic may need to be updated
accordingly to account for the new changes. For example, where before a
Vehicle object may have been in the resource state of ‘Busy = 1’, it may now be
getting assigned the state value ‘Transporting = 7’.
Sprint 37 Issues Solution
(Windows 7 Only) When you It appears to correct itself if you then change the style. Loading files with circular
first draw a circular gauge, the gauges in them (like the Tank SimBit), seem to work fine.
image of it may stay very small.

Sprint 36 Issues Solution


The Vehicle object has been In the unlikely case that you have derived your own object from the Vehicle
significantly enhanced with object and overridden standard processes (not just added on additional
resource capabilities. processes), you are likely to encounter problems. We recommend that you
select the option to NOT update to the new definition.

Sprint 32 Issues Solution


The Connector object has been In the unlikely case that you were using the public ‘Open’ and ‘Close’ processes
simplified and made more for a connector, you will need to use the TimePath object in the standard library
consistent and will execute with a 0.0 travel time instead.
faster. All process logic that
was provided in the standard
library has been removed.
Simio Version 1
Sprint 30 Issues Solution
We changed the behavior of The new behavior is probably more intuitive and useful, but if you have logic
the Entity.CurrentNodeID that depends on this returning 0 when the entity is in a station, you will need to
function. If the entity's front adjust that logic.
edge is currently at a node or
the entity is in station owned
by a node, then it returns the
ID of that node, otherwise
returns 0.

Sprint 26 Issues Solution


The new Step Exclusion feature Entities crossing through BasicNode and TransferNode objects no longer seize
was used to improve execution and release crossing capacity if the node’s Crossing Capacity is ‘Infinity’. Thus,
speed and minimize trace. It for example, if you had process logic or animation with expressions referencing
caused some behavior changes the NumberBusy function on a node with infinite crossing capacity (e.g., to test
which could affect certain whether the node was occupied or not), the NumberBusy function for that node
models. will now return 0.0. To adapt your model to this issue, simply change the
If you just use Standard Library particular node’s crossing capacity to a value less than infinity to have the
Objects ‘out of the box’ (i.e., no node’s capacity seized and released again.
objects in your project were If a Vehicle object’s ‘Initial Node (Home)’ property is not specified, then the ‘Go
derived from standard library To Home’ and ‘Park At Home’ idle actions are now treated slightly differently.
objects) your models should The Vehicle will revert to the idle actions ‘None’ and ‘Park At Node’ respectively
run relatively unaffected. since it does not have a clearly defined ‘Home’ location. We renamed vehicle
state InitialNodeID to HomeNodeID, more accurately reflecting this new homing
logic behavior.
OnEvaluatingRider built-in process for all transporter objects (e.g., Vehicle) has
now been broken out into two separate OnEvaluatingRiderReservation and
OnEvaluatingRiderAtPickup processes. Simio will attempt to convert your
transporter object’s logic appropriately to handle this change regardless of
whether you choose to update to the new standard library definitions or not.
Every transporter object also has two new built-in OnRiderLoading and
OnRiderUnloading processes. In the new version of the Vehicle, these processes
are used implement the ‘Loaded’ and ‘Unloaded’ add-on process triggers
provided by the Vehicle object.
Step Exclusion (more): One short-term option is to choose ‘No’ when asked whether to update object
If objects in your project were definitions for the model. This should allow your existing object to work, but you
derived from standard library might have this problem or other problems with future releases as well.
objects and you override For the longer term-we recommend revising your object to be compatible with
processes, the model may not the new changes. In particular, you should
work as expected. a) Note all the changes made to any over-ridden process;
b) Remove the override to restore the new logic;
c) Re-add the override and re-add the desired changes.
Logical expressions have always Standard Library Add-On Processes: Evaluating Allocation (resource object),
returned 0 if false and 1 if true Evaluating Rider (vehicle object);
and that has not changed. But • If you have logic that is explicitly assigning the executing token’s
previously many processes that ReturnValue state to the value ‘0.0’ to mean ‘Accept’….that 0.0
evaluate something would assignment is now going to be interpreted as ‘Reject’. You will
expect a return code of <0 to need to adjust your decision logic accordingly.
indicate reject or false and a
value >=0 to indicate accept or Object Interface Processes (if you have built your own objects):
true. This inconsistency made it OnEvaluatingAllocation, OnEvaluatingRiderReservation,
awkward to use logical OnEvaluatingRiderAtPickup
expressions within these • If you have logic that is explicitly assigning the executing token’s
processes. We changed it so ReturnValue state to the value ‘0.0’ to mean ‘Accept’….that 0.0
that <= 0.0 means assignment is now going to be interpreted as ‘Reject’. You will need to
‘False/Reject/No’ everywhere adjust your decision logic accordingly.
and >0 means
‘True/Accept/Yes’ everywhere. Timer and Monitor Elements
All Boolean properties and • Enabled state – if you have logic that explicitly assigned the Enabled
functions in the product state of a Timer or Monitor to a negative value…that was previously
continue to return ‘0.0’ for being interpreted as ‘True’. That will now be considered as an
‘False’ and ‘1.0’ for ‘True’. assignment of ‘False’. Assign the Enabled state to a value great than
zero to mean ‘True’.

Sprint 22 Issues Solution


We changed indexed symbols If you have used indexed symbols with an expression for Current Symbol Index,
(e.g. a set of symbols you probably had to add a “+ 1” onto the end to get it to work. Now you can
associated with a single object) (and probably must) remove that adjustment.
so the symbol expressions are
0-based instead of 1-based
because the overwhelming
number of applications are 0-
based.
We have made a syntax change For example when entering an expression for selecting between downstream
that now requires you to nodes based on remaining input capacity, you would enter the expression as
explicitly declare a foreign Candidate.Node.InputRemainingCapacity. In earlier versions of Simio the
reference within a foreign Candidate keyword was not required.
expression by prefixing the This feature was added to remove ambiguity in certain cases where the
reference with the Candidate associated object has the same object class as the foreign object. Without the
keyword. (This is an advanced Candidate keyword it is not clear which reference is being made – the
concept that will not impact associated object or the foreign object.
most people.)

You might also like