Theory and practice for efficient genetic programming

Abstract: Genetic programming is a machine learning technique to automatically create computer programs from high-level specifications of a problem. It achieves this goal by genetically breeding a population of computer pro-grams using the principles of Darwinian natural selection and biologically inspired operations. Selection is obtained by attaching to each program a fitness value, which quantifies how well it solves the problem. In spite of the numerous practical successes of genetic programming and the good quality of theory that has been developed until nowadays, some unsolved problems persist. In synthesis: metodologies to predict, or to measure, the difficulty of problems have not been developed yet (i.e. no technique to measure the capability of genetic programming to find good solutions for a given problem exists) and genetic programming is, in general, a slow and resource consuming process. Proposing solutions to these problems is the guiding thread of this thesis. Two measures of problem difficulty are presented: fitness distance cor-relation (based on the idea that what makes a problem difficult or easy for genetic programming is the relationship between fitness and distance to the goal) and negative slope coefficient (which quantifies some aspects of evolvability, i.e. the ability of genetic operators to produce offsprings that are fitter than their parents). These measures are based on statistical sampling of the search space. Both of them succeed in correctly measuring the dif-ficulty of a wide range of different problems. Advantages and drawbacks of these measures are discussed in depth. Furthermore, a discussion of the concept of fitness landscape, on which these two measures are inspired, is proposed. Among the main causes of inefficiency of genetic programming, one may mention: premature convergence (or the tendecy to produce populations in which all the individuals have similar characteristics), bloat (or progressive individuals' code growth) and the fact that fitness evaluation often requires the execution of programs on many different input data (known as fitness cases). This thesis shows how distributing individuals into separate communicating subpopulations naturally counteracts premature convergence and bloat, allowing genetic programming to find solutions of better quality, more quickly. The advantage of parallelizing genetic programming is twofold: on the one hand it enables to achieve time savings by distributing the computational effort on a set of calculating agents, on the other hand, the parallel setting offers benefits from the algorithmic point of view, in analogy with the natural parallel evolution of spatially distributed populations. Furthermore, techniques to dynamically tune the size of populations, and to limit the number of fitness cases to be tested, in order to save computational effort, are proposed. Version Abregee La programmation genetique est une technique du domaine de l'apprentissage artificiel ("machine learning"). Elle permet de creer automatiquement des programmes a partir d'une specification de haut niveau d'un probleme. Elle realise cet objectif a l'aide d'une population de programmes qui evolue en utilisant les principes de la selection naturelle darwinienne et des operateurs inspires par la Biologie. La selection est obtenue en attachant a chaque programme une valeur de fitness, qui mesure a quel point ce programme resout le probleme. Malgre les succes indeniables de la programmation genetique, quelques problemes non resolus demeurent. En resume: aucune methodologie permettant de prevoir ou de mesurer la difficulte des problemes n'a encore ete developpee (ce qui signifie qu'aucune technique n'existe a l'heure actuelle pour mesurer la capacite de la programmation genetique a trouver de bonnes solutions pour un probleme donne). Par ailleurs, la programmation genetique reste, en general, un processus lent qui utilise beaucoup de ressources. Ce travail vise a apporter des solutions a ces problemes. Deux mesures de difficulte des problemes sont presentees: la correlation distance-fitness (basee sur l'idee que ce qui rend un probleme difficile ou facile pour la programmation genetique c'est le rapport entre le fitness et la distance au but) et le coefficient de pente negative (qui mesure quelques aspects du processus de l'evolution, c'est-a-dire la capacite des operateurs genetiques a produire des fils qui ont un fitness meilleur que leurs parents). Ces mesures sont basees sur des echantillons statistiques de l'espace de recherche. Elles reussissent toutes deux a mesurer correctement la difficulte de problemes de nature differente. Les avantages et les inconvenients de ces mesures sont discutes en details. En outre, la these presente une discussion sur le concept de paysage de fitness, sur lequel ces deux mesures sont basees. Parmi les principales causes de l'inefficacite de la programmation genetique, on peut mentionner: la convergence prematuree (ou la tendance a produire des populations dans lesquelles tous les individus ont des caracteristiques semblables), le "bloat" (ou croissance progressive du code des individus) et le fait que l'evaluation du fitness exige souvent l'execution de programmes sur des donnees d'entree tres differentes (connues sous le nom de "cas de fitness"). Cette these montre que la repartition des individus en sous-populations qui communiquent entre elles empeche naturellement la convergence prematuree et le "bloat", permettant ainsi a la programmation genetique de trouver des solutions de meilleure qualite et plus rapidement. L'avantage consistant a paralleliser la programmation genetique est double: il permet un gain de temps en distribuant l'effort de calcul sur un ensemble de processeurs differents, par ailleurs, les systemes de programmation genetique paralleles offrent des avantages du point de vue algorithmique. Il suffit de se referer a l'evolution naturelle des populations d'etres vivants, dans lesquelles le parallelisme est implicite. Enfin, cette these propose des techniques pour ajuster dynamiquement la taille des populations et pour limiter le nombre de cas de fitness a examiner, afin d'economiser du temps de calcul.