There are apparently systems for solving this kind of problem, constraint
programming <http://kti.ms.mff.cuni.cz/%7Ebartak/constraints/>.
Yes, you're right. Constraint (logic) programming is better suited for
scheduling problems. The fact that you're mentioning search and
backtracking is a dead giveaway. There is in fact kind of a middle way
between forward chaining rules and constraint programming as well:
constraint handling rules (CHR). CHR too has been proven suited for
scheduling tasks (just google for some papers). CHR embeddings exist
e.g. for most Prolog systems, HAL, Haskell and Java. The most efficient
Java version does not yet provide search, but it will someday. There are
also other Java embeddings that allready have search capabilities.
More info on: http://www.cs.kuleuven.be/~dtai/projects/CHR/
Hope this helps,
Peter
Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm