Heuristiques et Intelligence Collective
S´erie 3 - Complexit´e et Heuristiques
Algorithme de tri
A l’adresse http://interstices.info/display.jsp?id=c_6973&qs=cid=jalios_5001, vous trou-
verez une applet tr`es bien faite permettant de comprendre le fonctionnement de diff´erents algorithmes
de tri.
Commencez par observer le d´eroulement visuel de l’algorithme par s´election. Ensuite, passez `a l’af-
fichage temporel (menu d´eroulant), choisissez ´egalement le tri par s´election. Observez le temps ne-
cessaire pour trier un tableau de diff´erentes tailles (100, 200, 1000, 10000, 100000 ?).
Comment ´evolue le temps par rapport au nombre d’´el´ements `a trier ? De mani`ere lin´eaire, exponen-
tielle, quadratique ? Essayez les mˆemes exp´eriences avec l’algorithme de tri par fusion...
TSP - Traveling Salesman Problem
Nous allons observer trois m´ethodes pour r´esoudre le probl`eme du voyageur de commerce. Le
probl`eme 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 `a la ville de d´epart (cycle hamiltonien). Le
voyageur de commerce ´etant fain´eant par d´efinition, il va chercher `a optimiser ses d´eplacements.
et d´ecomprimez-le. Entrez dans le dossier et lancez-le par le fichier tsp.class.
premi`ere id´ee : exhaustif
Notre voyageur de commerce d´ecide qu’il vaut mieux se lancer dans des calculs afin de s’assurer
de faire le chemin le plus court. Il d´ecide donc d’´enum´erer tous les chemins possibles ! Il calcule la
longueur de chacun de ces chemins et une fois ce travail effectu´e, il pourra ˆetre certain d’emprunter
le meilleur chemin.
Il faut faire attention : avec plus que de 8-9 villes, combien de temps l’´enum´eration prend ?
deuxi`eme id´ee : plus proche ville
La deuxi`eme id´ee consiste `a aller `a chaque fois `a la ville la plus proche non encore visit´ee. Cette
solution ne donne ´evidemment pas une solution optimale mais `a l’avantage d’ˆetre tr`es rapide.
Essayez plusieurs fois : de quoi peuvent d´ependre les diff´erents r´esultats ?
troisi`eme id´ee : une heuristique
La troisi`eme id´ee est d’utiliser la m´ethode du recuit simul´e. Il s’agit d’une une m´etaheuristique
inspir´ee d’un processus utilis´e en m´etallurgie. Ce processus alterne des cycles de refroidissement lent
et de r´echauffage (recuit) qui tendent `a minimiser l’´energie du mat´eriau. Elle est aujourd’hui utilis´ee
en optimisation pour trouver les optima d’une fonction.
Il faut rappeler que mˆeme dans ce cas le point de d´epart est (une solution) al´eatoire...
Algorithme G´en´etique - MaxOne Tiny GA
Nous allons maintenant observer un de plus petit exemple d’algorithme g´en´etique. Le probl`eme
adress´e consiste `a trouver parmi tous les tableaux imaginables de longueur fixe celui qui a le plus de
1
1 (probl`eme du MaxOne). Les ´el´ements d’un tableau ´etant soit 0 soit 1.
A l’adresse https://www.hec.unil.ch/docs/mscis/cours/13/, dans le r´epertoire tp 03, vous trou-
verez le fichier tinyGA.c. Enregistrez-le sur votre compte et regardez le code :
comment sont d´efinis les individus ?
comment sont ´evalu´es ?
comment se d´eroule l’evolution de la population ?
Ouvrez un terminal et compilez le code par le command gcc -O2 -o tinyGA tiny_ga.c. Lan-
cez l’ex´ecutable tinyGA et observez son ´evolution. Vous pouvez aussi modifier les param`etres d´e-
finis par une diff´erente commande du compilation, par exemple, gcc -O2 -D PMUT=0.1 -o ti-
nyGA tiny_ga.c si vous voulez augmenter la probabilit´e de mutation jusqu’au 10%...
2
1 / 2 100%