donnée

publicité
Heuristiques et Intelligence Collective
Série 3 - Complexité et Heuristiques
Algorithme de tri
A l’adresse http://interstices.info/display.jsp?id=c_6973&qs=cid=jalios_5001, vous trouverez une applet très bien faite permettant de comprendre le fonctionnement de différents algorithmes
de tri.
Commencez par observer le déroulement visuel de l’algorithme par sélection. Ensuite, passez à l’affichage temporel (menu déroulant), choisissez également le tri par sélection. Observez le temps necessaire pour trier un tableau de différentes tailles (100, 200, 1000, 10000, 100000 ?).
Comment évolue le temps par rapport au nombre d’éléments à trier ? De manière linéaire, exponentielle, quadratique ? Essayez les mêmes expériences avec l’algorithme de tri par fusion...
TSP - Traveling Salesman Problem
Nous allons observer trois méthodes pour résoudre le problème du voyageur de commerce. Le
problème est le suivant : un voyageur de commerce doit se rendre dans plusieurs villes mais peut
aller une seule fois dans chaqu’une. Enfin il doit revenir à la ville de départ (cycle hamiltonien). Le
voyageur de commerce étant fainéant par définition, il va chercher à optimiser ses déplacements.
et décomprimez-le. Entrez dans le dossier et lancez-le par le fichier tsp.class.
première idée : exhaustif
Notre voyageur de commerce décide qu’il vaut mieux se lancer dans des calculs afin de s’assurer
de faire le chemin le plus court. Il décide donc d’énumérer tous les chemins possibles ! Il calcule la
longueur de chacun de ces chemins et une fois ce travail effectué, il pourra être certain d’emprunter
le meilleur chemin.
Il faut faire attention : avec plus que de 8-9 villes, combien de temps l’énumération prend ?
deuxième idée : plus proche ville
La deuxième idée consiste à aller à chaque fois à la ville la plus proche non encore visitée. Cette
solution ne donne évidemment pas une solution optimale mais à l’avantage d’être très rapide.
Essayez plusieurs fois : de quoi peuvent dépendre les différents résultats ?
troisième idée : une heuristique
La troisième idée est d’utiliser la méthode du recuit simulé. Il s’agit d’une une métaheuristique
inspirée d’un processus utilisé en métallurgie. Ce processus alterne des cycles de refroidissement lent
et de réchauffage (recuit) qui tendent à minimiser l’énergie du matériau. Elle est aujourd’hui utilisée
en optimisation pour trouver les optima d’une fonction.
Il faut rappeler que même dans ce cas le point de départ est (une solution) aléatoire...
Algorithme Génétique - MaxOne Tiny GA
Nous allons maintenant observer un de plus petit exemple d’algorithme génétique. Le problème
adressé consiste à trouver parmi tous les tableaux imaginables de longueur fixe celui qui a le plus de
1
1 (problème du MaxOne). Les éléments d’un tableau étant soit 0 soit 1.
A l’adresse https://www.hec.unil.ch/docs/mscis/cours/13/, dans le répertoire tp 03, vous trouverez le fichier tinyGA.c. Enregistrez-le sur votre compte et regardez le code :
comment sont définis les individus ?
comment sont évalués ?
comment se déroule l’evolution de la population ?
Ouvrez un terminal et compilez le code par le command gcc -O2 -o tinyGA tiny_ga.c. Lancez l’exécutable tinyGA et observez son évolution. Vous pouvez aussi modifier les paramètres définis par une différente commande du compilation, par exemple, gcc -O2 -D PMUT=0.1 -o tinyGA tiny_ga.c si vous voulez augmenter la probabilité de mutation jusqu’au 10%...
2
Téléchargement