Some more tweaks

This commit is contained in:
Naveen Sundar Govindarajulu 2017-01-18 22:58:41 -05:00
parent afde7793e5
commit d1e0cb891a
7 changed files with 55 additions and 54 deletions

View file

@ -66,14 +66,14 @@
(setup-snark :time-limit time-limit :verbose verbose) (setup-snark :time-limit time-limit :verbose verbose)
(if sortal-setup-fn (funcall sortal-setup-fn)) (if sortal-setup-fn (funcall sortal-setup-fn))
(let* ((n-a (make-hash-table :test #'equalp)) (let* ((n-a (make-hash-table :test #'equalp))
(a-n (make-hash-table :test #'equalp))) (a-n (make-hash-table :test #'equalp))
)
(mapcar (lambda (axiom) (mapcar (lambda (axiom)
(let ((name (gensym))) (let ((name (gensym)))
(setf (gethash (princ-to-string axiom) a-n) name) (setf (gethash (princ-to-string axiom) a-n) name)
(setf (gethash (princ-to-string name) n-a) axiom))) axioms) (setf (gethash (princ-to-string name) n-a) axiom))) axioms)
(mapcar (lambda (axiom) (mapcar (lambda (axiom)
(snark::assert axiom :name (gethash (princ-to-string axiom) a-n) (snark::assert axiom))
))
(mapcar #'!@ axioms)) (mapcar #'!@ axioms))
(if (equalp :PROOF-FOUND (snark:prove (!@ f))) (if (equalp :PROOF-FOUND (snark:prove (!@ f)))
(list t (remove nil (list t (remove nil
@ -101,8 +101,7 @@
(setf (gethash (princ-to-string axiom) a-n) name) (setf (gethash (princ-to-string axiom) a-n) name)
(setf (gethash (princ-to-string name) n-a) axiom))) axioms) (setf (gethash (princ-to-string name) n-a) axiom))) axioms)
(mapcar (lambda (axiom) (mapcar (lambda (axiom)
(snark::assert axiom :name (gethash (princ-to-string axiom) a-n) (snark::assert axiom))
))
(mapcar #'!@ axioms)) (mapcar #'!@ axioms))
(if (equalp :PROOF-FOUND (snark:prove (!@ f))) (if (equalp :PROOF-FOUND (snark:prove (!@ f)))
"YES" "YES"
@ -126,8 +125,7 @@
(setf (gethash (princ-to-string axiom) a-n) name) (setf (gethash (princ-to-string axiom) a-n) name)
(setf (gethash (princ-to-string name) n-a) axiom))) axioms) (setf (gethash (princ-to-string name) n-a) axiom))) axioms)
(mapcar (lambda (axiom) (mapcar (lambda (axiom)
(snark::assert axiom :name (gethash (princ-to-string axiom) a-n) (snark::assert axiom))
))
(mapcar #'!@ axioms)) (mapcar #'!@ axioms))
(let ((proof (snark:prove (!@ f) :answer (!@ (list 'ans var)) ))) (let ((proof (snark:prove (!@ f) :answer (!@ (list 'ans var)) )))
@ -154,8 +152,7 @@
(setf (gethash (princ-to-string axiom) a-n) name) (setf (gethash (princ-to-string axiom) a-n) name)
(setf (gethash (princ-to-string name) n-a) axiom))) axioms) (setf (gethash (princ-to-string name) n-a) axiom))) axioms)
(mapcar (lambda (axiom) (mapcar (lambda (axiom)
(snark::assert axiom :name (gethash (princ-to-string axiom) a-n) (snark::assert axiom))
))
(mapcar #'!@ axioms)) (mapcar #'!@ axioms))
(let ((proof (snark:prove (!@ f) :answer (!@ (cons 'ans vars)) ))) (let ((proof (snark:prove (!@ f) :answer (!@ (cons 'ans vars)) )))
@ -179,8 +176,7 @@
(setf (gethash (princ-to-string axiom) a-n) name) (setf (gethash (princ-to-string axiom) a-n) name)
(setf (gethash (princ-to-string name) n-a) axiom))) axioms) (setf (gethash (princ-to-string name) n-a) axiom))) axioms)
(mapcar (lambda (axiom) (mapcar (lambda (axiom)
(snark::assert axiom :name (gethash (princ-to-string axiom) a-n) (snark::assert axiom))
))
(mapcar #'!@ axioms)) (mapcar #'!@ axioms))
(let ((proof (snark:prove (!@ f) :answer (!@ (cons 'ans vars)) ))) (let ((proof (snark:prove (!@ f) :answer (!@ (cons 'ans vars)) )))

View file

@ -22,7 +22,7 @@ public class RunDemo {
public static void main(String[] args) throws Reader.ParsingException { public static void main(String[] args) throws Reader.ParsingException {
List<GoalTrackingProblem> goalTrackingProblemList = (GoalTrackingProblem.readFromFile(Planner.class.getResourceAsStream("goal_tracking_tests.clj"))); List<GoalTrackingProblem> goalTrackingProblemList = (GoalTrackingProblem.readFromFile(Planner.class.getResourceAsStream("goal_management_2.clj")));
GoalTrackingProblem goalTrackingProblem = goalTrackingProblemList.get(0); GoalTrackingProblem goalTrackingProblem = goalTrackingProblemList.get(0);
@ -31,18 +31,25 @@ public class RunDemo {
goalTrackingProblem.getPlanningProblem().getStart(), goalTrackingProblem.getPlanningProblem().getStart(),
goalTrackingProblem.getPlanningProblem().getActions()); goalTrackingProblem.getPlanningProblem().getActions());
long start = System.currentTimeMillis();
Goal g1 = goalTrackingProblem.getGoalNamed("G1"); Goal g1 = goalTrackingProblem.getGoalNamed("G1");
Goal g2 = goalTrackingProblem.getGoalNamed("G2"); Goal g2 = goalTrackingProblem.getGoalNamed("G2");
Goal g3 = goalTrackingProblem.getGoalNamed("G3");
Goal g4 = goalTrackingProblem.getGoalNamed("G4");
Goal g5 = goalTrackingProblem.getGoalNamed("G5");
tryAndAddGoal(g1, goalTracker); tryAndAddGoal(g1, goalTracker);
tryAndAddGoal(g2, goalTracker); tryAndAddGoal(g2, goalTracker);
tryAndAddGoal(g3, goalTracker);
tryAndAddGoal(g4, goalTracker); long end = System.currentTimeMillis();
tryAndAddGoal(g5, goalTracker);
cp.println("--------------------------");
cp.setForegroundColor(Ansi.FColor.CYAN);
cp.print("Time Taken:");
cp.clear();
cp.print(" ");
cp.setAttribute(Ansi.Attribute.BOLD);
cp.print((end-start)/1000 + "s");
} }

View file

@ -57,6 +57,13 @@
:additions [(interrogates commander prisoner)] :additions [(interrogates commander prisoner)]
:deletions []}) :deletions []})
(define-action stay-put [?x ?y]
{:preconditions [(sameroom ?x ?y)]
:additions [(sameroom ?x ?y)]
:deletions []})
] ]
} }

View file

@ -1,21 +1,23 @@
{:definitions {:definitions
{:name "demo 1" {:name "test"
:background [ :background []
(forall [?x ?room1 ?room2] :start [
(if (not (= ?room1 ?room2)) (forall [?x ?room1 ?room2] (implies (and (not (= ?room1 ?room2)) (in ?x ?room1)) (not (in ?x ?room2))))
(if (in ?x ?room1) (not (in ?x ?room2))) )) (not (= room1 room2))
(not (= room1 room2)) (not (= prisoner commander))
(not (= prisoner commander)) (not (= self prisoner))
(not (= self prisoner)) (not (= self commander))
(not (= self commander)) (person prisoner)
(person prisoner) (person commander)
(person commander) (in self room1)
]
:start [(in self room1)
(in commander room2) (in commander room2)
(in prisoner room1) (in prisoner room1)
(open (door room2)) (open (door room2))
(not (open (door room1)))] (not (open (door room1)))
(forall [?x ?y ?room] (implies (and (and (in ?x ?room) (in ?y ?room)) (not (= ?x ?y))) (sameroom ?x ?y)))
(forall [?x ?y] (exists ?room (implies (sameroom ?x ?y) (and (in ?x ?room) (in ?y ?room)) )) )
]
:goal [] :goal []
@ -28,8 +30,7 @@
(define-action accompany [?person ?room1 ?room2] (define-action accompany [?person ?room1 ?room2]
{:preconditions [(not (= ?room1 ?room2)) {:preconditions [(in ?person ?room1)
(in ?person ?room1)
(in self ?room1) (in self ?room1)
(open (door ?room1)) (open (door ?room1))
(open (door ?room2))] (open (door ?room2))]
@ -41,8 +42,7 @@
(in self ?room1)]}) (in self ?room1)]})
(define-action move [?person ?room2 ?room1] (define-action move [?person ?room2 ?room1]
{:preconditions [(not (= ?room1 ?room2)) {:preconditions [(in ?person ?room2)
(in ?person ?room2)
(open (door ?room1)) (open (door ?room1))
(open (door ?room2))] (open (door ?room2))]
@ -57,24 +57,15 @@
:additions [(interrogates commander prisoner)] :additions [(interrogates commander prisoner)]
:deletions []}) :deletions []})
] ]
} }
:goals {G1 {:priority 6.0 :goals {G1 {:priority 1.0
:state [(not (open (door room1)))]} :state [(sameroom self prisoner)]}
G2 {:priority 6.0
:state [(in prisoner room1)]}
G3 {:priority 6.0
:state [(forall [?room]
(if (in prisoner ?room)
(in self ?room)))]}
G4 {:priority 3.0
:state [(in prisoner room2)
(in self room2)]}
G5 {:priority 2.0
:state [(interrogates commander prisoner)]}}
G2 {:priority 2.0
:state [(in prisoner room2)]}
}
} }

View file

@ -17,7 +17,7 @@ public class GoalTrackerTest {
public static void main(String[] args) throws Reader.ParsingException { public static void main(String[] args) throws Reader.ParsingException {
List<GoalTrackingProblem> goalTrackingProblemList = (GoalTrackingProblem.readFromFile(Planner.class.getResourceAsStream("goal_tracking_tests.clj"))); List<GoalTrackingProblem> goalTrackingProblemList = (GoalTrackingProblem.readFromFile(Planner.class.getResourceAsStream("goal_management_1.clj")));
GoalTrackingProblem goalTrackingProblem = goalTrackingProblemList.get(0); GoalTrackingProblem goalTrackingProblem = goalTrackingProblemList.get(0);