John Williams
8858702

jnw@wolf.cs



War World II

      Okay, the name's pretty silly, but I couldn't resist the pun.  This
   domains solves problems relating to operational level battle planning.
   (That is, it's above the tactical level, and below the strategic.)
   The period being simulated is the late World War II era, hence the
   domain name.
      The idea is this:  Suppose you are a (division) commander, and you
   have a number of objectives assigned.  How do you divides your units
   (battalions/companies) into battle groups which will attack these
   objectives?  We don't need to have an optimal solution, just one that
   meets all our requirements.
      I had intended to make the inference rules take into account the
   differences in unit classes.  However, this just got too complicated
   for the amount of time I spent.  Since I already have one search
   control rule, perhaps I will work on this for part 3.



Time to encode domain:  30 hours  (plus 90 hours worrying)



Similarities to & Ideas from:

   The only domains I studied were the 3 blocksworld domains, and
   gridworld.  My domain is pretty much all original, which explains
   why it's so confusing.  I did use functions from the above.  See
   comments in domain.lisp.



Control Rules:

   Since the preconditions for RESERVE-UNIT are easier to satisfy than those
   for ASSIGN-UNIT, RESERVE-UNIT tends to get picked as first choice.  This
   resulted in searches of around 2000 nodes for my sample problem.  By adding
   one simple control rule, "PREFER-ASSIGN-UNIT", most small variations take
   less than 50 nodes.



Questions for Project 3 -- Control rules and Analysis



(a)  Problems modeling with Prodigy:

   I found it difficult to do simple arithmetic, at first.  This made it
   very hard to do strength modifications on different unit and objective
   classes.

   As long as you have adequate control rules, the search procedure
   seems to work very good for these kinds of problems.  However,
   some simple things seem much too complicated.


(b)  Surprising easy to encode with Prodigy:

   It turned out to be much easier that I thought to write arithmetic
   functions.  But most of the inspiration came from some of the
   blocksworld domains.  However, I did find what appears to be an
   error in one of their functions.  This is noted in my functions file.


(c)  Particularly useful features:

   I liked the way Prodigy could methodically work through these problems.
   In a way, war is an optimization problem.  But we don't really care
   about the optimal solution.  In a war, the first goal must be to win.
   Any solution which achieves that goal is acceptable.  (At least as
   far as the computer is concerned!)


(d)  My favorite modification:

   This is a tough one.  I suspect that much of the value of this kind of
   planner is lost because it is so difficult to code.  It is also pretty
   hard to read the end product.  It would be better if things that were
   simple *looked* simple also.  I'm not sure how you could achieve these
   goals.

