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