90 likes | 107 Views
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.
E N D
Ο κόσμος των κύβων • Πρόβλημα προσχεδιασμού κατάλληλων πύργων • Η Κατάσταση του κόσμου μπορεί να αναπαρασταθεί με μιαλίστα από: 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).