360 likes | 494 Views
Control Algorithms 2 Chapter 6. Production Systems. Emil Post (40’s): production systems as a formal theory of computation. Equivalent to a Turing machine. Set of rewrite rules for strings Newell and Simon (60’s, 70’s, 80’s): General Problem Solver
E N D
Control Algorithms 2Chapter 6 Production Systems
Emil Post (40’s): production systems as a formal theory of computation. Equivalent to a Turing machine. Set of rewrite rules for strings • Newell and Simon (60’s, 70’s, 80’s): General Problem Solver • John Anderson, Newell and Simon (80’s): learning models, ACT*, SOAR • Everyone (80’s): Expert systems A Model of Computation
Set of rewrite rules S NP VP LHS: Condition PartRHS: Action Part Components
Working Memory --Contains the current state of the world--Contains pattern that is matched against the condition of the production --When a match occurs, an action is performed Components
Recognize-Act Cycle --Isolate a subset of productions whose conditions match patterns in working memory: conflict set --Choose one of them ---Fire ---Change contents of working memory --Stop when there are no matches Components
Productions • N 0N0 • N 1N1 • N 0 • N 1 • N λ Iteration Working Memory Conflict Set Fired 0 N 1,2,3,4,5 1 1 0N0 1,2,3,4,5 1 2 00N00 1,2,3,4,5 2 3 001N100 1,2,3,4,5 3 4 0010100 Example: Production system to generate the set of palindromes over the alphabet {0,1}
Given a 3X3 matrix • What squares can a knight land on What values of X, Y satisfy mv(X,Y) X,Y are elements of {1,2,…,9} 1. mv(1,8) 7. mv(4,9) 13. mv(8,3) 2. mv(1,6) 8. mv(4,3) 14. mv(8,1) 3. mv(2,9) 9. mv(6,1) 15. mv(9,2) 4. mv(2,7) 10. mv(6,7) 16. mv(9,4) 5. mv(3,4) 11. mv(7,2) 6. mv(3,8) 12. mv(7,6) 3 1 2 Knight’s Tour As a Production System 4 5 6 7 8 9
1. Every expression of the form mv(x,y) becomes on(x) on(y) 2. Use no path expression 3. Working memory is the current state and goal state 4. Conflict set is the set of rules that match the current state 5. Apply all rules until the current state equals the goal state Changes
1. mv(1,8) 7. mv(4,9) 13. mv(8,3) • 2. mv(1,6) 8. mv(4,3) 14. mv(8,1) • 3. mv(2,9) 9. mv(6,1) 15. mv(9,2) • 4. mv(2,7) 10. mv(6,7) 16. mv(9,4) • 5. mv(3,4) 11. mv(7,2) • 6. mv(3,8) 12. mv(7,6) • 1. on(1) -> on(8) 7. on(4) -> on(9) 13. on(8) -> on(3) • 2. on(1) -> on(6) 8. on(4) -> on(3) 14. on(8) -> on(1) • 3. on(2) -> on(9) 9. on(6) -> on(1) 15. on(9) -> on(2) • 4. on(2) -> on(7) 10. on(6) -> on(7) 16. on(9) -> on(4) • 5. on(3) -> on(4) 11. on(7) -> on(2) • 6. on(3) -> on(8) 12. on(7) -> on(6) Productions (write on board)
Iteration --Working Memory-- Conflict Set Fired Current Goal 0 1 2 1,2 1 1 8 2 13,14 13 2 3 2 5,6 5 3 4 2 7,8 7 4 9 2 15,16 15 5 2 2 Halt Can We Get from 1 to 2?
path(1,2) {1/x,2/y} mv(1,z)^path(z,2) {8/z} mv(1,8)^path(8,2) mv(8,z)^path(z,2) {3/z} mv(8,3)^path(3,2) mv(3,z)^path(z,2) {4/z} mv(3,4)^path(4,2) mv(4,z)^path(z,2) {9/z} mv(4,9)^path(9,2) mv(9,z)^path(z,2) {2/z} mv(9,2)^path(2,2) t t t t t Pattern Search Now look at working memory in the production system
Production System Pattern Search productions mv working memory path(X,Y) Fire lowest numbered production Choose first rule that unifies Conclusion: Production Systems and pattern search are equivalent (almost) Equivalences
Loop Detection • Pattern Search: global list of visited states (closed) • Production Systems: Record previously visited states in working memory Two new productions • assert(X) causes X to be stored in WM • been(X) is T if X has been visited • assert(been(X)) records in wm that we’ve already visited X Almost?
Iteration --Working Memory-- Conflict Set Fired Current Goal been 0 1 7 1 1,2 1 1 8 7 8 13,14 13 2 3 7 3 5,6 5 3 4 7 4 7,8 7 4 9 7 9 15,16 15 5 2 7 2 3,4 3 (firing 3 causes been(9) to fail) 2 7 2 4 4 7 7 7 Notice that this search is data driven Can We Get from 1 to 7?
Instead of starting with current state=1 and goal = 7 Start with current state = 7 and goal = 1 Can Also Be Goal Driven
What about 8x8? Either enumerate all moves or encode them 8 possible situations • d(2),r(1) 5. u(2),r(1) • d(2),l(1) 6. u(2),l(1) • d(1),r(2) 7. u(1),r(2) • d(1),l(2) 8. u(1),l(2) Works great for a 3x3 matrix
Situation have preconditions: Pre: row <=6, col <=7 Situation 1: d(2),r(1) Requires 4 new functions sq(r,c) returns cell number, left to right, top to bottom where r is row number, c is column number plus(r,2) returns r + 2 eq(X,Y) T if X = Y lte(X,Y) T if X<=Y Not applicable everywhere
mv(sq(R,C),sq(Nr,Nc)) lte(R,6)^eq(Nr,plus(R,2)) ^ %down two rows lte(C,7)^eq(Nc,plus(c,1))%right 1 col There are 7 more analogous to this Encoding of situation 1: d(2),r(1)
Said to model human cognition • Separation of knowledge from control • Natural mapping onto state space search • Modularity of production rules • Simple tracing and explanation—compare a rule with a line of c++ code • Language independence Strength of Production Systems
Production systems are easily rendered in prolog We’ll consider several versions of the knight’s tour And (this is the best part)
Record of Squares Visited knight1
Put Visited Squares on a List Knight2
Stack Displays Path to Goal Knight3
Queue Displays Path to Goal Knight4 (continued next class)
! • Always succeeds the first time it is encountered • When backtracked to, it causes the entire goal in which it was contained to fail Without ! (4 2 path moves from 1) With ! (2 2 path moves from 1) Cut
A farmer (f) has a dog (d), a goat (g),and a cabbage (c) • A river runs North and South • The farmer has a boat that can hold only the farmer and one other item • Without the farmer • The goat will eat the cabbage • The dog will eat the goat • How does the farmer (and his cohort) cross the river Farmer Problem
Define a predicate: state(F,D,G,C) Where F,D,G,C can be set to e or w indicating the side of the river each is on. State Predicate
st(w,w,w,w) st(e,e,w,w) st(e,w,e,w) s(e,w,w,e) st(w,w,e,w) s(e,e,e,w) st(e,w,e,e) etc. As State-Space
st(e,e,-,-) st(w,w,-,-) Means Farmer and dog went from east to west Can be rewritten: mv(st(X,X,G,C),st(Y,Y,G,C)) Constructing a Move Predicate
opp(e,w) • opp(w,e) Giving mv(st(X,X,G,C),st(Y,Y,G,C)) :- opp(X,Y). opp(e,w). opp(w,e). Four of these: 3 items to move + 1 solo return trip Facts
Goat and cabbage are together • unsafe(st(X,D,Y,Y)) if X != Y • unsafe(st(X,D,Y,Y)) :- opp(X,Y) • Dog and goat are together • Unsafe(st(X,Y,Y,C) if X != Y • Unsafe(st(X,Y,Y,C) :- opp(X,Y) Unsafe
mv(st(X,X,G,C),st(Y,Y,G,C)) :- opp(X,Y), not(unsafe(st(Y,Y,G,C))). Never move to an unsafe state
Use Move/Control Technique from Knight3 Farmer Problem Finding a Solution