Solving the Tower of Cubes Problem with Intelligent Planning
90 likes | 111 Vues
Explore the challenges of cube world planning and learn how to solve them using intelligent actions. Experiment with various cube world problems and test different plans.
Solving the Tower of Cubes Problem with Intelligent Planning
E N D
Presentation Transcript
Ο κόσμος των κύβων • Πρόβλημα προσχεδιασμού κατάλληλων πύργων • Η Κατάσταση του κόσμου μπορεί να αναπαρασταθεί με μιαλίστα από: on(Block1,Block2) ή on(Block,TablePlace) • Οι δράσεις είναι: • to_block(Block1,PresentPos, Block2) • μεταφέρει το Block1 από τη θέση PresentPos πάνω στο Block2 • to_place(Block,PresentPos, Place) • μεταφέρει το Block από τη θέση PresentPos πάνω στη θέση Place
Ο κόσμος των κύβων a • Αρχική κατάσταση: • [on(a,b), on(b,p), on(c,r)] • Τελική κατάσταση: • [on(c,r), on(b,c), on(a,b)] a b b c c p q r p q r
Ο κόσμος των κύβων • transform (State1, State2,Plan) Plan is a plan of actions to transform State1 into State2. • transform (State1, State2, Plan) :- transform (State1, State2, [State1], Plan). • transform (State, State, Visited, [ ]). transform (State1, State2, Visited, [Action|Actions]) :- legal_action (Action, State1), update(Action, State1, State), not member (State,Visited), transform (State, State2, [State|Visited], Actions).
Ο κόσμος των κύβων • legal_action (to_place(Block, Y, Place), State) :- on (Block, Y, State) , clear (Block, State), place (Place), clear (Place, State). legal_action (to_block (Block1, Y, Block2), State):- on (Blockl, Y, State), clear (Block1, State), block(Block2), Block1 ≠ Block2, clear (Block2, State) .
Ο κόσμος των κύβων • clear (X, State) :- not member (on (A,X), State). • on (X, Y, State) :- member (on (X, Y), State). • update (to_block (X, Y, Z), State, State1) :- substitute (on (X, Y), on (X,Z), State, State1). • update (to_place (X, Y, Z) , State, State1) :- substitute (on (X,Y), on(X, Z), State, State1). • substitute (X, Y ,Xs, Ys) Exercise
Ο κόσμος των κύβων • Το πλάνο του απλού προβλήματος μας είναι το ακόλουθο: [to_place(a,b,q), to_block(a,q,c), to_place(b,p,q), to_place(a,c,p), to_block(a,p,b), to_place(c,r,p),……………, to_block(a,p,b)] • Το πλάνο περιέχει 25 κινήσεις!
Ο κόσμος των κύβων • Αντικαθιστούμε το legal_action με την πιο ευφυή επιλογή κινήσεων choose_action: • choose_action(Action, State1,FinalState2):- suggest(Action, FinalState2), legal_action(Action, State1). choose_action(Action, State1,FinalState2):- legal_action(Action, State1). • suggest(to_place(X,Y,Z), FinalState):- member(on(X,Z), FinalState), place(Z). suggest(to_block(X,Y,Z), FinalState):- member(on(X,Z), FinalState), block(Z). • Το πλάνο τώρα είναι: [to_place(a,b,q), to_block(b.p.c), to_block(a.q.b)]
Ο κόσμος των κύβων • Πειραματισμός με διάφορα προβλήματα: test_plan(NameOfTest, Plan):- initial_state(NameOfTest,I), final_state(NameOfTest,F), transform(I,F,Plan). initial_state(test1, [on(a,b), on(b,p), on(c,r)]). final_state(test1, [on(c,r), on(b,c), on(a,b)]). block(a). block(b). block(c). place(p). place(q). place(r). ?test_plan(test1, Plan).