Il s'agit d'essayer de trouver une approximation à notre fonction f(x)=0,75x2-5x+3 en utilisant la programmation génétique. Il est clair que ce problème peut-être résolu par des méthodes spécialisées mieux adaptées comme par exemple les polynômes de Lagrange. Mais le but de cet exemple, est simplement d'illustrer le principe de la programmation génétique.
Nous allons maintenant déterminer tous les paramètres qui seront utilisés dans le déroulement de l'algorithme. Quelques remarques sur les paramètres. Les arbres générés seront une composition des 4 opérations classiques +,-,*,/ avec le paramètre x. Afin d'introduire, des valeurs constantes, l'algorithme aura la possibilité de générer ce que l'on appelle des constantes éphémères aléatoires, soit dans notre cas des valeurs comprises dans [-1,1]. Il est donc tout à fait possible de générer des expressions mathématiques comme : -0,256x/(x*0,33- 0,456*x*x*x- 0,27x)...
Objectif : | Déterminer un programme qui approxime la fonction f(x)=0,75x2-5x+3, nous ne donnerons aucune aide à l'algorithme pour faciliter sa rechercher (i.e. l'algorithme ne cherchera pas un polynôme et ne connaîtra pas le degré du plus haut terme) |
Ensemble des terminaux : (feuilles de l'arbre) |
x et une constante réelle (Cela signifie que les feuilles de l'expression LISP, seront soit x, soit un réel) |
Ensemble des fonctions : (noeuds de l'arbre) |
+, -, *, % (Cela signifie que les noeuds internes de l'arbre seront les opérations"classiques" +, - , * et /. Le % indiquant que l'on a affaire à une division protégée, la division d'un réel par 0 retournant la valeur 1) |
Ensemble choisi pour le calcul du fitness : | 25 valeurs comprises entre 0 et 10 |
Fitness : | La somme, en valeur absolue, de la différence entre la valeur retournée par f(x)=0,75x2-5x+3 et la valeur de la S-expression pour les 25 valeurs entre 0 et 10 |
Fitness standardisé : | Le même que le fitness |
Critère d'arrĂȘt : | 0,05*(nombre de cas de fitness) = 1,25 |
Paramètres : | 1000 individus 100 générations au maximum |