Ο ΓΠ (GP) γεννήθηκε από την ιδέα ότι η ανάπτυξη λογισμικού μπορεί να θεωρηθεί ως ένα πρόβλημα βελτιστοποίησης για το οποίο οι εξελικτικοί αλγόριθμοι

Σχετικά έγγραφα
Τυπικά θέματα εξετάσεων. ΠΡΟΣΟΧΗ: Οι ερωτήσεις που παρατίθενται ΔΕΝ καλύπτουν την πλήρη ύλη του μαθήματος και παρέχονται απλά ενδεικτικά

Οι Εξελικτικοί Αλγόριθμοι (ΕΑ) είναι καθολικοί στοχαστικοί αλγόριθμοι βελτιστοποίησης, εμπνευσμένοι από τις βασικές αρχές της φυσικής εξέλιξης.

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

Μεταγλωττιστές Βελτιστοποίηση

Κυκλωμάτων» Χειμερινό εξάμηνο

Οι τεχνικές της σύγχρονης επιστήμης μιμούνται και τις δύο αυτές μηχανές :

Γενετικός Προγραμματισμός

Μεταγλωττιστές Βελτιστοποίηση

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ - VHDL ΑΝΤΩΝΗΣ ΠΑΣΧΑΛΗΣ

ΡΟΜΠΟΤΙΚΗ ΟΡΑΣΗ. Όταν ένα ρομπότ κινείται σε άγνωστο χώρο ή σε χώρο που μπορεί να αλλάξει η διάταξή του τότε εμφανίζεται η ανάγκη της όρασης μηχανής.

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Θέματα Προγραμματισμού Η/Υ

Νευρωνικά ίκτυα και Εξελικτικός. Σηµερινό Μάθηµα. επανάληψη Γενετικών Αλγορίθµων 1 η εργασία Επανάληψη νευρωνικών δικτύων Ασκήσεις εφαρµογές

ΑΕΠΠ Ερωτήσεις θεωρίας

Συστοιχία Επιτόπια Προγραμματιζόμενων Πυλών Field Programmable Gate Arrays (FPGAs)

Ε ανάληψη. Α ληροφόρητη αναζήτηση

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

Πτυχιακή Εργασία Σχεδίαση κυκλωμάτων επικοινωνίας με απλές οθόνες, με τη γλώσσα VHDL και υλοποίηση στις αναπτυξιακές πλακέτες LP-2900 και DE2.

Πράξεις με δυαδικούς αριθμούς

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Λογική Σχεδίαση Ι - Εξεταστική Φεβρουαρίου 2013 Διάρκεια εξέτασης : 160 Ονοματεπώνυμο : Α. Μ. Έτος σπουδών:

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

Μνήμη και Προγραμματίσιμη Λογική

i Το τρανζίστορ αυτό είναι τύπου NMOS. Υπάρχει και το συμπληρωματικό PMOS. ; Τι συμβαίνει στο τρανζίστορ PMOS; Το τρανζίστορ MOS(FET)

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

ΕΡΩΤΗΜΑΤΑ σε ΓΕΝΕΤΙΚΟΥΣ

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

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο

Εισαγωγή στα Συστήματα Ψηφιακής Επεξεργασίας Σήματος

"My Binary Logic" Ένας προσομοιωτής λογικών πυλών στο Scratch

PLD. Εισαγωγή. 5 η Θεµατική Ενότητα : Συνδυαστικά. PLAs. PLDs FPGAs

ΠΛΗ10 Κεφάλαιο 2. ΠΛH10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: : Αριθμητική περιοχή της ALU 2.5: Κυκλώματα Υπολογιστών

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

Ανάπτυξη και Σχεδίαση Λογισμικού

Πιο συγκεκριμένα, η χρήση του MATLAB προσφέρει τα ακόλουθα πλεονεκτήματα.

4/10/2008. Στατικές πύλες CMOS και πύλες με τρανζίστορ διέλευσης. Πραγματικά τρανζίστορ. Ψηφιακή λειτουργία. Κανόνες ψηφιακής λειτουργίας

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο

Μοντέλα. χαρακτηριστικά χωρίς να συνοδεύεται από λεπτοµέρειες.

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Συναρτήσεις

Περιεχόμενα. Περιεχόμενα

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Επανάληψη για τις Τελικές εξετάσεις

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

Εισαγωγή στις Αρχές της επιστήμης των ΗΥ

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

επιφάνεια πυριτίου Αναφορά στο Εκπαιδευτικό Υλικό : 5. Αναφορά στο Εργαστήριο :

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

ΒΑΣΙΚΕΣ ΑΡΧΕΣ ΨΗΦΙΑΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ. Κεφάλαιο 3

ΠΕΡΙΕΧΟΜΕΝΑ 1 ΚΕΦΑΛΑΙΟ ΟΙ ΥΠΟΛΟΓΙΣΤΕΣ ΑΠΟ ΤΗΝ ΑΡΧΑΙΟΤΗΤΑ ΜΕΧΡΙ ΣΗΜΕΡΑ Ιστορική αναδρομή Υπολογιστικές μηχανές

Ψηφιακή Λογική και Σχεδίαση

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές

Εκτέλεση πράξεων. Ψηφιακά Ηλεκτρονικά και Δυαδική Λογική. Πράξεις με δυαδικούς αριθμούς. Πράξεις με δυαδικούς αριθμούς

Εθνικό Μετσόβιο Πολυτεχνείο Τομέας Υδατικών Πόρων και Περιβάλλοντος. Διαχείριση Υδατικών Πόρων

Πληροφορική 2. Γλώσσες Προγραμματισμού

Αυτοματισμοί και Συστήματα Αυτομάτου Ελέγχου. Ενότητα 2

Στόχοι και αντικείμενο ενότητας. Βασικές κατασκευές ΓΠ. Έλεγχος ροής προγράμματος. #4.. Εντολές Επιλογής

4.3. Γραµµικοί ταξινοµητές

Λογισµικό (Software SW) Γλώσσες

ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 4

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

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

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

Differential Evolution (Storn & Price 1995) Μπορεί να θεωρηθεί ως παραλλαγή των ΓΑ. Εφαρμόζεται μόνο σε προβλήματα συνεχών παραμέτρων και όχι

Υπολογιστική Νοηµοσύνη

Προγραμματισμός Ι (HY120)

Μαλούτα Θεανώ Σελίδα 1

9 ο Μαθητικό Συνέδριο Πληροφορικής Κεντρικής Μακεδονίας. "My Binary Logic" Ένας προσομοιωτής λογικών πυλών στο Scratch

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων

Αναδρομή Ανάλυση Αλγορίθμων

Γ2.1 Στοιχεία Αρχιτεκτονικής. Γ Λυκείου Κατεύθυνσης

Κεφάλαιο 3. Λογικές Πύλες

Ανάπτυξη και Σχεδίαση Λογισμικού

Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

Τελεστικοί Ενισχυτές

ΗΥ Λογική. Διδάσκων: Δημήτρης Πλεξουσάκης Καθηγητής

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Γενετικοί Αλγόριθμοι. Εισαγωγή

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Ενότητα 1: Εισαγωγή. Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Κεφάλαιο 14 ο. Γ. Τσιατούχας. VLSI Systems and Computer Architecture Lab. Σχεδιαστικές Μεθοδολογίες 2

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προγραμματισμός Ι (ΗΥ120)

Τεχνολογία Συστημάτων Υδατικών Πόρων

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

Γενετικές Μέθοδοι Βελτιστοποίησης Ερωτηµάτων σε Βάσεις εδοµένων

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο ΚΕΦΑΛΑΙΟ

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

Εισαγωγή στους Υπολογιστές

Computing. Νοέμβριος Έκδοση 1.0

Transcript:

Σπύρος Καζαρλής

Ο ΓΠ (GP) γεννήθηκε από την ιδέα ότι η ανάπτυξη λογισμικού μπορεί να θεωρηθεί ως ένα πρόβλημα βελτιστοποίησης για το οποίο οι εξελικτικοί αλγόριθμοι μπορούν να παρέχουν αυτόματα βέλτιστες λύσεις μέσω μηχανισμών που προσομοιώνουν την εξέλιξη. Έτσι εμφανίστηκε η πιο εντυπωσιακή εφαρμογή στην περιοχή της Εξελικτικής Υπολογιστικής, η οποία εξελίσσει σύνθετες δομές όπως λογισμικό, αναλογικά και ψηφιακά κυκλώματα, αρχιτεκτονικές νευρωνικών δικτύων κ.λ.π. Η εφαρμογή αυτή έχει ονομαστεί Γενετικός Προγραμματισμός (Genetic Programming) και παρουσιάστηκε μέσω της εργασίας των Fujiko και Dickinson (1987), που εξελίσσουν εκφράσεις Lisp για την επίλυση του προβλήματος Prisoner's Dilemma, της εργασίας του Hugo De Garis (1990), που εξελίσσει δομές Νευρωνικών Δικτύων και της εργασίας του John Koza (1991) που επίσης εξελίσσει εκφράσεις Lisp για την επίλυση μίας σειράς προβλημάτων βελτιστοποίησης και εκμάθησης.

Η αρχική πρόκληση ήταν το «αν μπορούν οι υπολογιστές να μάθουν να λύνουν προβλήματα και να κάνουν αυτό που πρέπει, χωρίς να τους πούμε πώς ακριβώς θα το κάνουν και χωρίς να τους προγραμματίσουμε. H πραγματοποίηση από τις μηχανές, εργασιών που κάνουν οι άνθρωποι, είναι μία μορφή ευφυίας» (Arthur Samuel 1959). Μία από τις εφαρμογές του ήταν η παραγωγή μέσω Γ.Α. ενός προγράμματος που υλοποιούσε μία γεννήτρια τυχαίων αριθμών (1991). Στον Γενετικό Προγραμματισμό (ΓΠ) οι γονότυποι κωδικοποιούν συστήματα ιεραρχικών δομών, που μπορεί να περιγράψουν αναλογικά ή ψηφιακά Κυκλώματα, δομές νευρωνικών δικτύων, λογισμικό Η/Υ κ.α. Επειδή αυτές οι «ιεραρχικές δομές» μπορεί να είναι διαφορετικού μεγέθους (σε πλάτος, βάθος, αριθμό κλάδων, κ.λ.π.), ο ΓΠ χρησιμοποιεί συνήθως γονότυπους μεταβλητού μήκους (Variable Length Genotypes). Οι κλασικοί γενετικοί τελεστές έχουν υποστεί μετατροπές ώστε να μπορούν να κάνουν ανασυνδυασμούς και μεταλλάξεις στις δομές των γονότυπων έτσι ώστε το αποτέλεσμα να είναι πάντα αποδεκτή λύση.

Ο ΓΠ μπορεί να χειριστεί προβλήματα που ανάγονται στην εύρεση βέλτιστων ιεραρχικών δομών. Επειδή πολλά προβλήματα σχεδίασης ανάγονται στην σύνθεση δομών, ο ΓΠ μπορεί να χαρακτηριστεί ως μία «Μηχανή Εφευρέσεων» (Invention Machine). Παραδείγματα : Αυτόματη κατασκευή προγραμμάτων υπολογιστών Αυτόματη σύνθεση αναλογικών και ψηφιακών κυκλωμάτων Αυτόματη σύνθεση της τοπολογίας Νευρωνικών Δικτύων Αυτόματη κατασκευή δένδρων αποφάσεων (Decision Trees) Αυτόματη σύνθεση ευφυών συστημάτων που βασίζονται σε κανόνες (if then rules) Βέλτιστος προγραμματισμός γενικευμένων ολοκληρωμένων κυκλωμάτων ( Εξελισσόμενο Υλικό Evolvable Hardware) Βέλτιστη προσέγγιση δεδομένων με συναρτήσεις (Γραμμική Μη Γραμμική Παλινδρόμηση) Κατασκευή τρισδιάστατων δομών (π.χ. κεραιών)

Τα προγράμματα Η/Υ μπορούν να παρασταθούν ως «μαύρα κουτιά» που δέχονται εισόδους και παράγουν εξόδους, σύμφωνα με μία προδιαγεγραμμένη συμπεριφορά, ενώ εσωτερικά χρησιμοποιούν : Χώρους Αποθήκευσης (Μεταβλητές) και Σταθερές (Constants) Πράξεις μεταξύ μεταβλητών ή και σταθερών (+ - * / % ^ ) Βρόχους Επανάληψης (loops) Λήψη αποφάσεων (if then else structures) Υπορουτίνες και κλήσεις υπορουτινών Πιθανές αναδρομικές κλήσεις (Recursions)

Τα προγράμματα Η/Υ αποτελούν μία γενικευμένη «γλώσσα» με την οποία μπορούν να περιγραφούν πολλά και διαφορετικά προβλήματα π.χ. αναπαράσταση γνώσης με δομές if-then-else, Προσέγγιση δεδομένων με συναρτήσεις - Συμβολική Παλινδρόμηση (Symbolic Regression), Λειτουργία Ελεγκτών Controllers κ.λ.π. Ο ΓΠ εφαρμόζει ΓΑ για την αναζήτηση λύσεων στον χώρο των πιθανών προγραμμάτων. Η κωδικοποίηση των λύσεων γίνεται με δενδροειδείς δομές οι οποίες αναπαριστούν πλήρως ένα πρόγραμμα Η/Υ. Οι δομές αυτές είναι μεταβλητού μεγέθους ώστε να μπορούν να αναπαριστούν μικρά και μεγάλα προγράμματα. Οι πρώτες λύσεις προγράμματα παράγονται τελείως τυχαία. Η εξέλιξη των λύσεων γίνεται με Επιλογή Γονέων βάσει ποιότητας, Crossover, Mutation και ειδικούς ανασυνδυαστικούς τελεστές που παραλλάσσουν την δενδροειδή δομή των λύσεων αλλάζοντας την αρχιτεκτονική τους (Architecture Altering Operations)

Κάθε πρόγραμμα Η/Υ μπορεί να παρασταθεί με μία δενδροειδή δομή: int foo (int time) Time Output { int temp1, temp2; 0 6 if (time > 10) temp1 = 4; 1 6 else temp1 = 3; 2 6 temp2 = temp1 + 1 + 2; return (temp2); } 3 6 4 6 5 6 6 6 7 6 8 6 9 6 10 6 11 7 12 7

Κάθε κόμβος του δένδρου μπορεί να αναπαριστά : 1. Μία παράμετρο του προγράμματος (π.χ. X,Y) που ονομάζεται terminal 2. Μία μεταβλητή Sum, Τemp, i, j, κ.λ.π. 3. Μία σταθερά οποιασδήποτε τιμής. 4. Ένα τελεστή πράξης (+ - * / % ^ ) που επιστρέφει το αποτέλεσμα. 5. Τον τελεστή ανάθεσης = ή ένα συσχετιστικό τελεστή (==, <,, >, ) που επιστρέφει αποτέλεσμα Bool (true, false). 6. Μία σύγκριση (IF) με τρεις κλάδους : συσχετιστικός τελεστής, επιστρεφόμενη τιμή αν η συνθήκη ισχύει, επιστρεφόμενη τιμή αν η συνθήκη δεν ισχύει. 7. Βρόχο επανάληψης με δύο κλάδους : κλάδος συνθήκης (όπως στην IF), κλάδος επανάληψης που περιέχει το σώμα του βρόχου. 8. Κλήση άλλης συνάρτησης (με κλάδους τις παραμέτρους). 9. Κλήση της ίδιας συνάρτησης (αναδρομή recursion). Αρχικά τα προγράμματα είναι τυχαία, έχουν τυχαίο μέγεθος, αλλά είναι συντακτικά σωστά και είναι άμεσα εκτελέσιμα.

Παράδειγμα προγράμματος για την εύρεση του μικρότερου στοιχείου ενός πίνακα. Είσοδοι (terminals) A[], N Έξοδος min. Πρόγραμμα σε C : double minimum(double * A, int N) { min=a[0] for (i=1 ; i<n ; i++) { if (A[i] < min) min=a[i] } return (min); } min = A[0] for = < = i++ i 1 i N min if < A[i] min A[i] min

Η αξιολόγηση γίνεται εκτελώντας κάθε πρόγραμμα πραγματικά ή εικονικά (σε προσομοιωτή) και ελέγχοντας τα αποτελέσματα. Συνήθως η συνάρτηση ποιότητας έχει τη μορφή : f ( x) = 1 N N i = 1 ( D i O i 2 ) όπου i=1..n τα διαφορετικά αποτελέσματα του προγράμματος, D i η επιθυμητή έξοδος και O i η πραγματική έξοδος του προγράμματος. Η συνάρτηση αυτή πρέπει να ελαχιστοποιηθεί (minimize) Είναι προφανές ότι η αξιολόγηση ενός προγράμματος μπορεί να είναι εξαιρετικά χρονοβόρα, καθώς απαιτεί την πλήρη εκτέλεση ενός προγράμματος που μπορεί να έχει επαναληπτικές διαδικασίες ή και αναδρομές. Αυτό καθιστά τον ΓΠ πολύ απαιτητικό σε χρόνο, και περιορίζει τα μεγέθη των πληθυσμών του ΓΑ που καλείται να βρεί το βέλτιστο πρόγραμμα.

Η αναπαραγωγή γίνεται με βάση τους παρακάτω γενετικούς τελεστές: 1. Πιθανοτική επιλογή προγραμμάτων-γονέων με βάση την ποιότητα 2. Διασταύρωση των προγραμμάτων (Crossover) 3. Μετάλλαξη του προγράμματος-απογόνου (Mutation) 4. Τελεστές παράλλαξης της αρχιτεκτονικής δομής του προγράμματοςαπογόνου (architecture altering operations) H Διασταύρωση γίνεται επιλέγοντας ένα κόμβο στον γονέα 1 και ένα άλλο κόμβο στον γονέα 2 και ανταλάσσοντας τα υποδένδρα : * π * * 2 * * π * 2 r r 2πr 2r 2 πr 2 r r r

Η απλή Μετάλλαξη αφορά μόνο την αλλαγή του περιεχομένου ενός κόμβου : * π * 2 r 2πr * π * Οι τελεστές παράλλαξης της αρχιτεκτονικής δομής του προγράμματοςαπογόνου (architecture altering operations) μπορούν να : 1. Δημιουργήσουν ένα νέο κλάδο υποδένδρο 2. Διαγράψουν ένα κλάδο υποδένδρο 3. Να αλλάξουν την αγκίστρωση ενός κλάδου υποδένδρου 4. Να ανταλλάξουν τις θέσεις αγκίστρωσης δύο κλάδων υποδένδρων 5. Να κλωνοποιήσουν ένα κλάδο υποδένδρο, 6. Να δημιουργήσουν/διαγράψουν υπορουτίνα από τμήμα του κώδικα. r πr 2 r

Διαγραφή κόμβου Δημιουργία νέου κόμβου : x + * x 2 x x 2 +2x x + 2 x x 2 +2 Αλλαγή αγκίστρωσης x + * x 2 x x 2 +2x + 2 x x x x 3 +2 x + * x 2 x x 2 +2x + 1 + * x x 2 x x 2 +2x+1 Εναλλαγή αγκίστρωσης + 2 x x x x 3 +2 + x x 2 2x 2 +x x

Συμβολική Παλινδρόμηση: Να βρεθεί η συνάρτηση y=f(x) = x 2 +x+1 που ταιριάζει περισσότερο στα εξής ζευγάρια τιμών : X Y -1.00 1.00-0.80 0.84-0.60 0.76-0.40 0.76-0.20 0.84 0.00 1.00 0.20 1.24 0.40 1.56 0.60 1.96 0.80 2.44 1.00 3.00 Στόχος Βελτιστοποίησης Να βρεθεί ένα πρόγραμμα Η/Υ με μία είσοδο Χ που η έξοδός του Υ να ισούται με τα δεδομένα του πίνακα. 1 Είσοδοι (Terminals) T = {X, Random-Constants} 2 Τελεστές Πράξεων F = {+, -, *, %} 3 Fitness: Το άθροισμα της απόλυτης τιμής των διαφορών μεταξύ της εξόδου του προγράμματος και της επιθυμητής εξόδου για κάθε Χ, (ελαχιστοποίηση) 4 Παράμετροι: Πληθυσμός M = 4 5 Τερματισμός: Αν βρεθεί πρόγραμμα που το άθροισμα των απολύτων τιμών των σφαλμάτων να είναι μικρότερο από 0.1

Αρχικοποίηση του πληθυσμού : 4 τυχαία προγράμματα και αντίστοιχες ποιότητες : fitness=0.67 fitness=1.00 fitness=1.70 fitness=2.67

O πληθυσμός του ΓΑ στην επόμενη γενιά : αντιγραφή από την προηγούμενη γενιά Μετάλλαξη του (c) με προσθήκη κλάδου Διασταύρωση μεταξύ (a) και (b) Διασταύρωση μεταξύ (a) και (b)

Προβλήματα Κατηγοριοποίησης (π.χ. Intertwined Spirals) Πρόβλημα οπισθοπορίας οχήματος με αρθρωτό ρυμουλκούμενο Παρακολούθηση τοίχων και μετακίνηση κιβωτίου από αυτοκ/νο ρομπότ

Βέλτιστη σχεδίαση αναλογικών ή ψηφιακών κυκλωμάτων. Αυτόματη Σχεδίαση Φίλτρου Cambell - Χαμηλοπερατό (1917) : Μετατροπέας τάσης σε ρεύμα :

Σύνθεση κεραιών με ΓΠ με τη μέθοδο της χελώνας (turtle) : (PROGN3 (TURN-RIGHT 0.125) (LANDMARK (REPEAT 2 (PROGN2 (DRAW 1.0 HALF-MM-WIRE) (DRAW 0.5 NO-WIRE))) (TRANSLATE-RIGHT 0.125 0.75)) Κεράια δορυφόρου της NASA, (2004) :

Σχεδίαση Αναλογικών και Ψηφιακών Κυκλωμάτων. Σχεδίαση 2D και 3D δομών. Επίλυση αντίστροφων κινηματικών προβλημάτων για ρομποτικούς βραχίονες (Inverse Kinematics) Βελτιστοποίηση σε προβλήματα Αποθήκευσης και Συσκευασίας (Block Stacking) Κατασκευή αλγόριθμου παραγωγής τυχαίων αριθμών (Randomizer) Συμπίεση Εικόνας (Image Compression) Εκμάθηση συναρτήσεων Bool (Boolean Function Learning) Ανάπτυξη στρατηγικών για παίξιμο παιχνιδιών (Game-Playing Strategies). Προγραμματισμός Εξελισσόμενου Υλικού (Evolvable Hardware) Εξόρυξη Δεδομένων (Data Mining) Συστήματα Αυτομάτου Ελέγχου (Control) Αναγνώριση Συστημάτων (System Identification) Πρόβλεψη (Forecasting)

Ο ΓΠ είναι μία πολλά υποσχόμενη περιοχή εφαρμογής των Εξελικτικών Αλγορίθμων, καθώς : Δίνει αυτόματα βέλτιστες καινοτόμες λύσεις υψηλού επιπέδου (επιπέδου πατέντας) σε προβλήματα λογικής σύνθεσης (προγράμματα), τοπολογίας και σχεδίασης, εμφανίζοντας χαρακτηριστικά τεχνητής ευφυίας (machine intelligence) Μπορεί να εφαρμοστεί σε πληθώρα προβλημάτων, καθώς πολλά προβλήματα μπορούν να μετασχηματιστούν σε προβλήματα σύνθεσης προγραμμάτων υπολογιστών. Ωστόσο παρουσιάζει προβλήματα στο χειρισμό πολύ σύνθετων δομών που μεταφράζεται γενετικά σε μεγάλου μήκους συμβολοσειρές γονότυπων. Με άλλα λόγια ο ΓΠ εμφανίζει προβλήματα κλιμάκωσης καθώς οι μεγάλης κλίμακας κωδικοποιήσεις του είναι εξαιρετικά απαιτητικές σε χρόνο και με μειωμένη γενικά απόδοση. Ωστόσο με την διαρκώς αυξανόμενη ισχύ των Η/Υ τα προβλήματα αυτά θα ξεπεραστούν στο εγγύς μέλλον.

Evolvable Hardware (ΕΗ). Αποτελεί την εφαρμογή των Εξελικτικών Αλγορίθμων για την αυτόματη εξέλιξη ψηφιακών και αναλογικών κυκλωμάτων χρησιμοποιώντας προγραμματιζόμενα ολοκληρωμένα κυκλώματα που ονομάζονται FPGAs (Field Programmable Gate Arrays). Τα κυκλώματα αυτά είναι γενικευμένα (όπως μία EPROM που δεν έχει ακόμα προγραμματιστεί) και μπορούν να προγραμματιστούν ώστε να υλοποιήσουν ένα συγκεκριμένο ψηφιακό ή αναλογικό κύκλωμα (Reconfigurable Hardware). Ο προγραμματισμός τους γίνεται με ηλεκτρονικό τρόπο και ταχύτατα (nsec), και μπορούν να διαγραφούν και να επανα-προγραμματιστούν θεωρητικά άπειρες φορές, υλοποιώντας κάθε φορά το κύκλωμα που επιθυμεί ο προγραμματιστής τους. Με τις τεχνικές του EH, δεν χρειάζεται ο άνθρωπος να σχεδιάσει το κύκλωμα που θα «κάψει» στο FPGA. Αυτό εξελίσσεται αυτόματα (από μόνο του), με εξελικτικό τρόπο, προσπαθώντας να προσεγγίσει βέλτιστα την επιθυμητή συνάρτηση εισόδου εξόδου.

Τα FPGAs προγραμματίζονται κάθε φορά από τον ΓΑ σε κάθε παραγωγή και αξιολόγηση γονότυπου. Μετά τον προγραμματισμό, το κύκλωμα τροφοδοτείται με συγκεκριμένες εισόδους, και ελέγχεται αν παράγει τις επιθυμητές εξόδους. Το αντίστροφο του σφάλματος εξόδου ανατροφοδοτείται στον ΓΑ ως η ποιότητα της λύσης: Είσοδοι Έξοδοι ΓΑ

Υπάρχουν δύο είδη υλοποιήσεων Εξελικτικού Υλικού : Εξωτερικές (Extrinsic), όπου το hardware εξελίσσεται με ΓΑ αλλά ελέγχεται και αξιολογείται σε προσομοιωτή, και όταν βελτιστοποιηθεί, τότε «εγγράφεται» μία φορά στο πραγματικό προγραμματιζόμενο κύκλωμα. Εσωτερικές (Intrinsic), όπου το hardware εξελίσσεται με ΓΑ και κάθε λύση «εγγράφεται» και αξιολογείται στο πραγματικό προγραμματιζόμενο κύκλωμα. Σε αυτή την περίπτωση η εξέλιξη διενεργείται εξ ολοκλήρου επάνω στο προγραμματιζόμενο κύκλωμα. Στην αρχή οι ερευνητές δούλευαν με Εξωτερικές υλοποιήσεις, λόγω του ότι η «εγγραφή» στο προγραμματιζόμενο hardware ήταν αργή διαδικασία. Ο πρώτος που εφάρμοσε Εσωτερική υλοποίηση ήταν ο Thompson το 1996, χρησιμοποιώντας ένα chip Xilinx XC-6200.

Τα FPGAs αποτελούνται από κελιά (cells) σε διάταξη ΝxN. Κάθε κελί περιέχει ένα αριθμό από προγραμματιζόμενα components, που μπορεί να προγραμματιστούν ως πύλες AND, OR, XOR, NOT, MUX, καθώς και registers για καταχώρηση των εξόδων και προώθησή τους σε διπλανά κελιά. Επίσης περιέχουν ένα προγραμματιζόμενο πίνακα συνδέσεων μεταξύ τους. Έτσι κάθε κελί μπορεί να υλοποιεί και μία διαφορετική λογική λειτουργία.

Το έργο του EH είναι η σύνθεση ενός κυκλώματος άμεσα ή έμμεσα. Η Άμεση σχεδίαση μπορεί να γίνει σε πολλά διαφορετικά επίπεδα : Components (όπως τελεστικοί ενισχυτές, Registers, κ.λ.π.) Λογικών Πυλών (AND, OR, XOR, NOT, MUX, κ.λ.π.) Transistors και λοιπών ηλεκτρονικών εξαρτημάτων (αντιστάσεις, πυκνωτές, κ.λ.π.) Η εξέλιξη αφορά configuration strings τα οποία προγραμματίζουν τα γενικευμένα κυκλώματα τύπου FPGA. Όσο πιο low-level είναι το επίπεδο, τόσο πιο πιθανόν είναι να εξελιχθούν πιο αποτελεσματικές και ευφυείς σχεδιάσεις. Η έμμεση σχεδίαση γίνεται κυρίως εξελίσσοντας προγράμματα σε γλώσσα HDL. Η γλώσσα HDL είναι ένας φορμαλισμός απεικόνισης κυκλωμάτων σε μορφή Δένδρων Αφαιρετικής Σύνταξης (Abstract Syntax Trees AST). Για την εξέλιξη των δένδρων χρησιμοποιούνται τεχνικές και μέθοδοι από Γενετικό Προγραμματισμό (GP).

Υλοποίηση NAND Λύση σε VHDL : (Par(Ngu I:0 (Ngu I:1 Gnd)) (Par (Pgu i:0 Vcc) (Pgu I:1 Vcc))) Η δενδροειδής δομή της γλώσσας περιγραφής καθιστά το EH συγγενές με το Γενετικό Προγραμματισμό (GP). Αρχές και μέθοδοι του GP εφαρμόζονται στο Evolvable Hardware.

Αναλογικές Πλατφόρμες: Zetex TRAC: Δύο σειρές από τελεστικούς ενισχυτές. Εξελίσσει γραμμικές και μη γραμμικές συναρτήσεις. Περιορισμένες δυνατότητες προγραμματισμού, και αλλαγής της τοπολογίας. Motorolla MPAA020: 20 κυψέλες που περιέχουν τελεστικό ενισχυτή, συγκριτή, τρανζίστορς, πυκνωτές και SRAM. Ψηφιακές Πλατφόρμες: Xilinx 6200: Γρήγορος προγ/μός άπειρες φορές, μερικός ή ολικός. Ομοιόμορφη αρχιτεκτονική από πύλες MUX. Όλοι οι προγ/μοί είναι αποδεκτοί. Πολύ ακριβό και δεν παράγεται πλέον. Xilinx XC4000: Χαμηλού κόστους, προγραμματιζόμενο άπειρες φορές, αλλά με αργή ταχύτητα. Βασίζεται σε SRAM. Μπορεί να καταστραφεί από λάθος σχέδιο κυκλώματος. Xilinx Virtex: Μεσαίου κόστους, προγ/ται άπειρες φορές και ταχύτατα, μερικώς ή ολικώς. Μπορεί να καταστραφεί από λάθος σχέδιο κυκλώματος.

Ερευνητικές Πλατφόρμες: Field Programmable Transistor Array: προγρ/ται σε επίπεδο τρανζίστορ, υποστηρίζει και πυκνωτές. Ευέλικτο για εξέλιξη φίλτρων και ενισχυτών Field Programmable Processor Arrays: Το πρωτότυπο χρησιμοποιούσε πύλες MUX ως προγ/νες μονάδες. Νέες εκδόσεις χρησιμοποιούν ένα Μ/Ε RISC που μπορεί να εκτελεί ένα δένδρο αποφάσεων (decision tree) που είναι καθοριζόμενο. Χρησιμοποιείται σε Γενετικό Προγ/μό (GP). Complete Hardware Evolution: Εξελικτικό Σύστημα σε ένα chip. Περιέχει CPU που εκτελεί ΓΑ, μνήμη για τον πληθυσμό, μηχανισμούς αξιολόγησης λύσεων, και μπορεί να συνδεθεί με FPGAs τις οποίες προγραμματίζει. Περιορίζεται σε μικρούς πληθυσμούς με μικρούς γονότυπους.

Εξέλιξη ενός full-adder των δύο bits χρησιμοποιώντας ένα 3Χ3 grid. Η λύση χρειάστηκε 20.000 γενιές, και χρησιμοποιεί πύλες MUX για το Carry, ενώ οι σχεδιαστές χρησιμοποιούν πύλες AND και OR! Καθοριζόμενα Robot (Reconfigurable Robots). Κάθε τμήμα του robot είναι ανεξάρτητο και ελέγχεται από μία FPGA που παίζει το ρόλο του ελεγκτή. Τα FPGAs εξελίσσονται γενετικά, ώστε το robot να αποκτά την επιθυμητή συμπεριφορά.

D=Ψηφιακό, Α=Αναλογ., CD=Πλήρης Σχεδιασμός, CT=Ρύθμιση τιμών, OFL=Extrinsic, ONL=Intrinsic, S=Εξέλιξη->Χρήση, D=Χρήση+Εξέλιξη