Η NetLogo είναι ένα υπολογιστικό περιβάλλον προγραμματισμού και μοντελοποίησης που σχεδιάστηκε από τον Uri Wilensky στο Πανεπιστήμιο του Northwestern. Δημιουργήθηκε για να διδάξει την κατασκευή μοντέλων και επίσης για να χρησιμοποιηθεί στην έρευνα για τα Πολύπλοκα Συστήματα. Η NetLogo είναι βασισμένη σε δύο παλιότερες προγραμματιστικές γλώσεες, τη Logo και την StarLogo. Και οι τρεις γλώσσες έχουν χρησιμοποιηθεί εκτενώς στην εκπαίδευση, από την Πρωτοβάθμια μέχρι και την Τριτοβάθμια εκπαίδευση. Σ' αυτό το σεμινάριο θα χρησιμοποιήσουμε τη NetLogo για να επιδείξουμε κάποιες από τις κεντρικές ιδέες της έρευνας για τα πολύπλοκα συστήματα και κάποια από τα εργαλεία που χρησιμοποιούνται για τη μελέτη των πολύπλοκων συστημάτων. Στις ποικίλες προπαρασκευαστικές εργασίες που θα έχετε στο τμήμα αυτό θα χρησιμοποιήσετε τη NetLogo για να τροποποιήσετε και να πειραματιστείτε με υπάρχουσες προσομοιώσεις κι αν επιλέξετε τις εργασίες για προχωρημένους, τότε θα κατασκευάσετε τις δικές ας προσομοιώσεις. Στο υπόλοιπο της ενότητας αυτής, θα περιέλθω στα βασικά απαιτούμενα για το κατέβασμα και τη χρήση της NetLogo. Εάν δεν έχετε κάποια πρότερη προγραμματιστική εμπειρία, μην ανησυχείτε. Η NetLogo είναι εύχρηστη και προσιτή στους αρχάριους, όπως επίσης είναι χρήσιμη για τους έμπειρους. Ωστόσο, εάν ήδη έχετε προγραμματίσει στη NetLogo και γενικώς είσαστε εξοικειωμένοι μ' αυτήν, μπορείτε να προσπεράσετε τα υπόλοιπα βίντεο στην ενότητα αυτή και να πάτε κατευθείαν στην εργασία της ενότητας 1. Οκ, ας ξεκινήσουμε. Καταρχάς, θα κατεβάσουμε τη NetLogo. Είναι δωρεάν και τρέχει στα Windows, Mac OS και Linux. Θα σας ανοίξω ένα παράθυρο του browser, και θα πάω στη σελίδα απ' όπου μπορείτε να την κατεβάσετε η οποία είναι: http://ccl.northwestern.edu/netlogo Αυτός ο σύνδεσμος υπάρχει και στη σελίδα μας με το (διδακτικό) υλικό του σεμιναρίου. Με αυτό εμφανίζεται η σελίδα για το κατέβασμα (download) και περιλαμβάνει κάποιες πληροφορίες για τη NetLogo. Θα κάνω κλικ στο κατέβασμα (download). Μπορείτε κι εσείς να πάτε και να την κατεβάσετε. Μπορείτε να βάλετε τα στοιχεία σας εάν θέλετε, είναι προαιρετικό. Οκ, το σύστημά μου είναι Mac OS X, κατεβάζω, οκ, θα το σώσω στην επιφάνεια εργασίας. Τώρα ανοίγω αυτό εδώ. Οκ, εδώ υπάρχει ένας φάκελος με το όνομα NetLogo 5.0.3, αν ομως το κατεβάζετε κάποια άλλη ημερομηνία που θα έχουν αναπτύξει κάποια μεταγενέστερη έκδοση, μπορεί να δείτε άλλα μεγαλύτερα νούμερα... θα το σείρω αυτό στην επιφάνεια εργασίας και θα απαλλαγώ από τα δύο αρχεία εγκατάστασης. Τώρα έχω αυτόν τον φάκελο και σ' αυτόν έχω μέσα αυτήν την NetLogo 5.0.3, έτσι θα δείτε αυτή ή πιθανόν μια μεταγενέστερη έκδοση. Αυτό είναι το αρχείο που θέλω να ανοίξω. Αυτή είναι η δισδιάστατη έκδοση της NetLogo, υπάρχει και τρισδιάστατη έκδοση, η NetLogo 3D, την οποία θα δούμε λίγο αργότερα. Οπότε, κάνετε διπλό κλικ σ' αυτό για να το ανοίξετε, ναι θέλω να το ανοίξω. Παίρνει λίγο χρόνο για να ανοίξει, ανάλογα με το πόσο γρήγορος είναι ο υπολογιστής σας. Και να' το. Τώρα θα σας δείξω πώς να τρέξετε ένα υπάρχον μοντέλο στη NetLogo. Η NetLogo παρέχεται με μια βιβλιοθήκη από υπάρχοντα μοντέλα. Μπορείτε να έχετε πρόσβαση σ' αυτή αν πάτε στο μενού "File" και επιλέξετε "Models Library". Εκεί μπορείτε να κοιτάξετε όλα τα διαφορετικά γνωστικά πεδία και τα διαφορετικά μοντέλα σε καθένα από αυτά. Θα πάω στη Βιολογία και στο μοντέλο των μυρμηγκιών και μπορείτε να δείτε ότι πρόκειται για μια αποικία μυρμηγκιών που αναζητούν τροφή. Αν και κάθε ένα μυρμήγκι ακολουθεί ένα απλό σύνολο κανόνων, η αποικία ως σύνολο δρα με έναν σύνθετο τρόπο. Οπότε, ας ανοίξουμε το μοντέλο, οκ, λοιπόν το πρώτο που θα κάνετε όταν ανοίγετε ένα μοντέλο NetLogo είναι να πάτε εδώ πάνω στον πίνακα "Info" (πληροφορίες). Προσέξτε ότι υπάρχει ένα πίνακας αλληλεπίδρασης, ένας πίνακας πληροφοριών κι ένας για Κώδικα. Λοιπόν ο πίνακας info εδώ πάνω μας λέει κάποια πράγματα για το μοντέλο. Μας λέει για το πώς λειτουργεί, πώς να το χρησιμοποιήσουμε, κάποια πράγματα που πρέπει να ξέρουμε για το μοντέλο, κάποιες ιδέες για το πώς θα μπορούσαμε να το επεκτείνουμε, κ.λπ... Οπότε, μπορείτε να ρίξετε μια ματιά μόνοι σας. Θα επιστρέψω στον πίνακα αλληλεπίδρασης. Προσέξτε, υπάρχουν δύο κουμπιά εδώ, Setup και Go. Αυτά εμφανίζονται στα περισσότερα μοντέλα της NetLogo και σας συμβουλεύω πάντα να πατάτε το Setup. Αυτό θα σετάρει την προσομοίωση. Λοιπόν εδώ έχουμε μια φωλιά μυρμηγκιών, αυτό είναι αυτή η μωβ κηλίδα με τον κόκκινο κύκλο στη μέση, που αντιστοιχεί ουσιαστικά εκεί που ζουν όλα τα μυρμήγκια. Αυτός ο κυλιόμενος ρυθμιστής εδώ, για τον πληθυσμό (Population), μας λέει ότι υπάρχουν 125 μυρμήγκια. Οι άλλες τρεις κηλίδες είναι σωροί με τροφή και αυτό που θα δούμε είναι ένα γράφημα που αναπαριστά την ποσότητα τροφής σε κάθε σωρό στον χρόνο. Έτσι, τα μυρμήγκια θα βγουν από τη φωλιά τους και θα ψάξουν για τροφή. Θα κάνω κλικ λοιπόν στο Go και θα τα δείτε να τριγυρνούν από δω κι από κει. Ας σταματήσω το μοντέλο εδώ, πατώντας ξανά στο Go και να σας δείξω κάποια πράγματα. Βλέπετε λοιπόν τα μυρμηγκάκια που τριγυρνούν. Κινούνται με τυχαίο τρόπο μέχρι που κάποιο από αυτά βρίσκει ένα κομμάτι τροφή, το μικρό μπλε τετραγωνάκι εδώ, ή κάποιο από τους άλλους σωρούς. Μετά παίρνουν την τροφή και την πάνε πίσω στη φωλιά. Αλλά καθώς πάνε πίσω προς τη φωλιά, αφήνουν ένα χημικό ίχνος, που συχνά λέγεται φερομόνη στον πραγματικό κόσμο των μυρμηγκιών και άλλα μυρμήγκια ακολουθούν το ίχνος αυτό. Έτσι ένα μυρμήγκι αφήνει ένα ίχνος, σα να οδηγεί άλλα μυρμήγκια στην περιοχή που βρήκε την τροφή. Τώρα αυτά τα χημικά ίχνη διαχέονται ανάλογα με τον βαθμό διάχυσης (εδώ σ' αυτόν τον κυλιόμενο ρυθμιστή), δηλαδή απομακρύνονται από το αρχικό ίχνος κατά μήκος της απόστασης και εξαφανίζονται σύμφωνα με αυτόν τον ρυθμό Οπότε τα ίχνη εξατμίζονται, δεν βλέπουμε πλέον ίχνος εδώ. Αλλά ας μειώσω λίγο την ταχύτητα, βλέπετε εδώ έναν κυλιόμενο ρυθμιστή της ταχύτητας με την οποία τρέχει το μοντέλο... οπότε ας κάνω κλικ στο "go" και πάλι βλέπετε τα ίχνη να ενισχύονται, να εξατμίζονται, να διαχέονται αλλά εάν ένα μόνο μυρμήγκι καταφέρει και βρει την τροφή και γυρίσει πίσω στη φωλιά και άλλα μυρμήγκια βρουν το ίχνος αυτό πριν εξατμιστεί, τότε μπορούν να ακολουθήσουν το ίχνος. Και μπορείτε να δείτε εδώ την τροφή σε κάθε σωρό να μειώνεται, Αυτός είναι ο τελευταίος σωρός. Ας το επιταχύνω αυτό πάλι. Μπορείτε να δείτε τα μυρμήγκια και θα το επιταχύνω ακόμα περισσότερο και τα μυρμήγκια πάνε πραγματικά γρήγορα. Τώρα εξαφανίστηκε όλη η τροφή, τα μυρμήγκια δεν έχουν πλέον τι να ψάξουν κι έτσι κινούνται τριγύρω τυχαία. Θα πατήσω τώρα στο Go για να το σταματήσω και μπορείτε να δείτε στο γράφημα ότι τα μυρμήγκια βρήκαν όλη την τροφή σε περίπου, μπορούμε να δούμε σε τι χρόνο είναι, περίπου 900 και κάτι χρονικά βήματα. Οπότε αυτό είναι με το συγκεκριμένο σετάρισμα των παραμέτρων. Μπορούμε να το αλλάξουμε λίγο, τι γίνεται λοιπόν εάν αυξήσουμε το μέγεθος του πληθυσμού; Θα το πάω τέρμα μέχρι το 200. Θα ξαναπατήσω Setup και μετά Go. Θα δούμε εάν αυτό αλλάζει τη συμπεριφορά. Φυσικά, υπάρχει πολύ τυχαιότητα στο μοντέλο αυτό. Τα μυρμήγκια κινούνται τριγύρω τυχαία μέχρι που να βρουν λίγη τροφή και ακολουθούν το ίχνος εάν το συναντήσουν. Μπορούμε να δούμε πως όταν το μέγεθος του πληθυσμού είναι μεγαλύτερο, φαίνεται σαν, τουλάχιστον σ' αυτόν τον κύκλο, σα να βρήκαν όλη την τροφή πολύ πιο γρήγορα. Αλλά εφόσον υπάρχει πολύ τυχαιότητα, θα πρέπει να επαναλάβετε αυτούς τους κύκλους αρκετές φορές για να εξάγετε κάποια στατιστικά ώστε να διαπιστώσετε εάν πράγματι βρίσκουν γρηγορότερα την τροφή όταν ο πληθυσμός είναι μεγαλύτερος. Αυτό είναι ένα από τα μεγαλύτερα προσόντα της NetLogo, ότι μπορείς να αναπτύξεις αυτά τα μοντέλα, και μετά μπορείς να πειραματιστείς με αυτά, χρησιμοποιώντας όλες αυτές τις ποικίλες ρυθμίσεις και να θέσεις διαφορετικές μεταβλητές. Πολύ βοηθητικός θα πρέπει να πω, είναι αυτός ο πίνακας βοήθειας (help) στο μενού, ο οποίος σας επιτρέπει να πάτε σε διάφορες πηγές για βοήθεια, συγκεκριμένα στο User Manual της NetLogo και στο NetLogo Dictionary. Οπότε εάν κάνω κλικ στον οδηγό χρήσης (User Manual) πάει σε μια ιστοσελίδα που παρέχει μια σειρά από οδηγίες εκμάθησης προγραμματισμού στη NetLogo, και πολλά άλλα εργαλεία αναφοράς. Οπότε ας επιστρέψω σ' αυτό. Είδαμε την οθόνη αλληλεπίδρασης και τον πίνακα πληροφοριών, ας δούμε και τον Κώδικα. Ο Κώδικας είναι γραμμένος στην προγραμματιστική γλώσσα της NetLogo, που είναι η δική της γλώσσα και είναι πολύ εύκολη να τη μάθει κανείς. Θα μάθουμε λίγη σ' αυτό το σεμινάριο, όχι όλη φυσικά, γιατί αυτό θα απαιτούσε ένα ολόκληρο σεμινάριο αφιερωμένο σ' αυτή, αλλά θα πάρετε μια ιδέα του πώς να γράψετε τα μοντέλα αυτά, πώς να τα διορθώσετε και πώς να τα τρέξετε. Όσοι από εσάς ενδιαφέρεστε, η ίδια η NetLogo βασίζεται στην Java. Είναι γραμμένη σε Java αυτό υπάρχει κάτω από την επιφάνεια εδώ. Αλλά δεν χρειάζεται να την ξέρετε για να χρησιμοποιήσετε και να προγραμματίσετε στη NetLogo.