Douglas Ferry
dbferry@wolf

domain: "cliff-climber"

This domain simulates a climber going up (or down or sideways
actually) a sheer cliff with some defined hand/footholds
(called outcrops).  Prodigy must find a sequence of moves
that include lifting or placing hands or feet and moving the
climber's body.

It took me roughly 30 hrs to encode this and it doesn't do
all the things I'd originally hoped...

As far as I can tell, this is an original.
The issue of discrete locations and bindings thereof was
solved using the manual and some ideas thrown around in
class.  Those who deserve credit know who they are.

Additional Questions

Q: What aspects were you not able to model in Prodigy.
A1: Continuity.  The climber moves his "body" in 1-foot
increments and only in the x and y direction.  Also,
out-crops can only occur at grid locations. Arms and legs are
somewhat artificial.  Instead of having a defined length that
they may extend from shoulder or hip, they can only be in a
rectangular region in one quadrant with the "body" as the
origin.
A2: Best path.  The climber does some silly things which are
not technically state cycles but are still cycles in a way.
For instance, he sometimes moves one leg up, then the other
one, then moves the first leg back down again!  Oh well.
Maybe a really good control rule could prevent this.

Q: What aspects did you think would be difficult but weren't?
A1: Writing the control rules was not especially difficult.
The simple rules that I thought up had a dramatic effect on
the size of the search tree.  
A2: I thought it would be difficult to encode some of the
preconditions that make sure the climber has a firm grip on
the mountain, but a brilliant brainstorm licked the problem
handily.

Q: What features of Prodigy were particularly useful?
A: I didn't use many of the features.  The text trace
provided most of the answers I needed.

Q: If you could make one modification/addition to Prodigy,
pray, what would it be?
A: It would be nice if the online help system explained some
of the frequently used material in the manual -- some people
have a hard time reading books/handouts!

-------------------------------------------------
suggestions for additions to this domain

if you look at the solution to many of these problems you'll
see that the climber usually finds a way to shift his body
right a number of times, then up a number of times. this
doesn't seem like that great an idea (especially in the slant
problem) even though it works. the main problem here is that
he gets himself into weird positions where one limb is stretched
all the way and another is scrunched up when it's not necessary.
what might help is a heuristic that prefers states where the
limbs are moderately stretched over extremes. which leads to my
next point.

a more realistic representation of the region each limb can reach
would not be all _that_ difficult (i think). on the other hand
this would only change the realism of the problem; structurally
it would be much the same.

the problem solving process seems to involve first finding a path
from A to B, then finding the outcrops that the climber can use
to get there.  a path can be found quickly but in many cases there
is no way to use it because there aren't many outcrops along it.
see the horseshoe problem as an example. by the time the path is
found not to have a solution, many nodes have been explored. so,
what would be tremendously more efficient would be to determine
a path through regions where outcrops are dense before trying to
actually climb through it. in prodigy, this boils down to some
mean control rules that guide the body movement toward "dense"
regions instead of just making a bee-line from point A to point B.
