ΥΠΟΛΟΓΙΣΤΙΚΗ ΝΟΗΜΟΣΥΝΗ ΙΙ
9.7 Ιεραρχια κλασεων αντικειμενων
Ακολουθεί η ιεραρχία των βασικών κλάσεων αντικειμένων στο GAlib [1] (τα υπογραμμισμένα ονόματα αντιστοιχούν σε abstract classes):
· GAGeneticAlgorithm
· GASimpleGA
· GASteadyStateGA
· GAIncrementalGA
· GAStatistics
· GAParameterList
· GAPopulation
· GAScalingScheme
· GANoScaling
· GALinearScaling
· GASigmaTruncationScaling
· GAPowerLawScaling
· GASharing
· GASelectionScheme
· GARankSelector
· GARouletteWheelSelector
· GATournamentSelector
· GAUniformSelector
· GASRSSelector
· GADSSelector
· GAGenome
· GABinaryString
· GAGenome, GABinaryString[2]
· GAxDBinaryStringGenome
· GAArray<>
· GAAlleleSet
· GAArray<>
· GAAlleleSetArray<>
· GAGenome, GAArray<>
· GA1DArrayGenome<>
· GA1DArrayAlleleGenome<>
· GA2DArrayGenome<>
· GA2DArrayAlleleGenome<>
· GA3DArrayGenome<>
· GA3DArrayAlleleGenome<>
· GATree<>
· GAGenome, GATree<>
· GATreeGenome
· GAList<>
· GAGenome, GAList<>
· GAListGenome
Παρακάτω περιγράφονται συνοπτικά οι κλάσεις που εμφανίζονται για πρώτη φορά στο σχήμα της ιεραρχίας.
Η κλάση GAScalingScheme αντιστοιχεί τα objective scores σε τιμές που προσδιορίζουν το fitness. Το objective score είναι η τιμή που επιστρέφεται από την objective function. Η τιμή του fitness είναι μια μετασχηματισμένη τιμή που χρησιμοποιεί ο Γ.Α. για την επιλογή των ατόμων. Το αντικείμενο του Γ.Α. περιέχει ένα αντικείμενο κλίμακας (δηλαδή τύπου GAScalingScheme), στο οποίο μπορεί να ανατεθεί οποιοδήποτε αντικείμενο κλίμακας (τύπου κλάσης παραγόμενης από την GAScalingScheme). Εάν, για παράδειγμα, χρησιμοποιηθεί γραμμική κλίμακα (αντικείμενο τύπου GALinearScaling) σε αντικείμενο GASimpleGA, τότε προκύπτει ο Γ.Α. που περιγράφεται από τον Goldberg. Μερικές άλλες επιλογές που παρέχει το GAlib είναι η απενεργοποίηση του scaling (GANoScaling), η χρήση σιγμο-ειδούς συνάρ-τησης (GASigmaTruncationScaling) και η χρήση εκθετικής συνάρτησης (GAPowerLaw-Scaling).
Η κλάση GAAlleleSetArray<> παράγεται από την κλάση GAArray<> και υλοποιεί έναν πίνακα, ο οποίος παίρνει μόνο συγκεκριμένες τιμές, δηλαδή ο χρήστης μπορεί να καθορίσει ένα σύνολο νόμιμων τιμών για ένα αντικείμενο πίνακα. Οι νόμιμες τιμές μπορούν να δωθούν, είτε σαν σύνολο διακριτών ή συνεχών τιμών, είτε σαν διάστημα διακριτών τιμών σε ένα αντικείμενο GAAlleleSet. Στη συνέχεια, το αντικείμενο αυτό συνδέεται με το αντικείμενο GAAlleleSetArray.
[1] Στην πραγματικότητα, το Galib βασίζεται σε μια πολύ πιο σύνθετη ιεραρχία, η οποία ακολουθεί τον μεθοδικό τρόπο ορισμού σχέσεων μεταξύ οντοτήτων του πραγματικού κόσμου. Ένας απλός χρήστης, όμως, της βιβλιοθήκης δεν είναι απαραίτητο να γνωρίζει τέτοιες λεπτομέρειες για να χρησιμοποιήσει αποδοτικά το εργαλείο αυτό
[2] Multiple Inheritance για τη δημιουργία μιας νέας κλάσης από δυο κλάσεις-γονείς.