7 Στοχαστικά Συστήματα – Μέθοδοι Monte Carlo

7.2 Αλγόριθμοι Monte Carlo

Τι ονομάζουμε αλγόριθμους ή προσομοιώσεις Monte Carlo;

Όπως είδαμε και στην εισαγωγή του κεφαλαίου οι μέθοδοι μοντελοποίησης ή προσομοίωσης Monte Carlo είναι μια μεγάλη κατηγορία υπολογιστικών μεθόδων, κοινά χαρακτηριστικά των οποίων είναι: (α) χρήση «τυχαίων αριθμών», και (β) η παρατήρηση ότι αυτοί υπακούουν σε συγκεκριμένες ιδιότητες.[30, 23]

Που χρησιμοποιούνται οι προσομοιώσεις Monte Carlo; Υπάρχει ένα πολύ μεγάλο εύρος προβλημάτων τα οποία μπορούν να επιλυθούν χρησιμοποιώντας μεθόδους Monte Carlo. Τα περισσότερα εξ’αυτών εμπίπτουν σε δύο γενικές κατηγορίες:

  • Υπολογισμός ολοκληρωμάτων (ολοκλήρωση Monte Carlo): Δηλαδή υπολογισμός αναμενόμενων τιμών (expectation values) συναρτήσεων μίας ή περισσοτέρων ανεξάρτητων (τυχαίων) μεταβλητών.

  • Εύρεση ελαχίστου ή μεγίστου συναρτήσεων (βελτιστοποίηση Monte Carlo): Σε πολλά προβλήματα, κυρίως από τη βελτιστοποίηση διεργασιών, καταλήγουμε σε υπολογισμούς που αφορούν ελάχιστα, ή μέγιστα, συναρτήσεων (π.χ. συναρτήσεις κόστους).

Σε όλες τις παραπάνω περιπτώσεις οι υπό μελέτη συναρτήσεις έχουν ως ανεξάρτητες μεταβλητές, τυχαίες μεταβλητές.

7.2.1 Ένα πρώτο παράδειγμα

Ας δούμε ένα πολύ απλό παράδειγμα. Στόχος μας είναι ο υπολογισμός του αριθμού π μέσω του παρακάτω μοντέλου – αλγορίθμου.

Το πείραμα σταγόνων βροχής (raindrop experiment): Έστω τετράγωνο το οποίο περικλείει ένα κύκλο. Η ακτίνα του κύκλου είναι r ενώ το μήκος κάθε πλευράς του τετραγώνου είναι ίσο με τη διάμετρο του κύκλου, 2r (Σχήμα 7.1). Το εμβαδόν του κύκλου είναι:

Ac=πr2 (7.1)

ενώ το εμβαδόν του τετραγώνου με το οποίο τον περικλείουμε

As=(2r)2=4r2. (7.2)

Εύκολα βλέπουμε ότι ο αριθμός π μπορεί να υπολογισθεί ως:

π=4AcAs. (7.3)

Για τον υπολογισμό λοιπόν του π χρειαζόμαστε τον υπολογισμό του λόγου των δύο εμβαδών, Ac/As. Ο υπολογισμός αυτός περιμένουμε ότι δεν μπορεί να γίνει «ακριβώς» δεδομένου ότι το π είναι άρρητος αριθμός. Αυτό όμως που μπορεί να γίνει είναι να προσεγγίσουμε τον λόγο Ac/As, και μέσω αυτού τον αριθμό π, με μια συγκεκριμένη ακρίβεια. Ο υπολογισμός κάθε εμβαδού απαιτεί τον υπολογισμό του αντίστοιχου ολοκληρώματος. Μια επιλογή για να επιτευχθεί αυτό θα ήταν η αριθμητική ολοκλήρωση. Αυτό θα μπορούσε να γίνει με διάφορες αριθμητικές μεθόδους, όπως ο κανόνας του τραπεζίου και οι εξισώσεις τύπου Newton – Cotes (π.χ.. Simpson’s rule). Μια εναλλακτική επιλογή αριθμητικής ολοκλήρωσης για τον υπολογισμό θα ήταν η ακόλουθη διαδικασία (ολοκλήρωση Monte Carlo):

  • Δημιουργία N τυχαίων σημείων μέσα στο τετράγωνο.

  • Εύρεση του αριθμού των σημείων, εκ των N τυχαίων σημείων που βρίσκονται στο τετράγωνο, τα οποία βρίσκονται επίσης μέσα στον κύκλο. Έστω Μ αυτά τα σημεία.

  • Συνεπώς ο αριθμός π προσεγγίζεται ως

    π(N)=4MN.

Η παραπάνω διαδικασία προσέγγισης ενός ολοκληρώματος (εδώ εμβαδού ενός γεωμετρικού σχήματος) με τη χρήση τυχαίων αριθμών, είναι ένας πολύ απλός αλγόριθμος Monte Carlo, ο οποίος μπορεί εύκολα να υλοποιηθεί μέσα σε λίγες γραμμές κώδικα από κάθε φοιτητή (ή μαθητή) ο οποίος γνωρίζει μια οποιοδήποτε γλώσσα προγραμματισμού. Η υλοποίηση του παραπάνω αλγορίθμου προτείνεται ως άσκηση για τον αναγνώστη.

Η γραφική αναπαράσταση του παραπάνω αλγορίθμου φαίνεται στο παρακάτω διάγραμμα (Σχήμα 7.1), για ένα συγκεκριμένο υπολογιστικό «πείραμα».

Προσέξτε ότι ο λόγος M/N προσεγγίζει τον λόγο των δύο εμβαδών για μεγάλα N, δηλαδή

AcAs=limNMN.

Συνεπώς η προσέγγιση του λόγου των δύο εμβαδών και κατ’ επέκταση του αριθμού π βελτιώνεται όσο μεγαλύτερος είναι ο αριθμός των «τυχαίων σημείων» N.

Σχήμα 7.1: Σχηματική αναπαράσταση για τον υπολογισμό του αριθμού π. Με τελείες βλέπουμε σημεία τα οποία δημιουργούνται με κάποιο τρόπο «τυχαία» μέσα στο τετράγωνο, ενώ κάποια από αυτά βρίσκονται και μέσα στον κύκλο.

7.2.2 Ιστορικά στοιχεία

Ο πρώτος (;) αλγόριθμος τύπου Monte Carlo αναπτύχθηκε από τον Buffon το 1777. Στην πραγματικότητα είναι ένας ακόμη αλγόριθμος υπολογισμού του αριθμού π, λίγο πιο περίπλοκος από τον αλγόριθμο που είδαμε παραπάνω. Έστω το παρακάτω πρόβλημα. Υποθέστε ότι έχουμε ένα χώρο με παράλληλες ξύλινες πλάκες, με ακριβώς το ίδιο πάχος, και πετάμε σε αυτόν μια βελόνα. Το πάχος κάθε πλάκας είναι t και το μήκος κάθε βελόνας l.

Ερώτηση: Ποια είναι η πιθανότητα, P, η βελόνα να διασταυρώνει μια γραμμή (την ένωση) μεταξύ δύο πλακών; (Δες Σχήμα 7.2)

Απάντηση: Θεωρούμε ότι ρίχνουμε τυχαία βελόνες μέσα στο χώρο. Αν υποθέσουμε ότι το μήκος κάθε βελόνας είναι μικρότερο του πάχους των πλακών, δηλαδή l ¡ t , τότε η ζητούμενη πιθανότητα είναι:

P=2lπt. (7.4)

Η απόδειξη της παραπάνω σχέσης αφήνεται ως άσκηση στον αναγνώστη.

Σχήμα 7.2: Σχηματική αναπαράσταση για τον υπολογισμό του αριθμού π με τη μέθοδο του Buffon.

Όπως βλέπουμε η παραπάνω σχέση μπορεί να χρησιμοποιηθεί για τον υπολογισμό του αριθμού π. Πιο συγκεκριμένα, ο αλγόριθμος υπολογισμού του π με βάση το παραπάνω πείραμα θα ήταν ο εξής:

  • Πρώτα δημιουργούμε «τυχαία» N βελόνες μέσα στο χωρίο μας. Αυτό επιτυγχάνεται με τη χρήση τυχαίων μεταβλητών μέσα σε ένα συγκεκριμένο χωρίο. Κάθε βελόνα περιγράφεται από 2 τ.μ., τη θέση του κέντρου της και τη γωνία ως προς τη κάθετη γραμμή (ένωση) μεταξύ δύο πλακών.

  • Κατόπιν μετράμε πόσες από αυτές διασταυρώνονται με τις γραμμές (ενώσεις) μεταξύ των πλακών. Έστω ότι αυτές είναι M.

  • Η πιθανότητα διασταύρωσης είναι P=M/N. Άρα τελικά: π2lPt=NM2lt.

Παρατήρηση 7.1.

Προσέξτε ότι με τον παραπάνω αλγόριθμο, όπως και με αυτόν που είδαμε σε στο προηγούμενο υπό-κεφάλαιο, για να υπολογίσουμε ακριβώς τον αριθμό π πρέπει να υπολογίσουμε ακριβώς την πιθανότητα P. Χρησιμοποιώντας N τυχαίες μεταβλητές (βελόνες) ουσιαστικά έχουμε μια προσέγγιση της P, την PN, (και αντίστοιχα του αριθμού π). Η προσέγγιση αυτή βελτιώνεται όσο μεγαλύτερος είναι ο αριθμός των τυχαίων μεταβλητών N.