Rapport Opti

publicité
2006
Groupe Foucher, Kui, Theau, Ung.
Joel Ung
[PAR LE RECUIT SIMULE]
Utilisation de la metaheuristique du recuit simule pour
déterminer à partir d’une allocation aléatoire, la meilleure
allocation possible en un nombre d’itérations données.
La modélisation
 L’algorithme :
 Rappel du principe :
A partir d’un critère : énergie que l’on va essayer d’optimiser, on va simuler la formation d’une solution.
Cette formation qui est soumise à un « refroidissement lent », est le déplacement de proche en proche d’un
élément aléatoirement généré vers un meilleur voisin. Plus on avance dans le temps plus la température
diminue et plus le déplacement vers un meilleur voisin est limité, cependant pour pouvoir sortir du
« bassin » d’un optimal local, on se permet de modifier la température de façon significative afin de
permettre le déplacement vers un voisin moins bon et tenter de sortir de ce « bassin ».
 Variation implémentée :
Ici, l’algorithme suit le principe du recuit simulé. Aux seules précisions où dans notre cas :
 La configuration initiale de notre problème est une allocation aléatoire d’enchères valable.
 La température est représentée par le nombre d’enchères, redondantes incluses, traitées.
 Le voisin d’une allocation est l’ajout/suppression d’une enchère ou la permutation de deux.
 Le critère énergie E est le montant d’une allocation.
 L’acceptation d’un voisin moins « bon » est donnée par la probabilité exp (-∆(E(actuel)E(voisin))/log(T)).
 L’équilibre est indiqué le nombre de tours de boucle où l’allocation courante n’a pas changée.
 La variation de température se fait par palier de 10% (variable suivant les données du problème).
 Structure de données :
 Une enchère est représentée par :


Le montant (représenté par un réel) attribué aux objets de l’enchère.
La liste des objets (représentés par des entiers) auxquels on propose une enchère.
 Une allocation d’enchères est représentée par :

Un tableau de booléen indiquant pour chaque enchère si celle-ci est prise ou non.
 Structures complémentaires utilisées :



Une liste globale des items du problème.
Meilleure allocation trouvée (tableau de booléens) et sa valeur (réelle).
L’aléatoire provenant du langage utilisé.
 Fonctions de l’algorithme :
 Obtenir un élément aléatoire.
On parcourt le tableau de booléens de l’allocation, initialement chaque enchère ne fait pas partie de
l’allocation, puis on décide aléatoirement si l’enchère actuel doit être ajouté ou non à la configuration
initiale (allocation de départ). Bien entendu, on vérifie qu’elle est compatible avec les enchères
préalablement ajoutées et on met à jour la liste globales des items .
 Obtenir un voisin aléatoire.
On parcourt le tableau de booléens de l’allocation courante, on décide aléatoirement si on décide de
changer une enchère du tableau ou de permuter deux enchères, on vérifie qu’une enchère ajoutée est
plausible avec l’allocation courante et on termine en mettant à jour la liste globales des items.
Le choix de l’enchère à ajouter/supprimer se fait aléatoirement sur l’ensemble des enchères du problème et
suivant que celle-ci est prise ou non, on change son état et on met à jour la liste des items.
Le choix pour les deux enchères à permuter se fait de manière différente puisque ces enchères sont choisies
parmi deux ensembles distincts : une liste d’enchères prises et une liste d’enchères libres.
 Détermination du critère et de la prochaine allocation courante
On évalue le montant de l’allocation actuelle par une simple somme des montants des enchères qui la
composent ainsi que du voisin généré. On détermine laquelle des deux allocations apporte un meilleur
montant. Si le voisin a le meilleur montant, il devient l’allocation courante sinon suivant la probabilité
donnée par exponentielle(-∆(E(actuel)-E(voisin))/log(T)) > Randon[0.0 ,1.0], l’allocation voisine devient tout
de même l’allocation courante et on termine avec une diminution de la température. Dans le cas contraire,
on reste sur l’allocation courante, on incrémente le compteur représentant l’équilibre thermique. Si cet
équilibre a atteint un seuil prédéfini, on augmente par un certain pourcentage la température courante.
Quelques remarques :
 Le choix d’ajouter dans la mesure du possible une enchère à l’allocation courante permet d’avoir un
algorithme extrêmement rapide au détriment de trouver l’enchère adéquate.
 Les paramètres de températures (nombre de voisins traités), les variations de températures varient
fortement en fonction du problème traité afin que le calcule de la probabilité soit plausible.
Exemple : exp(-(500)/log(1000)) =0.00001 ce qui n’est pas un résultat
L’algorithme au fil des tests.
Téléchargement