ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΤΜΗΜΑ ΙΟΙΚΗΣΗΣ ΤΕΧΝΟΛΟΓΙΑΣ - ΝΑΟΥΣΑ Το προγραµµατιστικό µοντέλο της StarLogo Φιλοσοφία Γλώσσα Περιβάλλον Παραδείγµατα 21 Νοεµβρίου 2005 Τί είναι η Starlogo? Ένα περιβάλλον προσοµοίωσης αποκεντρωµένων συστηµάτων Αναπτύχθηκε στο MIT αρχικά για υπολογιστές Macintosh και το 2000 παρουσιάστηκε η πρώτη έκδοσή της σε Java διαθέσιµη πλέον για όλες τις πλατφόρµες Βασίστηκε στην γλώσσα Logo από όπου και δανείστηκε πολλά στοιχεία τόσο της γλώσσας (εντολές) όσο και του περιβάλλοντος (χελώνες...) 1 2 Αποκεντρωµένα συστήµατα Συστήµατα που λειτουργούν χωρίς κεντρικό έλεγχο Συστήµατα που οργανώνονται χωρίς την ύπαρξη «οργανωτή» Εφαρµογές Βιολογία Οικονοµία Κοινωνικές επιστήµες Παραδείγµατα Οτρόπος συγκέντρωσης τροφής από µια αποικία µυρµηγκιών Το πέταγµα των αποδηµητικών πουλιών σε σχηµατισµό Η εξάπλωση µιας επιδηµίας Η αναδιανοµή του πλούτου σε µια ελεύθερη οικονοµία Το κυκλοφοριακό πρόβληµα 3 4 Γιατί είναι σηµαντική η µελέτη των αποκεντρωµένων συστηµάτων? υσκολίες προσοµοίωσης Μας επιτρέπει να κατανοήσουµε τα αίτια οµαδικών συµπεριφορών ίνει απάντηση στις λανθασµένες θεωρίες ύπαρξης κεντρικού ελέγχου Μας δείχνει πώς πολύπλοκες µορφές συµπεριφοράς (π.χ. η οµαδική συλλογή φαγητού από µια αποικία µυρµηγκιών) προκύπτουν από µερικούς απλούς κανόνες. Απαιτούνται χιλιάδες αντικείµενα Το µοντέλο του αντικειµενοστραφή προγραµµατισµού δεν επαρκεί Χρησιµοποιώντας παράλληλο προγραµµατισµό η δυσκολία υλοποίησης είναι πολύ µεγάλη εν υπάρχουν κατάλληλα εργαλεία λογισµικού για να υποστηρίξουν τέτοια µοντέλα χωρίς την ύπαρξη κεντρικού ελέγχου 5 6 1
Η απάντηση της Starlogo ιαφορές από τη Logo Βασισµένη στην γλώσσα Logo που χρησιµοποιείται για εισαγωγή παιδιών στο προγραµµατισµό ανείζεται στοιχεία από τον αντικειµενοστραφή και τον παράλληλο προγραµµατισµό Στόχος της δεν είναι η ταχύτητα και οι επιδόσεις αλλά η δυνατότητα προγραµµατισµού χιλιάδων αντικειµένων ταυτόχρονα Γραφικό περιβάλλον µε δυνατότητες πολυµέσων Μικρό αριθµό εντολών µε πολλές όµως εφαρµογές Εκπαιδευτικό εργαλείο Logo Μια χελώνα Η χελώνα δεν επικοινωνεί µε το περιβάλλον Η κίνηση της πάνω σε pixels Starlogo Χιλιάδες χελώνες Οι χελώνες έχουν «αισθήσεις» Στη Starlogo οι χελώνες κινούνται πάνω σε αντικείµενα (patches) 7 8 Αντικείµενα της Starlogo Υπάρχουν 3 θεµελειώδη αντικείµενα στον εικονικό κόσµο της Starlogo Χελώνες Τετράγωνα (patches) Αντικείµενα της Starlogo (1/3) Χελώνες Θεµελιώδη αντικείµενα της Starlogo µε 4 βασικές ιδιότητες: Θέση (µεταβλητή position) Προσανατολισµό (µεταβλητή heading) Χρώµα (µεταβλητή color) Όνοµα (µεταβλητή who) Ο χρήστης µπορεί να προσθέσει δικές του ιδιότητες µε τη µορφή νέων µεταβλητών Παρατηρητής 9 Ανάλογα µε το σύστηµα που προσοµοιώνεται κάθε φορά µπορεί να αντιπροσωπεύουν οργανισµούς, µύκητες, κύτταρα, αυτοκίνητα κλπ. 10 Αντικείµενα της Starlogo (2/3) Αντικείµενα της Starlogo (3/3) Τετράγωνα (patches) Θεµελιώδη αντικείµενα της Starlogo πάνω στα οποία «περπατούν» οι χελώνες. Έχουν τις ίδιες βασικές ιδιότητες: Θέση (µεταβλητή position) Προσανατολισµό (µεταβλητή heading) Χρώµα (µεταβλητή color) Όνοµα (µεταβλητή who) Η διαφορά τους είναι ότι δεν µπορούν να κινηθούν Μπορούν όµως να ανιχνεύουν την παρουσία χελωνών πάνω τους καθώς και να επικοινωνούν µε τα γειτονικά τετράγωνα 11 Ο παρατηρητής (εµείς) Παρατηρεί τον εικονικό κόσµο των χελωνών και τετραγώνων από ψηλά ηµιουργεί τις χελώνες και καθορίζει τις ιδιότητές τους Καθορίζει τους κανόνες που διέπουν τη συµπεριφορά των χελωνών (δηλ. τον κώδικα) Μπορεί να εξάγει τα αποτελέσµατα της προσοµοίωσης σε ποσοτική ή ποιοτική µορφή (αριθµητικά δεδοµένα ή γραφικές παραστάσεις) 12 2
Το περιβάλλον Τα παράθυρα ελέγχου 13 14 Η γλώσσα της Starlogo CRT [αριθµός Ν] Αρχικά της φράσης CReate Turtles ηµιουργεί Ν χελώνες στο σηµείο (0,0) του καρτεσιανού συστήµατος κέντρο οθόνης Σηµαντικό: Κάθε χελώνα έχει τυχαίο προσανατολισµό (µεταβλητή heading) Στο ίδιο τετράγωνο µπορούν ταυτόχρονα να «πατούν» περισσότερες από µια χελώνες 15 16 FD [steps] RT [degrees]/ LT [degrees] Αρχικά της φράσης ForWard Κάνει τις χελώνες να προχωρούν κατά steps τετράγωνα προς την κατεύθυνση που κοιτάζουν Όταν µια χελώνα βγει από την ορατή επιφάνεια των τετραγώνων (π.χ. πάνω δεξιά) εµφανίζεται να µπαίνει από την αντίθετη πλευρά (στο παράδειγµά µας κάτω αριστερά) 17 Αρχικά της φράσης Right Turn / Left Turn Κάνει τις χελώνες να στρίβουν δεξιά ή αριστερά κατά degrees µοίρες Παράδειγµα: Η εντολή RT 90 λέει στη χελώνα να στρίψει 90 µοίρες δεξιά από την αρχική της κατεύθυνση 18 3
PD / PU Αρχικά της φράσης Pen Down / Pen Up Κάθε χελώνα µεταφέρει ένα στυλό (pen) στο χρώµα που καθορίζει η µεταβλητή color Παράδειγµα: Η εντολή PD FD 10 λέει στη χελώνα να ακουµπήσει το στυλό στο έδαφος (τετράγωνα) και να προχωρήσει 10 βήµατα στην κατεύθυνση που κοιτάζει. Σαν αποτέλεσµα θα σχεδιάσει µια ευθεία. 19 20 CT Αρχικά της φράσης Clear Turtles Καθαρίζει την οθόνη από τις χελώνες CP Αρχικά της φράσης Clear Patches Καθαρίζει τα τετράγωνα επαναφέροντάς τα στο αρχικό τους χρώµα (µαύρα) CΑ Αρχικά της φράσης Clear Αll Είναι συνδυασµός της CT και της CP. Εξαφανίζει όλες τις χελώνες και επαναφέρει τα τετράγωνα στο αρχικό τους χρώµα Βρόχοι επανάληψης H εντολή REPEAT (Ν) [κώδικας] εκτελεί τον κώδικα µέσα στις αγκύλες Ν φορές Παράδειγµα: REPEAT 10 [ FD 1 ] Η χελώνα θα κάνει 10 βήµατα εµπρός Για να τερµατιστεί ο βρόχος πριν τελειώσει ο αριθµός των επαναλήψεων µπορεί να χρησιµοποιηθεί η εντολή: stop 21 ιαδικασίες (Procedures) Μπορούµε να οµαδοποιήσουµε εντολές της Starlogo σε διαδικασίες Σύνταξη: to (όνοµα διαδικασίας) εντολές... Παράδειγµα: to move-turtle-right RT 1 FD 1 22 Κλήση: move-turtle-right Πως µπορούµε να σχεδιάσουµε κύκλο µε τις παρακάτω εντολές? Παράδειγµα Ηγεωµετρία της Starlogo FD (forward) RT (Right Turn), LT (Left Turn) PU (Pen Up), PD (Pen Down) REPEAT 23 24 4
Τεχνικές σχεδίασης κύκλου Στη Logo όπου υπάρχει µόνο µία χελώνα θα γράφαµε PD REPEAT 360 [RT 1 FD 1] PU Η χελώνα θα ξεκινήσει από την αρχική της θέση και µετά από κάθε βήµα της θα στρίβει µια µοίρα δεξιά. Μετά από 360 µοίρες θα έχει φτάσει στην αρχική της θέση έχοντας διαγράψει ένα κύκλο. 25 Στη Starlogo? Αρκεί µόνο η εντολή FD 10 Στη Starlogo οι χελώνες είναι ο κύκλος Το γεγονός ότι σχηµατίζουν κύκλο οφείλεται στις τυχαίες κατευθύνσεις που έχουν κατά τη δηµιουργία τους Εφόσον όλες ξεκινούν από το κέντρο µε συντεταγµένες (0,0) προχωρώντας ίδιο αριθµό βηµάτων σχηµατίζουν κύκλο µε ακτίνα 10 26 Σχεδιάζοντας ένα µοντέλο από την αρχή Μια αποικία τερµιτών Το µοντέλο των τερµιτών Θέλουµε να προσοµοιώσουµε µια αποικία τερµιτών που συγκεντρώνουν κοµµάτια από ξύλο σε σωρούς Οι τερµίτες δεν µπορούν να ανιχνεύσουν την ύπαρξη ξύλου παρά µόνο όταν συναντήσουν ένα κοµµάτι στο δρόµο τους. εν ελέγχονται κεντρικά ούτε κατευθύνονται από κάποιον άλλο τερµίτη (π.χ. Βασιλιά). 27 28 Μεταφορά στη Starlogo Αλλαγή εµφάνισης χελωνών Για να µοντελοποιήσουµε την αποικία τερµιτών θα χρησιµοποιήσουµε τις χελώνες της Starlogo ως τερµίτες Από τις διαθέσιµες βιβλιοθήκες εικονιδίων µπορούµε να αλλάξουµε την εµφάνιση των χελωνών σε τερµίτες Το ρόλο των κοµµατιών ξύλου θα έχουν ορισµένα από τα τετράγωνα. Για να τα διαφοροποιήσουµε θα τους δώσουµε διαφορετικό χρώµα (π.χ. κίτρινο) Ως παρατηρητές ΕΜΕΙΣ πρέπει να καθορίσουµε τους κανόνες συµπεριφοράς που θα ακολουθούν οι τερµίτες 29 Για να µοντελοποιήσουµε την αποικία τερµιτών θα χρησιµοποιήσουµε τις χελώνες της Starlogo ως τερµίτες Από τις διαθέσιµες βιβλιοθήκες εικονιδίων µπορούµε να αλλάξουµε την εµφάνιση των χελωνών σε τερµίτες Για να αλλάξουµε την εµφάνιση των χελωνών setshape termite-shape 30 5
Σχεδιασµός των κοµµατιών ξύλου Θα χρησιµοποιήσουµε µερικά από τα τετράγωνα ως κοµµάτια ξύλου Χρησιµοποιώντας διαφορετικό χρώµα για τα κοµµάτια ξύλου (κίτρινο) µπορούµε να προσθέσουµε σε τυχαία σηµεία κίτρινα τετράγωνα µε τον παρακάτω κώδικα: ask-patches [if (random 100) < density [setpc yellow]] Η εντολή ask-patches ζητά να εκτελεστεί ο κώδικας που περιέχει µόνο από τα τετράγωνα. Αντίστοιχα υπάρχει η εντολή ask-turtles όταν θέλουµε µόνο οι χελώνες να εκτελέσουν κάποιο κώδικα. Τοποθέτηση τερµιτών σε τυχαίες θέσεις Για να αρχικοποιήσουµε το µοντέλο µας πρέπει να τοποθετήσουµε τους τερµίτες σε τυχαίες θέσεις to setup setshape termite-shape seth random 360 jump random 200 31 32 Κανόνες Συµπεριφοράς Τερµιτών Κάνε ένα τυχαίο βήµα Για να υλοποιήσουµε τους κανόνες, οι τερµίτες πρέπει: Να ξέρουν πώς πρέπει να περπατούν Αν βρεις ένα κοµµάτι ξύλου, σήκωσέ το εκτός κι αν κουβαλάς ήδη ένα. (Ένας τερµίτης µπορεί να µεταφέρει µόνο ένα κοµµάτι ξύλου) Αν ενώ κουβαλάς ένα κοµµάτι ξύλου βρεις µπροστά σου ένα άλλο, άφησε κάτω το κοµµάτι που κουβαλάς και ψάξε άλλο. Να ξέρουν πώς να αναζητούν κοµµάτια ξύλου Να βρίσκουν ένα σωρό µε ξύλα Να αφήνουν ένα κοµµάτι ξύλο στο σωρό 33 34 Τυχαίος περίπατος Αναζήτηση κοµµατιού ξύλου Ο παρακάτω κώδικας υλοποιεί έναν τυχαίο περίπατο για κάθε τερµίτη: to wiggle FD 1 RT RANDOM 50 LT RANDOM 50 Οτερµίτης µόλις βρει ένα κίτρινο τετράγωνο (ξύλο) το κάνει µαύρο για να δείξει ότι το σήκωσε και σταµατά. Αν δεν βρει κίτρινο τετράγωνο κάνει ένα τυχαίο βήµα και ελέγχει το νέο τετράγωνο ξανά: to search-for-chip if pc = yellow [stamp black jump 20 stop] wiggle search-for-chip 35 36 6
Εύρεση σωρού από ξύλα Εφόσον οι τερµίτες κουβαλούν ένα κοµµάτι ξύλου πρέπει να βρουν ένα σωρό από ξύλα για να αφήσουν το δικό τους: to find-new-pile if pc = yellow [stop] wiggle find-new-pile Απόθεση κοµµατιού ξύλου Μόλις οι τερµίτες εντοπίσουν ένα σωρό από ξύλα πρέπει να βρουν ένα άδειο τετράγωνο (µαύρο) για να αφήσουν το ξύλο τους: to find-empty-patch if pc = black [stamp yellow stop] seth random 360 fd 1 find-empty-patch 37 38 Οι κανόνες µετατράπηκαν σε διαδικασίες της Starlogo Πλέον οι Τερµίτες γνωρίζουν πως: Να περπατούν wiggle Να αναζητούν κοµµάτια ξύλου search-for-chip Να βρίσκουν ένα σωρό µε ξύλα find-new-pile Να αφήνουν ένα κοµµάτι ξύλο στο σωρό Για να ξεκινήσει η προσοµοίωση Χρειαζόµαστε µια διαδικασία να αναγκάζει τους τερµίτες συνεχώς (infinite loop) να εκτελούν τις εξής ενέργειες: Βρες ένα κοµµάτι ξύλου και σήκωσέ το Βρες ένα νέο σωρό ξύλων Βρες ένα άδειο µέρος για να αφήσεις το ξύλο που κουβαλάς Σε µορφή κώδικα: to go search-for-chip find-new-pile find-empty-spot find-empty-patch 39 40 Εκτέλεση προσοµοίωσης 41 42 7
Link στο ΜΙΤ για να κατεβάσετε τη Starlogo http://education.mit.edu/starlogo/ Τα παραδείγµατα που παρουσιάστηκαν στη διάλεξη συµπεριλαµβάνονται µαζί µε το περιβάλλον της Starlogo που θα κατεβάσετε από το παραπάνω link 43 44 8