;;; ;;; Given two operators from which to choose, prefer the more specific one. An ;;; operator is more specific than another if its primary results are more ;;; specific than the primary results of the other. Finally, one resultunt ;;; state is more specific than another if the two share the same predicate, ;;; and all corresponding arguments are more specific via the domain's type ;;; hierarchy. For example (is-deployed division-ready-brigade saudi-arabia) is ;;; more specific than (is-deployed troops location); whereas, neither ;;; (is-deployed troops saudi-arabia) nor (is-deployed division-ready-brigade ;;; location) can be said to be more specific than the other. ;;; (CONTROL-RULE Prefer-More-Specific-Op (if (and (candidate-operator <OP1>) (candidate-operator <OP2>) (is-ancestor-op-of-p <OP1> <OP2>))) (then prefer operator <OP1> <OP2>) ) ;;; ;;; Given a choice between two goals, prefer one if making the other true ;;; solves one of the preconditions for an operator that results in the ;;; preferred one (or is likewise further removed). That is, G2 is a subgoal of ;;; G2. Note that ordinarily subgoals are not present in a top-level goal ;;; conjunction; however, humans often provide subgoal information in a mission ;;; statement. Therefore both goal and subgoal statements can be in the ;;; top-most set of goals received from ForMAT. ;;; ;;; This control-rule assures that the goal trees created during planning will ;;; be maximaly deep and fewest in number. For example if we have two goals, ;;; (is-secure airport4) and (exists ((<s-p> security-police))(is-deployed ;;; <s-p> Bosnia), then PRODIGY should prefer the first to the second. ;;; Solving for them in this order results in one goal tree, rather than two. ;;; (CONTROL-RULE Prefer-Top-Most-Goal (if (and (candidate-goal <G1>) (candidate-goal <G2>) (solves-precondition-of-p <G1> <G2>))) (then prefer goal <G1> <G2>) ) ;;; ;;; Given a current operator and candidate set of bindings, prefer those ;;; bindings that opportunistically solve some other top-level goal. For ;;; example, if the current operator is to secure an airport, then we want to ;;; prefer bindings for <internal-security-force> that match a concurrent goal ;;; to deploy some security-police to the same location. ;;; (control-rule Prefer-Bindings-Opportunistically (if (and (current-operator <OP>) (candidate-bindings <CB>) (match-constraining-goals <G> <OP>) (generate-new-bindings <B> <G> <OP>) (identify-worse-bindings <CB> <B> <WB> <OP>) (identify-better-bindings <CB> <B> <BB> <OP>))) (then prefer bindings <BB> <WB>))
Correspondence: mcox+@cs.cmu.edu
Last Edited: July 26, 1996