Decision Tasks#
Decision tasks are ~upstage.task.Task`s that take zero time and were briefly demonstrated in :doc:`Rehearsal
. The purpose of a
Decision task is to allow decision making and TaskNetwork
routing without moving the simulation clock and do so inside of a Task Network.
A decision task must implement two methods:
Neither method outputs anything. The expectation is that inside these methods you modify the task network using:
upstage.actor.Actor.clear_task_queue()
: Empty a task queueupstage.actor.Actor.set_task_queue()
: Add tasks to an empty queue (by string name) - you must empty the queue first.upstage.actor.Actor.set_knowledge()
: Modify knowledge
The difference between making and rehearsing the decision is covered in the tutorial. The former method is called during normal operations of UPSTAGE, and the latter is called during a rehearsal of the task or network. It is up the user to ensure that no side-effects occur during the rehearsal that would touch non-rehearsing state, actors, or other data.