Mental planning

History / Edit / PDF / EPUB / BIB /
Created: July 2, 2016 / Updated: December 22, 2016 / Status: in progress / 3 min read (~431 words)

  • How do we support overlapping operations?
  • How can we build an extremely modular planning system where most actions/functions can be done through a variety of implementation? (This is basically the definition of a strategy) However in our case the strategy may be tangle with the operation to accomplish
  • What generates variability in a plan? (Why is it that sometimes ordering food will take precedence over thinking about the food that is available closer to our current location?)

In the following sections I'll attempt to analyze a couple of problems in order to better understand how I personally think about a task, how I deconstruct it, attempt to solve it and the various aspects of the task that ends up being considered. The objective is manyfold, one of them being to determine the complexity of various tasks, another being to observe whether or not certain types of tasks end up "exploding", in the sense that even though they may appear simple on the surface, if you destructure them, you soon realize that they are composed of an enormous amount of subtasks.

Define what you want to accomplish
I want to sort a list

Extract what is to be done (based on verbs)
Sort

Extract concepts (based on nouns)
A list

Define the particularities of the accomplished operations
Sorted ascending

Todo:
Determine how many verbs there are
Determine on how many entities a verb can apply

I want to build a tree according to its leaves

Build = Construct

Tree (output)
Leaves (input)

I am hungry

Determine what to eat
Evaluate how hungry I am

Determine what is available
Access memory to recall food locations
Access memory to recall what is available at each locations

Evaluate what best matches my current cravings
Evaluate meal preparation duration
Evaluate current energy
Evaluate urgency
Evaluate potential alternatives

I want you to eat an apple

What does “eat an apple” entails?
Get an X(apple)
Determine closest proximity to X(apple)
Access memory to determine potential locations
Evaluate distance
Walk toward location
Visually confirm presence

Pick the apple
Move arm
Grab apple
Move arm

Put X(apple) in mouth
Move arm - this could be done through other means
Open mouth

Chew apple

Move apple away from the mouth

What defines appropriate boundaries for functions?
When does “eating an apple” starts and stops
Is this function responsible for finding an apple to eat?
What about finishing the apple?
What about throwing it in the trash when done?