ΥΠΟΛΟΓΙΣΤΙΚΗ ΝΟΗΜΟΣΥΝΗ ΙΙ
Ένα τυπικό πρόγραμμα που κάνει χρήση των υπηρεσιών της GAlib είναι το εξής:
float Objective(GAGenome &);
void
main() {
GABinaryStringGenome genome(width, height, Objective);
GASimpleGA ga(genome);
ga.evolve();
cout << ga.statistics() << endl;
}
float
Objective(GAGenome &) {
// the body of function
}
Στο παραπάνω πρόγραμμα, καθορίζεται ότι τα άτομα του γενετικού θα είναι binary strings και ότι θα χρησιμοποιηθεί ο απλός Γ.Α. Μια τυπική αντικειμενική συνάρτηση είναι η εξής:
float
Objective(GAGenome
&
g)
{
GA1DBinaryString
&
genome=(GA1DBinaryString)g;
float score=0.0;
for
(int
i=0;i<genome.length();i++)
score+=genome.gene();
return(score);
}
Στην objective function θα πρέπει, αρχικά, να γίνεται type casting από το αντικείμενο τύπου GAGenome στο αντικείμενο που χρησιμοποιείται στο συγκεκριμένο πρόβλημα για την αναπαράσταση των λύσεων. Και αυτό, γιατί η objective function δηλώνεται σαν member function της GAGenome στο GAlib. Επιπλέον, η objective function θα πρέπει να επιστρέφει μια τιμή τύπου float (το score του συγκεκριμένου ατόμου).