Αυτόνομοι Πράκτορες. Εργασία εξαμήνου. Value Iteration και Q- Learning για Peg Solitaire



Σχετικά έγγραφα
Αυτόνομοι Πράκτορες. Εργασία εξαμήνου. Μάθηση του παιχνιδιού British square με χρήση Temporal Difference(TD) Κωνσταντάκης Γιώργος

ΑΥΤΟΝΟΜΟΙ ΠΡΑΚΤΟΡΕΣ. ΑΝΑΦΟΡΑ ΕΡΓΑΣΙΑΣ Othello-TD Learning. Βόλτσης Βαγγέλης Α.Μ

Τσάπελη Φανή ΑΜ: Ενισχυτική Μάθηση για το παιχνίδι dots. Τελική Αναφορά

ΕΦΑΡΜΟΓΗ Q-LEARNING ΣΕ GRID WORLD ΚΑΙ ΕΞΥΠΝΟΣ ΧΕΙΡΙΣΜΟΣ ΤΟΥ LEARNING RATE ΛΑΘΙΩΤΑΚΗΣ ΑΡΗΣ ΑΥΤΟΝΟΜΟΙ ΠΡΑΚΤΟΡΕΣ

Προγραμματιστικές Ασκήσεις, Φυλλάδιο 1

ΠΛΗ 513-Αυτόνομοι Πράκτορες Χειμερινό εξάμηνο 2012 Εφαρμογή αλγορίθμων ενισχυτικής μάθησης στο παιχνίδι Βlackjack. Χλης Νικόλαος-Κοσμάς

Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών Τομέας Ηλεκτρονικής και Υπολογιστών. ΤΗΜΜΥ Α.Π.Θ Πέμπτη 11 / 12 / 2014 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

Coop-in Εγχειρίδιο χρήστη

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ. Πρώτη Σειρά ασκήσεων Ημερομηνία Παράδοσης: 24 Απριλίου 2018, 12 μ.μ.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Το Κ2 είναι ένα παιχνίδι για 1 έως 5 παίκτες, ηλικίας 8 ετών και άνω, με διάρκεια περίπου 60 λεπτά.

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

ΕΠΙΣΗΜΟΙ ΚΑΝΟΝΕΣ ΤΟΥ ΟΙ ΚΑΡΤΕΣ

Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών Τομέας Ηλεκτρονικής και Υπολογιστών ΤΗΜΜΥ Α.Π.Θ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ.

ΠΛΗ513 - Αυτόνομοι Πράκτορες Αναφορά Εργασίας

Chess Academy Free Lessons Ακαδημία Σκάκι Δωρεάν Μαθήματα. Οι κινήσεις των κομματιών Σκοπός της παρτίδας, το Ματ Πατ Επιμέλεια: Γιάννης Κατσίρης

Περιεχόμενα του Παιχνιδιού

Αγαπητές φίλες, αγαπητοί φίλοι... καλώς ήλθατε στο Σπίτι του Παιχνιδιού!

ΣΚΗΝΙΚΟ ΥΠΟΒΑΘΡΑ ΑΡΧΙΚΗ

Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών Τομέας Ηλεκτρονικής και Υπολογιστών ΤΗΜΜΥ Α.Π.Θ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. DS Gomoku.

Περιεχόμενα. Σκοπός του παιχνιδιού. Ένα παιχνίδι του Dirk Henn για 2-6 παίκτες

1-4 παίκτες - 30 λεπτά

Σκοπός του παιχνιδιού. Περίληψη

Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων

Εισαγωγή. Περιεχόμενα

Πίστας Αγώνα Αρχικών Στοιχημάτων Βοηθήματος Παικτών Πρώτου Παίκτη Τούρμπο Πρώτο στοίχημα: Κατασκευή της πίστας:

Ασκήσεις μελέτης της 6 ης διάλεξης


Μάθημα 8 ο Η εντολή ανδιαφορετικά

Ενότητα: Δυαδική Αναζήτηση Σχέδιο Δραστηριότητας: Παιχνίδι: Βρες τον αριθμό

EMOJITO! 7 Δίσκοι Ψηφοφορίας. 100 Κάρτες Συναισθημάτων. 1 Ταμπλό. 7 Πιόνια παικτών. 2-7 Παίκτες

Σημειωματάριο Τετάρτης 25 Οκτ. 2017

Αυτόνομοι Πράκτορες Μαριάνος Νίκος Αυτόνομοι Πράκτορες. Χειμερινό Εξάμηνο 2016 Κωδικός Μαθήματος ΠΛΗ513 Πρότζεκτ Μαθήματος

2). V (s) = R(s) + γ max T (s, a, s )V (s ) (3)

Ένα διασκεδαστικό παιχνίδι με αγορές, ενοικιάσεις και πωλήσεις ιδιοκτησιών σε όλη την Ελλάδα!

Το Παιχνίδι της Αφαίρεσης

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Επιπεδοπόλεµος(Flatwar)

Διαδρομών Μέρμηγκα Μερμηγκιών Τζίτζικα Τζίτζικα Επιλογής Επιλογής Φθινόπωρο Φθινόπωρο Προμηθειών Χειμώνα Δύναμης Χειμώνα Φθινόπωρο Χειμώ- νας

ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ

Περιεχόμενα. Πέτρα. Χρυσός. Βιβλίο. Τροφή. Πόντοι Νίκης. Ρίξιμο ξανά. Ανάλυση ενός πλακιδίου. Ονομασία Κόστος ( ή


Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;

Πολυτεχνείο Κρήτης Σχολή Ηλεκτρονικών Μηχανικών Και Μηχανικών Η/Υ. ΠΛΗ 513 Αυτόνομοι Πράκτορες

Και όπως και στη ζωή, έτσι κι εδώ δεν υπάρχει δεύτερος...

Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών Τομέας Ηλεκτρονικής και Υπολογιστών. ΤΗΜΜΥ Α.Π.Θ Δευτέρα 22 / 11 / 2017 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Επίλυση Προβλημάτων 1

Περιεχόμενα του Παιχνιδιού

Language: English / Greek

Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010

Τυχαίοι αριθμοί ρίξε μια «ζαριά»

Σημειωματάριο Δευτέρας 4 Δεκ. 2017

ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΤΗΣ. Εργαλειοθήκη Παρουσιάζετε το έργο σας Εκκινείτε τα σενάριά σας Σταματάτε όλα τα σενάρια. Οι 8 ομάδες της Παλέτας εντολών

Μεταβλητές. Για περισσότερες λεπτομέρειες πάνω στις μεταβλητές θα ήταν χρήσιμο να διαβάσεις το

2-5 Παίκτες - Ηλικία λεπτά

Επίλυση προβληµάτων. Περιγραφή προβληµάτων Αλγόριθµοι αναζήτησης Αλγόριθµοι τυφλής αναζήτησης Αλγόριθµοι ευρετικής αναζήτησης

Σημειωματάριο Τετάρτης 18 Οκτ. 2017

ΕΚΠ 413 / ΕΚΠ 606 Αυτόνοµοι (Ροµ οτικοί) Πράκτορες

Τιμή Τιμή. σκορ. ζωές

Το υλικό που περιέχεται στη συσκευασία είναι χρήσιμο για την εξοικείωση με τους αριθμούς, αναπτύσσοντας τόσο την αναγνώριση των αριθμών και των

Εργασία για το Facility Game Μάθημα: Δομές Δεδομένων Σωτήρης Γυφτόπουλος

Τεχνητή Νοημοσύνη. 6η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Η Ιστορία. Προετοιμασία του παιχνιδιού. Μια περιπετειώδης αποστολή στον παράδεισο.

Θεωρία Παιγνίων Δρ. Τασσόπουλος Ιωάννης

Παραδείγματα μεταβλητών

Εντολές της LOGO (MicroWorlds Pro)

ΣΚΟΠΟΣ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΠΕΡΙΕΧΟΜΕΝΑ

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

App Inventor 5ο Μάθημα (Κορώνα γράμματα - επέκταση)

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Τελικό επαναληπτικό διαγώνισμα Επιμέλεια: Δρεμούσης Παντελής

Το Jungle Speed είναι ένα παιχνίδι για 2 έως 10 παίκτες (ή και ακόμη περισσότερους!) ηλικίας 7 και άνω.

Καροτοκυνηγός. Αντικείμενα

ΠΕΡΙΕΧΟΜΕΝΑ ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΤΟΧΟΣ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ. Έβερεστ: Το ψηλότερο βουνό του κόσμου.

Περισσότερες λεπτομέρειες και τρελά βίντεο σας περιμένουν στο: skull-and-roses.com

Δομές Δεδομένων. Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse. 5ο εξάμηνο. v1.0

Οι παίκτες παίρνουν το ρόλο των χειρότερων πειρατών στο πλήρωμα ενός πλοίου. Ο καπετάνιος σας έχει στη μπούκα, επειδή είστε πολύ τεμπέληδες και

Φύλλο Εργασίας: Παιχνίδι Λαβύρινθος (MAZE) Προγραμματιστικό Εργαλείο: GAME MAKER. Ονοματεπώνυμο:

Προτεινόμενες εργασίες Προγραμματισμού Διαδικτύου

1 κεντρικό ταμπλό. 1 εγχειρίδιο οδηγιών. Κύβοι μεταναστών. 25 Ιρλανδοί 25 Άγγλοι 25 Γερμανοί 25 Ιταλοί. Δείκτες πολιτικής εύνοιας

Στοχαστικές Στρατηγικές. διαδρομής (1)

Δημιουργία δισδιάστατου παιχνιδιού, τύπου Pacman. 1ο μέρος.

Περιεχόμενα και προετοιμασία για τέσσερις παίκτες

Πλάνο Παρουσίασης. Στο δεύτερο μέρος θα μελετήσουμε τον σχεδιασμό και κώδικα πίσω από την εφαρμογή.

ΤΕΙ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ

ΗΜΙΟΥΡΓΙΑ ΠΑΙΧΝΙ ΙΟΥ ΣΤΟ SCRATCH ΒΗΜΑ ΠΡΟΣ ΒΗΜΑ

Slalom Race Computer Game on Scratch

Κεφαλαιο 2.2 ΑΝΑΚΕΦΑΛΑΙΩΤΙΚΕΣ ΑΛΓΟΡΙΘΜΟΙ

Αγώνες αυτοκινήτου Παιχνίδι για 2 παίκτες

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 8: Παίγνια πλήρους και ελλιπούς πληροφόρησης

ΟΔΗΓΙΕΣ. Λίγα λόγια παίκτες Διάρκεια 30 Για ηλικίες 10+

Προετοιμασία του παιχνιδιού

/ / 38

Σχετική κίνηση αντικειμένων

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Μελετάμε την περίπτωση όπου αποθηκεύουμε ένα (δυναμικό) σύνολο στοιχειών. Ένα στοιχείο γράφεται ως, όπου κάθε.

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (3)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ ΤΗΣ ΔΙΟΙΚΗΣΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ΔΙΟΙΚΗΣΗΣ ΣΤΟΧΑΣΤΙΚΑ ΜΟΝΤΕΛΑ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Transcript:

Αυτόνομοι Πράκτορες Εργασία εξαμήνου Value Iteration και Q- Learning για Peg Solitaire Μαρίνα Μαυρίκου 2007030102 1.Εισαγωγικά για το παιχνίδι Το Peg Solitaire είναι ένα παιχνίδι το οποίο παίζεται με ένα άτομο. Ο παίκτης μπορεί να κουνήσει πούλια κατά έξι διαφορετικές κατευθύνσεις (πλάγια πάνω δεξιά,πλάγια πάνω αριστερά, πλάγια κάτω δεξιά, πλάγια κάτω αριστερά, οριζόντια δεξιά και οριζόντια αριστερά). Το κάθε πούλι μπορεί να τοποθετηθεί σε μία κενή θέση, αφού στο ενδιάμεσο υπάρχει ένα πούλι. Το παιχνίδι τελειώνει, όταν ο παίκτης δεν μπορεί να κάνει άλλη κίνηση και είναι νικητής αν στο ταμπλό έχει μείνει μόνο ένα πούλι. Οποιαδήποτε άλλη τελική κατάσταση είναι λανθασμένη(δηλαδή ο παίκτης έχασε). 2.Γραφικά για το παιχνίδι Αρχικά, δημιουργώ ένα JFrame με όνομα Peg Solitaire και στη συνέχεια μεταβαίνουμε στην μέθοδο initcomponents(). Εκεί δημιουργώ ένα JMenu, όπου έχει ο παίκτης τις επιλογές New Game, δηλαδή την έναρξη καινούργιου παιχνιδιού, και την επιλογή Exit, δηλαδή ο παίκτης να βγει από το παιχνίδι. Στη συνέχεια, δημιουργώ ένα Panel, όπου έχει Borderlayout και στο κέντρο του, αφού έχω δημιουργήσει ένα JPanel, δημιουργώ ένα Gridlayout με 4 γραμμές και 7 στήλες. Εκεί θα ορίσουμε το ταμπλό του παιχνιδιού. Αρχικοποιούμε το ταμπλό, όπως φαίνεται στην παρακάτω εικόνα. Ανάλογα σε ποιο κουτάκι του Gridlayout βρισκόμαστε, τοποθετείται και η αντίστοιχη εικόνα, δηλαδή, είτε η εικόνα του ταμπλό, είτε η εικόνα του πιονιού, είτε η κενή θέση. Ταυτόχρονα, χρησιμοποιώ ένα βοηθητικό δυσδιάστατο πίνακα, όπου και εκεί ορίζω το ταμπλό και τα πιόνια. Αφού τώρα έχουμε δημιουργήσει το παιχνίδι με την αρχικη κατάσταση, είμαστε έτοιμοι να κουνήσουμε κάποιο πούλι σε κάποια κενή θέση. Με τη μέθοδο mouseclicked εντοπίζουμε σε ποιό σημείο του frame ο χρήστης έχει πατήσει.

Οπότε, περιμένουμε να πατήσει τα δύο σημεία που θέλει να μετακινήσει κάποιο πιόνι. Αν η κίνηση αυτή δεν επιτρέπεται τότε εμφανίζεται μήνυμα στην κονσόλα, ότι η κίνηση που επέλεξε να κάνει δεν είναι επιτρεπτή. Αν η κίνηση είναι αποδεκτή, τότε εντοπίζουμε τα δυο κουτάκια που κλίκαρε και μεταβαίνουμε στη μέθοδο setexistingworld, όπου και δημιουργείται το ταμπλό τροποποιημένο. Σε αυτή τη μέθοδο, αρχικά, ελέγχουμε αν η κίνηση είναι επιτρεπτή. Αν η κίνηση αυτή παραβιάζει κάποια συνθήκη τότε το πρόγραμμα περιμένει να πατήσει δύο άλλες αποδεκτές θέσεις για να συνεχίσει. Αρχικά, τροποποιούμε το βοηθητικό πίνακα poulia[ ][ ] και μετά τροποποιούμε το Gridlayout ανάλογα με το τι τιμή υπάρχει στον πίνακα poulia στην αντίστοιχη θέση. Δυστυχώς δεν είχα το χρόνο να συνδέσω τα γραφικά που έφτιαξα με τα αποτελέσματα του value iteration και του qlearning ώστε να έχουμε οπτικά αποτελέσματα 3.Value Iteration για Peg Solitaire Σκοπός της εργασίας αυτής είναι η εύρεση της βέλτιστης πολιτικής, ώστε ένας πράκτορας να μπορεί να νικήσει το παιχνίδι. Με το value iteration υπολογίζουμε τη χρησιμότητα κάθε κατάστασης και στη συνέχεια χρησιμοποιούμε τις χρησιμότητες των καταστάσεων για να επιλέξουμε τη βέλτιστη ενέργεια σε κάθε κατάσταση. Γενικά, η χρησιμότητα μιας κατάστασης είναι η άμεση ανταμοιβή για αυτή την κατάσταση συν την αναμενόμενη προεξοφλημένη χρησιμότητα της επόμενης κατάστασης, υποθέτοντας, ότι ο πράκτορας επιλέγει τη σωστή ενέργεια. Αυτό περιγράφεται από τον εξής τύπο:

Για το συγκεκριμένο παιχνίδι,ώστε να το κάνουμε στοχαστικό, υποθέτουμε, ότι όταν ο χρήστης κάνει μια κίνηση, δεν αφαιρείται πάντα το ενδιάμεσο πούλι. Αυτό συμβαίνει με μία πιθανότητα 0.1. Επιπλέον ο πράκτορας επιλέγει πιο συχνά κινήσεις προς τα πάνω, γιατί η πιθανότητα να κάνει κινήσεις προς τα πάνω είναι μεγαλύτερη (0.3) από τις υπόλοιπες 4 κινήσεις (0.1). Επιπλέον αρχικοποιούμε με θετική ανταμοιβή τις σωστές τελικές καταστάσεις (=3), με αρνητική ανταμοιβή τις λάθος τελικές καταστάσεις (=-1) και με αρνητική ανταμοιβή τις καταστάσεις που δε φεύγει το πούλι (=-1). Όλες οι υπόλοιπες καταστάσεις αρχικοποιούνται με 0. Αρχικά, ξεκινάμε από την αρχική κατάσταση που δείξαμε παραπάνω. Ορίζουμε μία Αrraylist τύπου Periexomena. Σε αυτή την λίστα θα αποθηκεύουμε τον πίνακα που δηλώνει την κατάσταση των πουλιών, ένα id όπου είναι μοναδικό για κάθε κόμβο της λίστας, ένα parent, όπου δηλώνει από ποια κατάσταση δημιουργήθηκε και την κίνηση που έγινε και φτάσαμε σε αυτή την κατάσταση. Προσθέτουμε την αρχική κατάσταση στην πρώτη θέση της λίστας με id= 0 και parent= -1. Στη συνέχεια, μεταβαίνουμε στην μέθοδο makemove. Στη μέθοδο αυτή, μεταβαίνουμε σε μία άλλη μέθοδο, την checkmove για κάθε κόμβο της λίστας. Αρχικά έχουμε εισάγει μόνο την αρχική κατάσταση, οπότε παίρνουμε τον πίνακα tiletable, που αντστοιχεί στη θέση των πουλιών. Για κάθε στοιχείο του πίνακα ελέγχουμε αν μπορούμε να κάνουμε κάποια κίνηση. Αν η κίνηση αυτή είναι επιτρεπτή, και το στοιχείο αυτό είναι πούλι, τότε δημιουργούμε ένα tiletable2, όπου εκεί εκχωρούμε την καινούρια κατάσταση με τις αλλαγές της κίνησης. Υπάρχει, όπως αναφέραμε και πριν, η πιθανότητα το πούλι που βρίσκεται στη μέση να μην φύγει. Ορίζουμε τις αντίστοιχες χρησιμότητες ανάλογα σε ποια κατασταση είμαστε, όπως αναλύσαμε πριν. Υπάρχει και η μέθοδος NoOtherMoves όπου επιστρέφει true, όταν δεν μπορει να γίνει κάποια άλλη κίνηση στο ταμπλό και false, όταν υπάρχει και άλλη κίνηση που μπορεί να γίνει. Κάθε tiletable2 που δημιουργείται, το προσθέτουμε στην λίστα μας και ορίζουμε ως Parent το id του tiletable που είχαμε αρχικά. Αφού έχουμε πλέον όλες τις πιθανές καταστάσεις αποθηκευμένες, πάμε στη μέθοδο computestrategy, όπου εκεί γίνεται το value iteration. Εκεί ορίζουμε τον αριθμό των επαναλήψεων (=100). Για κάθε κόμβο που υπάρχει στη λίστα βρίσκουμε τα παιδιά του. Βλέπουμε ποιο από τα παιδιά έχει τη μέγιστη χρησιμότητα r+γ*p*v και τη θέτουμε για τον κόμβο που εξετάζουμε. Στη μεταβλητή next αποθηκεύουμε το id από το παιδί της κατάστασης που βρήκαμε τη μέγιστη χρησιμότητα. Αρχικά, για τις αρχικές καταστάσεις, η χρησιμότητα τους είναι 0. Λόγω όμως των επαναλήψεων, οι χρησιμότητες γίνονται πιο ακριβείς και βρίσκουμε το σωστό μονοπάτι για να φτάσουμε στη σωστή τελική κατάσταση. Χρειάζονται γύρω στις 7 επαναλήψεις για να μπορέσουμε να καταλήξουμε σε μία κατάσταση που να έχουμε μόνο ένα πούλι στο ταμπλό.

4.Q-Learning για Peg Solitaire H μάθηση Q μαθαίνει μία αναπαράσταση αξίας ενεργειών αντί να μαθαίνει χρησιμότητες. Είναι αρκετά σημαντικό να τονιστεί, ότι ένας πράκτορας, όπου εφαρμόζει μάθηση Q, δε χρειάζεται να γνωρίζει το μοντέλο τόσο για τη μάθηση όσο και για την επιλογή ενέργειας. Η εξίσωση ενημέρωσης TD για την μάθηση Q είναι: Για το παιχνίδι αυτό, αρχικά, αφήνω τον πράκτορα να επιλέξει τυχαίες ενέργειες και να υπολογίσει την τιμή Q για κάθε κατάσταση που μεταβαίνει. Στη συνέχεια, αφού παίξει αρκετά παιχνίδια και έχει μαζέψει αρκετή γνώση για την κάθε κατάσταση, τότε αρχίζει να μην επιλέγει τυχαία κάποια ενέργεια, αλλά να βασίζεται στις τιμές Q που έχει υπολογίσει.αυτό πραγματοποιείται με τον εξής ψευδοκώδικα: Choose_Play: randomorknowledge=0; Random r=new Random(); iterations=1000; counter=0; while(counter!=iterations){ if (randomorknowledge> r.random(100);){ Choose by knowledge } else{ Choose Randomly randomorknowledge++; } } Αφού το 100 είναι σχετικά ένας μεγάλος αριθμός για το παιχνίδι αυτό, στις πρώτες επαναλήψεις διασφαλίζουμε, ότι ο πράκτορας θα επενεργεί τυχαία. Μερικές φορές, θα επιλέγει να κάνει και κινήσεις από τις γνώσεις που μαζεύει. Η μεταβλητή randomorknowledge αυξάνεται κάθε φορά που κάνουμε μία τυχαία ενέργεια. Αυτό σημαίνει ότι κάθε φορά που κάνουμε μία τυχαία ενέργεια, προστίθεται μία επιπλέον γνώση στον πράκτορα. Κατα τις τελευταιες 100 επαναλήψεις,ο χρήστης επιλέγει να χρησιμοποιεί τη γνώση που έχει μαζέψει, αλλά και τυχαίες επιλογές για να καλύψει καταστάσεις που ίσως να μην έχει πάει. Μετά από 100 επαναλήψεις ο χρήστης μπορεί πλέον να βασιστεί μόνο στη γνώση του.

Αρχικοποιούμε με θετική ανταμοιβή τις σωστές τελικές καταστάσεις (=3), με αρνητική ανταμοιβή τις λάθος τελικες καταστασεις(=-1) και με αρνητική ανταμοιβή τις καταστάσεις που δεν φεύγει το πούλι(=-1). Όλες οι υπόλοιπες καταστάσεις αρχικοποιούνται με 0. Αναλυτικότερα, στη μέθοδο qlearning ορίζουμε 1000 επαναλήψεις. Όσο ο αριθμός επαναλήψεων είναι μικρός τότε για κάθε κόμβο της λίστας μας επιλέγουμε μία τυχαία ενέργεια και βρίσκουμε την κατάσταση που καταλήγουμε αν κάνουμε αυτή την κίνηση. Υπολογίζουμε την τιμή Q της κατάστασης που ήμασταν αρχικά, λαμβάνοντας υπόψιν την τιμή Q της κατάστασης που καταλήγουμε. Όταν οι επαναλήψεις ξεπεράσουμε τις 100, τότε ο πράκτορας βασίζεται στη γνώση που έχει μαζέψει. Επιλέγει την ενέργεια με τη μέγιστη τιμή Q. 5.Αποτελέσματα Το value iteration δουλεύει σωστά και ο πράκτορας μετά από 10 περίπου επαναλήψεις μπορεί να βρίσκει τη βέλτιστη πολιτική, έτσι ώστε να καταλήγει στη σωστή τελική κατάσταση. Αποθηκεύοντας τις χρησιμότητες σε κάθε επανάληψη της αρχικής κατάστασης με μία ενδιάμεση κατάσταση έχουμε το εξής γράφημα:

Παρατηρούμε, ότι από την 8 η επανάληψη οι χρησιμότητες παραμένουν σταθερές, κάτι το οποίο είναι και το αναμενόμενο. Για το Q- Learning, μετά από 1000, παρατηρούμε ότι ο πράκτορας έχει μια στατική συμπεριφορά και μένει σε μία συγκεκριμένη διαδρομή. Λόγω των τερματικών καταστάσεων, που κάποιες με αρνητική ανταμοιβή είναι αρκετά συχνές, ο πράκτορας συγκλίνει σε συγκεκριμένες θέσεις και δεν παίρνει υπόψιν του τα υπόλοιπα δείγματα με αποτέλεσμα να μην επιλέγει τη σωστή τελική κατάσταση κάθε φορά. Γι αυτό το λόγο, καταλήγουμε ότι 8 στα 10 παιχνίδια ο πράκτορας καταφέρνει να νικήσει το παιχνίδι και να φτάσει στη σωστή τελική κατάσταση.