There are two general ways to compute an answer, either head toward the solution as a goal, or prune away possible answers that are not solutions. A particular item of information can tell you about what the solution is (direct computation), or it can tell you about what the solution is not (constraint management).
I've built a couple of constraint management systems, one for placement of seats in a vehicle, and one for reducing the computational load in a virtual environment.
|Constraint management has the added advantage of finding sets of solutions, as
well as finding a single solution that may not be optimal but is certainly acceptable
(a satisficing solution).
CONMAN (CONstraint MANager) was designed to converge upon a set of solutions using a possibility calculus to prune the space of possibilities. A context-sensitive control structure helps to avoid searching for explicit solutions. The paper steps though the possibility calculus approach with a long toy example. Output for the example is also included (from a Prolog program written by Eric Gullichsen). A couple of short design discussion memos follow.