Vous êtes sur la page 1sur 29

Année académique 22/23

Rapport de projet

Optimisation d’une fonction en utilisant Ant


Colony Optimization ACO

Réalisé par : Boulhit Amina


El Hadri Mohamed Imad
Laqbiti Fatima

Encadré par : Mme. Siham MASSOU


Ant Colony Optimization ACO Projet libre

1 Table des matières


Table des matières
1 Table des matières 1

2 Table des figures 2

3 remerciements 3

4 Introduction générale 4

5 But du travail 5

6 CHAPITRE I :
Fondements théoriques de l’ACO 6
6.1 Présentation de l’inspiration de l’ACO : comportement des
fourmis dans la recherche de nourriture. . . . . . . . . . . . . . 7
6.2 Description des principaux concepts de l’ACO : . . . . . . . . 7

7 CHAPITRE II :
Implémentation de l’ACO 9
7.1 Présentation des algorithmes ACO les plus couramment utilisés : 10
7.2 Structure de l’ACO . . . . . . . . . . . . . . . . . . . . . . . . 10
7.2.1 Etape 1 (initialisation) . . . . . . . . . . . . . . . . . . 11
7.2.2 Etape 2 : Tant que (t < tmax) . . . . . . . . . . . . . . 11
7.2.3 Etape 3 : . . . . . . . . . . . . . . . . . . . . . . . . . 12
7.3 L’ACO pour rechercher tous les points extrêmes d’une fonction 12
7.3.1 Partition of Interval and Initialization . . . . . . . . . . 13
7.3.2 Rule of Ant Moving . . . . . . . . . . . . . . . . . . . 14
7.3.3 La règle de mise à jour de phéromone . . . . . . . . . 16
7.3.4 Garder uniquement les intervalles contenant des four-
mis pour réduire la plage de recherche . . . . . . . . . 17
7.3.5 Méthode de recherche de tous les ExtremePoints . . . . 18

8 CHAPITRE III :
Simulation de l’ACO avec MATLAB 20
8.1 Description du logiciel Matlab . . . . . . . . . . . . . . . . . . 21
8.2 Simulation du code matlab . . . . . . . . . . . . . . . . . . . 21

9 CONCLUSION GENERALE 27

1/28
Ant Colony Optimization ACO Projet libre

2 Table des figures


Table des figures
1 Probabilité de transition de la ième ville à la jème ville pour
la kème fourmi . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 Fonction heuristique locale . . . . . . . . . . . . . . . . . . . 11
3 Équation 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4 Taille d’intervalle . . . . . . . . . . . . . . . . . . . . . . . . . 14
5 Centre d’intervalle Ii . . . . . . . . . . . . . . . . . . . . . . . 14
6 Initialisation : Diviser le domaine de la fonction en intervalles
et mettre une fourmi au centre de chaque intervalle . . . . . . 15
7 Les voisins . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
8 Le facteur heuristique . . . . . . . . . . . . . . . . . . . . . . . 15
9 La probabilité de transition . . . . . . . . . . . . . . . . . . . 16
10 La quantité de phéromone . . . . . . . . . . . . . . . . . . . . 16
11 La somme des phéromone . . . . . . . . . . . . . . . . . . . . 17
12 Mise à jour de la quantité de phéromone . . . . . . . . . . . . 17
13 La distribution des fourmis . . . . . . . . . . . . . . . . . . . . 18
14 Matlab logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
15 Compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2/28
Ant Colony Optimization ACO Projet libre

3 remerciements

Nous tenons à remercier chaleureusement notre chère professeur Mme.


Siham MASSOU pour sa guidance et son soutien tout au long de notre pro-
jet. Nous sommes reconnaissants pour l’opportunité qu’elle nous a donnée de
mettre en pratique nos connaissances et nos compétences, et pour son engage-
ment à nous faire progresser. Nous lui exprimons toute notre gratitude pour
son temps et son énergie consacrés à notre épanouissement professionnel.

3/28
Ant Colony Optimization ACO Projet libre

4 Introduction générale
L’optimisation par colonie de fourmis (ACO) est un algorithme d’opti-
misation inspiré du comportement des fourmis dans la recherche de nourri-
ture. Il a été introduit pour la première fois en 1992 par Marco Dorigo, un
chercheur belge, dans son mémoire de doctorat intitulé "Optimisation par
colonie de fourmis : une méthode pour résoudre des problèmes de recherche
de chemin". L’ACO est utilisé pour résoudre des problèmes d’optimisation
en créant des "colonies de fourmis virtuelles" qui cherchent la solution op-
timale en parcourant un espace de recherche. L’idée de base de l’ACO est
de simuler le comportement des fourmis lorsqu’elles cherchent de la nour-
riture. Les fourmis déposent des phéromones sur leur chemin, ce qui attire
d’autres fourmis à emprunter le même chemin. Les chemins les plus fréquem-
ment empruntés deviennent plus "attractifs" en raison de la concentration
accrue de phéromones, ce qui permet aux fourmis de trouver plus efficace-
ment la nourriture. Depuis sa création, l’ACO a été utilisé pour résoudre
une variété de problèmes d’optimisation, tels que la recherche de chemin, le
triage de paquets et la planification de tâches. Il a également été combiné
avec d’autres algorithmes pour améliorer les performances et a été appliqué
à des domaines tels que l’intelligence artificielle, la robotique et la génétique.
En somme, l’ACO est un algorithme d’optimisation efficace qui permet de
résoudre des problèmes complexes en simulant le comportement des fourmis
dans la recherche de nourriture.

4/28
Ant Colony Optimization ACO Projet libre

5 But du travail
Le but de ce projet est d’explorer les possibilités de l’optimisation par
colonie de fourmis (ACO) en utilisant la plateforme de simulation MATLAB.
Nous allons présenter les fondements théoriques de l’ACO, en expliquant
comment il est inspiré du comportement des fourmis dans la recherche de
nourriture. Nous allons également décrire les principaux concepts de l’ACO
tels que les colonie de fourmis virtuelles et les phéromones. Ensuite, nous al-
lons montrer comment implémenter l’ACO en utilisant différentes approches
et les algorithmes les plus couramment utilisés. Enfin, nous allons utiliser la
plateforme de simulation MATLAB pour simuler l’ACO sur différents pro-
blèmes d’optimisation et analyser les résultats obtenus. Enfin, nous allons
présenter les applications de l’ACO dans différents domaines. Ce projet vise
à montrer les avantages de l’utilisation de l’ACO pour résoudre des problèmes
d’optimisation complexes et à montrer comment MATLAB peut être utilisé
pour simuler ces algorithmes.
Ainsi, le présent rapport se divise en 4 chapitres :

— Le chapitre 1 présentera les fondements théoriques de l’ACO.


— Le chapitre 2 comprendra l’implémentation de l’ACO.
— Le chapitre 3 présentera la simulation de l’ACO avec MATLAB.

5/28
Ant Colony Optimization ACO Projet libre

6 CHAPITRE I :
Fondements théoriques de l’ACO

6/28
Ant Colony Optimization ACO Projet libre

6.1 Présentation de l’inspiration de l’ACO : comporte-


ment des fourmis dans la recherche de nourriture.

En marchant du nid à la source de nourriture et vice-versa (ce qui dans


un premier temps se fait essentiellement de façon aléatoire), les fourmis dé-
posent au passage sur le sol une substance odorante appelée phéromones.
Cette substance permet ainsi donc de créer une piste chimique, sur laquelle
les fourmis s’y retrouvent. En effet, d’autres fourmis peuvent détecter les
phéromones grâce à des capteurs sur leurs antennes. Les phéromones ont un
rôle de marqueur de chemin : quand les fourmis choisissent leur chemin, elles
ont tendance à choisir la piste qui porte la plus forte concentration de phéro-
mones. Cela leur permet de retrouver le chemin vers leur nid lors du retour.
D’autre part, les odeurs peuvent être utilisées par les autres fourmis pour
retrouver les sources de nourritures trouvées par leurs congénères.

Ce comportement permet de trouver le chemin le plus court vers la


nourriture lorsque les pistes de phéromones sont utilisées par la colonie en-
tière. Autrement dit, lorsque plusieurs chemins marqués sont à la disposition
d’une fourmi, cette dernière peut connaitre le chemin le plus court vers sa
destination. Cette constatation essentielle est la base de toutes les méthodes
que l’on va développer plus loin.
On va d’abord étudier le comportement naturel de ces individus afin d’en
prouver la validité, avant de l’extraire pour le simuler informatiquement.

6.2 Description des principaux concepts de l’ACO :

Les principaux concepts de l’optimisation par colonie de fourmis (ACO)


sont les colonies de fourmis virtuelles, les phéromones, et les mécanismes de
mise à jour de phéromones.
Les colonies de fourmis virtuelles sont utilisées pour simuler les fourmis dans
la recherche de nourriture. Chacune de ces fourmis virtuelles explore l’espace
de recherche en suivant un chemin aléatoire et en déposant des phéromones
sur son parcours. Les fourmis virtuelles ont une probabilité d’emprunter un
chemin qui dépend de la quantité de phéromones déposée sur ce chemin.
Les phéromones sont utilisées pour simuler la communication entre les four-
mis. Les fourmis virtuelles déposent des phéromones sur leur chemin pour

7/28
Ant Colony Optimization ACO Projet libre

indiquer aux autres fourmis qu’elles ont trouvé de la nourriture. Les chemins
les plus fréquemment empruntés deviennent plus "attractifs" en raison de la
concentration accrue de phéromones, ce qui permet aux fourmis de trouver
plus efficacement la nourriture.
Les mécanismes de mise à jour de phéromones permettent de réguler la quan-
tité de phéromones déposée sur un chemin. Il existe différentes approches
pour mettre à jour les phéromones, telles que l’évaporation, la déposition et
l’intensification. Ces mécanismes permettent de réguler la quantité de phéro-
mones déposée sur un chemin pour éviter les chemins avec des phéromones
déposées en excès et les chemins avec aucune phéromones.
En plus de ces concepts clés, il y a d’autres concepts importants liés à l’op-
timisation par colonie de fourmis (ACO).
L’une de ces idées est celle de l’évaporation de phéromones, qui consiste à
réduire graduellement la quantité de phéromones déposées sur un chemin
au fil du temps, pour éviter l’accumulation excessive de phéromones sur des
chemins qui ne mènent pas à des solutions optimales.
Une autre idée importante est celle de la détermination de la probabilité de
transition entre les différents chemins. Cela permet de déterminer avec quelle
probabilité une fourmi virtuelle va choisir un chemin donné en fonction de la
quantité de phéromones déposées sur ce chemin.
Il y a aussi des algorithmes ACO spécifiques qui ont été développés pour
résoudre des problèmes particuliers, tels que l’algorithme ACO-AS (ACO
pour la recherche de meilleur chemin) qui est utilisé pour résoudre des pro-
blèmes de recherche de chemin, et l’algorithme ACO-MTSP (ACO pour le
problème de voyageur de commerce à visiter plusieurs villes) qui est utilisé
pour résoudre des problèmes de planification de tournées.

8/28
Ant Colony Optimization ACO Projet libre

7 CHAPITRE II :
Implémentation de l’ACO

9/28
Ant Colony Optimization ACO Projet libre

7.1 Présentation des algorithmes ACO les plus couram-


ment utilisés :

Il existe plusieurs algorithmes ACO (Algorithme de Colonie de Fourmis)


couramment utilisés pour résoudre des problèmes de recherche de chemin et
d’optimisation :

— Algorithme AS (Ant System) : Il est l’un des premiers algorithmes


ACO développé et il est utilisé pour résoudre des problèmes de re-
cherche de chemin comme le voyageur de commerce. Il utilise une
méthode d’évaporation pour simuler l’effet de la décomposition des
phéromones sur les chemins de la colonie de fourmis.
— Algorithme MMAS (Max-Min Ant System) : Il est une variante de
l’algorithme AS qui utilise une méthode pour maintenir la diversité
des solutions trouvées. Il est utilisé pour résoudre des problèmes de
recherche de chemin avec des contraintes de temps et de coûts.
— Algorithme ACO-Pheromone : Il est une extension de l’algorithme
AS qui utilise une méthode pour contrôler la quantité de phéromone
déposée sur les chemins par les fourmis. Il est utilisé pour résoudre
des problèmes de recherche de chemin avec des contraintes de temps
et de coûts.
— Algorithme ACO-Elitist : Il est une extension de l’algorithme MMAS
qui utilise une méthode pour sélectionner les meilleures solutions
trouvées par les fourmis. Il est utilisé pour résoudre des problèmes
de recherche de chemin avec des contraintes de temps et de coûts.
— Algorithme ACO-Stochastic : Il est une extension de l’algorithme AS
qui utilise une méthode stochastique pour sélectionner les chemins
à explorer par les fourmis. Il est utilisé pour résoudre des problèmes
de recherche de chemin avec des contraintes de temps et de coûts

7.2 Structure de l’ACO


Le problème du voyageur de commerce (TSP) est un célèbre problème
combinatoire qui peut être formulé de manière très simple : un vendeur doit
visiter N villes de manière cyclique en ne visitant chaque ville qu’une seule
fois. Dans quel ordre doit-il les visiter pour minimiser la distance parcourue ?
La principale application de l’ACO est de résoudre le TSP, et son idée de
base est la suivante : lorsqu’une fourmi passe par une arête, elle dépose de la
phéromone sur cette arête. Plus l’arête est courte, plus la quantité de phéro-
mone déposée est importante. Et cette phéromone incite les autres fourmis

10/28
Ant Colony Optimization ACO Projet libre

à emprunter cette arête. Enfin, toutes les fourmis sélectionnent un itinéraire


unique qui est le plus court possible.
Le cadre de l’ACO est introduit comme suit :

7.2.1 Etape 1 (initialisation)


Placer M fourmis dans M villes différentes de manière aléatoire ; Pré-
assigner le nombre d’itérations maximum tmax ; Définir t = 0, où t désigne
l’étape d’itération t ; Initialiser la quantité de phéromone sur chaque arête.

7.2.2 Etape 2 : Tant que (t < tmax)

— Etape 2.1 : chaque fourmi sélectionne sa prochaine ville en fonction


de la probabilité de transition. La probabilité de transition de la
ième ville à la jème ville pour la kème fourmi est définie comme
suit : où allowedk désigne l’ensemble de villes auxquelles la kème

Figure 1 – Probabilité de transition de la ième ville à la jème ville pour la


kème fourmi

fourmi peut accéder ; τij (t) est la valeur de phéromone de l’arête (i,
j) ; ηij est une fonction heuristique locale définie comme suit :

Figure 2 – Fonction heuristique locale

11/28
Ant Colony Optimization ACO Projet libre

— Etape 2.2 : Une fois que toutes les fourmis ont terminé leurs voyages,
toutes les valeurs de phéromone sont mises à jour en fonction de
l’équation 2. où L (k) (t) est la longueur de l’itinéraire passé par

Figure 3 – Équation 2

la kème fourmi pendant la tème itération ;ρ est le pourcentage de


persistance de la trace (par conséquent, 1-ρ correspond à l’évapora-
tion) ; Q désigne la quantité constante de phéromone.
— Etape 2.3 : Augmenter l’étape d’itération : t ← t + 1 .

7.2.3 Etape 3 :
Finir la procédure et sélectionner le chemin le plus court en sortie parmi
les itinéraires parcourus par les fourmis.

7.3 L’ACO pour rechercher tous les points extrêmes


d’une fonction
supposons que la fonction soit f(x), x est un nombre réel et appartient
à un intervalle fermé [a, b].
La tâche est d’extraire tous les points extrêmes pour lesquels la valeur est
minimale localement. L’idée de base est formulée brièvement comme suit :
— Diviser l’intervalle [a, b] en de nombreux petits intervalles de taille
égale. Supposons que ces petits intervalles soient I1 , I2 , ···, In et que
le centre de l’intervalle Ii soit noté xi.

12/28
Ant Colony Optimization ACO Projet libre

— Supposons que l’intervalle voisin de l’intervalle Ii soit Ii+1 (ou Ii−1 ).


Et une fourmi est mise au centre de chaque petit intervalle.
— Si f(xi )>f(xi+1 ), la fourmi de l’intervalle Ii se déplacera probable-
ment vers l’intervalle Ii+1 , comme s’il y avait un bord virtuel entre
Ii et Ii+1 .
— Et supposons que l’arête virtuelle soit e (Ii , Ii+1 ). Le poids (distance
virtuelle) de l’arête e (Ii , Ii+1 est proportionnel à f (xi ) - f (xi+1 ).
C’est-à-dire, plus f (xi ) - f (xi+1 ) est grand, plus il est probable que
la fourmi se déplace vers Ii+1 à partir de Ii .
— Lorsque la fourmi se déplace vers Ii+1 , elle démet de la phéromone
à Ii+1 , et la phéromone est proportionnelle à la valeur f (xi ) - f
(xi+1 ). La phéromone déposée sur Ii+1 attirera d’autres fourmis à
se déplacer vers elle.
Après quelques étapes d’itération, certains intervalles contiennent beaucoup
de fourmis, tandis que d’autres n’en contiennent pas.
Les intervalles contenant des fourmis comprennent peut-être des points ex-
trêmes, tandis que les autres n’en comprennent peut-être pas. Ensuite, conser-
vez les intervalles qui contiennent des fourmis et divisez-les en intervalles
encore plus petits, répétez la même procédure à nouveau jusqu’à ce que la
taille des intervalles soit suffisamment petite. Enfin, toutes les fourmis reste-
ront autour des points extrêmes. Les centres de ces intervalles suffisamment
petits sont les approximations des points extrêmes.
D’après les discussions ci-dessus, il peut être vu que la réalisation de l’idée
de base se compose de quatre parties : la partition de l’intervalle [a, b] et
l’initialisation, la règle de déplacement des fourmis, la règle de mise à jour
de la phéromone, et la conservation des intervalles contenant des fourmis.

7.3.1 Partition of Interval and Initialization


Supposons que l’intervalle [a, b] soit divisé en n petits intervalles de
taille égale, qui sont notés I1 , I2 , ···, In , où n est un nombre pré-attribué.
Alors chaque intervalle a une taille :

Le ième interval Ii a un centre xi Supposons que t désigne l’étape

d’itération t de l’ACO et qu’elle est initialisée à zéro (c’est-à-dire t = 0).

13/28
Ant Colony Optimization ACO Projet libre

Figure 4 – Taille d’intervalle

Figure 5 – Centre d’intervalle Ii

Placez n fourmis au centre des n intervalles, et chaque intervalle a une seule


fourmi. Supposons que ces fourmis soient notées a1 , a2 , ···, an respectivement,
et que la fourmi ai soit associée à l’intervalle ième Ii . Chaque fourmi dépo-
sera une phéromone initiale sur son intervalle associé Ii (c’est-à-dire τi (0) =
const, const est un nombre constant). En outre, définissez l’incrément de la
phéromone de chaque intervalle à zéro (c’est-à-dire ∆τi (0))

7.3.2 Rule of Ant Moving


Notons Neighbor(Ii ) un ensemble des intervalles voisins de Ii . Pour
prendre l’exemple d’une fonction à une dimension (Figure 7)

Comme il est discuté précédament , la fourmi restant à l’intervalle Ii se


déplacera à l’intervalle voisindésigné par Ij , tout comme il y a un bord virtuel
e(Ii , Ij ). Le poids du bord virtuel est
|f(xi ) f(xj )|.
Alors le facteur heuristique est : (Figure 8)

14/28
Ant Colony Optimization ACO Projet libre

Figure 6 – Initialisation : Diviser le domaine de la fonction en intervalles


et mettre une fourmi au centre de chaque intervalle

Figure 7 – Les voisins

Supposons que l’intervalle Ii contient une fourmi ak. Si f(xi ) > f(xj ), la

Figure 8 – Le facteur heuristique

fourmi ak est autorisée à se déplacer vers le voisin intervalle Ij . Sinon, il


est interdit de se déplacer. Supposons que tous les intervalles auxquels il est
permis d’accéder par ant ak est marqué comme allowedk. La probabilité de
transition de ant ak est définie comme :(Figure 9) α est l’influence relative de

15/28
Ant Colony Optimization ACO Projet libre

Figure 9 – La probabilité de transition

la force de la traînée ; β est l’information heuristique ; τj (t) est la phéromone


de l’intervalle Ij .

7.3.3 La règle de mise à jour de phéromone


Supposons que la fourmi ak reste à l’intervalle Ii et qu’elle se déplace
à l’intervalle voisin Ij . Après déménage à Ij , libère des phéromones à Ij . La
quantité de phéromone est indiquée par τ k j (t) (Figure 10) où C1 est une

Figure 10 – La quantité de phéromone

constante positive.
Plus f(xi ) f(xj ) est, plus la quantité de phéromone libérée est, plus éventuel-
lement que d’autres fourmis seront attirés à intervalle Ij .Non seulement la
fourmi ak arrive Ij et libère des phéromones, mais aussi d’autres fourmis qui
se déplacent à intervalle Ij et relâcher phéromone trop. Supposez qu’il y a
q ants se déplacera à intervalle Ij au cours de l’étape de l’itération t, qui
sont indiqués par aj1 , aj2 , , ajp . La somme des phéromone par aj1 , aj2 , , ajp
est τj (t). Alors : (Figure 11) Lorsque toutes les fourmis aj1 , aj2 , , ajp se

déplacent à Ij , la quantité de phéromone τj est changé comme :

16/28
Ant Colony Optimization ACO Projet libre

Figure 11 – La somme des phéromone

Figure 12 – Mise à jour de la quantité de phéromone

où ρ est le pourcentage d’évaporation de la traînée (donc, 1-ρ correspond à


la persistance).

7.3.4 Garder uniquement les intervalles contenant des fourmis


pour réduire la plage de recherche
Conservervation des intervalles contenant des fourmis pour réduire la
plage de recherche Les intervalles qui ont des valeurs plus petites de fonction
déposant beaucoup plus de phéromone, et il attirera les fourmis plus puis-
samment.
Après plusieurs itérations, la distribution des fourmis a la caractéristique que
toutes les fourmis restent à des intervalles qui ont des valeurs de fonction plus
petites et autres les intervalles ne contiennent pas de fourmis.
Autrement dit, les points extrêmes sont inclus dans les intervalles contenant
fourmis. Et puis garder les intervalles ayant fourmi et supprimer les autres
intervalles pour mettre à jour la recherche.
Ainsi, la plage de recherche mise à jour est devenue plus petite. Diviser la
plage de recherche mise à jour à de plus petits intervalles se traduira par une
plage de recherche beaucoup plus petite à l’étape de la prochaine itération.
Quand intervalles devenant suffisamment petits, toutes les fourmis resteront
autour des points extrêmes, les centres de les intervalles sont leurs approxi-
mations.
La figure suivante montre la distribution des fourmis. De plus, comme on
le sait, l’ACO fonctionne lentement, ce qui est le goulot d’étranglement de
l’application. Et il échappe à ce goulot d’étranglement que garder seulement

17/28
Ant Colony Optimization ACO Projet libre

les intervalles ayant fourmis à couper la recherche portée :

Figure 13 – La distribution des fourmis

La caractéristique de la distribution des fourmis : Les intervalles in-


cluant les points extrêmes ont plus de phéromone pour attirer les fourmis.
Après plusieurs étapes d’itération, toutes les fourmis resteront aux inter-
valles contenant des points extrêmes tandis que les autres intervalles sont
vides. Puis la plage de recherche devient plus petite, ce qui se compose des
intervalles contenant des fourmis. Enfin toutes les fourmis restent autour des
points extrêmes.

7.3.5 Méthode de recherche de tous les ExtremePoints


1. Etape 1 (Initialisation) : Divisez le domaine [a, b] en de nombreux
petits intervalles et mettez une fourmi dans chaque intervalle ; Faire

18/28
Ant Colony Optimization ACO Projet libre

une autre initialisation. Le détail est montré à la section B. Suppo-


sons δ est la longueur de l’intervalle et ϵ est un seuil d’arrêt.
2. Étape2 : Tandis que (δ > ϵ)
— Toutes les fourmis se déplacent à de nouveaux intervalles selon
la règle indiquée à la section 4.3.2
— Mettre à jour phéromone selon la règle montrée à la section 4.3.3
— Mettre à jour la plage de recherche selon la section 4.3.3 et la
diviser en petits intervalles (Supposons que le nombre de ces
intervalles est n1 ) . Calculer la taille de l’intervalle et régler-le
sur δ.
3. Etape 3 : Extraire tous les intervalles qui contiennent des fourmis,
les centres des intervalles sont les approximations des points ex-
trêmes. Si l’argument x est un vecteur multidimensionnel, divisez la
plage de chaque composant du vecteur à de plus petits intervalles,
la combinaison de ces intervalles forme de nombreux petits réseaux.
Et puis mettre une fourmi dans chaque treillis, appliquer la méthode
ci-dessus, tous les points extrêmes peuvent être extraits.

19/28
Ant Colony Optimization ACO Projet libre

8 CHAPITRE III :
Simulation de l’ACO avec MATLAB

20/28
Ant Colony Optimization ACO Projet libre

8.1 Description du logiciel Matlab


MATLAB (acronyme de « Matrix Laboratory ») est un logiciel de calcul
numérique développé par MathWorks. Il est utilisé pour l’analyse de données,
les calculs scientifiques, la modélisation et la simulation, la création d’algo-
rithmes et la création de graphiques et d’interfaces utilisateur.

Figure 14 – Matlab logo

MATLAB prend en charge de nombreux types de calculs mathéma-


tiques, notamment les matrices, les vecteurs, les fonctions symboliques, les
équations différentielles et les intégrales.
Il offre également une interface de programmation pour écrire des scripts et
des programmes, ainsi qu’un grand nombre de bibliothèques et de toolboxes
pour des domaines spécifiques tels que les communications, l’électronique,
l’image et le signal.

8.2 Simulation du code matlab


— Les entrées du code sont la fonction à minimiser, les bornes gauche
et droite de l’intervalle, le nombre de petits intervalles pour diviser
l’intervalle en, et le nombre de fourmis à utiliser dans l’algorithme.
Les sorties sont l’estimation du minimum local et la valeur de la
fonction au minimum local.
— La fonction est définie comme étant f(x) = -xsin(2πx)
— Les bornes de l’intervalle, le nombre de petits intervalles et le nombre
de fourmis sont définis.
— La variable "original N" est initialisée pour enregistrer la valeur
initiale de N.
— Les variables "num steps", "num moves" et "evaporation rate" sont
définies pour les utiliser dans l’algorithme.

21/28
Ant Colony Optimization ACO Projet libre

1 % Inputs :
2 % f : the function to be minimized
3 % a : left endpoint of interval
4 % b : right endpoint of interval
5 % N : number of small intervals to divide the interval into
6 % n_ants : number of ants to use in the algorithm
7
8 % Outputs :
9 % x_min : the estimate of the local minimum
10 % f_min : the function value at the local minimum
11 % a = - pi ; b = pi ; N = 1000; n_ants = 1000;
12
13 function [ x_min , f_min ] = ant_algorithm (f , a , b , N , n_ants )
14
15 f = @ ( x ) sin (2* pi * x ) ;
16 a = - pi ; b = pi ; N = 1000; n_ants = 1000;
17 % Initialize the original N value
18 original_N = N ;
19 num_steps = 100;
20 num_moves = 50;
21 evaporation_rate =0.1;

— Les tableaux "pheromones" et "function values" sont initialisés pour


stocker les phéromones et les valeurs de la fonction respectivement.
1 % Initialize array to store pheromones
2 pheromones = zeros (1 , N ) ;
3

4 % Initialize array to store function values


5 function_values = zeros (1 , N ) ;

— L’intervalle est divisé en petits intervalles de taille égale.


— La fonction est évaluée au centre de chaque petit intervalle.
1 % Divide the interval into small intervals
2 interval_size = ( b - a ) / N ;
3 intervals = a : interval_size : b ;

— Dans une boucle pour un nombre fixe d’étapes, un tableau est ini-

22/28
Ant Colony Optimization ACO Projet libre

tialisé pour stocker la position actuelle de chaque fourmi.


1 % Evaluate the function at the center of each interval
2 for i = 1: N
3 x = ( intervals ( i ) + intervals ( i +1) ) / 2;
4 function_values ( i ) = f ( x ) ;
5 end

— Chaque fourmi est placée à un intervalle aléatoire.


1
2 % Iterate for a fixed number of steps
3 for t = 1: num_steps
4 % Initialize array to store the current position of each
ant
5 curre nt_posit ions = zeros (1 , n_ants ) ;
6 i nt e r va l s_ w it h _ an t s = zeros (1 , N ) ;
7 % Place each ant at a random interval
8 for i = 1: n_ants
9 curre nt_posit ions ( i ) = randi ( N ) ;
10 i nt e r va l s_ w it h _ an t s ( c urrent_p ositions ( i ) ) = 1;
11 end

— Dans une boucle pour un nombre fixe de déplacements, chaque


fourmi est déplacée vers l’intervalle suivant.
— La probabilité de déplacement vers l’intervalle suivant est calculée
en utilisant la formule donnée dans le papier.
— Si la probabilité est supérieure à un nombre aléatoire, la fourmi est
déplacée vers l’intervalle suivant.
1 % Iterate for a fixed number of moves
2 for m = 1: num_moves
3 % Move each ant to the next interval
4
5 current_interval = cu rrent_po sitions ( i ) ;
6 next_interval = current_interval + 1;
7 if next_interval > N
8 next_interval = 1;
9 end
10
11 % Calculate the probability of moving to the next
interval
12 delta_f = function_values ( current_interval ) -
function_values ( next_interval ) ;
13 p = exp ( - delta_f / pheromones ( current_interval ) ) ;

23/28
Ant Colony Optimization ACO Projet libre

14

15 % Move to the next interval with probability p


16 if rand () < p
17 curre nt_posit ions ( i ) = next_interval ;
18 end
19 end

— Suivre les intervalles qui ont des fourmis en eux,comme indiqué par
le bout de code suivant où un tableau de zéros est créé pour sto-
cker les informations sur les intervalles avec des fourmis. La boucle
parcourt chaque fourmi et vérifie si sa position actuelle dépasse la
longueur originale . Si c’est le cas, la position de la fourmi est réini-
tialisée en la soustractant de la longueur originale moins la somme
des intervalles avec des fourmis . On définit l’intervalle actuel de
la fourmi en utilisant sa position actuelle, et puis on met à jour le
tableau pour indiquer qu’il y a une fourmi dans cet intervalle.
1 % Keep track of which intervals have ants
2 i nt e r va l s_ w it h _ an t s = zeros (1 , N ) ;
3 for i = 1: n_ants
4 if ( curre nt_posit ions ( i ) >= original_N )
5 curre nt_posit ions ( i ) = current _positio ns ( i ) -
( original_N - sum ( i n te r va l s _w i th _ a nt s ) ) ;
6 end
7 current_interval = cu rrent_po sitions ( i ) ;
8 i nt e r va l s_ w it h _ an t s ( c urrent_p ositions ( i ) ) = 1;
9 end

— Mise à jour des phéromones : une fois que toutes les fourmis ont
parcouru tous les intervalles, le code met à jour les phéromones
en augmentant celles des intervalles visités par les fourmis et en
réduisant celles des intervalles non visités.
1 % store the indices of the current intervals with ants
2 c u r r e n t _ p o s i t i o n s _ i n d i c e s = find ( i nt e r va l s_ w i th _ an t s
==1) ;
3 % Update the pheromones
4 for i = 1: N
5 pheromones ( i ) = pheromones ( i ) * (1 -
evaporation_rate ) ;
6 for j = 1: n_ants
7 if curre nt_posit ions ( j ) == i
8 pheromones ( i ) = pheromones ( i ) + delta_f ;

24/28
Ant Colony Optimization ACO Projet libre

9 end
10 end
11 end

— Raffinement des intervalles : le code supprime les intervalles qui


n’ont pas été visités par les fourmis, et réduit l’espace de recherche
pour se concentrer sur les intervalles les plus prometteurs.
1 % Remove intervals without ants
2 intervals = intervals ( logical ( in t e rv a ls _ w it h _a n ts ) ) ;
3 function_values = function_values ( logical ( i n te r va l s _w i th _ an t s
));
4 pheromones = pheromones ( logical ( in t er v a ls _ wi t h _a n ts ) ) ;
5 N = sum ( in t e rv a ls _ wi t h _a n ts ) ;
6 % check if curr ent_posit ions indices are still within the
remaining intervals range
7 idx = find ( current_positions <= N ) ;
8 curre nt_posit ions = curren t_positi ons ( idx ) ;
9 end
10

11 % Keep track of the best interval found so far


12 [ f_min , min_index ] = min ( function_values ) ;
13 x_min = ( intervals ( min_index ) + intervals ( min_index +1) ) /
2;

— Détermination des résultats : enfin, le code trouve le minimum de la


fonction en utilisant l’intervalle avec la plus forte concentration de
phéromones. Il affiche également l’intervalle contenant ce minimum.
1 % Find the best interval that contains the minimum
2 [~ , max_indx ] = max ( pheromones ) ;
3 best_interval = [ intervals ( max_indx ) , intervals ( max_indx +1) ];
4 fprintf (" The best interval that contains the minimum is [ % .4 f
,%.4 f ]\ n " , best_interval ," the minimum is :" , x_min ) ;
5 end

après compilation : (figure 15)


on constate que le meilleur intervalle qui contien le minimum cherché pour
ce nombre de fourmis et d’étérations est : [1.5771, 1.5959] et que le minimum
est : -0.2450 .

25/28
Ant Colony Optimization ACO Projet libre

Figure 15 – Compilation

...

26/28
Ant Colony Optimization ACO Projet libre

9 CONCLUSION GENERALE
En conclusion, dans ce projet, nous avons utilisé l’algorithme de colo-
nie de fourmis (ACO) pour optimiser une fonction spécifique. Nous avons
démontré que l’utilisation de l’ACO était efficace pour atteindre des résul-
tats optimaux pour cette fonction en utilisant des techniques d’optimisation
telles que la méthode de recherche locale. Cependant, il est important de no-
ter que l’ACO peut ne pas être la meilleure méthode pour optimiser toutes
les fonctions et il est donc important de considérer plusieurs méthodes d’op-
timisation pour trouver celle qui convient le mieux pour un cas d’utilisation
donné. En général, l’optimisation des fonctions est un domaine en constante
évolution et il y a encore beaucoup de travail à faire pour améliorer les mé-
thodes existantes et en développer de nouvelles.

27/28
Ant Colony Optimization ACO Projet libre

Références
[1] M. Dorigo, V. Maniezzo, and A. Colorni. Ant system : Optimization by
a colony of cooperating agents. IEEE Transactions on Systems, Man,
and Cybernetics Part B (Cybernetics), 1997, 27(1), pp. 29-41.
[2] T. Stützle and H.-H. Hoos. MAX-MIN Ant System. Future Generation
Computer Systems, 2000, 16(8), pp. 889-914.
[3] B. Bullnheimer, R. F. Hartl, and A. Jain. A Better Ant for the Traveling
Salesman Problem. Journal of Heuristics, 1997, 3(4), pp. 365-376.
[4] J. Zhou and X. Liu. Artificial Bee Colony Optimization. In Proceedings
of the 6th International Conference on Hybrid Intelligent Systems, 2006,
pp. 81-86.
[5] C. Blum and A. Roli. Metaheuristics in Combinatorial Optimiza-
tion : Overview and Conceptual Comparison. ACM Computing Surveys
(CSUR), 2010, 42(4), pp. 1-52.

28/28

Vous aimerez peut-être aussi