Skip to content

2021 05 16 Agent Goal Tree Nodes

Tarik Viehmann edited this page May 27, 2021 · 6 revisions

Goal Selection of central goal tree:

Stealing goals

Do not pursue for now, maybe this is not needed at all or there are alternatives. One alternative would be "already-executed" sibling goals that are executable if the resources are supplied in other sub-tree. Then, there is no "stealing" but just a simple reformulation procedure of the finished goal.

Priorities

Update: keep it simple for now

  • order-specific priority for each sub-tree
  • in goal-meta fact
  • add different kind of priorities if we observe inefficiencies

Multiple components:

  • order-specific priority (order points, time estimates etc)
  • goal-specific priority (constant, per goal class)
  • robot-specific priority (distance)
  • dependency-specific priority
  • (tree-ordering-specific priority)

Clearing CS output

Run-one goal, either "already-cleared" goal or discard. "already-cleared" goal depends on any goal that might utilize the cap carrier If a discard goal is executable along with a better alternative (a fill rs goal in another tree), then that alternative needs a priority increase

Stealing caps/ring payments:

example: Mount cap and buffer cap interactions

  • Mount cap generally depends on buffer goals with appropriate params (independent from the subtree those buffer goals are located in)
  • Mount cap may be selected utilizing a dependency
    • if dependency in own subtree -> no action required
    • if dependency in other subtree -> swap dependency source (buffer cap) from other subtree with the one from the own subtree does it make sense to combine buffer + instruct goals under one parent? swap mechanic: a mount cap/ring goal is executable, but its siblings are still formulated -> swap those formulated siblings with the ones of the least recently started ones in other subtrees (where the subtree is not already completed)

Updated Behavior:

Step 0: Robot waiting, "all" goals formulated (expect those that are currently >Selected) and not executable Step 1: Executability of Leaf nodes
Step 2: propagate Executability (adjust priorities)
Step 3: Root goal gets selected -> expanded -> dispatched and commits to subgoal
Step 4: recursively select -> dispatched (but only among executable subgoals, also depends on compound goal type) outcome: one or more simple goals may be selected -> Dispatched one or more inner nodes dispatched Step 5: flush all executable flags

new goal needs to be selected: do step 1 and 2 among all executable dispatched inner nodes the one with the highest priority selects a subgoal continue with step 4:

Initial Behavior:

(In case of failure while the following steps are happening, abort all selection, reset to step 0)

Step 0: Robot waiting, "all" goals formulated (expect those that are currently >Selected) and not executable Step 1: Executability of Leaf nodes
Step 2: propagate Executability (adjust priorities)
Step 3: Root goal gets selected
Step 4: recursively select (but only among executable subgoals, also depends on compound goal type) outcome: one or more simple goals may be selected -> Dispatched) Step 5: flush all executable flags, return inner nodes to Formulated

case: inner node finished -> Finished Completed and never gets reset to formulated

Clone this wiki locally