decide
Take a decision now, on behalf of reason.
The caller owns the timing (S§C.0). A modeler calls this at the point a decision is due — from an event action, or from a point in an entity's process — and the element runs the epoch algorithm synchronously against the state it finds.
R2b — the caller warrants a consistent state. The model is not guaranteed to be between events here, because the caller chose the moment. A call made partway through the caller's own update hands the policy a state no observer of the finished system would ever see, and that state is also written into the trajectory. Finish the update, then decide. S§C.11.4 works four examples of what going wrong looks like; the shortest statement of the rule is Example 1's.
When in doubt, or when nobody is waiting for the answer, prefer requestDecision.
Two calls at one instant are permitted and the second discards a zero-length transition; see discardedZeroLengthCount. A call arriving after the episode has already ended is ignored rather than obeyed — the decision sequence has finished, and applying an action after it would be the mistake step 5 of the epoch algorithm exists to prevent — and is counted by ignoredAfterEpisodeEndCount.
Throws
if the model is not running.
if a decision is already in progress on this element.