Wednesday, April 06, 2005

Goals versus Tasks

One of the key distinguishing characteristics between a traditional computer program and a software agent is that a program is focused on performing tasks whereas an agent works towards goals. That's a very important distinction, but it's also very difficult to deeply comprehend, let alone put into practice.

A task usually has the form "do X" or "do X using Y". A task is very prescriptive. A task-oriented computer program is essentually pre-programmed with all of the instructions needed to perform that task. A program is essentially a solution contrived by a developer who has analyzed a problem.

A goal usally has the form "satisfy X [and Y and Z...]". A goal is more descriptive than prescriptive. A goal is more about what to accomplish rather than how to go about it. A goal-oriented software agent is free to make unpredictable choices and follow novel paths, provided only that those paths finally accomplish the stated goal(s). A goal-oriented approach is advisable when the resources and paths are not known ahead of time with any degree of uncertainty. An agent is essentially the embodiment of a refinement of a problem statement, with solutions to be sought and evaluated on a dynamic basis.

A program is focused on pursuing a pre-programmed solution, whereas an agent focuses on dynamically refining the problem statement and seeking a solution that matches the refined problem statement and the current problem environment.

There is in fact a vast gray area between these two concepts, and as yet we have very few tools, techniques, or guidelines for analyzing problems and solutions to determine which is which and which has more merit in a given situation.

Just as a parting example, an anti-locking brake system for a motor vehicle is closer to being goal oriented than task oriented. There is no fixed sequence of instructions to execute and feedback and adaptation are critical requirements. A simple cruise-control system also is goal-oriented rather than being strictly task oriented, with no fixed sequence that will achieve the result of a relatively stable speeed. On the other hand, monitoring a news feed for a set of fixed keywords is more task-oriented since there is essentially no feedback or adaptation required.

This is only the starting point of this discussion.

-- Jack Krupansky

3 Comments:

At 5:38 PM MDT , Blogger straun said...

I agree. I prefer to think of Goals as 'end points' or 'destinations', and consider tasks as the path to those end points.

In the area of scheduling the project Gos4j has begun exploring the possible ways to adapt to available cpu time.

 
At 6:10 PM MDT , Blogger Jack Krupansky said...

And in a truly dynamic environment, goals are merely "way points" on the path to your "final destination", which may not have been anticipated as your adventure began.

-- Jack Krupansky

 
At 7:25 AM MST , Blogger Unknown said...

Interest point about goals and tasks. Is it not only a matter of degree between the two?

For example, an open source software agent project called KATO has just recently started. The idea is for a repository with lots of low-level, task-based agents and a configurable way to plug different agents together to satisfy high-level goals.

 

Post a Comment

Subscribe to Post Comments [Atom]

<< Home