Telechargé par samiha larobi

RO BOOK

publicité
ROYAUME DE MAROC
UNIVERSITE ABDELMALEK ESSAIDI
Ecole Nationale des Sciences Appliquées
Al-Hoceima
2021/2022
La Recherche
Opérationnelle
Génie informatique 1
Mise en page :
Encadré par :
BENMAMOUN Nassim
EL AJHAR Majda
ADIL Ayoub
AZEROUAL Omayma
Mr. LAHJOUJI EL IDRISSI Ahmed
Travaux réalisés par:
BENMAMOUN Nassim
EL AJHAR Majda
HARAM Oumaima
CHENTOUI Abdelali
KHOUILI Khadija
EL BAHRY Ahlame
ASAGH Anouar
AFIF Ikram
DARDOURI Chaimae
NAOUI KHIR El Mahdi
HADDIOUI Fatima
OUALI Chaymaa
SABIR Kawtar
ET-TAYYEB Oumayma
ADIL Ayoub
FARAJI Anouar
ESSABRI Fatima Zahrae
BOUTINKHAR Hassan
ELHASSANI Wafae
LAKHALIFI Jamila
ELBERNOUSSI Yasmina
BADDA Youssra
AZIZ Mohammed
AHACHI Hossain
EL KHANTACH Yassine
AZELMAT Mouhcine
AFKIR Mohamed
BERHI Othmane
HAIM Redouane
BELKADI El Hassan
LAMINI Abdellah
TOUHAMI Wiam
ACHBAB Al Mahdi
EL HAJOUI Meriyem
RAKIB Douha
NAJI Walid
AZEROUAL Omayma
WIRAN Larbi
CHBIROU Aymane
EN-NASSIBI Mohamed
ETTAJRINI Safae
BOUALI Salma
EL HADADDI Mohamed
EL HANKARI Ouijdan
ERRAHOUTI Aissam
OUTAMART Marouane
FAKRACH Jihad
ARBIB Adil
1
Table des matières
Introduction générale_________________________________________5
Chapitre 1 : Les théories utilisées en recherche
opérationnelle________________________________________________ 6
1
2
NP-Complétude ________________________________________ 6
1.1
Introduction _____________________________________________________________ 6
1.2
Théorie de la complexité ___________________________________________________ 6
1.3
Classes de complexité ______________________________________________________ 9
1.4
NP-Complet _____________________________________________________________ 14
Théorie des jeux ______________________________________ 19
2.1
Introduction ____________________________________________________________ 19
2.2
Formalisation d’un jeu ____________________________________________________ 19
2.3
Catégories des jeux _______________________________________________________ 19
2.4
Elimination des stratégies dominées _________________________________________ 22
2.5
Equilibre de Nash ________________________________________________________ 23
2.6
Critère de Pareto_________________________________________________________ 25
2.7
La guerre des sexes _______________________________________________________ 26
Chapitre 2 : Les problèmes de la recherche
opérationnelle_______________________________________________30
3
L’Optimisation multi-objectif _____________________________ 30
3.1
Introduction ____________________________________________________________ 30
3.2
Exemple ________________________________________________________________ 33
2
3.3
4
5
6
La différence entre l’optimisation multi-objectif et mono-objectif _________________ 33
Problème de tournées de véhicules _________________________ 35
4.1
Introduction ____________________________________________________________ 35
4.2
Généralités _____________________________________________________________ 35
4.3
Les méthodes de résolution du VRP _________________________________________ 39
Problème de voyageur de commerce ________________________ 47
5.1
Introduction ____________________________________________________________ 47
5.2
Formalisation ___________________________________________________________ 47
5.3
Domaines d’application ___________________________________________________ 48
5.4
Méthodes de résolution ___________________________________________________ 49
5.5
Complexité _____________________________________________________________ 52
Problème de transport avec coût fixe ________________________ 53
6.1
Introduction ____________________________________________________________ 53
6.2
Le problème de transport avec coût fixe ______________________________________ 53
6.3
Un aperçu de certaines des solutions développées par les chercheurs pour résoudre le
FCTP 56
7
Problème de planification JSP (Job- shop scheduling problem) _____ 60
7.1
Problème d’ordonnancement ______________________________________________ 60
7.2
Job shop scheduling ______________________________________________________ 65
Chapitre 3 : Les méthodes de résolution_____________________ 74
8
9
Les méthodes exactes _________________________________ 74
8.1
La programmation dynamique ______________________________________________ 74
8.2
Branch & Bound _________________________________________________________ 88
Les méthodes approchées_____________________________ 104
9.1
Chaines de Markov ______________________________________________________ 104
9.2
La recherche locale ______________________________________________________ 110
9.3
Algorithme de Colonies de Fourmis _________________________________________ 117
9.4
Les réseaux de neurones _________________________________________________ 125
9.5
Les algorithmes génétiques _______________________________________________ 137
9.6
L’optimisation par essaims de particules_____________________________________ 142
9.7
Système immunitaire artificiel _____________________________________________ 150
9.8
La recherche tabous _____________________________________________________ 154
3
Chapitre4 : Les solveurs d'optimisation________________164
10.1
Introduction ___________________________________________________________ 164
10.2
Définition d’un solveur de programmation mathématique ______________________ 164
10.3
Les différents types des solveurs d’optimisation ______________________________ 165
10.4
Des solveurs d’optimisation _______________________________________________ 166
10.5
Comparaison des solveurs Inconvénients des solveurs d’optimisation _____________ 169
10.6
Quelques exemples d’application __________________________________________ 170
Conclusion__________________________________________________179
Bibliographie/ Webographie________________________________179
4
Introduction générale
Prendre une décision nécessite généralement de considérer un nombre potentiellement
important d’alternatives, chacune devant être évaluée selon un ou plusieurs critères, afin de
déterminer laquelle ou lesquelles sont « les meilleures ». C’est pour aider le décideur dans ces
choix parfois complexes qu’est apparue la Recherche Opérationnelle.
La Recherche Opérationnelle (RO) peut être définie comme la discipline qui utilise des
modèles mathématiques, statistiques et des algorithmes pour modeler et résoudre des
problèmes relativement complexes, en déterminant la meilleure solution (optimale) et en
améliorant la prise de décisions.
Dès le XVIIe siècle, La RO a commencé de manière systématique, des mathématiciens
comme Christiaan Huygens ou Blaise Pascal (problème des partis) tentent de résoudre
des problèmes de décision dans l'incertain avec l'espérance mathématique. Au début du XXe
siècle, l'étude de la gestion de stock peut être considérée comme étant à l'origine de la
recherche opérationnelle moderne avec la formule du lot économique (dite formule de
Wilson) proposée par Harris en 1913. Mais ce n'est qu'avec la Seconde Guerre mondiale que
la RO est apparue pour résoudre certains problèmes tels que le problème de positionnement
de radars de surveillance, le problème de sac à dos et le problème d’organisation des convois
d'approvisionnement.
Le livre est réparti en quatre chapitres. Le premier chapitre expose quelques théories
utilisées en recherche opérationnelle comme la NP-complétude et la théorie des jeux. Le
deuxième chapitre est consacré à étudier quelques problèmes classiques de la recherche
opérationnelle tels que le problème du voyageur de commerce (TSP), le problème de tournées
de véhicules (VRP) …etc. Le troisième chapitre se concentre sur les méthodes de résolution
des problèmes de la recherche opérationnelle, ces méthodes peuvent être exactes (Ex :
Branch & Bound) ou approchées (Heuristiques et métaheuristiques). Le quatrième chapitre
présente quelques logiciels utilisés dans la RO, ces logiciels sont appelés les solveurs
d’optimisation. On clôture ce travail par une conclusion, qui présente une synthèse des
travaux réalisés et une webographie.
5
Chapitre 1
Les théories utilisées en recherche
opérationnelle
1 NP-Complétude
1.1 Introduction
Pour résoudre n’importe quel problème on ’est toujours besoin d’un plan qui contient des
étapes successives liés logiquement entre eux. Et cela se qu’on appelle un ALGORITHME. Et
D’après la structure et la nature de cet algorithme on peut déterminer le dégrée de difficultés
d’un problème donné.
Nous avons écrit des algorithmes efficaces pour résoudre des problèmes complexes, comme
le plus court chemin, le graphe d’Euler, l’arbre couvrant minimum, etc. Ce sont tous des
exemples de réussite des concepteurs d’algorithmes. Dans cet article, des histoires d’échec de
l’informatique sont discutées.
QST : Est-ce que Tous les problèmes de calcul peuvent-ils être résolus par un ordinateur ?
1.2 Théorie de la complexité
1.2.1 Définition
La théorie de la complexité est le domaine des mathématiques, et plus précisément de
l'informatique théorique, qui étudie formellement d'abord le temps de calcul, mais aussi
l'espace mémoire (et plus marginalement la taille d'un circuit, le nombre de processeurs, …)
requis par un algorithme pour résoudre un problème algorithmique. Il s'agit donc d'étudier la
difficulté intrinsèque des problèmes, de les organiser par classes de complexité et d'étudier
les relations entre les classes de complexité.
6
La théorie de la complexité étudie principalement (mais pas uniquement) les problèmes de
décision.
Exemple des problèmes algorithmiques :
Problème du voyageur de commerce :
-La donnée du problème est un ensemble de villes et de distances séparant ces villes.
-L'objectif du problème est de trouver un plus court-circuit qui passe une et une seule fois par
toutes les villes.
-Il existe un problème de décision associé : étant donné un ensemble de villes, les distances
entre villes et un entier k, déterminer s'il existe un circuit qui passe une et une seule fois par
toutes les villes de longueur inférieure à k. Ainsi on distingue deux types de problèmes :
1. Problèmes de décision :
Les problèmes de décision posent une question dont la réponse est oui ou non, dans le cas
du problème du voyageur de commerce : existe-il oui ou non un circuit de longueur
inférieure à k ?
2. Problèmes de recherche :
Les problèmes de recherche d'une solution comportent une question ou plutôt une
injonction de la forme « renvoyer un élément tel que… » dont la réponse consiste à fournir
un tel élément ; dans le cas du problème du voyageur de commerce, exhiber un circuit de
longueur minimale. Il s'agit donc d'un problème fonctionnel, et il sera donc catégorisé dans
une classe fonctionnelle, par exemple FP si la solution est calculée en temps polynomial.
1.2.2 Complexité d'un problème algorithmique
La théorie de la complexité vise à savoir si la réponse à un problème peut être donnée très
efficacement ou au contraire être inatteignable en pratique, avec des niveaux intermédiaires
de difficulté entre les deux extrêmes, pour cela, elle se fonde sur une estimation — théorique
— des temps de calcul et des besoins en mémoire informatique.
Dans le but de mieux comprendre comment les problèmes se placent les uns par rapport aux
autres, la théorie de la complexité établit des hiérarchies de difficulté entre les problèmes
algorithmiques, dont les niveaux sont appelés des « classes de complexité » qu’on va aborder
suivant.
Ces hiérarchies comportent des ramifications, suivant que l'on considère des calculs
déterministes— l'état suivant du calcul est « déterminé » par l'état courant — ou non
déterministes.
1.2.3 Modèles de calcul
L'analyse de la complexité est étroitement associée à un modèle de calcul. L'un des
modèles de calcul les plus utilisés, car il permet de mesurer le temps de calcul et la mémoire
utilisée, est celui de la machine de Turing proposé par Alan Turing en 1936.
7
Un calcul est constitué d'étapes élémentaires, à chaque étape, la machine exécute une action
élémentaire (changer d'état interne et déplacer la tête de lecture) en fonction de sa
configuration courante (état interne et du symbole lu par la tête de lecture).
Voici quelques modèles de calcul permettent d'étudier la complexité existante :
• Machines de Turing non-déterministes (il peut y avoir plusieurs choix possibles d'actions
•
•
•
•
•
•
•
•
•
•
à effectuer dans une configuration donnée).
Machines de Turing alternantes .
Machines de Turing probabilistes .
La machine RAM (Random Access Machine).
Les circuits booléens et les programmes straight-line.
Les fonctions récursives, dues à Kleene .
Le lambda-calcul .
Les automates cellulaires .
La logique linéaire .
Les Peebles games.
…
➢
Machine de Turing
En informatique théorique, une machine de Turing est un modèle abstrait du
fonctionnement des appareils mécaniques de calcul, tel un ordinateur. Ce modèle a été
imaginé par Alan Turing en 1936, en vue de donner une définition précise au concept
d’algorithme ou de « procédure mécanique ».
Il est toujours largement utilisé en informatique théorique, en particulier dans les domaines
de la complexité algorithmique et de la calculabilité.
À l'origine, le concept de machine de Turing, inventé avant l'ordinateur, était censé
représenter une personne virtuelle exécutant une procédure bien définie, en changeant le
contenu des cases d'un ruban infini, en choisissant ce contenu parmi un ensemble fini de
symboles.
D'autre part, à chaque étape de la procédure, la personne doit se placer dans un état
particulier parmi un ensemble fini d'états.
La procédure est formulée en termes d'étapes élémentaires du type : « si vous êtes dans l'état
42 et que le symbole contenu sur la case que vous regardez est « 0 », alors remplacer ce
symbole par un « 1 », passer dans l'état 17, et regarder maintenant la case adjacente à droite
». ??
➢
La différence entre la machine de Turing « déterministe et non
déterministe »
La machine est dite déterministe s’il n’y a qu’une seule action possible à chaque étape. Il est
dit non déterministe s’il y a un nombre fini d’actions possibles à chaque étape.
Aussi Une machine de Turing déterministe peut être décrite comme une machine de Turing
non déterministe dont la relation de transition est fonctionnelle.
8
La différence est qu'étant donnée une entrée, une machine déterministe n'a qu'une seule
suite de configurations possible.
1.3 Classes de complexité
1.3.1 Définition
En informatique théorique, et plus précisément en théorie de la complexité, une classe de
complexité est un ensemble de problèmes algorithmiques dont la résolution nécessite la
même quantité d'une certaine ressource. une classe est souvent définie comme l'ensemble de
tous les problèmes qui peuvent être résolus sur un modèle de calcul M, utilisant une quantité
O(f(n)) de ressources du type R, où n, est la taille de l'entrée.
Une classe de complexité regroupe les problèmes de même complexité, souvent à une
réduction polynomiale près. Les classes usuelles sont définies en utilisant les machines de
Turing comme modèles de calcul et les ressources sont le temps et l'espace.
1.3.2 Les classes usuelles
Les classes les plus usuelles sont celles définies sur des MACHINE DE TURING, avec des
contraintes de TEMPS DE CALCUL ou d’ESPACES.
On peut par exemple citer les classes P, NP et NP-HARD.
1-
Classe P
P : La classe des problèmes décidés en temps polynomial par une machine déterministe. Ces
problèmes sont souvent considérés comme ceux pour lesquels il existe un algorithme efficace,
faisables et faciles à résoudre (dans le sens où on peut le faire relativement rapidement).
on dit qu’un problème est dans P si :
•
•
il est soluble en temps polynomial
on peut vérifier sa solution en temps polynomial
En générale la classe P est formé des problèmes de décision qui peuvent être résolues par un
algorithme polynomial
Exemples de problèmes P :
-Problème de "être premier" qui à tout entier naturel associe oui s’il est premier, non sinon.
-Problème de "Etre pair" est P
QST : c’est quoi un Temps polynomial ?
Temps polynomial : on dit qu’un algorithme est soluble en temps polynomiale si le
nombre des étapes nécessaires pour compléter l’algorithme pour une entré donné est O(nk)
pour « k » appartient à N+ où « n » est la complexité du problème
9
-Pour mieux comprendre cette définition on cite l’exemple d’algorithme d’affichage suivant :
Le tableau suivant présente le nombre des étapes (le temps) d’exécution des opérations dans
chaque ligne
On prend l’exemple de la ligne numéro 2 :
On a int i =1 ; une opération qui va être exécutée une seule fois
i<=n ; une opération qui va être exécutée 3*(n+1) fois
i++ ; une opération qui va être exécutée 3*n fois
Alors :
int i =1 => 1 opération
i<=n => 3*(n+1) opération
i++ =>3*n opération
En total pour la ligne numéro 2 on a 1+3*(n+1) +3*n opérations ce qui nous donne le temps
nécessaire pour exécuter ces opérations dans cette ligne « unit time » = 6*n+4.
En ajoutant tous les « unit time » de tous les lignes on obtient le T le temps total d’exécution
de l’algorithme qui vaut dans ce cas
T= 9*n2 +11*n +5
En ignorant +11*n +5 et 9 on obtient le temps de complexité de cet algorithme qui vaut
O(n2).
Puisque le temps de complexité de cet algorithme s’écrit sous la forme O(nk) alors on dit que
cet algorithme s’exécute dans le temps polynomial.
En vérité O(nk) « le temps polynomial » est une des fonctions de Big-O !!!
10
(n = size of input, c = some constant)
Voici quelques fonctions de Big-O :
•
•
•
•
•
•
•
•
O(1) - constant time
O(log(n)) - logarithmic time
O((log(n))c) - polylogarithmic time
O(n) - linear time
O(n2) - quadratique time
O(nc) - polynomial time
O(cn) - exponential time
O(n!) - factorial time
Voici le graphe modèle représentant la complexité Big-O de certaines fonctions
2- Classe NP
NP : est une classe très importante de la théorie de la complexité. L'abréviation NP signifie «
non déterministe polynomial ». Un problème de décision est dans NP s'il est décidé par une
machine de Turing non déterministe en temps polynomial par rapport à la taille de l'entrée.
Intuitivement, cela revient à dire qu'on peut vérifier « rapidement » si une solution candidate
est bien solution, on dit qu’un problème est dans NP si :
•
•
Il n’est pas soluble en temps polynomial (par exemple soit soluble en temps
exponentiel)
Si on peut vérifier sa solution en temps polynomial
En général la classe NP est formé des problèmes de décision qui peuvent être résolues par un
algorithme polynomial non déterministe.
11
Exemples de problèmes NP
•
Problème des puzzles
-Supposons que j’ai prétendu d’avoir résolue un puzzle, il vous sera très facile de vérifier si je
dis la vérité, tous ce que vous auriez à faire est de parcourir chaque pièce de puzzle est de
vérifier s’il est correctement connecté à ses voisins
Mais si je vous donne une boite pleine de pièces de puzzles et vous a ensuite demander s’il est
possible d’utiliser toutes les pièces pour créer un puzzle complet
-Pour dire qu’il n’est pas résoluble, vous pouvez essayer toutes les possibilités et de dire que
si aucune configuration ne nous donne une image complète, voir la figure ci-dessous :
Ce programme prendra énormément de temps qui va être bien sûr strictement supérieur au
temps polynomiale presque O(kn ,n!)
Alors ce problème de puzzle est vérifiable en temps polynomiale n’est pas soluble dans ce
temps
Il y on a plusieurs autres exemples des problèmes de cette classe comme :
•
Problème du sac à dos : Il modélise une situation analogue au remplissage d’un sac è
dos, ne pouvant supporter plus d'un certain poids, avec tout ou partie d'un ensemble
donné d'objets ayant chacun un poids et une valeur. Les objets mis dans le sac à dos
doivent maximiser la valeur totale, sans dépasser le poids maximum
•
Coloration de graphe : consiste à attribuer une couleur à chacun de ses sommets de
manière que deux sommets reliés par une arête soient de couleur différente. On
cherche souvent à utiliser le nombre minimal de couleurs
12
3- Classe NP-hard
NP-Hard : Un problème est dans NP-hard si tous les problèmes de NP sont réductibles en
temps polynomiale même s’il n’est pas dans NP
QST : Réductibles ?
Pour qu’on puisse comprendre la définition du classe NP-HARD on doit plutôt comprend la
notion de réductibilité
Supposons qu’on a deux problèmes P1 et P2 :
Supposons qu’il existe un algorithme pour résoudre P2 mais pas pour P1,
Si on peut résoudre le problème P1 en utilisant l’algorithme de P2 donc on n’a pas besoin de
trouver un algorithme pour résoudre P1
Dans ce cas on dit que P1 est réductible à P2 (on écrit P1 ≤ P2) « comme nous pouvant
résoudre P1 avec l’aide de P2 »
D’une manière générale :
Soit deux problèmes A et B
On dit que A est réductible à B ou (A ≤ B)

Il existe une fonction f : β*->α* tel que
-pour tout x ∈ A, x∈ β*  f(x) ∈ B
Si f s’exécute en temps polynomiale dans ce cas on dit que A est réductible en temps
polynomiale à B on note (A ≤p B)
Puisqu’on a défini la notion de la réduction polynomiale on retourne maintenant à la
définition de NP-hard
Soit la figure ci-dessous
13
Supposons que la classe NP ne contient que les problèmes (A, B, C, D), soit le problème X
Si A ≤p X et A ≤p X et A ≤p X et A ≤p X => X∈ NP-hard
Exemples de problèmes NP-hard :
•
Halting Problem: Déterminer pour un algorithme déterministe arbitraire A
et une entrée I si l'algorithme A avec l'entrée I se termine un jour (ou entre dans une
boucle infinie).
Ce problème est dans NP-hard, mais n’est pas dans NP.
Hatling problem est indécidable, il n'existe donc aucun algorithme pour résoudre ce
problème => alors il n’est pas dans NP.
Construisons un algorithme A dont l'entrée est une formule prépositionnelle X.
Supposons que X a « n » variables.
- L'algorithme A essayé toutes les 2n affectations de vérité possibles et vérifie si X est
satisfiable.
- S'il est satisfait alors A s'arrête.
- Si X n'est pas satisfiable, alors A entre dans une boucle infinie.
- Donc A s'arrête sur l'entrée si X est satisfiable.
- Si nous avions un algorithme en temps polynomial pour le problème d'arrêt, alors nous
pourrions résoudre le problème de satisfiabilité en temps polynomial en utilisant A et X en
entrée de l'algorithme pour le problème d'arrêt.
- Le problème d'arrêt est donc un problème NP-difficile qui n'est pas dans NP.
1.4 NP-Complet
1.4.1 Définition
Un problème est NP-complet lorsqu'il peut être résolu par une classe restreinte
d’algorithmes de recherche de force brute et qu'il peut être utilisé pour simuler tout autre
problème avec un algorithme similaire.
Plus précisément, chaque entrée au problème doit être associé à un ensemble de solutions de
longueur polynomiale, dont la validité peut être testée rapidement (en polynôme time, par
exemple) que la sortie pour toute entrée est « oui » si la solution set est non vide et "non" s'il
est vide. La classe de complexité des problèmes de cette forme est appelée NP, abréviation de
" temps polynomial non déterministe ".
On dit qu'un problème est NP-difficile si tout en NP peut être transformé en temps
polynomial en un problème, et un problème est NP-complet s'il est à la fois dans NP et NPdifficile. Les problèmes NP-complets représentent les problèmes les plus difficiles en NP.
Si tout problème NP-complet a un algorithme polynomial, tous les problèmes de NP le sont.
L'ensemble des problèmes NP-complets est souvent désigné par NP-C ou NPC.
14
Bien qu'une solution à un problème NP-complet puisse être vérifiée "rapidement", il n'existe
aucun moyen connu de trouver une solution rapidement. C'est-à- dire que le temps
nécessaire pour résoudre le problème en utilisant n'importe quel algorithme couramment
connu augmente rapidement avec la taille du problème. En conséquence, déterminer s’il est
possible de résoudre rapidement ces problèmes, appelé problème P versus NP, est l’un des
problèmes fondamentaux non résolus en informatique de nos jours.
Tandis qu'une méthode permettant de calculer les solutions aux problèmes NP-complets
reste rapidement à découvrir, les informaticiens et les programmeurs rencontrent encore
fréquemment des problèmes NP-complets
Les problèmes NP-complets sont souvent traités en utilisant des méthodes heuristiques et
des algorithmes d'approximation
1.4.2 La relation entre les classes P et NP
1- Présentation informelle
La Présentation par l'Institut Clay :
Supposons que vous soyez chargé de loger un groupe de quatre cents étudiants. Le nombre de
places est limité, seuls cent étudiants se verront attribuer une place dans la résidence
universitaire.
Pour compliquer les choses le doyen vous a fourni une liste de paires d'étudiants
incompatibles, et demande que deux étudiants d'une même paire ne puissent jamais
apparaître dans votre choix final.
C'est un exemple de ce qu'un informaticien appelle un problème NP.
En effet, il vous est facile de vérifier qu'une liste de cent étudiants fournis par un collègue est
correcte, c'est-à-dire que les étudiants d'une même paire de la liste du doyen n'apparaissent
jamais tous deux dans la liste de votre collègue.
15
Toutefois, produire une telle liste à partir de zéro paraît tellement difficile qu'elle en est
même impraticable, car le nombre de façons de regrouper cent étudiants parmi quatre cents
dépasse le nombre d'atomes de l'univers ! Pour cette raison, aucune civilisation du futur ne
peut même espérer construire un super-ordinateur capable de résoudre ce problème par
force brute, c'est-à-dire en testant toutes les combinaisons de cent étudiants. Peut-être que
cette apparente difficulté ne fait que refléter le manque d'ingéniosité de nos programmeurs.
Il s'avère que l'une des questions les plus importantes de la science informatique est de savoir
s'il existe des problèmes dont la solution peut être vérifiée rapidement, mais qui requièrent
un temps incroyablement long pour être résolus par un quelconque procédé. […] Stephen
Cook et Leonid Levin ont formulé indépendamment le problème P (facile à trouver) vis-à-vis
de NP (facile à vérifier) en 1971.
2- QST : est-ce-que P= NP ou P ! =NP ??
La question « P = NP ? » est l’un de sept problèmes sélectionnés par l’Institut Clay en l’an
2000 : comme pour les six autres, une somme d’un million de dollars attend celle, celui ou
ceux qui le résoudront. Certains affirment que c’est le plus important des sept problèmes et
donc la principale énigme des mathématiques d’aujourd’hui. Il semble aussi être le seul dont
la résolution aurait des conséquences pratiques et sa portée philosophique est la plus grande :
la question « P = NP ? » concerne la nature de la recherche de solution(s) dans un ensemble
exponentiel de possibilités, ce qui est le problème même de la recherche scientifique.
3- Importance et implications de P = NP
Un des aspects essentiels de ce problème provient du fait qu'il existe une classe de problèmes
très importants dits « NP-complets » qui est la sous-classe de NP dont les problèmes sont au
moins aussi durs que tous les problèmes de NP, autrement dit les problèmes les plus durs de
NP.
Ils sont importants à double titre :
16
D’une part, ils possèdent souvent une importance intrinsèque (de nombreux problèmes
fondamentaux, à incidences pratiques, dans plusieurs domaines étant NP-complets) et,
d'autre part, par définition de la NP-complétude, si on trouve une solution en temps
polynomial à l'un de ces problèmes, alors cette solution peut être utilisée pour résoudre, en
temps polynomial, tous les problèmes NP-complets, et plus généralement tous les problèmes
NP. Le théorème de Cook montre que le problème SAT est NP-complet, ce résultat a ensuite
été largement réutilisé pour établir une liste de problèmes NP-complets.
Les problèmes NP-complets concernent un grand nombre de domaines différents :
-
La biologie, avec par exemple l'algorithme de détermination de la séquence d'ADN qui
correspond le mieux à un ensemble de fragments, ou le calcul de solutions optimales
en économie, ou dans les processus de fabrication ou de transport.
Les problèmes NP-complets concernent un grand nombre de domaines différents : la
biologie, avec par exemple l'algorithme de détermination de la séquence d'ADN qui
correspond le mieux à un ensemble de fragments, ou le calcul de solutions optimales en
économie, ou dans les processus de fabrication ou de transport.
Trouver un algorithme qui résout un problème NP-complet, comme le problème du voyageur
de commerce, en temps polynomial suffirait à démontrer que P = NP, ce serait alors toute
une série de problèmes très importants qui se trouveraient résolus (et, dans un même temps,
si le polynôme est de degré petit, les systèmes de cryptographie à clé publique seraient
cassés). Même sans exhiber un algorithme, une preuve pourrait donner des indices précieux
pour construire un tel algorithme, ou pour le moins en relancer sérieusement la recherche,
car on le saurait alors possible avec certitude. En admettant que les degrés des polynômes
impliqués soient accessibles, l'existence de cet algorithme pourrait remettre en question
l'utilisation des systèmes de cryptographie à clé publique, qui servent notamment pour la
sécurisation des transactions bancaires. La sécurité repose sur l'assertion que ce n'est pas
possible en temps polynomial.
4- Implications de P ≠ NP
S'il est démontré que P ≠ NP, il serait alors impossible de résoudre tous les cas des problèmes
NP-complets dans un temps polynomial, et ces problèmes seraient alors hors de la classe des
problèmes qui peuvent être traités — théoriquement — de manière efficace.
Cela signifierait également qu'il est, fondamentalement, plus difficile de chercher la solution
d'un problème que de vérifier qu'une réponse donnée a priori est effectivement une solution
valable du problème.
Mais cette situation n'aurait pas que des inconvénients. La cryptographie à clé publique et la
sécurité bancaire seraient assurées, mais plus encore : il est démontré que si P ≠ NP, chaque
problème NP (et non P) a alors une preuve à divulgation nulle de connaissance assurée et
démontrée, ce qui rend de grands services en matière d'authentification.
Une preuve de P ≠ NP serait également un approfondissement de la théorie de la complexité
algorithmique : elle donnerait sans doute des réponses à la question de savoir « pourquoi » il
est impossible de faire mieux que la force brute pour certains problèmes, et apporterait des
pistes pour améliorer tout de même l'efficacité des algorithmes résolvant les problèmes NPcomplets (sans les rendre polynomiaux pour autant, bien entendu) et pour démontrer plus
formellement la sécurité des systèmes cryptographiques
17
5- Cook-levin théorème
Ce théorème présente une idée qui montre qu’un problème appeler SAT est le problème le
plus difficile dans NP.
D’autre mots nous pouvons utiliser un solveur pour SAT pour résoudre toute autres dans NP
SAT encapsule tous les problèmes à l’intérieur de NP signifiant que n’importe quel problème
dans NP peut être transformé en une version SAT avec ceci nous pourrions prouver que la
résolution de SAT est facile cela signifierait que tous les problèmes NP sont facile
18
2 Théorie des jeux
2.1 Introduction
La théorie des jeux permet une analyse formelle des problèmes posés par l’interaction
stratégique d’un groupe d’agents rationnels poursuivant des buts qui leur sont propres
2.2 Formalisation d’un jeu
2.2.1 Qu’est-ce qu’un jeu ?
. Qui ? (Joueurs)
. Quoi ? (Les actions disponibles)
. Quand ? (Déroulement du jeu)
. Combien ? Quelle est la valeur pour chaque joueur des différents résultats possibles du jeu ?
2.2.2 Utilité
Une hypothèse de base de la théorie des jeux est de considérer que les agents sont rationnels,
c’est-à-dire qu’ils tentent d’arriver à la situation la meilleure pour eux.
2.3 Catégories des jeux
2.3.1 Jeux coopératifs
Exemple :
Vendeur et acheteur négocient le prix d’un bien ou d’un service
2.3.2 Jeux non-coopératifs
Les éléments qui caractérisent les jeux non-coopératifs sont les suivants
➢
➢
Un petit nombre d’agents (les joueurs) qui interagissent.
Les décisions de chaque agent influencent les gains des autres.
19
➢
La prise en compte de l’information dont chaque agent dispose au moment de
prendre sa décision.
➢
La prise en compte du déroulement des décisions dans le temps (décisions
simultanées ou séquentielles)
Décisions simultanées  matrice de jeu (jeux en forme normale).
Décisions séquentielles  arbre de jeu (jeux en forme extensive).
Exemple :
Deux entreprises concurrentes supposent que le comportement des autres déterminants,
séparément le pricing et la stratégie marketing pour gagner des parts de marché.
2.3.3 Jeux sous formes stratégique
Définis par :
. Un ensemble N = {1,...,n} de joueurs.
. Pour chaque joueur i un ensemble d’actions Si = {s1,...,sni}.
. Pour chaque joueur i une fonction d’évaluation µi : S1 ×...× Sn →IR, qui à chaque ensemble
d’actions associe les gains du joueur i.
2.3.4 Le dilemme des prisonniers
Enoncé
Deux individus (David et Julia) sont arrêtés par la police suite à un vol à main armée et ils
sont enfermées dans deux cellules séparées sans possibilité de communiquer.
Chaque individu est interrogé séparément et il a le choix de nier d’avoir commis le vol ou
dénoncer son complice comme seul responsable.
Gains des individus (connus par eux) ≡ années de prisons (relation négative) :
Si Julia et David dénoncent tous les deux, ils sont condamnés à 8 ans de prison.
*S’ils nient tous les deux, ils auront 1 année de prison du fait de l’absence de preuves
accablantes.
*Si un seul dénonce, il est relâché en récompense de sa coopération et l’autre est condamné à
10 ans de prison.
2.3.5 Jeux sous formes stratégique
20
2.3.6 Jeux en forme extensive
Un jeu sous forme extensive est défini par :
. Un ensemble N = {1,...,n} de joueurs
. Un arbre fini composé de :
. Un ensemble des noeuds {A,B,C,...} représentant les coups.
. Un ensemble des branches {x,y,z,...} représentant les alternatives à chaque coup
. Une fonction de nommage qui indique à chaque nœud quel est le joueur qui doit jouer
. Une fonction de valuation qui associe à chaque nœud terminal un vecteur de nombres
représentant les gains de chacun des joueurs
. Une partition des nœuds en un ensemble d’ensembles d’informations représentant les
croyances (imparfaites) des joueurs.
2.3.7 Jeux sous forme extensive - Ensemble d’informations
Information Imparfaite
Si à un moment donné, un joueur ne peut distinguer deux nœuds, nous dirons que ces deux
nœuds appartiennent au même ensemble d’information.
Ensemble d’Informations
Définition
A chaque étape d’un jeu en forme extensive, on appelle un ensemble d’information (hi) la
collection de tous les nœuds que le joueur qui doit jouer à cette étape ( i ) ne peut distinguer.
On note par Hi l’ensemble des ensembles d’information du joueur i
Représentation
Un ensemble d’information => une courbe en pointillée reliant les nœuds qui appartiennent
à cet ensemble
2.3.8 Relation entre forme stratégique et forme extensive
. A chaque jeu sous forme extensive correspond un jeu sous forme stratégique dans lequel les
joueurs choisissent simultanément les stratégies qu’ils mettront en œuvre.
. En revanche, un jeu sous forme stratégique peut correspondre à plusieurs jeux sous forme
extensive différents.
21
2.4 Elimination des stratégies dominées
2.4.1 Stratégie pure
Définition
Une stratégie pure d’un joueur est un plan d’action qui prescrit une action de ce joueur pour
chaque fois qu’il est susceptible de jouer
2.4.2 Stratégie mixte
Définition
Une stratégie mixte du joueur i est une distribution de probabilités Pi définie sur l’ensemble
des stratégies pures du joueur i. On note Σi l’ensemble des stratégies mixtes du joueur i et par
σi une stratégie mixte de ce joueur.
Jouer une stratégie mixte, c’est :
•
Tirer au hasard une des stratégies pures en respectant la distribution de
probabilités spécifiée par la stratégie mixte.
•
Comme si le joueur jetait un dé au début du jeu pour choisir ses actions
effectives.
•
Ce dé étant pipé de manière à respecter les probabilités de la stratégie mixte
utilisée.
2.4.3 Stratégie dominée
Une stratégie (Si) est (strictement) dominée pour le joueur i s’il existe une stratégie (Si’) telle
que pour tous les profils S-i :
µi(Si’; S-i) > µi(Si; S-i)
2.4.4 Elimination des stratégies dominées
22
Un jeu est dit résoluble par élimination itérative des stratégies dominées, si on obtient un
unique profil en éliminant successivement des stratégies (strictement) dominées.
. Les profils obtenus après élimination itérative des stratégies (strictement) dominées (EISD)
ne dépendent pas de l’ordre choisi pour l’élimination des stratégies.
. Problème majeur de cette méthode : tous les jeux ne sont pas résolubles par (EISD).
2.5 Equilibre de Nash
Définition
La notion d’équilibre de Nash est une situation telle qu’aucun joueur n’a intérêt à dévier
(seul) de la situation obtenue
23
Propriétés
. Un profil (unique) obtenu par élimination itérative de stratégies (strictement) dominées
(EISD) est un équilibre de Nash (et c’est le seul équilibre du jeu).
. Un jeu (en stratégies pures) peut avoir plusieurs équilibres de Nash, mais il peut aussi n’en
avoir aucun.
2.5.1 Equilibre de stratégie mixte
L’expectation du joueur 2 de jouer A = 4*p + 0*(1-p)= 4p
L’expectation du joueur 2 de jouer B = 0*p + 2*(1-p)= 2(1-p)
Pour rendre le joueur 2 indifférent du choix entre A et B :
4p=2(1-p)
=> p=1/3
La prévision du joueur 1 de jouer A = 2*q + 0*(1-q)= 2q
La prévision du joueur 1 de jouer B = 0*q + 4*(1-q)= 4(1-q)
Pour rendre le joueur 2 indifférent du choix entre A et B :
2q=4(1-q)
=> q=2/3
24
2.6 Critère de Pareto
2.6.1 Définition
Critère de Pareto ou Optimum de Pareto est une combinaison de stratégies telle qu’il n’est
pas possible d’en trouver une autre qui donne plus de bien être (gain) à tous les joueurs
(agents).
Autrement dit :
On ne peut pas améliorer la situation d’un agent sans diminuer le bien être (gain) d’un autre
agent.
2.6.2 Comment on cherche les optimums de Pareto
Pour rechercher les optimums de Pareto d’un jeu on compare les gains de chaque
combinaison de jeu avec toutes les autres combinaisons.
Si on trouve une combinaison pour laquelle l’un ou les deux joueurs gagnent sans que l’un
d’eux perdre, alors ce n’est pas un optimum de Pareto.
Exemple
Les optimums de Pareto sont les combinaisons suivantes :
(E,B) // (F,B) // (F,D) // (G,B) // (G,C)
Dans le dilemme des prisonniers on a
(Dénoncer,Dénoncer) est un équilibre de Nash ,mais, n’est pas un optimum de Pareto.
Propriété :
Un équilibre de Nash n’est pas nécessairement un optimum de Pareto.
25
2.6.3 Niveau de sécurité
On définit le niveau de sécurité d’une stratégie Si pour le joueur i comme le gain minimum
que peut apporter cette stratégie quel que soit le choix des autres joueurs.
min s−i µi(si, s−i)
On définit le niveau de sécurité d’un joueur i comme le niveau de sécurité maximal des
stratégies de i.
2.7 La guerre des sexes
Paul (joueur 1) et Jacqueline (joueur 2) doivent décider comment organiser leur soirée.
Ils ont le choix entre : Aller à un match de Football (F), aller à l’opéra (O).
Pour les deux, ce qui compte avant tout c’est d’être ensemble. Mais : Jacqueline a une
préférence pour l’opéra, Paul pour le Football.
Si chacun sort seul, alors chacun reçoit un gain nul.
Si le couple sort ensemble, celui qui se rend au concert de son premier choix reçoit 2 unités
de gain, cependant que l’autre ne reçoit qu’une seule unité de gain.
2.7.1 La forme normale de ce jeu
Sur l’exemple précédent le niveau de sécurité des deux joueurs est 0.
. Supposons que le joueur 1 joue aléatoirement F et O avec une probabilité de ½
µ1(< (F, 1/2),(O,1/2) >, F) = 1/2 ∗ 2 + 1/2 ∗ 0 = 1
µ1(< (F, 1/2), (O, 1/2) >,O) = 1/2 ∗ 0 + 1/2 ∗ 1 = ½
Avec cette stratégie le niveau de sécurité du joueur 1 est ½
26
Soit x la probabilité avec laquelle le joueur 1 joue F, pour quel x maximise-t-il son niveau de
sécurité ?
µ1(< (F, x),(O,1-x) >, F) = x ∗ 2 + (1-x) ∗ 0 = 2x
µ1(< (F, x), (O, 1-x) >,O) = x ∗ 0 + (1-x) ∗ 1 = 1-x
max x min(2x , 1 - x) = 1/3
. Le niveau de sécurité du joueur 1 est donc de ⅔.
2.7.2 Représentation graphique
Soit y la probabilité avec laquelle le joueur 2 joue F, quelle est la meilleure réponse du joueur
1?
27
µ1(F,< (F, y),(O,1-y) >) = y ∗ 2 + (1-y) ∗ 0 = 2y
µ1(O,< (F, y), (O, 1-y) >) = y ∗ 0 + (1-y) ∗ 1 = 1-y
Donc:
. Si 2y > 1 - y (y > 1/3), la meilleure réponse du joueur 1 est de jouer F
. Si 2y < 1 - y (y < 1/3), la meilleure réponse du joueur 1 est de jouer O
. Si 2y = 1 - y (y = 1/3), le joueur 1 est indifférent entre F et O, il peut donc jouer l’un ou
l’autre, ou n’importe quelle combinaison des deux
Soit x la probabilité avec laquelle le joueur 1 joue f, quelle est la meilleure réponse du joueur 2
?
µ2(< (F, x),(O,1-x) >, F) = x ∗ 1 + (1-x) ∗ 0 = x
µ2(< (F, x), (O, 1-x) >,O) = x ∗ 0 + (1-x) ∗ 2 = 2(1-x)
Si x > 2(1 - x) (x > 2/3), la meilleure réponse du joueur 2 est de jouer f
Si x < 2(1 - x) (x < 2/3), la meilleure réponse du joueur 2 est de jouer o
Si x = 2(1 - x) (x = 2/3), le joueur 2 est indifférent entre f et o, il peut donc jouer l’une ou
l’autre, ou n’importe quelle combinaison des deux.
Les gains des deux joueurs avec un profil en stratégie mixte σ sont donc :
µ1 (σ) = x*y*2+x*(1-y)*0+(1-x)*y*0+(1-x)*(1-y)*1
=3xy-x-y+1
µ2(σ) = x*y*1+x*(1-y)*0+(1-x)*y*0+(1-x)*(1-y)*2
=3xy-2x-2y+2
Les gains des deux joueurs avec un profil de stratégie mixte σ sont :
µ1(σ) = 3xy-x-y+1
µ2(σ) = 3xy-2x-2y+2
28
σ est un équilibre de Nash si et seulement si pour tout i et tout si ∈ Si :
µi(σ i , σ-i ) ≥ µi(si, σ-i)
Le profil σ*=(<(f,2/3),(o,1/3)> , <(f,1/3),(o,2/3)>) est donc un équilibre de Nash en stratégie
mixte.
±Les gains des deux joueurs avec σ* sont :
µ1(σ*) = 3*1/3*2/3-1/3-2/3+1
= 2/3
µ2(σ*) = 3*2/3*1/3-2*2/3-2*1/3+2
= 2/3
La fonction de meilleure réponse du joueur 1 est
1
R1 =
si y>1/3
[0,1] si y=1/3
0 si y<1/3
La fonction de meilleure réponse du joueur 2 est :
1 si x>2/3
R2 =
[0,1] si x=2/3
0
si x<2/3
29
Chapitre 2
Les problèmes de la recherche
opérationnelle
3 L’Optimisation multi-objectif
3.1 Introduction
3.1.1 Définition
L'optimisation multi-objectif appelée aussi Programmation multi-objective ou optimisation
multicritère est une branche de l'optimisation mathématique traitant spécifiquement des
problèmes d'optimisation ayant plusieurs fonctions objectives.
3.1.2 Formulation mathématique d’un PMO
Généralement, un problème d’optimisation multi-objectif est formulé comme suit :
Avec n ≥ 2 le nombre de fonctions objectif, x = (x1, x2, . . ., xr) un vecteur de variables de
décision ou solution, D est l’ensemble des solutions réalisables et F(x) est le vecteur objectif.
L’ensemble O = F(D) correspond aux images des solutions réalisables dans l’espace des
objectifs et y = (y1, y2, . . ., yn), avec yi = fi(x), est le point de l’espace des objectifs
correspondant à la solution x.
30
L'espace des critères est l'image de l'espace réalisable notée O = F(D). Les éléments de F
sont appelés (fonctions) vecteurs objectifs ou vecteurs de critère et désignés par F(x) où
𝑇
f = (f1 , f2 , . . ., f𝑘 ) et fi = fi (x) pour tout i= 1,...,k sont des valeurs de vecteurs de critère.
3.1.3 Principe
Un problème d'optimisation multi-objectif, consiste à optimiser k fonctions objectif
simultanément (Maximiser k fonctions, Minimiser k fonctions, Maximiser et
Minimiser k fonctions). La présence de multiples objectifs rend le problème
d'optimisation intéressant à résoudre, car aucune solution ne peut être qualifiée comme une
solution optimale aux objectifs contradictoires multiples.
3.1.4 Méthodes d’optimisation multi-objectif
Principalement, Il existe deux catégories de méthodes d’optimisation multi-objectif, qui
sont :
o
Méthodes exactes.
o
Méthodes heuristiques.
31
Un schéma explicatif des différentes méthodes d’optimisation multi-objectif :
3.1.5 Optimalité de Pareto
Il s’agit d’une approche d’optimisation multi-objective qui définit l'efficacité comme
l'impossibilité d'améliorer un objectif de la solution sans dégrader l'intérêt d'un
autre objectif.
Il utilise la notion de dominance pour comparer les solutions et leur affecter un score ou
sélectionner des solutions
Notion de la Dominance de Pareto :
Pour un problème de minimisation,
Une solution X domine, au sens de Pareto une solution Z si et seulement si :
Dans le contexte de l’optimisation multi-objectif, on vise en général :
▪
À trouver l’ensemble des solutions Pareto optimales, c’est-à-dire celles qui
couvrent tout le front de Pareto.
▪
À s’assurer que les solutions soient suffisamment différentes les unes des autres et
qu’elles ne soient pas biaisées en favorisant un objectif particulier.
32
3.2 Exemple
Si on suppose que :
•
La personne A a besoin de X1 ml d'eau
•
La personne B a besoin de X2 ml d'eau,
➔ Nous pouvons définir un vecteur X = {x1 ; x2} comme une variable de décision.
Tel que x1 + x2 <= 100 et x >= 0
On peut définir deux fonctions objectives F1= f(x1) et F2= f(x2).
Chaque fonction définissant la satisfaction de chaque personne après avoir bu de l'eau.
➔ Alors la fonction objective sera sous la forme F = {F1(x) ; F2(x) }.
On peut représenter ce problème comme suit :
3.3 La différence entre l’optimisation multi-objectif et
mono-objectif
Contrairement à l'optimisation mono-objectif, la solution d'un problème multi-objectif
n'est pas unique, en raison de la contradiction et de l’incompatibilité des fonctions
objectifs. De ce fait il est impossible de trouver une seule solution qui serait optimale pour
tous les objectifs simultanément, mais un ensemble de solutions non dominées,
connues comme l'ensemble des solutions de meilleur compromis. Compromis signifie que
l'on ne peut pas augmenter le niveau de satisfaction pour un objectif sans réduire cela pour
un autre objectif. Pour des problèmes de programmation multi-objectifs le concept de
33
solutions non-dominées est utilisé. Une solution de compromis est choisie parmi
l'ensemble des solutions non-dominées.
34
4 Problème de tournées de véhicules
4.1 Introduction
Depuis la seconde moitié du 20e siècle, des experts en recherche opérationnelle se sont
efforcés de résoudre les problèmes de transport routier qui se trouvent au cœur des
problématiques de la logistique. Avant de parvenir au consommateur final, un produit
parcourt, en général, des centaines voire des milliers de kilomètres par voie terrestre. Dans le
monde industriel où le transport est critique, le problème de tournées de véhicules (VRP) a
fait l'objet de recherches intensives depuis plus de 50 ans, liées à son importance dans le
domaine de la logistique.
4.2 Généralités
4.2.1 Définition
Le problème de tournées de véhicules (VRP) est un problème de recherche opérationnelle
et d'optimisation combinatoire. Il appartient à la catégorie des problèmes de transport, tout
comme le problème du voyageur de commerce (TSP).
Ce problème est un problème NP-difficile qui a été présenté pour la première fois sous le nom
de Truck Dispatching Problem par Dantzig et Ramser (1954) et a depuis fait l'objet de
recherches intensives pour le modéliser et le résoudre.
Dans sa version de base appelé VRP avec contraintes de capacité (en Anglais : Capacitated
VRP) (CVRP), une flotte de véhicules à capacité limitée, placée dans un dépôt, doit assurer
des tournées entre plusieurs sommets (villes ou clients) ayant demandé chacun une certaine
quantité de produits. L'ensemble des sommets visités par un véhicule représente la tournée
de celui-ci. Chaque sommet doit recevoir le service une et une seule fois et chaque tournée
doit commencer et se terminer au dépôt.
L'objectif du CVRP est de minimiser la somme des distances des tournées, tout en respectant
la contrainte de capacité des véhicules : la quantité de produits livrées sur une tournée ne
doit pas excéder la capacité du véhicule qui l'assure.
4.2.2 Formulation mathématique
Les paramètres qui interviennent dans la formulation du problème sont :
V= {v0,v1,v2,…,vn} : Ensemble de sommets, v0 représente le dépôt
K= {1,2,…,m} : Ensemble de véhicules disponibles
n= nombre de sommets
35
m= nombre de véhicules
C= la capacité du véhicule
qi= demande du sommet i (q0= 0)
dij= la distance entre i et j
yi = variable réelle, modélisant la quantité totale à livrer par le véhicule qui visite le client
depuis le dépôt jusqu’à i inclus
➢ Les variables de décision
➢
Fonction objective
→Minimiser la distance parcourue
➢
Les contraintes
→ Les contraintes qui assurent que chaque client est visité et est quitté
une seule fois :
36
→La contrainte qui garantit la disponibilité du véhicule :
→La contrainte qui sert à déduire yj de yi si une tournée livre le client i après
le client j et elle permet également d’éviter les sous-tours
→La contrainte qui permet de définir et de borner la variable yi telle que quel
que soit le client i, yi doit au moins satisfaire la quantité demandée qi sans
dépasser la capacité C du véhicule.
→ La contrainte qui assure que les variables sont binaires
4.2.3 Les variantes du VRP
Le CVRP est une version simplifiée au regard de l’ensemble des problèmes de tournées de
véhicules que l’on peut rencontrer dans la réalité. En effet, en fonction des contraintes à
prendre en compte, plusieurs variantes du VRP ont été définies en littérature.
Les variantes
Les contraintes
VRPTW (Vehicle Routing
Problem with Time
Windows)
Chaque client doit fournir une limite de temps supérieure et
inférieure entre lesquelles le service doit commencer
VRPB (Vehicle Routing
Problem with Backhauls)
Un ensemble de clients à qui des produits doivent être livrés et
un ensemble de fournisseurs dont les marchandises doivent
être amenées au dépôt.
37
En outre, sur chaque tournée, toutes les livraisons doivent être
effectuées avant que les marchandises puissent être ramassées
pour éviter de réarranger les charges sur le véhicule
DVRP (Dynamic Vehicle
Routing Problem)
L’apparition d'un nouveau client en cours de la journée.
MDVRP (Multi-Depot
Vehicle Routing Problem)
Il y a plusieurs dépôts disponibles qui sont distribués
géographiquement. Chaque véhicule part et revient vers son
dépôt initial
VRPPD (Vehicle Routing
Problem with Pick-up and
Delivery)
Chaque client doit fournir deux positions géographiques
différentes : la première indique le lieu de ramassage du
produit et la seconde indique le lieu de livraison du produit. Ce
type de problème introduit une contrainte de précédence :
pour chaque tournée, l'opération de ramassage chez un client
doit précéder l'opération de livraison
VRPHF (Vehicle Routing
Problem with
Heterogeneous Fleet)
Une flotte de véhicules de types différents. En fait, nous
pouvons distinguer ces véhicules par leurs capacités, leurs
vitesses ou leurs coûts de déplacement, etc.
VRPSD (Vehicle Routing
Problem with Split Delivery)
Chaque client peut être visité plus d'une fois si cela est
nécessaire. Autrement dit, la demande de client peut être
divisée sur plusieurs tournées
m-VRP (Vehicle Routing
Problem with Limited
Number of Vehicles)
Un nombre limité de véhicules
Le décideur doit changer la planification des véhicules en
réponse aux nouvelles demandes qui arrivent au fil du temps.
4.2.4 L’utilité du VRP et ses applications
Les principales motivations de l'étude du VRP sont d'une part la difficulté de sa résolution
et d'autre part ses nombreuses applications pratiques en logistique. Ce deuxième point
concerne les retombées économiques et environnementales liées à la minimisation des coûts
des systèmes de transport. En effet et, selon Toth and Vigo [2001], les frais de transport
représentent généralement entre 10% et 20% des prix finaux des marchandises sur le
marché, et les procédures informatisées basées sur des techniques d'optimisation permettent
de faire des économies de l'ordre de 5% à 20% sur ces coûts de transport. De plus, si on
minimise le trajet parcouru, on minimise l’émission des gaz à effet de serre (ex : CO2), et
donc on garantit la satisfaction des clients tout en protégeant l’environnement
(Réchauffement climatique…).
Secteur économique
Applications
Industrie automobile
Distribution de pièces de rechange
La livraison des produits
Carburant, gaz naturel, béton
Transport de nourriture
Grands détaillants ou petits magasins
38
La livraison de nourriture aux
particuliers
Vente au détail
Lait, aliments surgelés, plats préparés livrés à domicile
La livraison d'appareils
Médicaments aux pharmacies
Santé
Presse
Des journaux et des magazines
Secteur bancaire
La livraison d'argent aux banques, perception d'argent
des commerçants et courriers
Secteur public
Poubelles domestiques ; poubelles publiques, nettoyage
des rues, sablage des routes en hiver
Fabriquant
Organisation des mouvements d'une flotte de robots de
transport
Industrie
Approvisionnement en parties et marchandises parmi
différents emplacements
Agriculture
Collecte d'animaux, lait, céréales, livraison de nourriture
animale
Industrie de transport
Entreprises de collecte et de livraison
4.3 Les méthodes de résolution du VRP
4.3.1 Classification des méthodes
Dans le cadre de la résolution du problème de tournées de véhicules, plusieurs méthodes
ont été développées. Ces méthodes peuvent être classées en deux catégories :
➢
Les méthodes exactes
Le principe de ces méthodes est de trouver la solution optimale en explorant l’ensemble
des solutions possibles. L’algorithme de BRANCH & BOUND est parmi ces méthodes, il
consiste à considérer l’ensemble des solutions possibles et en éliminer les mauvaises sans les
évaluer. Mais, malgré l’évolution de ces méthodes, elles restent inappropriées aux problèmes
d’optimisation puisqu’elles ne peuvent résoudre que des problèmes de petites instances.
➢ Les méthodes approchées
Contrairement aux méthodes exactes, les méthodes approchées donnent des solutions
acceptables dans un temps raisonnable, mais qui ne sont pas forcément des solutions
optimales. Ces méthodes sont constituées des heuristiques et des métaheuristiques.
39
Les heuristiques sont des moyens de guider les choix qu’un algorithme doit faire pour
réduire sa complexité. Parmi ces heuristiques on trouve : l’algorithme des savings [Clark et
Wright, 1964] qui est considéré comme une méthode constructive, et l’algorithme de
balayage de [Gillet et Miller, 1974] qui consiste à séparer le problème en deux phases, la
partition et le parcours (algorithme à deux phases).
Les métaheuristiques sont des algorithmes itératifs, inspirés de la nature et qui
progressent vers l’extremum global d’une fonction objectif. Elles sont bien adaptées aux
problèmes d’optimisation et donnent des solutions de qualité supérieure à celles des
heuristiques.
Les métaheuristiques peuvent être à solution unique comme la recherche tabous et le recuit
simulé, ou à population de solutions comme les algorithmes génétiques et l’algorithme de
colonies de fourmis
-CLASSIFICATION DES METHODES DE RESOLUTION DU VRP-
4.3.2 Heuristique de Clarke & Wright
➢ Présentation de l’algorithme
L’algorithme des "SAVINGS" de Clarke & Wright est sans aucun doute, une des heuristiques
les plus connues pour le VRP.
L'algorithme de Clarke & Wright est un algorithme d’échange dans le sens ou chaque étape
une série de visites est échangée pour un meilleur ensemble de visites.
40
Le principe de cette méthode est de commencer par dédier une tournée à chaque client de
façon de le relier à l’unique dépôt
→ Initialement, nous supposons que tous les deux clients i et j sont visités individuellement
par deux véhicules.
Les clients i et j sont desservis par deux tournées séparées
La distance totale dans ce cas est :
D1 = c0i + c01 + c0j + cj0 = 2(c0i + c0j )
→ On fusionne les deux tournées en une seule si c’est possible, comme illustre la figure cidessous
Les clients i et j sont desservis par une seule tournée
La distance totale dans ce cas est :
D2 = c0i + cij + cj0
En combinant les deux trajets, on obtient le "SAVING" Sij :
Sij = D1-D2 = c0i+c0j-cij
→Après avoir calculer les SAVINGS, on les classe dans l’ordre décroissant
Il existe deux versions d’implémentation de l’algorithme de Clarke & Wright : la version
séquentielle et la version parallèle.
41
➢ La version séquentielle
→Trouver la première liaison réalisable dans la liste, qui peut être utilisée pour étendre l’une
des deux extrémités de la voie actuellement construite.
→Si la route ne peut pas être étendue plus loin, mettre fin à la route. Choisissez la première
liaison possible dans la liste pour commencer un nouvel itinéraire
→Répéter ces 2 dernières étapes jusqu'à ce que plus aucune liaison ne puisse être choisie
➢ La version parallèle
→Si la réalisation d’une liaison donnée en résulte une voie possible selon les contraintes du
VRP, ajoutez cette liaison à la solution sinon, rejeter la liaison.
→Essayez la liaison suivante dans la liste et répéter l'étape précédente jusqu'à ce que plus
aucune liaison ne puisse être choisie.
La distance totale après ces étapes vérifie la relation suivante :
Z = 2 * ∑c0i – dts
(*)
Avec dts = distance totale sauvée
➢ Exemple illustratif
❖
Nous considérons un problème de CVRP avec cinq clients et un dépôt
représenté par zéro.
❖
Les distances cij entre les différents clients d’une part, et entre le dépôt et les
clients d’autre part sont données par la matrice (tableau1):
❖
Les demandes des clients sont données par le tableau suivant (tableau2) :
42
Tableau 1
❖
Tableau 2
On suppose que la capacité maximale des véhicules est C = 100
Résolution :
✓ Étape 1 :
On calcul les savings Sij en utilisant la formule suivante :
Sij = coi+coj-cij
Exemple : S12 = c01+c02-c12 = 28+31-21 = 38
Par la même démarche, on trouve la matrice des savings suivante :
43
✓
Étape 2 :
On trie les savings d’une manière décroissante, on trouve la liste des paires suivante :
1-5
1-2
2-4
4-5
2-5
1-4
3-5
1-3
3-4
2-3
En partant du haut de la liste, on procède comme suit :
•
Version séquentielle
Les clients 1 et 5 sont considérés en premier. Ils peuvent être affectés à la même route
puisque leur demande totale de 69 unités ne dépasse pas la capacité du véhicule (100). Les
clients 1 et 5 sont reliés.
Ensuite, nous considérons les clients 1 et 2. Si on ajoute la liaison entre ces deux clients, la
demande totale de la route 2-1-5 ou 5-1-2 (104 unités) va dépasser la capacité du véhicule
(100). Par conséquent, les clients 1 et 2 ne sont pas reliés.
44
Si les points 2 et 4, ce qui est la paire suivante dans la liste, ont été reliés à ce stade, nous
serions construisons plus d’une route (1-5 et 2-4). Puisque la version séquentielle de
l’algorithme se limite à une seule voie à la fois, les clients 2 et 4 ne seront pas reliés.
Puis, nous considérons les clients 4 et 5. Si on ajoute la demande du client 4 (25) à la
demande de la voie actuelle 1-5 (69), on obtient une demande totale de 94 unités. Puisque
cette demande est inférieure à la capacité du véhicule (100), les clients 4 et 5 seront reliés.
En parcourant la liste, nous trouvons que, en raison de la restriction des capacités pas plus de
points peuvent être ajoutés à l’itinéraire. Donc, la tournée du véhicule 1 sera (0-1-5-4-0).
Dans le passage suivant de la liste des "savings" nous ne trouvons que la paire de points 2 et
3. Ces deux points peuvent être visités sur la même route, et nous faisons le trajet du véhicule
2 (0-2-3-0)
La distance sauvée dans ce cas est :
dts = S15+S54+S23 = 42+34+13 = 89
La distance totale parcourue, d’après la formule (*), est :
Z1= 276 – 89 = 187
45
•
Version parallèle
Dans la version parallèle 1 et 5 sont également combinés en premier. Comme la version
parallèle peut construire plus d’une voie à la fois, les points 2 et 4 sont également combinés.
Enfin, les points 3 et 5 sont combinés. Par conséquent, la tournée du véhicule 1 sera (0-1-5-30), et le trajet du véhicule 2 sera (0-2-4-0).
01
02
03
La distance sauvée dans ce cas est :
04
dts = S15+S53+S24 = 42+27+36 = 105
La distance totale parcourue, d’après la formule (*), est :
Z2 = 276 – 105 = 171
Remarque :
L’algorithme parallèle donne souvent de meilleurs résultats que l'algorithme séquentiel
(Z2 < Z1). Cependant, l'algorithme parallèle peut également impliquer plus de calcul dans le
cadre de la gestion de plusieurs voies en même temps.
46
5 Problème de voyageur de commerce
5.1 Introduction
Le problème du voyageur de commerce (TSP : Travelling Salesman Problem ) est l’un des
problèmes d’optimisation combinatoire les plus répandus. Étant donné un graphe complet G
= (V, E) et une fonction de poids w : E → N.
Le but est de trouver un cycle Hamiltonien dans G (également appelé un tour) de poids
minimum. C’est l’un des problèmes centraux de l’informatique et de la recherche
opérationnelle. Il est bien connu d’être NP-difficile et a fait l’objet de recherches selon
différentes perspectives, notamment par approximation, algorithmes de temps exponentiel et
heuristiques.
En pratique, le TSP est souvent résolu au moyen d’heuristiques de recherche locales, dans
lesquelles on part d’un cycle Hamiltonien arbitraire en G, puis on modifie le cycle au moyen
de modifications locales en une série d’étapes. Après chaque étape, le poids du cycle devrait
s’améliorer ; lorsque l’algorithme ne trouve aucune amélioration, il s’arrête. L’un des
exemples les plus réussis de cette approche est l’heuristique k−opt, dans laquelle un
k−mouvement amélioré est effectué à chaque étape.
Soit un cycle Hamiltonien H dans un graphe G = (V, E) un k−mouvement est une opération
qui supprime k arêtes de H et ajoute k arêtes de G de sorte que
L’ensemble des arêtes résultant H est un nouveau cycle Hamiltonien. Le k−mouvement
s’améliore si le poids de H est plus petit que le poids de H.
Les lignes d’attaque traditionnelles pour les problèmes NP-difficiles sont les suivantes :
•
Concevoir des algorithmes exacts, qui fonctionnent raisonnablement vite que
pour des problèmes de petite taille.
•
Concevoir des algorithmes "sous-optimaux" ou heuristiques, c’est-à-dire des
algorithmes qui fournissent des solutions approchées dans un délai raisonnable.
•
Recherche de cas spéciaux pour le problème ("sous-problèmes") pour lesquels
des heuristiques optimales ou exactes sont possibles.
5.2 Formalisation
“ L'énoncé du problème du voyageur de commerce est le suivant : étant donné n points (des
« villes ») et les distances séparant chaque point, trouver un chemin de longueur totale
minimale qui passe exactement une fois par chaque point et revienne au point de départ.
Formellement, une instance est un graphe complet
G=(V,A,ω) avec V un ensemble de sommets, A un ensemble d'arêtes et ω une fonction de
coût sur les arcs. Le problème est de trouver le plus court ”
Définition de la classe NP : la classe NP est l’ensemble des problèmes de décision L ⊆ Σ∗
pour lesquels il existe un algorithme polynomial V tel que pour tout x ∈ Σ∗, on a :
47
x ∈ L si et seulement s’il existe y ∈ Σ∗ de taille polynomiale en |x| tel que V
Retourne « oui » sur l’entrée (x, y).
La chaîne y est alors appelée certicat polynomial. Pour TSP, un certicat sera une
permutation de {1, · · · , n}.
Définition du TSP: Le TSP = {(G, w, t)} peut être décrit comme suit:
• G = (V,E) où G est un graphe complet :
• Une fonction de poids w:E→N.
• t∈Z
• G est un graphe contenant un circuit (tour) avec un coût ne dépassant pas t.
Définition du Cycle Hamiltonien : Un cycle Hamiltonien est un cycle dans un graphe
passant par tous les sommets une fois.
PROBLEME FORMEL :
Il existe plusieurs formalisations mathématiques pour le problème de voyageur de commerce,
chacun analyse le problème d’une perspective diffèrent. On peut le formuler sous forme :
V représente l’ensemble des villes, d(i,j) est la distance entre i et j tel que i est diffèrent de j.
La fonction “phi” représente la permutation des villes de 1 jusqu’a n. Le but du TSP est de
minimiser la fonction objectif.
Recherche de minimum : coût, distance, longueur d’une traversée, poids, temps de
traitement, matériau, consommation d’énergie, nombre d’objets
Recherche de maximum : profit, valeur, rendement, utilité, efficacité, capacité, nombre
d’objets
5.3 Domaines d’application
Plusieurs taches dans la vie réelle peuvent se modéliser directement avec le TSP ou l’une de
ses variantes, surtout dans le domaine industriel et le domaine de transport & logistique.
Transport : par exemple le transport scolaire, ou le distributeur du lait sur les magasins...
Forage de cartes de circuits imprimés : par exemple le perçage d’une carte électronique..
48
Analyse de cluster : affectation d'un ensemble d'observations en sous-ensembles (appelés
clusters) de sorte que les observations dans le même cluster soient similaires dans un certain
sens, généralement basées sur la distance euclidienne
Routage : par ex google maps utilise une variante du TSP pour calculer la distance et le
chemin le plus optimal en considérant le temps et le cout.
5.4 Méthodes de résolution
La majorité des problèmes d'optimisation combinatoire sont des problèmes NP- difficiles et
donc ils ne possèdent pas à ce jour un algorithme efficace, valable de trouver la solution
optimale en un temps raisonnable. Ceci a motivé les chercheurs à développer de nombreuses
méthodes de résolution en recherche opérationnelle et en intelligence artificielle, la recherche
s’est d'abord orientée vers des heuristiques spécifiques aux problèmes, elle s’est
progressivement intéressée aux méthodes plus générales, c'est à dire les métaheuristiques.
Ces méthodes de résolution peuvent être réparties en deux grandes classes :
- Méthodes exactes : Les méthodes exactes ont permis de trouver des solutions
optimales pour des problèmes de taille raisonnable et rencontrent généralement des
difficultés face aux applications de taille importante.
- Méthodes approchées : Elles permettent de trouver une bonne solution, pas
forcément optimale, dans un temps raisonnable.
5.4.1 Résolution par brute force
C’est la solution la plus directe, le procédure essaye toutes les permutations possibles. Par
exemple si on a 4 villes A B C D, l’algorithme essaye toutes les combinaisons : ABCDA
ABDCA ADCBA ADBCA ACDBA ACBDA et stocke a chaque fois la distance. Enfin
l’algorithme choisis la moins couteuse. La complexité de cet algorithme est (n-1) !
Le temps d’exécution a un complexité de l’ordre (N-1)!
49
5.4.2 Résolution par programmation dynamique
La programmation dynamique consiste à résoudre un problème en le décomposant en sous
problèmes, puis a résoudre les sous-problèmes des plus petits au plus grands en stockant les
résultats intermédiaires.
Le temps d’exécution a un complexité de l’ordre n²(2^n)!
5.4.3 Résolution par plus proche voisin
L'algorithme du voisin le plus proche est un algorithme approximatif pour trouver une
solution sous-optimale au TSP.
Étape 1 : Trouvez une arête qui donne une distance minimale entre le sommet actuel et un
sommet non visité, appelez-le V.
Étape 2 : Maintenant, définissez ce sommet actuel sur le sommet V non visité et marquer ce
sommet V comme visité.
Étape 3 : Terminez la condition, si tous les sommets sont visités au moins une fois.
Étape 4 : revenir à l'étape 1
Le temps d’exécution a une complexité de l’ordre n^2.
50
5.4.4 Résolution par l’algorithme génétique
L'algorithme génétique a été introduit par John Holland avec ses collègues et étudiants au
milieu des années 1970, à l'Université du Michigan. GA est totalement basé sur le « Survival
des principes les plus aptes » et « Natural Genetic », afin de produire de meilleures solutions.
GA opère sur population de solutions. Pour chaque nouvelle génération, un nouvel ensemble
de solutions est formulé en sélectionnant des individus en fonction de leur condition
physique valeur, puis les élever ensemble à l'aide d’opérateurs.
Étape 1 : Générez des itinéraires aléatoires et calculez leur forme physique valeur.
Étape 2 : Répétez la procédure suivante pour un nombre donné de temps d'itération :
a) Sélectionnez les deux meilleurs itinéraires parmi le choix aléatoire donné
itinéraires.
b) Reproduire ces deux itinéraires pour produire de nouveaux meilleurs itinéraires.
c) Après la reproduction, remplacez les meilleurs nouveaux itinéraires par les deux
pires itinéraires.
Étape 3 : Retournez le meilleur itinéraire.
51
5.5 Complexité
La complexité des algorithmes exacts est toujours plus grande que celle des algorithmes
approchés.
Nous ne résoudrons donc pas les instances de test plus de 30 villes, le code des algorithmes
exact est compétitif sur les petites instances par rapport aux algorithmes approchées de TSP.
Voici des statistiques mathématiques d’exécution entre l’algorithme de plus proche voisin et
l’algorithme génétique.
52
6 Problème de transport avec coût fixe
6.1 Introduction
Le problème général du transport (TP) et ses variantes ont été l'un des sujets attrayants à la
fois dans les industries et le monde académique. Surtout, les chercheurs de cette recherche
domaine ont été principalement axés sur les approches de solution et ont utilisé ou développé
plusieurs approches.
Dans tout problème du transport, une hypothèse de base est que le coût du transport est
directement proportionnel au nombre d'unités transportées, alors que, dans la plupart des
demandes, un coût fixe pour développer les installations où répondre à la demande des
clients de chaque source sont également pris en compte.
Le coût fixe peut représenter le coût de location d'un véhicule, frais de péage sur une
autoroute, redevances d'atterrissage à un l'aéroport, les coûts d'installation des machines
dans une usine de fabrication l'environnement, le coût de la construction de routes dans les
transports systèmes, temps pour localiser un fichier dans une base de données distribuée
système, etc.
Les problèmes de coût fixe surviennent dans un grand nombre de systèmes de production et
de transport. Beaucoup des problèmes pratiques de transport et de distribution peuvent être
modélisés comme des problèmes de transport à charge fixe (FCTP).
Un coût fixe ou une charge dans FCTP est encouru pour chaque déroute qui est ouverte ou
utilisée pour envoyer les demandes. Deux sortes des coûts sont pris en compte dans le forfait
transport problèmes : un coût variable qui augmente linéairement avec la quantité
transportée entre une source et une destination, et une redevance fixe, qui est encouru
chaque fois qu'un itinéraire est ouvert ou utilisé pour envoyer les demandes à destination.
6.2 Le problème de transport avec coût fixe
6.2.1 Le problème de transport (Modèle mathématique général)
Soit m sources d’approvisionnement, S1, S2,…,S ayant ai ( i = 1, 2,...,m ) unités
d'approvisionnement (ou capacité), respectivement à transporter vers n destinations, D1, D2,
. . ., Dn avec bj ( j = 1, 2, . . ., n) unités de demande (ou de besoin), respectivement. Soit cij
le coût d'expédition d'une unité du produit de la source i à la destination j Si xij représente le
nombre d'unités expédiées de la source i à la destination j, le problème est de déterminer
l'horaire de transport de manière à minimiser le coût total du transport tout en satisfaisant
les conditions d'offre et de demande.
Mathématiquement, le problème de transport, en général, peut s'énoncer comme suit :
53
𝑛
Minimiser (coût total) 𝑍 = ∑𝑚
𝑖=1 ∑𝑗=1 𝑐𝑖𝑗 . 𝑥𝑖𝑗
(1)
Appelée fonction objectif.
Telle que, sous réserve des contraintes :
𝑛
∑ 𝑥𝑖𝑗 = 𝑎𝑖 ; 𝑖 = 1,2, … , 𝑚 (𝑐𝑜𝑛𝑡𝑟𝑎𝑖𝑛𝑡𝑒𝑠 𝑑′ 𝑎𝑝𝑝𝑟𝑜𝑣𝑖𝑠𝑖𝑜𝑛𝑛𝑒𝑚𝑒𝑛𝑡) (2)
𝑗=1
𝑚
∑ 𝑥𝑖𝑗 = 𝑏𝑗 ; 𝑗 = 1,2, … , 𝑛 (𝑐𝑜𝑛𝑡𝑟𝑎𝑖𝑛𝑡𝑒𝑠 𝑑𝑒 𝑙𝑎 𝑑𝑒𝑚𝑎𝑛𝑑𝑒)
(3)
𝑖=1
𝑥𝑖𝑗 ≥ 0
; ∀𝑖, 𝑗
(4)
Une condition nécessaire et suffisante pour une solution réalisable aux problèmes de
transport est :
𝑛
∑𝑚
𝑖=1 𝑎𝑖 = ∑𝑗=1 𝑏𝑗
(5)
Offre totale = Demande totale.
Pour une présentation et une solution facile, nous utilisons ce qu'on appelle la table de
transport qui est un moyen pratique de résumer les données comme indiqué ci-dessous :
Table de transport général
En général dans le problème du transport, il y a (m + n) contraintes, une pour chaque source
d'approvisionnement, et distinction et m × n variables. Puisque toutes les contraintes (m +
n) sont des équations, l'une de ces équations est donc supplémentaire (redondant). La
contrainte supplémentaire (équation) peut être dérivée des autres contraintes (équations),
sans affecter la solution réalisable. Il s'ensuit que toute solution réalisable pour un problème
54
de transport doit avoir exactement (m + n – 1) variables de base non négatives (ou
allocations) 𝒙𝒊𝒋 satisfaisant la condition (5).
6.2.2 Le problème de transport avec coût fixe (FCTP): Modèle
mathématique et descriptions
Le problème de transport avec coût fixe est considéré comme un problème de distribution
avec m fournisseurs et n clients. Un fournisseur peut répondre à la demande d'un client et
envoyer ses produits avec le coût de 𝒄𝒊𝒋 pour chaque unité comme frais d'expédition. De plus,
il y a un coût fixe de 𝒇𝒊𝒋 considéré pour l'ouverture d'un itinéraire par exemple. Le 𝒂𝒊 et le
𝒃𝒋 sont respectivement la valeur de la capacité et de la demande de chaque fournisseur et
client. L'objectif minimise les coûts variables et fixes.
Mathématiquement, ce problème peut être formulé comme suit :
𝑛
Minimiser 𝑍 = ∑𝑚
𝑖=1 ∑𝑗=1 𝑐𝑖𝑗 . 𝑥𝑖𝑗 + 𝑓𝑖𝑗 . 𝑦𝑖𝑗
(1)
Telle que, sous réserve des contraintes :
𝑛
∑ 𝑥𝑖𝑗 = 𝑎𝑖 ; 𝑖 = 1,2, … , 𝑚
(2)
𝑗=1
𝑚
∑ 𝑥𝑖𝑗 = 𝑏𝑗 ; 𝑗 = 1,2, … , 𝑛
(3)
𝑖=1
𝒙𝒊𝒋 ≥ 𝟎
; ∀𝑖, 𝑗
𝟏, 𝒙𝒊𝒋 > 𝟎
𝒚𝒊𝒋 = {
𝟎, 𝒔𝒊 𝒏𝒐𝒏
(4)
;
∀𝒊, 𝒋
𝒚𝒊𝒋 : 𝒖𝒏𝒆 𝒗𝒂𝒓𝒊𝒂𝒃𝒍𝒆 𝒃𝒊𝒏𝒂𝒊𝒓𝒆 (5)
Avec:
𝒇𝒊𝒋 : 𝒄𝒐û𝒕 𝒅𝒆 𝒕𝒓𝒂𝒏𝒔𝒑𝒐𝒓𝒕 𝒇𝒊𝒙𝒆
𝒚𝒊𝒋 : 𝒖𝒏𝒆 𝒗𝒂𝒓𝒊𝒂𝒃𝒍𝒆 𝒃𝒊𝒏𝒂𝒊𝒓𝒆
La fonction objectif (1) demande de minimiser la variable totale et le coût fixe. Les
contraintes (2) exigent que tous marchandises disponibles à chaque origine (𝑖 ∈ 1,2, … , 𝑚)
être livre. Les contraintes (3) obligent, dans toute solution réalisable, à livrer 𝑏𝑗 unités de
marchandises à chaque destination (𝑗 ∈ 1,2, … , 𝑛). Enfin, les contraintes (4) et (5) définissent
les plages de variables 𝑥𝑖𝑗 et 𝑦𝑖𝑗 , respectivement.
Dans ce problème, nous avons deux variables de décision, 𝑥𝑖𝑗 qui représente la quantité de
marchandises envoyées du fournisseur i au client j et la variable binaire 𝑦𝑖𝑗 qui montre la
réouverture ou l'absence de réouverture de la route ij et si 𝑥𝑖𝑗 > 0, sa valeur l'est.
55
6.3 Un aperçu de certaines des solutions développées
par les chercheurs pour résoudre le FCTP
Hirsch et Dantzig (1954) ont d'abord proposé le problème de charge et par conséquent,
Balinski (1961) développé le FCTP pour la première fois dans la littérature. Il étudié les
structures du problème et de résoudre le problème il a développé un algorithme
approximatif. Ce problème est discuté plus tard de sa complexité par klose (2008). Il a
montré que le temps de résolution à la taille du problème augmente de façon exponentielle
pour laquelle il est considéré comme un NP-difficile, klose proposé approximatif algorithmes
pour résoudre de tels problèmes. Ainsi, au cours des deux dernières décennies, plusieurs
méthodes heuristiques et métaheuristiques ont été proposés par des chercheurs pour
résoudre les charges fixes problèmes de transport.
6.3.1 Algorithme heuristique proposé
Intégration des coûts fixes avec les coûts variables, qui on l'appelle le coût consolidé (cc), est
la base de l'heuristique proposée. Cela signifie que nous intégrons ces deux types de coût par
quatre méthodes pour atteindre le cc. Ensuite, nous avons résolu le problème en utilisant le
cc comme un problème de transport classique et avons calculé la fonction objectif des FCTP
après avoir obtenu 𝑥𝑖𝑗 et les avons remplacés dans la fonction objectif principale.
En résumé, nous proposons l'heuristique basée sur les deux types de coûts existent dans le
FCTP. Nous les considérons de points de vue différents selon lesquels ils influencent
fonctions objectives. Pour expliquer exactement l’heuristique développée et quatre méthodes
pour atteindre le cc, nous décrivons la procédure dans l'algorithme, avec les Indexes et
paramètres suivants :
i: index des sources
j: indice de dépôt
m: nombre de sources
n: nombre de dépôts
𝒂𝒊 : capacité de la source i
𝒃𝒋 : demande du dépôt j
𝒄𝒊𝒋 : coût de transport variable ajusté associé à l'itinéraire (i,j)
𝒇𝒊𝒋 : coût de transport fixe ajusté associé à l'itinéraire (i,j)
𝒓𝒊𝒋 : évaluation du coût du produit transporté de la source i au dépôt j
𝒕𝒓𝒊𝒋 : évaluation totale du coût du produit transporté pour la source i et le dépôt j
𝒇𝒓𝒊𝒋 : évaluation finale du coût du produit transporté de la source i au dépôt j
𝒓𝒂𝒊 : puissance nominale de la source i
𝒓𝒃𝒋 : demand rating of depot j
56
𝒕𝒄𝒊𝒋 : coût de transport variable total pour la source i et le dépôt j
𝒕𝒇𝒊𝒋 : coût de transport fixe total associé à l'itinéraire (i,j) pour la source i et le dépôt j
𝒓𝒄𝒊𝒋 : évaluation des coûts de transport variables pour la source i et le dépôt j
𝒓𝒇𝒊𝒋 : cotation des coûts de transport fixes associés à l'itinéraire (i,j) pour la source i et le
dépôt j
𝒄𝒄𝒊𝒋 : coût consolidé
Algorithme : Procédure heuristique basée sur (cc)
Input : indices, variables de décision et paramètres.
Méthode I:
Étape1:
I
𝑐𝑖𝑗
=
(min(𝑎𝑖 ,𝑏𝑗 )×𝑐𝑖𝑗 )+𝑓𝑖𝑗
min(𝑎𝑖 ,𝑏𝑗 )
; pour chaque i , j;
Méthode II:
Étape1:
𝑟min (𝑖,𝑗) = 𝑐𝑖𝑗 + 𝑓𝑖𝑗 pour chaque i , j ;
𝑟𝑎𝑣𝑎(𝑖,𝑗) = (𝑐𝑖𝑗 × min(𝑎𝑖 , 𝑏𝑗 )) + 𝑓𝑖𝑗 pour chaque i , j ;
𝑟max (𝑖,𝑗) = (𝑐𝑖𝑗 × mi(𝑎𝑖 , 𝑏𝑗 )) + 𝑓𝑖𝑗 pour chaque i , j ;
Étape2:
𝑡𝑟min (𝑖,𝑗) = ∑ 1≤𝑗≤ 𝑛 𝑟min (i,j) + ∑1≤ 𝑖 ≤ 𝑚 𝑟min (𝑖,𝑗)
1<𝑖<𝑚
1<𝑗<𝑛
𝑡𝑟ava (𝑖,𝑗) = ∑ 1≤𝑗≤ 𝑛 𝑟ava (i,j) + ∑1≤ 𝑖 ≤ 𝑚 𝑟av (𝑖,𝑗)
1<𝑖<𝑚
1<𝑗<𝑛
𝑡𝑟max (𝑖,𝑗) = ∑ 𝑟max (i,j) + ∑ 𝑟max (𝑖,𝑗)
1≤𝑗≤ 𝑛
1<𝑖<𝑚
1≤ 𝑖 ≤ 𝑚
1<𝑗<𝑛
Étape3:
𝑓𝑟min (𝑖,𝑗) =
𝑡𝑟min (𝑖,𝑗)
𝑟min (𝑖,𝑗)
𝑓𝑟ava (𝑖,𝑗) =
𝑡𝑟ava (𝑖,𝑗)
𝑟ava (𝑖,𝑗)
𝑓𝑟max (𝑖,𝑗) =
𝑡𝑟max (𝑖,𝑗)
𝑟max (𝑖,𝑗)
, pour chaque i , j ;
Étape4:
II
𝑐𝑐𝑖𝑗
= 𝑓𝑟
𝑓𝑟min (𝑖,𝑗)
max(𝑖,𝑗) +(𝑓𝑟ava (𝑖,𝑗) ×𝑓𝑟min (𝑖,𝑗) )
57
; pour chaque i , j ;
Méthode III:
Étape1:
𝑟𝑎𝑖 =
𝑛
∑𝑚
𝑖=1 𝑎𝑖 +∑𝑗=1 𝑏𝑗
𝑟𝑏𝑖 =
𝑎𝑖
𝑛
∑𝑚
𝑖=1 𝑎𝑖 +∑𝑗=1 𝑏𝑗
𝑏𝑗
Étape2:
𝑡𝑐𝑖𝑗 =
∑ 1≤𝑗≤ 𝑛 𝑐(𝑖, 𝑗) + ∑1≤ 𝑖 ≤ 𝑚 𝑐(𝑖, 𝑗)
𝑡𝑓𝑖𝑗 =
1<𝑗<𝑛
1<𝑖<𝑚
∑ 1≤𝑗≤ 𝑛 𝑓(𝑖, 𝑗) + ∑1≤ 𝑖 ≤ 𝑚 𝑓(𝑖, 𝑗)
1<𝑗<𝑛
1<𝑖<𝑚
Étape3:
𝑟𝑐𝑖𝑗 =
𝑡𝑐𝑖𝑗
𝑐𝑖𝑗
𝑟𝑓𝑖𝑗 =
𝑡𝑓𝑖𝑗
𝑓𝑖𝑗
Étape4:
III
𝑐𝑖𝑗
=
min(𝑟𝑎𝑖 ,𝑟𝑏𝑖 )
(min(𝑟𝑎𝑖 ,𝑟𝑏𝑗 )×𝑟𝑐𝑖𝑗 )+𝑟𝑓𝑖𝑗
; pour chaque i , j ;
Méthode IV:
Étape1:
IV
𝑐𝑖𝑗
= (min(𝑎𝑖 , 𝑏𝑗 ) × 𝑐𝑖𝑗 ) + 𝑓𝑖𝑗 ; pour chaque i , j ;
Étape2: Résoudre comme le problème de transport classique (TP) en utilisant chacun des
I
II III
IV
coûts consolidés: (𝑐𝑖𝑗
, 𝑐𝑖𝑗
, 𝑐𝑖𝑗 𝑒𝑡 𝑐𝑖𝑗
);
Étape3: obtenir le montant de 𝑥𝑖𝑗 de chaque coût consolidé à l'étape 3 ;
Étape4: calcul du coût total en utilisant 𝑐𝑖𝑗 . 𝑥𝑖𝑗 + 𝑓𝑖𝑗 . 𝑦𝑖𝑗 ;
Étape5: choisir le coût total le plus bas de l'étape 4 ;
Output: la quantité de produit transporté de la source i au dépôt j (𝑥𝑖𝑗) et le coût total le plus
bas ;
6.3.2 Algorithme Métaheuristique proposé : Algorithme génétique (GA)
Sur la base du rôle de la génétique dans la nature et de l'évolution naturelle des organismes
vivants, Holland (1975) a présenté un type particulier d'algorithmes évolutionnaires, à savoir
les algorithmes génétiques au début des années 70. L'algorithme génétique est un modèle
mathématique qui transforme une population de chromosomes en de nouveaux en utilisant
les modèles opérationnels de Darwin sur la réplication de la survie d'une génération
supérieure basée sur le processus naturel de la génétique. La structure générale d'un
algorithme génétique peut être supposée que tout d'abord un mécanisme pour convertir la
réponse de chaque problème à un chromosome doit être défini. Ensuite, un ensemble de
chromosomes, qui sont en fait un ensemble de réponses au problème, sont considérés comme
la population initiale. Après avoir défini la réponse initiale, de nouveaux chromosomes
58
appelés l'enfant doivent être créés en utilisant l'opération génétique. L'opération est divisée
en deux types principaux de croisement et de mutation. De même, les deux notions
d'opérateurs de croisement et de mutation sont fréquemment utilisées pour la sélection de
chromosomes qui devraient jouer le rôle de parents, dont l'opérateur est également défini.
Après avoir créé la population d'enfants, le meilleur des chromosomes doit être sélectionné
en utilisant l'évaluation. Le processus de sélection est basé sur la valeur de fitness de chaque
chaîne. En fait, le processus d'évaluation est le débat le plus important sur le processus de
sélection. Ainsi, après la répétition de plusieurs générations, la meilleure génération qui est la
réponse optimale au problème sera créée. Quatre étapes fondamentales sont principalement
utilisées dans l'AG : la reproduction, le mécanisme de sélection, le croisement et la mutation.
La structure de l'AG proposée est donnée dans l'algorithme génétique.
Algorithme: La procédure d'AG proposée pour le FCTP
Étape1: Initialiser le problème et les paramètres GA
Input: l'instance de données de l'optimisation problème et paramètres GA ;
Étape2: Initialiser P(t) , par le spanning tree-based ou priority-based algorithme ;
Étape3: Évaluation de P(t);
Étape4: while(pas de condition de résiliation)do
Croisement P(t) pour céder O(t) par croisement à un point ou croisement à deux points.
Mutation P(t) pour produire O(t) par brouillage ou mutation par insertion ou échange.
Évaluation de O(t);
Étape5: Sélectionnez P(t+1) parmi P(t) et O(t) par mécanisme de sélection de rang.
Étape6: Vérifier le critère d'arrêt;
While(pas de critère de résiliation)
Répétez les étapes 4 et 5 ;
output: coût total minimum.
59
7 Problème de planification JSP (Job- shop
scheduling problem)
7.1 Problème d’ordonnancement
7.1.1 Problèmatique
Job Shop scheduling problem (JSP) est l’un des problèmes de planification et
d’ordonnancement de l’APS, en général JSP est un problème d’allocation des ressources dans
le temps pour réaliser un ensemble de tâches, il concerne la détermination des séquences
d’opération sur les machines afin de minimiser le temps de réalisation.
7.1.2 Les mots clés
✓
Job Shop Scheduling
✓
Ordonnancement de l’APS
✓
Ressources / Allocation des ressources.
✓
Taches
✓
Opérations
✓
Temps de réalisation
7.1.3 C’est quoi le problème d’ordonnancement ?
Définition 1
L’ordonnancement est l’allocation des ressources, humaines ou techniques, aux taches sur
une durée déterminée avec le but d’optimiser un ou plusieurs objectifs
Définition 2
Le problème d’ordonnancement consiste à organiser dans le temps la réalisation d’un
ensemble de taches, compte tenu de contraintes temporelles (délais, contraintes
d’enchainement, etc.) et de contraintes portant sur l’utilisation et la disponibilité des
ressources requises par des tâches.
60
7.1.4 Concept de base d’ordonnancement
Pour formuler un problème d’ordonnancement les notions suivantes sont essentielles :
➢ Les tâches
Une tâche est considérée comme l’exécution d’une opération sur une machine m et peut être
divisée en deux catégories :
Tâches morcelables (préemptibles) : qui peuvent être exécutées par morceaux par une ou
plusieurs ressources, et qui ajoute des tests pour savoir quand interrompre le traitement.
Facilitant ainsi la résolution de certains problèmes.
Tâches non-morcelables (indivisibles) : qui doivent être exécutées en une seule fois et ne
peuvent pas être interrompues avant qu'elles ne soient complètement achevées.
➢ Les ressources
Une ressource k est un moyen technique ou humain requis pour la réalisation d’une tâche et
disponible en quantité limitée, sa capacité Ak.
On distingue plusieurs types de ressources :
Une ressource est renouvelable si après avoir été utilisée par une ou plusieurs tâches,
elle est à nouveau disponible en même quantité (les hommes, les machines, l’espace, etc.) ; la
quantité de ressources utilisée à chaque instant est limitée.
Une ressource est consommable (matière première, budget, etc.) : la consommation
globale (ou cumul) au cours du temps est limitée.
On distingue par ailleurs les ressources disjonctives (ou nonpartageables) qui ne peuvent
exécuter qu’une tache à la fois (machine-outil, robot manipulateur) et les ressources
61
cumulatives (ou partageables) qui peuvent être utilisées par plusieurs tâches
simultanément (équipes d’ouvriers, poste de travail).
➢ Les contraintes
On distingue deux types de contraintes :
Contraintes temporelles :
Les contraintes temporelles intègrent en général :
•
les contraintes de temps alloué, issues généralement d’impératifs de
gestion et relatives aux dates limites des tâches (délai de livraison par
exemple) ou à la durée totale d’un projet ;
•
les contraintes d’antériorité et plus généralement les contraintes de
cohérence technologique, qui décrivent le positionnement relatif de
certaines tâches par rapport à d’autres (e.g contraintes de gammes dans le
cas des problèmes d’ateliers) ;
•
les contraintes de calendrier liées au respect d’horaires de travail, etc.
Contraintes de ressources :
Les contraintes de ressources traduisent le fait que celles-ci sont disponibles en quantité
limitée (leur capacité).
On distingue deux types de contraintes de ressources, liées à la nature disjonctive ou
cumulative des ressources.
62
➢ Les objectifs
L’ordonnancement est un aspect important de la gestion de production. La connaissance des
méthodes d’ordonnancement permet d’éviter des pertes de performance importantes. Et
parmi les objectifs principaux de l’ordonnancement, on peut citer :
1.Objectifs liés au temps.
2.Objectifs liés aux ressources.
3.Objectifs liés aux couts.
7.1.5 Types de problèmes d’ordonnancement
Selon la manière dont les taches sont ordonnancées et dont les machines sont configurées,
nous distinguons différents problèmes d’ordonnancement :
➢ Flow Shop (Atelier à cheminement unique)
Dans le modèle de flow-shop, les ordres de fabrication visitent les machines dans le même
ordre, avec des durées opératoires pouvant être différentes. Chaque job va être s'exécuter sur
les M machines en série et tous les jobs vont suivre le même ordre de passage sur ces
machines. Ce type de modèle est aussi appelé modèle linéaire.
63
➢ Open Shop (Atelier à cheminement libre)
Dans le modèle d'open shop, l'ordre de passage des n jobs sur les m machines n'est pas connu
à l'avance. Cet ordre est déterminé lors de la construction de la solution. Chaque job j peut
avoir son propre ordre de passage sur toutes les machines. Le fait qu'il n'y ait pas d'ordre
prédéterminé rend la résolution du problème d'ordonnancement de ce type plus complexe,
mais offre cependant des degrés de liberté intéressants
➢ Job Shop (Atelier à cheminement multiple)
Concernant le modèle de job-shop, chaque job à un ordre à suivre ; ce qui n'est pas le cas du
flow-shop. Il s'agit dans ce cas de déterminer les dates de passage sur différentes ressources
d'ordres de fabrication ayant des trajets différents dans l'atelier. Ces ordres de fabrication
partageant des ressources communes, des conflits sont susceptibles de survenir.
64
7.2 Job shop scheduling
7.2.1 Qu’est-ce qu’un problème de Job Shop ?
➢ Définition générale
Un atelier de travail JS est un type de processus de fabrication dans lequel de petits lots d'une
variété de produits personnalisés sont fabriqués. Dans le flux de processus de l'atelier de
travail, la plupart des produits fabriqués nécessitent une configuration et un séquençage
uniques des étapes de processus. Les ateliers de travail sont généralement des entreprises qui
fabriquent des pièces sur mesure pour d'autres entreprises.
➢ Définition mathématique
Soit un problème de Job Shop. Les notations suivantes sont introduites pour décrire le
problème.
Soit M l’ensemble des m machines M1 M2 … Mm et J l’ensemble des n jobs J1 J2 … Jn. On
note O l’ensemble des petites o opérations
O={O1,O2,…,Oo} décrivant la réalisation des jobs sur les machines.
Les jobs sont décrits par des gammes. Une gamme définit l’ordre, la durée et la séquence des
machines où sont traitées les opérations d’un job. La gamme définit pour chaque job Ji une
suite Ki de ki opérations dont la première est notée di :
Ki = (Odi , Odi+1 ,…, Odi+ki-1) les suites Ki sont disjointes, c’est-à-dire qu’une opération
n’apparait que dans une seule suite Ki . La suite des opérations de Ki est appelée ordre
d’opération de la gamme.
Un Job ne peut commencer de traitement d’une opération que quand l’opération précédente
dans la gamme est terminée.
On appelle contrainte de précédence cette contrainte est on note A = (Oi , Oi+1)l’ensemble
des opérations successives soumise à une contrainte de précédence directe.
Une opération Oi doit etre réalisée pendant un temps pi sur une machine mi. Cette opération
doit etre réalisée sans préemption.
On note Ek où k appartient à M l’ensemble des opérations doivent etre traitées sur la
machine Mk. Une machine ne peut traiter qu’une seule opération à la fois. Les opérations de
Ek doivent donc etre ordonnées, on dit qu’il y a disjonction entre elles car les intervalles de
temps pendant lesquels la machine est occupée sont disjoints.
Afin de décrire le problème de façon univoque, nous le décrivons dans un premier temps à
l’aide du formalisme mathématique. La formalisation propose par (Manne,1960) peut
aisément etre adaptée aux notations ci-dessus pour le problème de job shop :
ti est la date de début de l’opération i,
ti + pi
≤
tj
65
∀( i , j )∈A
7.2.2 Réimplantation d’un atelier de travail JS
➢ Le regroupement des équipements en ilots
Un ilot de production est un regroupement de postes de travail traversé par des flux de
matières qui utilisent ces postes dans un ordre variable d’une gamme à l’autre. Dont le but de
simplifier les flux de matière.
Objectifs :
-Eviter les retours en arrière.
-Equilibrer le nombre de machines par ilots.
-Minimiser le parcours des pièces.
o
Algorithme de Kusiak
Étape 1 : On sélectionne la première ligne et les colonnes attachées à cette ligne
Étape 2 : On sélectionne les ligne attachées aux colonnes sélectionnées pour séparer les ilots
éventuellement rattachés entre eux par une machine, on ne prend dans un ilot que les pièces
qui ont au moins 50% des machines déjà rattachées à celui-ci
66
Étape 3 : On recommence l’étape 1 en sélectionnant les colonnes attachées à l’ilot
La première ilot :
(P1,P3,P5,P7)
---> (M2,M3,M5)
Étape 4 : On arrête lorsque la ligne (ou la colonne) ne comporte plus des éléments. Dans le
tableau ci-après, on ne regroupe pas M4 car cette machine concerne 1 pièce de cet ilot pour 2
pièces hors ilots
La deuxième ilot : (P2,P6) ----> (M4,M6)
La troisième ilot : (P4)----> (M1,M7)
La répartition est alors la suivante :
67
▪
Algorithme de King
La méthode de King est plus rigoureuse que la méthode Kusiak . Pour utiliser cette méthode
il est indispensable de disposer d’un tableur ou d’un logiciel spécifique tel que << IMPACT>>
Étape 1 : On affecte un poids en puissance de 2 à chacune des pièces .
68
L’équivalent décimal est alors calculé en sommant les poids des pièces utilisant la machine.
Poids(P1) = 2 ^(5) + 2 ^(2) = 36
Poids(P2) = 2 ^(3) + 2 ^(1) = 10,
Etc….
Étape 3 : On suit alors le même processus mais sur les colonnes
L’équivalent décimal est alors calculé en sommant les poids des pièces utilisant la machine.
Poids(M1) = 2 ^(6) =64,
Poids(M2) = 2 ^(5) + 2 ^(4) + 2 ^(3)=56,
Etc….
Après l’ordonnancement décroissant des colonnes, on obtient
69
Étape 4 : On recommence le même processus sur les lignes
REMARQUE : On remarque que la matrice n’est pas changée, elle garde la même structure
70
On retrouve ici le meme regroupement que celui donné par la méthode de Kuziak.
Cependant, les regroupements occasionnés par les deux méthodes ne sont pas toujours
identiques
➢ Optimisation d’implantation de chaque ilot
Après avoir identifié les ilots de production indépendants, il faut procéder à l’implantation de
chaque ilot. L’implantation idéale doit suivre le plus possible la gamme de fabrication. C’est
pour cela que l’on cherchera autant que faire se peut à mettre en ligne les machines
. Cela peut se faire de multiples façons. Nous présenterons dans notre projet deux méthodes :
La méthode des antériorités et la méthode des rangs moyens
o
Méthode des antériorités
Soit l’ilot de fabrication avec les gammes définies par la figure suivante :
Étape 1 : On établit le tableau des antériorités.
Pour établir ce tableau en place dans chaque colonne l’ensemble des machines qui
interviennent dans une gamme avant la machine considérée
71
Étape 2 : On place et raye les machines qui n’ont pas d’antériorités
Étape 3: la machine M5 n’a plus d’antériorité.On raye M5 et on place cette machine après
M1,M3
On place de même les machines M4 et M6
72
o
Méthode des rangs moyens
Reprenons le même ilot de fabrication avec les gammes définies dans le tableau précédent :
On va réorganiser les machines par ordre croissant de leur rang moyen, ce qui nous donne le
tableau suivant :
73
Chapitre 3
Les méthodes de résolution
8 Les méthodes exactes
8.1 La programmation dynamique
8.1.1 Histoire
Le terme programmation dynamique était utilisé dans les années 1940 par Richard
Bellman pour décrire le processus de résolution de problèmes où on trouve les meilleures
décisions les unes après les autres. En 1953, il en donne la définition moderne, où les
décisions à prendre sont ordonnées par sous-problèmes et le domaine a alors été reconnu
par IEEE (Institue of electrical and Electronics Engineers) comme un sujet d'analyse de
systèmes et d’ingénierie. La contribution de Bellman est connu sous le nom d'équation de
Bellman, qui présente un problème d'optimisation sous forme récursive.
Bellman explique l'idée du terme programmation dynamique dans son
autobibliographie, Eye of the Hurricane: An Autobiography. Il dit :
« I spent the Fall quarter (of 1950) at RAND. My first task was to find a name for multistage
decision processes. An interesting question is, Where did the name, dynamic programming,
come from? The 1950s were not good years for mathematical research. We had a very
interesting gentleman in Washington named Wilson. He was Secretary of Defense, and he
actually had a pathological fear and hatred of the word research. I’m not using the term
lightly; I’m using it precisely. His face would suffuse, he would turn red, and he would get
violent if people used the term research in his presence. You can imagine how he felt, then,
about the term mathematical. The RAND Corporation was employed by the Air Force, and
the Air Force had Wilson as its boss, essentially. Hence, I felt I had to do something to shield
Wilson and the Air Force from the fact that I was really doing mathematics inside the RAND
Corporation. What title, what title, what name, could I choose? In the first place I was
interested in planning, in decision making, in thinking. But planning, is not a good word for
various reasons. I decided therefore to use the word “programming”. I wanted to get across
the idea that this was dynamic, this was multistage, this was time-varying. I thought, let's kill
two birds with one stone. Let's take a word that has an absolutely precise meaning, namely
dynamic, in the classical physical sense. It also has a very interesting property as an adjective,
74
and that it's impossible to use the word dynamic in a pejorative sense. Try thinking of some
combination that will possibly give it a pejorative meaning. It's impossible. Thus, I thought
dynamic programming was a good name. It was something not even a Congressman could
object to. So I used it as an umbrella for my activities. »
L'adjectif dynamique était donc choisi par Bellman pour insister sur l'aspect temporel des
problèmes, et parce que le terme impressionnait. Le mot programmation référait à
l'utilisation d'une méthode pour trouver un programme optimal dans un sens militaire :
emploi du temps ou de la logistique.
8.1.2 Définition
La programmation dynamique est une technique efficace pour résoudre des problèmes
d'optimisation. Il est basé sur la décomposition du problème initial en problèmes plus
simples et la résolution de ces sous-problèmes à partir des plus simples.
Le but de la programmation dynamique est de trouver un objet optimal à partir d'un
ensemble donné d’objets.
Deux propriétés principales d’un problème suggèrent qu’il peut être résolu à l’aide de la
programmation dynamique :
•
Chevauchement de sous-problèmes.
•
Le principe d’optimale de BELLMAN
8.1.3 Chevauchement de sous-problème
C’est le fait d’avoir à faire le même calcul plusieurs fois. Afin d’illustrer ce principe, l’exemple
classique est celui de la suite de Fibonacci qui est définie par :
F0=0
F1=1
Fn=Fn-1 +Fn-2,
On prend n=5, d’après la définition de la suite de Fibonacci, on a besoin de calculer F4+F3 et
pour calculer F4, on a besoin de calculer F3+F2 et pour calculer F3, on a besoin de calculer
F2+F1.
Mathématiquement :
F5=F4+F3
F4=F3+F2
F3=F2+F1
On calcule donc deux fois F3 et F2
Afin de rendre les choses bien claires, j’ai illustré tout ça en un arbre des appels récursifs :
75
En jaune : les 2 fois où l’on appelle Fib(3).
En noir : les 3 fois où l’on appelle Fib(2).
En orange : les 5 fois où l’on appelle Fib(1).
En gris : les 3 fois où l’on appelle Fib(0).
Alors, la suite de Fibonacci vérifie le principe de chevauchement.
Maintenant, imaginons qu’on est censé de calculer Fib(42), on aura une arbre des appels
récursifs plus grande que celle-là.
Et pour voir le temps d’exécution pris par ce calcul, on réalise ce programme :
On voit que le programme a pris 6,648 s pour s’exécuter et donner la valeur de Fib(42).
Il s’agit alors d’une grande complexité par rapport à cette petite (relativement petite) valeur
saisie, car la complexité de l’algorithme récursif est exponentielle. Là où intervient la
programmation dynamique avec ses deux méthodes : la mémoïsation et la tabulation
➢ Recherche dichotomique
76
La recherche dichotomique ne vérifie pas le principe de chevauchement mais on a fait appel à
ce contre-exemple pour mettre en œuvre la différence entre les cas qui vérifient ce principe et
qui ne le vérifient pas.
Principe :
Pour chercher un élément x dans un tableau T trié on ordre croissant :
On calcule l’indice du milieu du tableau.
On compare x avec T[milieu]
- Si x=T[milieu], on retourne l’indice et on quitte le programme.
- Si x>T[mlieu], on cherche x dans la partie supérieure du tableau.
- Si x<T[milieu], on cherche x dans la partie inférieure du tableau.
Remarque : La recherche dichotomique ne s’applique que sur les tableaux triés auparavant
Exemple : On prend l’exemple d’un tableau T de taille n=7
On illustre dans cet arbre des appels récursifs les milieux possibles pour ce tableau T, d’après
le programme ci-dessus, qui peuvent être égale à la valeur recherchée
77
Si la valeur recherchée correspond à la case du tableau d’indice 0 par exemple, on remarque
alors que pour aller du milieu d’indice 3 à celui d’indice 0 on a un seul chemin à parcourir. Il
n’y a pas de sous problèmes communs.
Par conséquent, ce n’est pas la peine de stocker des solutions ne seront pas réutilisées.
Alors, la recherche dichotomique ne vérifie pas le principe de chevauchement de sous
problème.
8.1.4 Mémoïsation
Le programme mémoïsé pour un problème est similaire à la version récursive avec une petite
modification qui consiste à regarder dans un dictionnaire avant de calculer la solution. Nous
créons un dictionnaire vide. Chaque fois que nous avons besoin de la solution à un sousproblème, nous examinons d’abord le dictionnaire. Si la valeur précalculée est là, nous
renvoyons cette valeur. Sinon, nous calculons la valeur et plaçons le résultat dans le
dictionnaire afin qu'il puisse être réutilisé ultérieurement.
➢ Résolution de problème de Fibonacci
Après savoir la méthode de mémoïsation, pour calculer Fib (5) il suffit de calculer Fib(1),
Fib(2), Fib(3), Fib(4) et les sauvegardent au lieu de répéter l'opération 14 fois.
Traitement
Étape 1 : on initialise les valeurs de tableau par NIL= -1.
NIL
NIL
NIL
NIL
78
NIL
NIL
Étape 2 : Enregistrer les résultats ; à chaque case i de mémoire on sauvegarde Fib (i) par
l’opération suivante :
Si N<=1
Fib(N)=N
SINON
Fib(N)=Fib(N-1)+Fib(N-2)
Fib(0)=0
Fib(1)=1
Fib(2)=1
Fib(3)=2
Fib(5)=5
LE PROGRAMME EN C :
Alors, en utilisant la méthode de mémoïsation le programme s’exécute en 2.038 au lieu de
6.362
AVEC MEMOISATION
SANS MEMOISATION
79
8.1.5 Tabulation
Le programme tabulé pour un problème donné crée une table de manière ascendante et
renvoie la dernière entrée de la table. Par exemple, pour le même nombre de Fibonacci, nous
calculons d’abord Fib(0) puis Fib(1) puis Fib(2) puis Fib(3) et ainsi de suite. Nous
construisons donc littéralement les solutions de sous-problèmes ascendants.
➢ Différence entre Tabulation et mémoïsation
Bien que la mémorisation et la tabulation fonctionnent en accédant aux résultats stockés,
elles diffèrent légèrement en raison de la façon dont ces valeurs sont calculées et stockées
Dans le cadre de la mémorisation, l'ordre dans lequel nous résolvons les sous-problèmes n'est
pas important car il s'agit d'une approche descendante. Tous les résultats des sous-problèmes
seront utilisés pour calculer le résultat du problème principal à la fin. Mais avec la tabulation,
ce ne sera pas le cas. Puisque la tabulation est une approche ascendante, nous devons être
prudents en sélectionnant l'ordre dans lequel les sous-problèmes sont résolus.
8.1.6 Principe d’optimalité de BELLMAN
Enoncé du principe : Si la solution optimale d’un problème peut être calculée à partir de
solution optimale des sous problèmes, alors on dit que ce problème satisfait le principe
d’optimalité de BELLMAN, ou on dit que ce problème à une sous-structure optimal.
Exemple illustratif : problème de plus court chemin.
“En théorie des graphes, le problème de plus court chemin est le problème algorithmique qui
consiste à trouver un chemin d'un sommet à un autre de façon que la somme des poids des
arcs de ce chemin soit minimale.”
Voyons ce graphe pondéré qui a des distances entre les nœuds, notre objectif dans ce
problème est d'aller du nœud A au nœud J, en empruntant le chemin le plus court possible, et
en passant par les étapes 1,2, et 3 séquentiellement.
Pour ce faire, on va définir une fonction F(X) qui est la distance minimale requise
pour atteindre J à partir d’un nœud X (X= {A, B, C, D, E, F, G, H, I}).
80
En commençant du J, nous savons que F(J)=0, car il n’y a pas de cout de chemin pour de se
rendre à lui-même.
En remontant un niveau, on peut calculer F(H) et F(I), dont on sait qu’ils sont 3 et 4
respectivement, en se basant simplement sur les arrêts pondérés.
Maintenant, c’est là que les choses commencent à devenir intéressants, en remontant d’un
niveau, calculons F(E) qui sera le minimum de 1+F(H) et 4+F(I), on va procéder de la
même manière pour F(F) et F(G).
F(E)=min {1+F(H), 4+F(I)} = min {1+3, 4+4} = 4;
F(F)=min {6+F(H), 3+F(I)} = min {6+3, 3+4} = 7;
F(G)=min {3+F(H), 3+F(I)} = min {3+3, 3+4} = 6.
Dans la 3-ème étape nous avons 3 options car il y a 3 chemin, donc :
F(B)=min {7+F(E), 4+F(F), 6+F(G)} = min {7+4, 4+7, 6+6} = 11
F(C)=min {3+F(E), 2+F(F), 4+F(G)} = min {3+4, 2+7, 4+6} = 7
F(D)=min {4+F(E), 1+F(F), 5+F(G)} = min {4+4, 1+7, 5+6} = 8
Finalement, nous somme au nœud A, en utilisant la distance que nous avons déjà calculer
pour B, C et D, nous pouvons calculez le cout total du chemin de A à J qui est égale à :
F(A)=min {2+F(B), 4+F(C), 3+F(D)} = min {2+11, 4+7, 3+8} = 11
Puisque les 2 nœuds C et D nous donne la valeur 11 donc on va avoir 2 chemins optimales
A->C et de A->D.
Continuant notre raisonnement sur le chemin de A->C.
On a F(C)=min {3+F(E), 2+F(F), 4+F(G)} = min {3+4, 2+7, 4+6} =min {7,9,10} =
7
Remarquant que F(E) qui donne la minimum valeur (7) donc on aura : A->C->E.
On a F(E)=min {1+F(H), 4+F(I)} = min {1+3, 4+4} = {4,8} = 4
On trouve le 1-er chemin optimal : A->C->E->H->J.
En somme en trouvera 3 chemin optimal : A->C->E->H->J, A->D->F->I->J, A>D->E->H->J.
Nous pouvons remarquer qu’on a pu trouver la distance minimale de A à J en
combinant les distances minimales entre les nœuds intermédiaires et le nœud J.
Conclusion : le problème de plus court chemin a une sous-structure optimale.
Contre-exemple: problème de plus long chemin.
Maintenant, on va traiter un exemple issu d'un problème qui ne satisfait pas le principe
d’optimalité de BELLMAN, c’est le problème de plus long chemin.
“En théorie des graphes , le problème du plus long chemin consiste à déterminer la plus
longue chaîne élémentaire dans un graphe orienté. Une chaîne est élémentaire si elle ne
passe pas deux fois par le même sommet.”
Enoncé du problème :
Nous disposons d'un graphe avec des nœuds, le but de ce problème est de trouver le
chemin le plus long entre 2 sommets sans répéter un arrêt.
81
Supposons qu’on veut trouver le plus long chemin de A->C, donc on va emprunter le chemin
de A->E->D->C car on le comparant avec le chemin A->B->C, on remarque qu’il est plus
long que ce dernier.
Raisonnant maintenant par absurde, on va supposer que le principe d ‘optimalité de
BELLMAN s’appliquer à ce problème par conséquence, nous devrions pouvoir diviser le
problème en sous partie optimales, c’est dire qu’on peut écrire :
PLUS_LONG_CHEMIN(A-C) = PLUS_LONG_CHEMIN(A-D) +D-C
Examinant en 1-ér lieu le PLUS_LONG_CHEMIN(A-D), si on part de A->E->D on
constate qu’il existe un autre chemin qui est plus long que ce dernier, qui est le chemin A>B->C->D.
D’où : PLUS_LONG_CHEMIN(A-C) = PLUS_LONG_CHEMIN(A-D) +D-C = A-BC-D+D-C.
Nous pouvons remarquer qu’on vient de répéter un bord ce qui n’est pas
autorisé dans ce problème.
Conclusion :
Les sous solutions ne se combinent pas pour former une solution optimale
globale.
Le problème du plus long chemin n'a pas une sous-structure optimale.
82
8.1.7 Comment résoudre un problème de programmation dynamique
Le développement d’un algorithme de programmation dynamique se devise en quatre
étapes :
1. Identifie-s'il s'agit d'un problème de programmation dynamique :
Tous les problèmes satisfont la propriété de sous-problèmes qui se chevauchent et
satisfont également à la propriété de sous-structure optimale, ils peuvent être
résolu en utilisant la programmation dynamique,
2. Identifiez les variables du problème :
Nous devons exprimer le problème en termes de paramètres de fonction et voir lesquels de
ces paramètres changent.
3. Exprimer clairement la relation de récurrence :
C'est une étape importante. Exprimer la relation de récurrence aussi clairement que possible
renforcera la compréhension du problème et facilitera considérablement le reste.
4. Faire la mémoïsation (ou la tabulation).
8.1.8 Problème de sac à dos
On va maintenant traiter un exemple concret de la programmation dynamique, c’est le
problème de sac à dos. Le problème de sac à dos est l’un des 21 problèmes NP-complet de
Richard Karp esxposés dans son articlede 1972 . (en anglais: Knapsack problem).
L’énoncé de ce problème :
" Etant donné plusieurs objets possédants chacun un poids et une valeur et étant donné un
poids maximum pour le sac, quels objets faut-il mettre dans le sac de manière à maximiser la
valeur totale sans dépasser le poids maximal autorisé pour le sac ? " .
Alors, notre objectif est de trouver la combinaison des objets qui vont nous permettre d’avoir
la valeur maximale sans dépasser la capacité du sac à dos.
Il existe multiples façons de remplir le sac à dos. Nous, on va traiter 0-1 Knapsack problem,
càd :
On a deux possibilités soit on va prendre l’objet, soit on ne va pas le prendre.
Les données du problème peuvent être exprimés en termes mathématiques. Les objets
sont numérotés pour l’indice i variant de 1 à n.
On peut utiliser un codage binaire :
0
On ne met pas l’objet dans le sac.
Xi =
1 On met l’objet dans le sac.
83
Pour tout i appartient à {1,n}
MAX V= ∑𝑛𝑖=1 𝑣𝑖. 𝑥𝑖
La fonction objective :
V: la valeur optimale recherchée.
vi: la valeur de l’objet i.
∑𝑛𝑖=1 𝑃𝑖. 𝑥𝑖 <= P
La contrainte du poids :
P: la capacité du sac à dos.
pi: le poids de l’objet i.
La contrainte de signe :
xi>=0
, i appartient à {1, n}
Dans ce cas, nous disposons d'un sac à dos à poids maximal P=7 et 5 objets chaque objet
possède un poids pi et une valeur vi, i = {1,2,3,4,5}.
Objet
1
2
3
4
5
Vi
5
2
3
4
2
Pi
4
3
2
3
1
➢ Formulation du problème
▪
Les variables de décision
On définit la variable de décision xi associée à un objet i de la façon suivante :
1 si l'objet i est inclus
Xi=
avec : i= {1,2,3,4,5}
0 si l'objet est exclu
▪
Les contraintes
La somme des poids de tous les objets dans le sac doit être inferieure a 7.
X1.p1+X2.p2+X3.p3+X4.p4+X5.p5≤7
▪
La fonction objective
La fonction objective a pour but de maximiser la valeur totale des objets dans le sac à dos.
Max z=X1.v1+X2.v2+X3.v3+X4.v4+X5.v5
84
➢ Résolution du problème avec la programmation dynamique
1- Identifie-s'il s'agit d'un problème de programmation dynamique
▪
Sous-structure optimale
Le problème de sac à dos à la propriété de sous-structure optimale, c’est à dire qu’on peut
trouver la valeur maximale que doit contenir le sac à dos de capacite 7, en combinant les
valeurs maximales que peuvent contenir les sacs à dos de capacite 1,2,3,4,5 et 6.
▪
Chevauchement de sous problème
Nous avons déjà mentionné dans la formulation du problème que pour chaque objet on a le
choix entre soit le mettre dans le sac à dos ou le laisser de côté, puisque l‘énonce nous fournis
5 objets, on pourrait représenter les différentes choix grâce à un arbre :
Nous pouvons remarquer que des appels récursifs sont répéter, donc il y a un
chevauchement de sous problème.
2- Identifiez les variables du problème
Les deux paramètres susceptibles de changer pour chaque sous problème sont :
i :l’indice de l’élément .
C : capture disponible
3- Exprimer clairement la relation de récurrence
Le cas de bas de récursivité serait lorsqu’il n’y a aucun élément à mettre dans le sac, ou
lorsque la capacite est nulle ;
Pour le 2 -ème cas c’est lorsque le poids de l ‘objet est supérieure à celui du sac(pi>c), dans ce
cas on va exclure l’objet du sac à dos et on va prendre la valeur de l’objet précèdent avec la
même capacite ;
Le 3 -ème cas c’est lorsque le poids de l’objet est inférieur ou égale à la capacite du sac à dos,
dans ce cas on a 2 possibilités soit on inclut l’objet si sa valeur maximise la valeur totale,
sinon on l’exclut et on prend la valeur de l’élément précèdent en gardant la même capacite.
Ce qui se traduit mathématiquement par :
Soit f la fonction qui définit la valeur optimale du sac à dos :
f(i,c)=0 si c = 0
f(i,c)= f (i-1, c) si pi > c
f(i,c)=max {f (i-1, c), vi + f(i-1, c-pi)} si pi <= c
85
4- Faire la mémoïsation
Passons maintenant à résoudre le problème en utilisant les formules récursives obtenues :
On va stocker les valeurs dans un tableau à 2 dimensions. Les colonnes représentent la
capacité des sous sacs à dos et le lignes représentes l’indice de l’élément.
La 1-er ligne et la 2 -ème colonne représentent les cas de bas de la fonction récursive, donc
ces cases prennent la valeur 0.
Prenant le cas de la case de coordonnée (1,1), puisque pi=3 > c=1 donc f (1,1) =f (0,1) =0.
Même cas pour la case de coordonne (1,2) : f (1,2) = 0.
Mais pour la case (1,3), on a pi=c=3 donc :
f (1,3) =max {f (0,3), 2+f (0,1)} =max {0,2} =2.
On va procéder de la même manière pour les autres cases jusqu’à ce qu’on trouve la valeur
maximale de la sélection des 5 objets qui est égale à 10.
On a pu connaitre la meilleure valeur, mais quels articles devons-nous sélectionner pour
aboutir à ce résultat ?
L'idée est de commencer de la dernière case et revenir en arrière, “nous incluons un élément
si la valeur courante et la valeur de la ligne au-dessus sont différentes, sinon il sera exclu”.
Commençons par la case (5,7), la valeur qui est directement au-dessus de 10 est 9, comme 9
est différente de 10, donc l’élément 5 est inclus en soustrayant son poids du capacite du sac à
dos la nouvelle capacite du sac à dos est c=5, passant à la case (4,5), étant donné que 6 et 7
sont différents l’élément 4 est aussi inclus d’où c=1, passant à la case (3,1), vu que la valeur 2
se répète l’élément 3 n’est pas inclus, passant à la case (2,1) en gardant la capacite
précédente, puisque 2 est 0 sont différents l’élément 2 est inclus et on obtient c=0 , on a rien
à mettre dans le sac d’où l'élément 1 n’est pas inclus.
Recapitulons, les éléments sélectionnés sont : 5,4, et 2
86
Implémentation de l’algorithme en c++
Comparaison :
87
8.2 Branch & Bound
8.2.1 Introduction
Pour plusieurs problèmes, en particulier les problèmes d’optimisation, l’ensemble de leurs
solutions est fini (en tous les cas, il est dénombrable). Il est donc possible, en principe,
d’énumérer toutes ces solutions, et ensuite de prendre celle qui nous arrange. L’inconvénient
majeur de cette approche est le nombre prohibitif du nombre de solutions : il n’est guère
évident d’effectuer cette énumération. La méthode de branch and bound (procédure par
évaluation et séparation progressive) consiste à énumérer ces solutions d’une manière
intelligente en ce sens que, en utilisant certaines propriétés du problème en question, cette
technique arrive à éliminer des solutions partielles qui ne mènent pas à la solution que l’on
recherche. De ce fait, on arrive souvent à obtenir la solution recherchée en des temps
raisonnables. Bien entendu, dans le pire cas, on retombe toujours sur l’élimination explicite
de toutes les solutions du problème. Pour ce faire, cette méthode se dote d’une fonction qui
permet de mettre une borne sur certaines solutions pour soit les exclure soit les maintenir
comme des solutions potentielles. Bien entendu, la performance d’une méthode de branch
and bound dépend, entre autres, de la qualité de cette fonction (de sa capacité d’exclure des
solutions partielles tôt).
8.2.2 Définition
L’algorithme de séparation et évaluation, plus connu sous son appellation anglaise Branch
and Bound, repose sur une méthode arborescente de recherche d’une solution optimale par
séparations et évaluations, en représentant les états des solutions par un arbre d’états, avec
des nœuds, et des feuilles.
8.2.3 Relaxation linéaire
Consiste à élargir l’ensemble des solutions et d’explorer un espace plus large mais plus facile
à optimiser.
Exemple :
(P) Min Z=x1-x2
-4x1+6x2≤ 9
x1+x2≤ 4
x1,x2≥ 0
x1,x2 ∈ ℕ
La relaxation linéaire donne :
(LP ) Min Z=x1-x2
88
8.2.4 Principes
➢ Idée générale
L’algorithme branch-and-bound explore l’arbre des possibilités. Il utilise pour cela un
parcours en largeur. À chaque nœud qu’il rencontre, il cherche à estimer un intervalle aussi
étroit que possible estimant la longueur d’un plus court chemin obtenu à partir de la branche
de l’arbre où nous sommes.
➢ Le principe de séparation
La phase de séparation consiste à diviser le problème en un certain nombre de sous-problème
qui ont chacun leur ensemble de solutions réalisable, de telle sorte que tous ces ensembles
forment un recouvrement (idéalement une partition) de l’ensemble S.
Les ensembles de solutions (et leur sous-problème associés) ainsi construits ont une
hiérarchie naturelle en arbre, qui s’appelle arbre de recherche ou arbre de décision.
Exemple :
Par exemple, un PLNE ayant une variable x1 € {0 , 9} peut être résolu en posant d’abord
x1 <= 4, puis x1 >= 5
Voici un schéma explicatif :
89
➢ La procédure de l’évaluation
L’évaluation d’un nœud de l’arbre de recherche a pour but de déterminer l’optimum de
l’ensemble des solutions réalisable associé au nœud en question ou, au contraire de prouver
que cet ensemble ne contient pas de solution intéressante pour la résolution du problème.
On peut faire l’évaluation soit par la méthode graphique soit par la méthode simplexe.
8.2.5 Application 1 (minimisation)
Dans cet exemple on doit traiter un problème de minimisation qu’est définie par :
( P ) : Min Z = x1 – 2*x2
-4*x1 + 6*x2 ≤ 9
x1 + x2 ≤ 4
x1,x2 ≥ 0
x1,x2
ℕ
Première étape : relaxation du problème linéaire
La première chose à faire est de relaxer le problème (P) on obtient un problème ( P0) par la
suppression des contrainte d’intégrité ( x1,x2 ℕ ) , qu’on peut résoudre soit par la méthode
de simplexe ou quand a fait dans cette exemple par la méthode graphique
Voici le problème relaxé :
90
( P0 ) : Min Z = x1 – 2*x2
-4*x1 + 6*x2 ≤ 9
x1+ x2 ≤ 4
x1,x2 ≥ 0
Deuxième étape : séparation du problème relaxé
On trouve ci-dessous Le domaine admissible du problème relaxé avec les coordonnés de ces
points sommés :
On calcule les images de ces points sommés par la fonction objective et on choisit la plus
petite image comme solution optimale du problème relaxé :
Les images des points sommés :
•
Pour le point A( 0 , 1.5 )
•
Pour le point B( 1.5 , 2.5 ) --------> Z = -3.5
•
Pour le point C( 4 , 0 )
problème ( P0 ) est :
•
x1=1.5
x2=2.5
--------> Z = -3
--------> Z = -3 Donc la solution optimale du
Z=-3.5
On remarque ici que cette solution n’est pas entier dont on doit séparer le problème ( P0 ) on
deux sous-problème (P1) et (P2) par rapport aux variable x2 .
REMARQUE :
Pour le choix de la variable qu’on doit séparer avec il se fait au hasard on peut séparer par
rapport à la variable x1 comme on peut séparer par rapport a la variable x2
Dans cet exemple on a choisi de séparer par rapport à x2
91
Voici les deux problèmes (P1) et (P2) qui ont la même structure que (P0) , on a ajouté a (P1)
la contrainte x2 ≥3 et a (P2) la contrainte x2 ≤2
Le problème linéaire P1 :
( P1 ) : Min Z1=x1-2x2
•
-4x1+6x2≤ 9
•
x1+x2≤ 4
•
x2 ≥3
•
x1,x2≥ 0
•
-4x1+6x2≤ 9
•
x1+x2≤ 4
•
x2 ≤2
•
x1,x2≥ 0
Le problème linéaire P2 :
( P2 ) : Min Z2=x1-2x2
Troisième étape : résolution des deux sous-problème (P1) et (P2)
D’après le graphe si dessous on remarque que le problème (P1) n’admet aucune solution
admissible (aucune intersection entre le domaine du problème (P0) et celle du (P1)).
Et pour le problème (P2) on doit exécuter les mêmes étapes de la résolution du problème
(P0)
92
Pour le problème (P1) il n'y a pas de solution possible.
Pour le problème (P2), la région réalisable avec les cordonnés de ces points sommés est
représentée dans le schéma suivant :
On calcule les images de ces points sommé par la fonction objective et on choisit la plus petite
image comme solution optimale du problème (P2) :
Les images des points sommés :
•
Pour le point A( 0 , 1.5 )
•
Pour le point B( 0.75 , 2 ) --------> Z = -3,25
•
Pour le point C( 2 , 2 )
--------> Z = -2
•
Pour le point D( 4 , 0 )
--------> Z = 4
•
Donc la solution optimale du problème ( P2 ) est :
x1=0.75
x2=2
--------> Z = -3
Z=-3.25
Quatrième étape : séparation du problème relaxé ( P2 )
On remarque ici que x1 n’est pas entier donc on doit séparer le problème ( P2 ) en deux sousproblèmes (P21) et (P21) par rapport à x1 (car elle est la seule variable qui n’est pas entier
dans la solution ,donc on ‘est obligé de faire la séparation par rapport à x1 ) .
Les deux sous-problèmes (P21) et (P21) sont définie par :
Le problème linéaire P21 :
( P21 ) : Min Z21 = x1-2x2
93
•
-4x1+6x2≤ 9
•
x1+x2≤ 4
•
x2 ≤2
•
x1≤ 0
•
x1,x2≥ 0
•
-4x1+6x2≤ 9
•
x1+x2≤ 4
•
x2 ≤2
•
x1 ≥1
•
x1,x2≥ 0
Le problème linéaire P22 :
( P22 ) : Min Z22 =x1-2x2
D’après le graphe ci-dessous on constate que les deux problèmes ont des solutions
admissibles, donc on résout le problème (P21) puis (P22) :
Cinquième étape : résolution des deux sous-problème (P21) et (P22)
Pour le problème (P21) la région réalisable et la cordonné du point sommé est représentée
sur le schéma ci-dessous
94
Alors, l’image du seul point sommé A( 0 ,1.5 ) par rapport à la fonction objectif est Z = -3
qui représente la solution optimale pour (P21) mains n’est pas pour notre problème
initiale ( P )
Pour le problème (P22), la région réalisation avec les cordonnées des points sommés est
représentée dans le schéma suivant :
On calcule les images de ces trois points sommés par la fonction objective et on choisit la plus
petite image comme solution optimale du problème (P22) :
Les images des points sommés :
•
Pour le point A( 1 , 2 )
---------> Z = -3
•
Pour le point B( 2 , 2 )
---------> Z = -2
•
Pour le point C( 4 , 0 ) ---------> Z = 4
95
Donc la solution optimale du problème ( P22 ) est :
•
x1=1
x2=2
Z=-3
Donc en résument ce qu’on a fait jusqu’à le moment par un schéma explicatif qui contient les
différents problèmes qu’on a résolus avec ses solutions optimales
Puisque la solution du problème relaxé ( P22 ) est entier et ( Z21=-3 ) ≥ ( Z22=-3 ) donc on
arrête ici avec la solution du problème ( P22 ) comme une solution optimale pour le problème
initiale ( P )
8.2.6 Application 2(maximisation)
(P)
MAX Z=5x+2y
2x+3y≤17
10x+3y≤ 45
x,y≥ 0
x,y
ℕ
Soit le programme linéaire (P0) associé à (P):
(P0) MAX Z=5x+2y
2x+3y≤17
10x+3y≤ 45
x,y≥ 0
96
La méthode graphique nous donne comme solution optimale :
(P0) x = 3.5,
y = 3.33 ,
z0max= 24.16
La solution optimale de (P) doit vérifier soit y ≤ 3, soit y ≥ 4
97
Formons les 2 problèmes issus de (P0) :
(P1) MAX Z=5x+2y
2x+3y≤17
10x+3y≤ 45
y ≤3
x,y≥ 0
(P1) x = 3.6, y = 3, z1max = 24
(P2) MAX Z=5x+2y
2x+3y≤17
10x+3y≤ 45
y≥4
x,y≥ 0
(P2) x = 2.5, y = 4, z2max = 20.5
98
Puisque z1max > z2max on choisit de travailler avec (P1) pour l’instant. Si la solution
optimale de (P0) vérifie les contraintes de (P1), elle vérifiera aussi soit x ≤ 3 ou x ≥ 4.
Formons 2 nouveaux problèmes issus de (P1):
Formons les 2 problèmes issus de (P1) :
(P3) MAX Z=5x+2y
2x+3y≤17
10x+3y≤ 45
y ≤3
x≤3
x,y≥ 0
99
(P3) x = 3, y = 3, z3max = 21
(P4) MAX Z=5x+2y
2x+3y≤17
10x+3y≤ 45
y ≤3
x≥4
x,y≥ 0
(P4) x = 4, y = 1.66, z4max = 23.33
Puisque z4max > z3max on choisit de travailler avec (P4) pour l’instant : soit y ≤ 1 ou y ≥ 2
100
(P5) MAX Z=5x+2y
2x+3y≤17
10x+3y≤ 45
y ≤3
x≥4
y≤1
x,y≥ 0
(P5) x = 4.2, y = 1, z5max = 23
(P6) MAX Z=5x+2y
2x+3y≤17
10x+3y≤ 45
y ≤3
x≥4
y≥2
x,y≥ 0
Pas de solutions réalisables
101
Formons les 2 problèmes issus de (P5) :
(P7) MAX Z=5x+2y
2x+3y≤17
10x+3y≤ 45
y ≤3
x≥4
y ≤1
x≤4
x,y≥ 0
(P7) x = 4, y = 1, z6max = 22
(P8) MAX Z=5x+2y
2x+3y≤17
10x+3y≤ 45
y ≤3
x≥4
y≤1
x≥5
x,y≥ 0
Pas de solutions réalisables
102
Résumé
-(P7) possède une solution optimale entière réalisable pour (P).
-Pour savoir si elle est optimale, il faut examiner les problèmes que nous avons laissés de côté
en créant des coupes.
-(P8) et (P6) : on peut les négliger (pas de solution
réalisables).
-(P3) : on peut le négliger car z6max = 22 > 21 = z3max.
-(P2) : on peut le négliger car z6max = 22 > 20.5 = z2max.
-L’ajout de coupes à (P2) ne peut donner de solutions où la fonction objective est plus grande
que 20,5.
Donc, x = 4, y = 1 et z6max = 22 est la solution optimale de (P).
Voici un schéma montrant toutes les étapes effectuées
103
9 Les méthodes approchées
9.1 Chaines de Markov
9.1.1 Introduction
Lorsque deux systèmes identiques à un instant donné peuvent avoir des comportements
différents dans le futur, on est amené à introduire une suite de variables aléatoires (Xt)t pour
décrire leurs évolutions : Xt servant à définir l’état du système étudié à l’instant t. Si le
système étudié est une population, l’état du système à un instant donné peut être décrit
simplement par un nombre lorsqu’on s’intéresse uniquement à la taille de cette population,
ou par un ensemble de nombres tels que l’ensemble des positions de chaque individu
lorsqu’on s’intéresse à la répartition spatiale de la population.
On va ici se limiter à des systèmes dont l’état peut être décrit par une variable aléatoire ou un
vecteur aléatoire discret.
En général l’évolution futur d’un système dépendant au moins de son état présent, les
variables aléatoires décrivant l’état du système à chaque instant ne pourront pas être
considérées comme indépendantes. On va s’intéresser aux situations où l’évolution future
d’un système ne dépend du passé qu’au travers de son état présent et pour simplifier on
n’étudiera pas l’évolution du système en temps continu, mais son évolution en une
Suite infinie d’instants 0 = t0 < t1 < . . . < tn < .... On travaillera donc avec une suite de
variables aléatoires discrètes (Xn)n∈N, chaque variable aléatoire étant à valeurs dans un
ensemble fini ou infini dénombrable noté X que l’on identifiera à {1, . . ., N} si X est composé
de N éléments et à N* si X est infini.
9.1.2 Exemple introductif
L’observation du ciel a permis de déduire les statistiques suivantes :
– Une journée ensoleillée est suivie d’une journée ensoleillée avec une probabilité 0, 9,
– Une journée ensoleillée est suivie d’une journée pluvieuse avec une probabilité 0, 1,
– Une journée pluvieuse est suivie d’une journée ensoleillée avec une probabilité 0, 5,
– Une journée pluvieuse est suivie d’une journée pluvieuse avec une probabilité 0, 5.
En introduisant la suite de variables aléatoires (Xn)n∈N représentant l’état du ciel (S pour
soleil ou P pour pluie) à la date n ≥ 0, on peut écrire les probabilités conditionnelles :
Pr( Xn+1 = S | Xn = S )= 0, 9
104
Pr Xn+1 = S | Xn = P = 0, 5
Naturellement :
Pr( Xn+1 = S | Xn = S) + Pr( Xn+1 = P | Xn = S) = 1
Si on s’intéresse à l’évolution de l’état du ciel au fil du temps, on peut représenter le
phénomène par le graphe suivant :
Par exemple lorsque l’on est à l’état Soleil, avec une probabilité 0,9 on reste dans cet état, et
on va vers l’état Pluie avec une probabilité 0,1. D’où l’appellation probabilités de transition
pour les probabilités conditionnelles ci-dessus.
Notons T la matrice d’ordre 2 (appelée matrice de transition) :
Et intéressons-nous à la distribution πn de Xn, définie par :
πn = Pr(Xn = S) , Pr(Xn = P) .
. On calcule avec la formule des probabilités totales :
Pr(Xn+1 = S) = Pr(Xn+1 = S et Xn = S) + Pr(Xn+1 = S et Xn = P)
= Pr(Xn = S) · Pr(Xn+1 = S | Xn = S) + Pr(Xn = P) · Pr(Xn+1 = S | Xn = P)
Et de même :
Pr(Xn+1 = P) = Pr(Xn = S) · Pr(Xn+1 = P | Xn = S) +
Pr(Xn = P) · Pr(Xn+1 = P | Xn = P)
Sous forme matricielle cela se résume en :
πn+1 = πn · T
(remarquons qu’il s’agit du produit à gauche de T par la matrice ligne πn) Par récurrence
immédiate on peut écrire :
∀n ∈ N, πn = π0 · Tn.
105
9.1.3 Définitions
Une chaîne de Markov est un processus stochastique (Xt)t ∈T Markovien, homogène et où T
est dénombrable
Un processus stochastique est une famille de variables aléatoires (Xt)t∈T où T ⊂ R+.
Un processus (Xt)t∈T est Markovien si et seulement si le futur dépend uniquement du
présent :
∀t1 < t2 < · · · < tn < tn+1 ∈ T , ∀A ⊂ S
P(Xt n+1 ∈ A| Xt1 Xt2 , . . . , Xtn ) = P(Xt n+1 ∈ A| Xt n )
Un processus (Xt)t∈T est homogène si et seulement si les probabilités conditionnelles ne
dépendent pas du temps:
∀t, t’ ∈ T, s > 0\t + s, t’ + s ∈ T, A ⊂ S
P(Xt+s ∈ A|Xt) = P(Xt’+s ∈ A|Xt’ )
9.1.4 Graphe de transition
Le graphe de transition est une autre représentation d'une chaîne de Markov permettant de
déduire les propriétés qualitatives. Ce graphe orienté possède un sommet pour chaque état de
la chaîne et un arc d'un sommet vers un autre si la probabilité de cette transition est non
nulle.
Il convient de diviser les états d'une chaîne en classes, ensembles tels qu'il existe un chemin
en chaque sens entre toute paire de sommets d'une même classe, c'est-à-dire les composantes
fortement connexes du graphe de transitions.
Définition
Une chaîne de Markov homogène à ensemble d’états E peut être représentée par le graphe
orienté valué G tel que :
– ses sommets sont les états de E,
– il y a un arc du sommet i vers le sommet j si 𝑝𝑖,𝑗 > 0,
– la valuation de l’arc i → j est la probabilité de transition 𝑝𝑖,𝑗
106
9.1.5 Chaines réductibles et irréductibles
Définition
Une chaîne de Markov est dite irréductible si chaque état est accessible à partir de chaque
autre état en un nombre fini d’étapes. Cela se traduit par :
∀(𝒊, 𝒋) ∈ 𝑬 × 𝑬, ∃𝒏 ∈ 𝑵, 𝒑𝒏𝒊,𝒋 > 𝟎
On peut montrer que la relation « l’état i est accessible à partir de j et l’état j est accessible à
partir de i » définit une relation d’équivalence sur l’ensemble des états E. Les classes
d’équivalences de cette relation sont les composantes fortement connexes du graphe orienté
G.
Par définition, un graphe représentant une chaîne de Markov irréductible est fortement
connexe (il ne présente qu’une seule classe d’équivalence)
Définition
Si une chaîne de Markov n’est pas irréductible, alors elle est dite réductible et G admet
plusieurs composantes fortement connexes.
Une composante qui ne mène à aucune autre est dite finale, sinon les états qui la composent
sont dits transients (ou transitoires).
Remarquons qu’une fois qu’on a quitté une classe à états transients, on ne peut pas y
retourner (par définition de la classe d’équivalence).
Exemple
Considérons une chaîne de Markov réductible. Lorsque les composantes finales sont toutes
réduites à un seul état, on dit que l’état correspondant est absorbant, et que la chaîne ellemême est absorbante.
La forme canonique de la matrice de transition devient :
𝑃=
𝐼𝑚−𝑠,𝑚−𝑠
𝑅𝑚−𝑠
0
𝑄𝑠,𝑠
Où s est le nombre d’états transitoires (et donc n = m − s est le nombre d’états absorbants.
9.1.6 Chaines périodiques et apériodiques
Définition
Un état i d’une chaîne de Markov est dit périodique (de période p) si:
107
𝒑 = 𝒑𝒈𝒄𝒅{𝒏, 𝑷𝒓(𝑿𝒏 = 𝒊|𝑿𝟎 = 𝒊) > 𝟎} > 𝟏
Autrement dit, si on considère le graphe associé à la chaîne de Markov, tous les cycles partant
de i et revenant en i ont une longueur divisible par p > 1.
Lorsque p = 1, l’état est dit apériodique.
Il est donc légitime de parler de la période d’une classe, et de classe périodique (ou
apériodique). Pour une chaîne de Markov irréductible (qui a donc une seule classe), on peut
parler de chaîne périodique ou apériodique.
On remarque aussi que dès que le graphe d’une chaîne de Markov irréductible a une boucle
sur un sommet s, alors la chaîne est apériodique (comme le sommet s).
9.1.7 Chaines de Markov ergodiques
Définition
Une chaîne de Markov est ergodique si (πn) converge, indé
pendamment de π0.
Une chaine de markov est dite ergodique ou irréductible si tout état est atteignable depuis
tout autre état. Elle est dite régulière s’il existe une puissance Pk de sa matrice de transition P
dont tous mes éléments sont strictement positifs. Une chaine régulière est donc ergodique.
La particularité des chaînes régulières est que l'on peut aller de n'importe quel état vers
n'importe quel autre état en un nombre fixé k de pas, où k est indépendant de l'état de
départ. Pour les chaînes ergodiques, on demande simplement que tout état soit atteignable
depuis tout autre, mais le nombre de pas n'est pas nécessairement fixé
9.1.8 Théorème des coupes
Pour une chaîne ergodique se pose le problème de déterminer 𝜋 ∗.
D’après la proposition 2.4, lorsque 𝒏 → +∞, 𝑷𝒏 converge vers une matrice dont toutes les
lignes sont égales à 𝜋 ∗. On voit qu’on peut utiliser les algorithmes permettant de calculer les
puissances successives d’une matrice.
On peut également résoudre le système linéaire : 𝝅∗ = 𝝅∗ .P. Ce système est de rang m -1 (m :
nombre d’états), et la somme des éléments de 𝜋 ∗ est 1, ce qui permet de déterminer 𝝅∗ .
Dans les deux cas, cela peut être assez compliqué lorsque la chaîne de Markov a un très grand
nombre d’états.
Pour résoudre le système dans les cas « simples » (ceux des exercices), on peut aussi utiliser
le « théorème » des coupes, qui permet d’obtenir un système d’équations équivalent au
précèdent.
Proposition : Théorème des coupes (conservation des flux).
Soit (𝑨, 𝑩) une partition de 𝑬(𝑨 ∪ 𝑩 = 𝑬 𝒆𝒕 𝑨 ∩ 𝑩 = ∅). Alors :
108
∑ ∑ 𝜋𝑖∗ 𝑝𝑖,𝑗 = ∑ ∑ 𝜋𝑖∗ 𝑝𝑖,𝑗
𝑗∈𝐵 𝑖∈𝐴
𝑗∈𝐴 𝑖∈𝐵
Remarque
Le but est de choisir la partition (ou la coupe entre A et B) en minimisant le nombre
d’inconnues 𝜋𝑖∗ qui interviennent. Chaque coupe fournit une équation linéaire en les 𝜋𝑖∗ . On
utilise alors m- 1 coupes (utiliser davantage de coupes fournirait des équations linéairement
liées au précédentes car le système est de rang m - 1) et la condition ∑𝑖 𝜋𝑖∗ = 1
Exemple
On considère la chaine de Markov représentée par le graphe:
Le but Cette chaine est apériodique irréductible donc ergodique.
Avec la coupe 𝐴 = {1}, 𝐵 = {2,3} on obtient l’équation : 0,8𝜋1∗ = 0,3𝜋2∗ .
Avec la coupe 𝐴 = {1,2}, 𝐵 = {3} on obtient l’équation : 0,3𝜋2∗ = 0,2𝜋3∗.
En ajoutant la contrainte 𝜋1∗ + 𝜋2∗ + 𝜋3∗ = 1 on déduit la valeur de 𝜋𝑖∗.
Remarquons que les probabilités des boucles n’interviennent pas.
9.1.9 Chaine de Markov absorbante
Définition
Une chaine de Markov est absorbante lorsqu’il existe un ou plusieurs états qui sont
absorbants
Càd, qu’on ne peut plus sortir une fois qu’on est tombé dedans
Graphe de transition
109
9.2 La recherche locale
9.2.1 Introduction
On va commencer par une problématique de voyageur de commerce pour définir l`objectif de
la recherche locale.
Problématique : le problème du voyageur de commerce est un problème d’optimisation qui
consiste à déterminer, étant donné une liste de villes et les distances entre toutes les paires de
villes le plus court circuit qui passe par chaque ville une et une seule fois. Malgré la simplicité
de l’énoncé, on ne connaît pas l'algorithme permettant de trouver une solution exacte
rapidement dans tous les cas. Plus précisément, on ne connaît pas d'algorithme en temps
polynomial et version décisionnelle du problème du voyageur de commerce est un problème
NP-Complet, ce qui est un indice de sa difficulté. C'est un problème algorithmique célèbre,
qui a donné lieu à de nombreuses recherches et qui est souvent utilisé comme introduction à
l'algorithmique ou à la théorie de complicité. Pour choisir l`optimale trajet de l`ensemble de
trajet proposé (ensemble de solution), on choisit le trajet qui vérifie notre objective qui est la
minimisation de temps et de trajet en passant par toutes les villes.
Définition
La recherche locale est une méthode générale utilisée pour résoudre des problèmes
d'optimisation, c'est-à-dire des problèmes où l'on cherche la meilleure solution dans un
ensemble de solutions candidates. La recherche locale consiste à passer d'une solution à une
autre solution proche dans l'espace des solutions candidates (l'espace de recherche) jusqu'à
ce qu'une solution considérée comme optimale soit trouvée.
9.2.2 Le principe
Le principe de la recherche locale est basé sur deux notions principaux : le voisinage et la
fonction objectif.
➢ Notion de voisinage
Un algorithme de recherche locale part d'une solution candidate et la déplace de façon
itérative vers une solution voisine. Cette méthode est applicable seulement si une notion de
voisinage est définie sur l'espace de recherche. Par exemple, le voisinage d'un arbre
recouvrant est un autre arbre recouvrant qui diffère seulement par un nœud. Pour le
problème SAT, les voisins d'une bonne affectation sont habituellement les affectations qui
diffèrent seulement par la valeur d'une variable. Le même problème peut avoir plusieurs
définitions différentes de voisinage ; l'optimisation locale avec des voisinages qui limitent les
changements à k composantes de la solution est souvent appelée k-optimale.
Habituellement, chaque solution candidate a plus d'une solution voisine ; le choix de celle
vers laquelle se déplacer est pris en utilisant seulement l'information sur les solutions
voisines de la solution courante, d'où le terme de recherche locale. Quand le choix de la
solution voisine est fait uniquement en prenant celle qui maximise le critère, la métaheuristique prend le nom de Hill Climbing.
110
➢ La fonction objectif
Le terme fonction objectif ou fonction économique, est utilisé en optimisation mathématique
et en recherche opérationnelle pour désigner une fonction qui sert de critère pour déterminer
la meilleure solution à un problème d'optimisation. Concrètement, elle associe une valeur à
une instance d'un problème d'optimisation. Le but du problème d'optimisation est alors de
minimiser ou de maximiser cette fonction jusqu'à l'optimum, par différents procédés comme
l'algorithme du simplexe.
Par exemple, dans les réseaux de télécommunication une fonction objectif couramment
utilisée pour calculer des chemins optimaux au travers d'un réseau informatique est le
nombre de routeurs traversés.
La fonction objectif considérée associe à chaque chemin dans le réseau le nombre de routeurs
que ce chemin traverse. Le but est de trouver un chemin qui minimise cette fonction.
➢ Les étapes
Le principe de la recherche locale est basé sur trois étapes :
•
Étape 1 :
a) Choisir une solution initiale s ∈ S
b) s* ← s
•
Étape 2 :
a) choisir s' ∈N(s)
avec : fonction N : s →2^s, ∀ s ∈S, N(s) ⊂ S
b) s ← s' (i.e. replacer s par s')
c) terminer et retourner la meilleure solution trouvée si la condition d'arrêt vérifiée
•
Étape 3 :
a) s* ← s si f(s) < f(s*)
b) aller à l'étape 2
Remarque :
Comment choisir la solution initiale : heuristiques gloutonnes rapides ou aléatoire
Métaheuristiques différentes => stratégies de choix différentes à l'étape 2
111
9.2.3 Les méthodes
Les méthodes approches de résolution se divisent en deux catégories les méthodes approches
et les méthodes exactes, pour notre mini projet on s’intéresse au méthode approchées qui se
constitue de deux catégorie les heuristiques (sont des méthodes de calcul qui fournit
rapidement une solution réalisable ,pas nécessairement optimale ou exacte pour un problème
d’optimisation )et les métaheuristiques (sont des méthodes heuristique plus évolué et
améliorer avec des idées avancées, tente de trouver un optimum global d’un problème
d’optimisation difficile sans être piège par les optimum locaux). Parmi les méta-heuristique
on a la recherche locale qui utilise plusieurs méthodes, on va traiter au suivant les deux
méthodes :la méthode de descente et la méthode de recuit simulé.
Descente
Un algorithme a directions de descente est un algorithme d’optimisation différentiable,
destiné à minimiser une fonction réelle différentiable définie sur un espace euclidien ou,
plus généralement, sur un espace hilbertien. L'algorithme est itératif et procède donc par
améliorations successives. Au point courant, un déplacement est effectué le long d'une
direction de descente, de manière à faire décroître la fonction. Le déplacement le long de
cette direction est déterminé par la technique numérique connue sous le nom de recherche
linéaire.
Cette approche algorithmique peut être vue comme une technique de globalisation, c'est-àdire une méthode permettant d'obtenir la convergence des itérés (sous certaines conditions)
quel que soit l'itéré initial choisi. Elle s'apparente ainsi à l’algorithme a régions de confiance ;
112
ces dernières améliorent légèrement (mais parfois de manière décisive) leurs résultats de
convergence mais sont plus compliquées à mettre en œuvre, ce qui limite parfois leur
application.
Les types
On trouve à la méthode descente plusieurs algorithmes et chaque algorithme porte en général
le nom de sa direction de descente, ces algorithmes sont définis selon deux critères :
+ la stratégie de génération de la solution initial
+la détermination de voisinage et le déplacement
Parmi ces algorithmes, il existe :
l'algorithme du gradient
les algorithmes du gradient conjugué
l'algorithme de Newton
les algorithmes de quasi-Newton
l'algorithme de Gauss-Newton
L`algorithme du gradient est un plus important, il base sur le gradient et le pas de
déplacement pour déterminer la solution voisinage en utilisant la relation suivante
Xk+1 = Xk −αk∇f (Xk )
Avec
f: fonction objective
αk: le pas de déplacement
On a l` algorithme suivant qui explique les étapes de cette méthode Algorithme de cette
méthode est comme suit :
●Données :f(fonction objective),E(l'ensemble de solution)
●initialisation: choix de solution initiale X0
●solution optimale courante X*=X0, k=1
●tant que le test d'arrêt non satisfait :
1-voisinage : génération de voisins candidats Xk
2-choix du meilleur voisin candidats Xk
3-Si f(Xk)<f(X*) donc X*=Xk
K=k+1 aller à 1
Fin si
113
9.2.4 Le recuit simulé
➢ Définition
Le recuit simulé est une méthode méta-heuristique d’optimisation, conçu pour chercher un
optimum global, Inspirée d'un processus utiliser en métallurgique
Le recuit métallurgique est un procédé correspondant à un cycle de chauffage, celui-ci
consiste en une étape de montée graduelle c’est-à dire un chevauchement en température
suivi d’un refroidissement contrôlé.
Cette procédure permet de minimiser l’énergie du matériau.
➢ Le principe
Le recuit simulé suit un principe bien spécifié en trois étapes :
•
Étape 1 :
Choisir s’ N(S)
La solution initiale peut être prise au hasard dans l’espace des solutions possible, elle peut
aussi être générée par une méthode heuristique classique, telle que la descente du gradient.
•
Étape 2 :
si f(s')<=f(s):alors accepter s' , sinon accepter s avec une probabilité
p(Δf/KΔT)
La question qui se pose maintenant est comment déterminer cette probabilité :
Pour cela on va partir un peu loin pour comprendre le principe de détermination de cette
probabilité :
Premièrement l’idée principale de recuit simule tel qu’il a été proposé par METROPOLIS (est
de simuler le comportement de la matière dans le processus du recuit très logement utilise
dans la métallurgique le but est d’atteindre un état d’équilibre (ou l’énergie minimale)
représente dans la méthode du recuit simule. La solution optimale d’un problème, l’énergie
du système sera calculé par une fonction cout(ou fonction objectif) spécifique a chaque
problème.
114
La méthode va donc essayer de trouver la solution optimale en optimisant une fonction
objectif, pour cela un paramètre fictif a été ajouté.
METROPOLIS a retreinte des principes de la physique (c’est le recuit métallurgique) pour
pouvoir utiliser ce critère qui est à la base de la méthode de recuit simule.
Dans le domaine du physique :
P(E) = exp(-ΔE/KT)
C’est le mécanisme naturel de minimisation de l’énergie qui repose la distribution de
probabilité de Boltzmann
Avec ΔE=Ek+1 – Ek
Sachant que :
Ek+1 : énergie du métal après la diminution du température
Ek : énergie du métal actuellement
K : constant de Boltzmann
ΔT: la température du métal
La température initiale T0 doit être assez élevée, car c’est elle qui fixe la probabilité d’accepter
ou de refuser les solutions défavorables à l’optimisation de la fonction.
On fait baisser la température d’une façon continue le courant est d’utiliser la loi suivante
Ti+1= αTi
Avec :(α<1) en générale on prend ( α=0,9 à 0,99) α est à choisir avec précaution .en effet, si
elle est choisi très grand T baissera très rapidement ,sinon la Température baissera très
lentement .
Maintenant on revient à notre relation de comparaison(f(s')<=f(s) )
on génère une solution aléatoire dans le voisinage de la solution actuelle et on compare les
deux solution selon la relation si dessus.
à mentionner que :
Si T est très élevée alors p est élevée (−Δ/T tend vers 0 , e^0 = 1). On a de forte chance
d’accepter la nouvelle solution (une dégradation de qualité).
— Si T est très petite alors p est très petite (−Δ/T tend vesr 1 , e^1 = 0).
On a de forte chance de laisser la solution actuelle.
•
Étape 3 :
Terminer si la condition d'arrêt est réalisée :
La condition finale est d’atteindre une température finale ou un état d’équilibre(optimum
global)
115
➢ Algorithme
116
9.3 Algorithme de Colonies de Fourmis
9.3.1 Introduction
Les algorithmes de colonies de fourmis sont des algorithmes inspirés du comportement des
fourmis et qui constituent une famille de métaheuristiques d’optimisation.
Initialement proposé par Marco Dorigo et al. dans les années 1990, pour la recherche de
chemins optimaux dans un graphe, le premier algorithme s’inspire du comportement des
fourmis recherchant un chemin entre leur colonie et une source de nourriture. L’idée
originale s'est depuis diversifiée pour résoudre une classe plus large de problèmes et
plusieurs algorithmes ont vu le jour, s’inspirant de divers aspects du comportement des
fourmis.
En anglais, le terme consacré à la principale classe d’algorithme est « Ant Colony
Optimization » (abrégé ACO). Les spécialistes réservent ce terme à un type particulier
d'algorithme. Il existe cependant plusieurs familles de méthodes s'inspirant du
comportement des fourmis. En français, ces différentes approches sont regroupées sous les
termes : algorithmes de colonies de fourmis, optimisation par colonies de fourmis, fourmis
artificielles, ou diverses combinaisons de ces variantes.
9.3.2 Pourquoi Les Fourmis et leur Relation avec L’Informatique ?
Le comportement des fourmis est un comportement collectif. Chaque fourmi a pour priorité
le bien-être de la communauté.
Chaque individu de la colonie est à priori indépendant et n’est pas supervisé d’une manière
ou d’une autre. Ce concept est appelé Hétérarchie (s’opposant à la Hiérarchie), chaque
individu est aidé par la communauté dans son évolution et en retour il aide au bon
fonctionnement de celle-ci.
La colonie est donc auto-contrôlée par le biais de mécanismes relativement simples à
étudier.
En observant une colonie de fourmis à la recherche de nourriture dans les environs du nid,
on s’aperçoit qu’elle résoudre des problèmes tels que celui de la recherche du plus court
chemin.
Les fourmis résolvent des problèmes complexes par des mécanismes assez simples à
modéliser.
Leur technique repose sur la pose de marqueurs chimiques, les phéromones, déposés sur les
trajets parcourus. Cela peut paraître surprenant au premier abord mais un chemin plus court
reçoit plus de phéromones qu’un chemin plus long. Les fourmis suivantes ayant tendance à
emprunter les chemins les plus marqués, une solution va progressivement se dessiner.
Il est ainsi assez simple de simuler leur comportement par des algorithmes.
117
9.3.3 Comportement de la fourmi
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éromones. 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 lors que les
pistes de phéromones sont utilisées par la colonie entière. Autrement dit, lorsque plusieurs
chemins marqués sont à la disposition d’une fourmi, cette dernière peut connaître 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.
1) la première fourmi trouve la source de
nourriture (F), via un chemin quelconque (a), puis
revient au nid (N) en laissant derrière elle une
piste de phéromone (b).
2) les fourmis empruntent indifféremment les
quatre chemins possibles, mais le renforcement
de la piste rend plus attractif le chemin le plus
court.
3) les fourmis empruntent le chemin le plus court,
les portions longues des autres chemins perdent
leur piste de phéromones.
9.3.4 Le Modèle Mathématique
Dans l'algorithme Ant System (AS), chaque fourmi est initialement placée sur une ville
choisie aléatoirement, chacune possède une mémoire qui stocke la solution partielle qu'elle a
construite auparavant. Initialement, la mémoire contient la ville de départ. Commençant à
partir de cette ville, une fourmi se déplace itérativement d'une ville à une autre. Quand elle
est à une ville i, une fourmi k choisit d'aller à une ville non encore visitée j avec une
probabilité donnée par :
118
⚫ τij (t) est l'intensité de la trace de phéromone dans l'arête (i, j) à l'instant t.
⚫ ηij = 1 dij est une information heuristique à priori valable, où dij est la distance entre
la ville i et la ville j , l'idée étant d'attirer les fourmis vers les villes les plus proches.
⚫ α, β sont deux paramètres qui déterminent l'influence relative de la trace de
phéromone et de l'information heuristique.
⚫ Nk i est le voisinage faisable de la fourmi k c'est à dire l'ensemble des villes non encore
visitées par la fourmi k.
⚫ La construction de solution se termine après que chaque fourmi ait complété un tour.
Ensuite, les traces de phéromone sont mises à jour.
Dans AS, la mise à jour se fait, d'abord, en réduisant les traces de phéromone avec un facteur
constant ρ (c'est l'évaporation de phéromone) et, ensuite, en permettant à chaque fourmi de
déposer de la phéromone sur les arêtes qui appartiennent à son tour. Ainsi la formule de mise
à jour de phéromone est comme suit :
Avec 0 ≤ ρ ≤ 1 et nbAnts le nombre de fourmis. Le paramètre ρ est ainsi utilisé pour éviter
l'accumulation illimitée de phéromone et permet à l'algorithme d'oublier les mauvaises
décisions précédemment prises. Sur les arêtes qui n'ont pas été choisis par les fourmis la
force associée va décroître rapidement avec le nombre d'itérations. ∆τ k ij est la quantité de
phéromone que la fourmi k dépose sur l'arête
(i,j).
Il est défini par:
où Lk est la longueur du tour généré par la fourmi k, Q une constante de l'algorithme et
Tabou k est la liste des villes déjà visitées. Avec cette formule, les arêtes du tour le plus court
recevront la plus grande quantité de phéromone. En général, les arêtes qui sont utilisées par
plusieurs fourmis et qui appartiennent aux tours les plus courts recevront plus de phéromone
et en conséquence seront plus favorisés dans les itérations futures de l'algorithme
119
9.3.5 Applications
Les algorithmes ACO ont été appliqué à plusieurs problèmes combinatoires NP difficiles.
L'application de ACO au PVC a été déjà présentée dans la section précédente. Dans cette
section, nous discutons des applications à d'autres problèmes d'optimisation combinatoire.
⚫ Le Problème de Tournée de Véhicules (VRP).
⚫ Le Problème de k-Partitionnement de Graphes.
⚫ Le problème du sac à dos multidimensionnel.
⚫ Le problème de voyageur de commerce.
➢ Le Problème de k‐Partitionnement de Graphes :
Le problème de k-partitionnement de graphes (k-PPG) consiste à partitionner les nœuds d'un
graphe donné en k partitions de façon à minimiser les coûts des arcs inter-partitions tout en
essayant d'assurer l'équilibre des poids des partitions. Ce problème a été traité par la métaheuristiques ACO par Alaya, Sammoud, Hammami et Ghédira. Dans l'algorithme proposé, le
graphe de construction décrivant ce problème est un graphe complet dont les nœuds sont des
couples (X, P) avec X est un nœud du graphe à partitionner et P est le numéro de partition à
laquelle X peut appartenir. Ainsi, un couple (X, P) choisi par une fourmi signifie que le nœud
X du graphe est affecté à la partition P, et par conséquent tout couple (X, Q) tel que Q =! P
devient interdit (n'appartient plus au voisinage faisable) puisque qu'un nœud ne peut pas
appartenir à plus qu'une partition à la fois. Au cours de chaque cycle, chaque fourmi produit
un partitionnement en se déplaçant sur le graphe de construction : à partir du nœud courant
(X, P), elle choisit de se déplacer vers le nœud (Y, Q) selon une probabilité qui dépend :
(i) du coût des arcs inter-partitions apporté par ce nouveau composant (l'information
heuristique) et (ii) des traces de phéromone. La quantité de phéromone à déposer est
inversement proportionnelle au coût de la solution générée
➢ Le problème du sac à dos multidimensionnel :
Le MKP présente l'un des problèmes sur lesquels nous travaillons. Dans cette section, nous
présentons les travaux proposés dans la littérature pour résoudre ce problème avec ACO. Une
application de ACO au MKP dans [Leguizamon & Michalewicz, 1999] définit le graphe de
120
construction comme étant un graphe complet composé des objets du MKP (qui représentent
les nœuds). La mise à jour de phéromone se fait sur les composants des solutions (c'est à dire
les nœuds du graphe).
Les traces de phéromone répètent donc la désirabilité de prendre un objet qui a fait partie de
plusieurs solutions. La quantité de phéromone à déposer est égale au profit de la solution
construite. L'information heuristique est calculée de façon dynamique en fonction des
capacités des ressources (les contraintes) et du profit de l'objet à prendre. Une autre
application d'ACO au MKP a été présentée dans [Fidanova, 2002].
Dans cette application, les traces de phéromone sont déposées sur les arêtes visités.Après que
toutes les fourmis aient complété leurs tours, les fourmis déposent de la phéromone sur les
chemins qu'elle viennent de parcourir. De même dans cette application la quantité de
phéromone à déposer est égale au pro?t de la solution construite.
Ensuite, la meilleure fourmi du cycle renforce les traces de phéromone sur les composants de
la meilleure solution. De plus lorsque certains mouvements ne sont pas utilisés dans la
solution courante, un renforcement de phéromone additionnelle est utilisé pour ces
composants afin de les favoriser dans les itérations futures.
L'information heuristique est calculée de façon statique.
➢ Problème de Tournée de Véhicules (VRP) :
Parmi les applications les plus intéressantes du métaheuristique ACO au VRP, nous citons
l'algorithme AS‐VRP conçu par Bullnheimer, Harlt et Strauss [Bullnheimer et al. 1999] qui
est basée sur l'algorithme ASrank. Gambardella, Taillard et Agazzi [Gambardella et al. 1999b]
ont traité le VRP en adaptant l'approche ACS pour définir MACS‐VRPTW, et en considérant
l'extension de la fenêtre temps au VRP qui introduit un intervalle de temps dans lequel un
client doit être servi.
➢ Le problème de voyageur de commerce :
Le premier algorithme de colonies de fourmis proposé est appelé le Ant system (système
fourmi). Il vise notamment à résoudre le problème du voyageur de commerce, où le but est de
trouver le plus court chemin permettant de relier un ensemble de villes.
L’algorithme général est relativement simple, et repose sur un ensemble de fourmis, chacune
parcourant un trajet parmi ceux possibles. À chaque étape, la fourmi choisit de passer d’une
ville à une autre en fonction de quelques règles :
1.elle ne peut visiter qu’une fois chaque ville ;
2.plus une ville est loin, moins elle a de chance d’être choisie (c’est la « visibilité ») ;
121
3.plus l'intensité de la piste de phéromone disposée sur l’arête entre deux villes est grande,
plus le trajet aura de chance d’être choisi ;
4.une fois son trajet terminé, la fourmi dépose, sur l’ensemble des arêtes parcourues, plus de
phéromones si le trajet est court ;
5.les pistes de phéromones s’évaporent à chaque itération
9.3.6 ACO et la recherche locale
Dans plusieurs applications à des problèmes d'optimisation combinatoire NP difficiles, les
algorithmes ACO réalisent de meilleures performances lorsqu'ils sont combinés avec des
algorithmes de recherche locale [Dorigo & Gambardella, 1997, Stützle & Hoos, n.d. Alaya et
al. 2006]. Ces algorithmes optimisent localement les solutions des fourmis et ces solutions
optimisées localement sont utilisées par la suite dans la mise à jour de phéromone.
L'utilisation de la recherche locale dans les algorithmes ACO peut être très intéressante
comme les deux approches sont complémentaires. En effet, la combinaison peut améliorer
largement la qualité des solutions produites par les fourmis. D'un autre côté, générer des
solutions initiales pour les algorithmes de recherche locale n'est pas une tâche facile. Dans les
algorithmes de recherche locale, où les solutions initiales sont générées aléatoirement, la
qualité des solutions peut être médiocre. En combinant la recherche locale avec l'ACO, les
fourmis génèrent stochastique ment, en exploitant les traces de phéromone, des solutions
initiales prometteuses pour la recherche locale.
9.3.7 Application de l'algorithme sur le TSP
➢ AntSystem : initialisation
Les m ants sont réparties aléatoirement sur les n villes.
Pour chaque ant la liste-tabou contient sa ville de départ.
Les pistes de phéromones sont initialisées : τij=c, c constant positive non null .
➢ AntSystem : itération de base
Chaque ant choisit une ville de destination et s’y déplace.
Une ant k placée sur une ville i à l’instant t choisit sa ville de destination j en fonction de la :
1.
visibilité de cette ville ηij (distance inter villes)
2.
quantité de phéromone τij(t) déposée sur l’arc reliant ces deux villes
•
Le choix est aléatoire selon une probabilité où deux paramètres α et β contrôlent
l’importance relative des phéromones et de la visibilité
Le choix est aléatoire selon une probabilité où deux paramètres α et β contrôlent l’importance
relative des phéromones et de la visibilité La probabilité d’un déplacement élémentaire est un
compromis entre visibilité et piste chimique
122
¨ Si β=0, les villes les + proches ont + de chance d’être sélectionnées (algorithme glouton)
¨ Si α=0, seule l’amplification des phéromones agit : convergence prématurée
➢ Fin d’un cycle de base :
Toutes les ants ont terminé un tour en revenant à leur propre ville de départ.
Pour chaque ant k : • calculer la longueur de son tour Lk(t).
•
vider sa liste-tabou.
➢ Mettre à jour les phéromones τij.
Rechercher le plus petit tour et le mémoriser s’il est meilleur que les précédents.
Toutes les ants recommencent un nouveau tour à partir de leur propre ville initiale.
Mettre à jour les phéromones :
τij(t+n) = ρ. tij(t)+ Δτij(t) ρ dans [0,1[
Entre les instants t et t+n :
•
(1-ρ) = évaporation de la piste
•
Δτij(t)= quantité de phéromone déposée par les antes.
➢ Evaporation des phéromones :
Si ρ=1, pas d’évaporation donc pas de limitation du phénomène auto catalytique
¨ Si ρ=0, les ants prennent seulement en compte les dépôts du dernier cycle ¨ ρ représente la
persistance de la piste (ie. l’effet mémoire).
➢ Quantité de phéromone déposée par les ants lors d’un tour (cycle) :
Δτij(t) = quantité de phéromone déposée par les ants sur l’arc reliant la ville i à la ville j entre
les instants t et t+n.
Pour chaque ant k passant par l’arc (i,j), Δτij(t) += Q/Lk(t) où Q représente un « quota » de
phéromones attribué à chaque ant (souvent Q=100)
Idée : + un tour est court, + les arcs qui le composent sont approvisionnés.
9.3.8 Avantages et Inconvénients du ACO
➢ Avantages :
▪ Cet algorithme est basé sur l’intelligence, il peut être appliquée dans les
domaine scientifique et d’ingénierie.
123
▪
Les calculs sont très simple comparé avec d’autre calcul développé
▪ Cet algorithme occupe des majeures optimisations sur les algorithmes
précédents
▪
ACO peut être utilisé sur des applications dynamiques
▪ Un feedback positif peut amèneront à des rapides découvertes de
solution
▪
Très efficace pour le problème TSP
▪
Applicable sur des modélisations par des graphes
➢ Inconvénients :
▪ L’analyse théorique est difficile surtout dans les cas d’une complexité
majeure
▪
Répétition des décisions aléatoire (indépendante)
▪
Probabilités distributifs changeant en chaque itération
▪ Le temp de convergence est incertain, alors que la convergence est
garantie
124
9.4 Les réseaux de neurones
9.4.1 Définition
Un réseau de neurones artificiel est un ensemble de neurones reliés entre eux, inspiré des
neurones biologiques afin de réaliser certaines caractéristiques de cerveau comme:
-
L’apprentissage.
-
Mémorisation des informations.
-
Traitement de nouvelles informations.
Un réseau de neurones artificiel est une modélisation mathématique, qui prend des valeurs
numériques comme entrées, et produisent d’autres valeurs numériques comme sorties.
Les réseaux de neurones font partie du domaine d’apprentissage de la machine (en anglais,
machine learning).
➢ Neurones biologiques
Un neurone biologique se caractérise par:
-
Synapses : Points de connexion avec les autres neurones.
-
Dendrites : Entrés de neurones.
-
Axones : Sorties de neurones vers d’autres neurones.
-
Noyau: Active les sorties en fonction des stimulations en entrée.
Schéma:
➢ Neurone artificiel vs neurone biologique
Le réseau de neurones artificiels est basé sur le même modèle que le réseau de neurones
biologiques, tels qu’un neurone artificiel est caractérisé par des entrées (dendrites), poids
(synapses), une sortie (axone) et une fonction d’activation (noyau).
Schéma d’un neurone biologique:
125
9.4.2 Les composants d’un réseau de neurone
➢ Couches
Un réseau de neurones est caractérisé par des neurones d’entrées (en anglais, input layer) qui
reçoivent les valeurs d’entrées, et des neurones de sorties (en anglais, output layer) qui
produisent des valeurs de sortie. On peut trouver des neurones autres que les neurones
d’entrées et de sortie qui relient entre les neurones d’entrées et les neurones de sorties afin
d’échanger les données.
Une couche d’un réseau de neurones regroupe certains neurones ayant une fonction
d’activation similaire.
La première couche est la couche d’entrée, regroupe les neurones d’entrées, et la dernière
couche est la couche de sortie qui regroupe les neurones de sortie.
Les couches autres que la couche d’entrée et la couche de sortie appelées “couches cachées”
(en anglais, hidden layer).
Schéma des couches d’un réseau de neurones :
126
Il est possible d’avoir un grand nombre de couches cachées. Plus le nombre de couches
augmente, plus le réseau devient plus profond, alors nous parlons de l'apprentissage profond
(en anglais, deep learning) qui fait partie du domaine de la machine learning.
➢ Poids et Biais
Les poids et les biais sont des valeurs numériques qui sont mises à jour pendant la phase
d’apprentissage afin d’améliorer la précision des résultats du réseau de neurones.
Les poids et les biais sont appelés aussi paramètres d’apprentissage ou valeurs d’autoapprentissage
▪
Poids
Un poids est appliqué à l'entrée de chaque neurone (sauf les neurones d’entrées), il relie un
neurone de n-ième couche avec un autre neurone de (n+1)-ème couche, (avec n ∈ [1, N - 1] et
N le nombre de couche de réseau de neurone).
▪
Biais
Un biais est ajouté une fois que les poids sont appliqués à l’entrée d’un neurone. Chaque
neurone est caractérisé par un seul biais.
127
➢ Fonction d’activation
▪
Définition
Chaque neurone des couches cachées et la couche de sortie est caractérisé par sa fonction
d’activation.
La fonction d’activation normalise la valeur de sortie avant qu’elle ne soit transmise aux
neurones de la couche suivante, en d’autres termes la fonction vérifie si la valeur de sortie est
supérieure au seuil requis. Si c’est le cas, la fonction d’activation est activée et une nouvelle
valeur de sortie est calculée.
Remarque:
Les neurones de la même couche ont la même fonction d’activation.
•
Types des fonctions d’activation
Les types des neurones se distinguent par leur fonction d’activation. Il existe un grand
nombre de fonction d’activation, les plus utilisées sont:
-Sigmoïde : produit une courbe en forme de S. Bien que de nature non linéaire, il ne tient
toutefois pas compte des légères variations des entrées, ce qui entraîne des résultats
similaires.
-tanh (Tangente hyperbolique): Il s’agit d’une fonction supérieure comparée à Sigmoid.
Cependant, elle rend moins bien compte des relations et elle est plus lente à converger.
-ReLu (unité linéaire rectifiée): Cette fonction converge plus rapidement, optimise et
produit la valeur souhaitée plus rapidement. C’est de loin la fonction d’activation la plus
populaire utilisée dans les couches cachées.
-Softmax: utilisé dans la couche de sortie car il réduit les dimensions et peut représenter
une distribution catégorique.
-Fonction linéaire : Cette fonction est utilisée pour garder la valeur de sortie telle quelle.
9.4.3 Fonctionnement des réseaux de neurones
Le concept des réseaux de neurones repose sur 3 étapes :
1. Pour chaque neurone dans une couche (sauf la couche d’entrée), multiplier la valeur
d’entrée par le poids.
2. Ensuite, calculer la somme des pondérations et ajouter le biais.
3. Enfin, appliquer la fonction d’activation à la valeur trouvée pour calculer une nouvelle
valeur de sortie.
Modélisation mathématique :
128
Soit un neurone caractérisée par une valeur interne S, des valeurs d’entrées (x1, . . . , xp) et
une fonction d’activation f.
Calculons la somme pondérée :
x1.ω1 + x2.ω2 + … + xp.ωp
Ajoutons le biais:
x1.ω1 + x2.ω2 + … + xp.ωp + β
Enfin, calculant la valeur interne S en appliquant la fonction d’activation g sur la valeur
trouvée :
S = g( x1.ω1 + x2.ω2 + … + xp.ωp + β )
Exemple :
Soit un réseau de neurones composé par 2 couches, la couche d’entrée comporte 3 neurones,
et la couche de sortie, comporte 2 neurones, comme l’indique le schéma ci-dessous :
129
Le réseau est caractérisé par les biais (1; 1,5) et les poids (2; -3; 0,5; 1,2; -0,5).
Les neurones de sortie sont caractérisés par leur fonction d’activation Sigmoïde.
●
Prenant les valeurs d’entrés (1; 1,5; 2) et Calculant les valeurs de sortie:
Y1 = Sigmoïde((1*2 - 3*1,5) + 1) = Sigmoïde(-0,5) = 0.377541
Y2 = Sigmoïde((1*0,5 + 1,2*1,5 - 0,5*2) + 1,5) = Sigmoïde(2,8) = 0.942676
9.4.4 L’apprentissage
➢ Définition
Lorsque nous rencontrons un problème à résoudre, il est compliqué de le décrire à une
machine en lui donnant une série d’instructions. Pour cela, on se base sur le concept
d'apprentissage ou “apprentissage automatique”.
130
En d'autres termes, l’apprentissage permet à une machine d’apprendre à partir des données
avec lesquelles la machine doit acquérir une expérience, de cette manière elle doit être
capable de résoudre des cas qu’elle n’a jamais vu.
Pour les réseaux de neurones, l’apprentissage consiste à calculer les paramètres
d’apprentissage (poids et biais) de telle manière que le résultat des prédictions soient proches
des sorties attendues.
Les techniques d’apprentissage sont des algorithmes d’optimisation qui cherchent à
minimiser l'écart entre les résultats des prédictions et les sorties attendues.
➢ Types d’apprentissage
Le domaine de machine learning se subdivise en 3 grandes familles d'apprentissage:
Apprentissage supervisé:
Algorithme s'entraîne sur un ensemble des données étiquetées, d’une autre manière un
ensemble de couples entrées et sorties qui s’écrit sous forme
{ (xk, yk), k ∈ [1, K] } dont x est la donnée d’entré et y la donnée attendue par le réseau de
neurone.
Ce type d’apprentissage vise à résoudre les problèmes de:
-Classification: problèmes de prédiction d'une variable qualitative, exemple: classification des
images, diagnostics…
-Régression: problèmes de prédiction d'une variable quantitative, exemple: prévision de
météo, prévision de croissance démographique…
Apprentissage non supervisé:
Algorithme s'entraîne sur un ensemble des données non-étiquetées (données d'entrées sans
données de sorties).
Cet algorithme traite les données reçues sans entraînement préalable, alors il est capable
d'exécuter des tâches plus complexes que l’algorithme d’apprentissage supervisé.
Parmi les problèmes résolus par l’algorithme d’apprentissage non supervisé, nous citons le
partitionnement des données (clustering) qui vise à diviser un ensemble de données en
différentes catégories ou groupes homogènes sans négliger que cet algorithme peut aussi
ajouter des catégories inattendues et non désirées et classer des races inhabituelles, ce qui
peut introduire de bruit et de confusion au lieu de mettre de l’ordre.
Apprentissage par renforcement :
La machine est placée dans un environnement sur lequel elle peut faire des actions.
L’apprentissage se fait par des récompenses obtenues en fonction de ses choix.
La notion des "récompenses" dépend du contexte, exemple d’un joueur qui vise à maximiser
son score ou des médias sociaux qui cherchent à maximiser le temps que les visiteurs passent
sur leurs plateformes.
En d’autres termes, l’algorithme d’apprentissage par renforcement vise à l’amélioration des
actions ou de la prise de décisions au fur et à mesure des récompenses.
131
➢ Processus d’apprentissage supervisée
Le processus d’apprentissage se fait en 3 phases principaux :
-1ér phase :
C’est la propagation vers l’avant (en anglais, “feed forward”), les signaux d'entrées se
propagent à partir de la couche d’entrée vers la couche de sortie en passant par les couches
cachées, tel que les neurones appliquent leurs transformations directes (fonction
d’activation) aux signaux qu’ils reçoivent et les transférer aux couches suivantes, jusqu'à ce
que les neurones de sorties effectuent leurs transformations finales pour calculer le résultat
des prédictions.
2éme phase:
Le calcul de la fonction de perte (en anglais, “loss function”) pour optimiser l'écart entre le
résultat des prédictions et les sorties Yk attendues.
Il existe plusieurs fonctions de perte utilisées pour l'apprentissage, qui diffèrent dans la
distance entre les valeurs attendues et les valeurs de prédictions correspondant aux valeurs
d’entrées.
Exemple:
La fonction d'erreur dite somme des carrés, utilisée essentiellement pour les problématiques
de régression mais elle peut être également utilisée pour les problématiques de classification.
Comment la fonction de perte fonctionne-t-elle ?
Si l’écart du résultat des prédictions obtenue par notre réseau de neurones et le résultat
attendu est suffisamment grand, alors le résultat de la fonction de perte sera plus élevé, à
132
ce moment-là où la 3éme phase intervient pour ajuster les paramètres d'apprentissage
(poids et biais) pour optimiser la fonction de perte.
-3éme phase:
Rétropropagation (en anglais, “back propagation”), le signal de perte se propage à partir de
la couche de sortie en passant par tous les neurones des couches cachées qui contribuent
directement aux sorties.
Les couches cachées ne reçoivent qu’une dérivée de la fonction de perte, tel que chaque
neurone a contribué à la sortie d’origine. Ce processus est répété, couche par couche,
jusqu'à une réception complète du signal de perte par les couches de réseau décrivant leur
contribution relative à la perte totale
Schéma visuel des 3 étapes :
À cette étape, on ajuste les poids et les biais à l'aide des algorithmes d’optimisation.
Prenons l’exemple de la descente de gradient, cette technique modifie les poids à l'aide du
calcul de la dérivée (gradient) de la fonction de perte, ce qui nous permet de voir dans
quelle direction «descente» vers le minimum.
Remarque:
Selon la forme de la fonction de perte E, rien ne garantit que le minimum ne soit pas qu’un
minimum local.
133
La descente de gradient utilise la dérivée de la fonction de perte lors de la mise à jour des
poids et biais.
Prenons ai le poids pour l'itération i,
ai+1 = ai - λ.d(E), tel que E: fonction de perte,
d(E): gradient de E, λ: taux d’apprentissage (λ ∈ [0, 1])
Pour déterminer la suite ai+1, l'algorithme de descente de gradient modifie la valeur du
poids initial pour aller dans le sens inverse du gradient (car il pointe dans la direction dans
laquelle la perte augmente et nous voulons la réduire), en ajoutant un montant
proportionnel à cela. La valeur de ce changement est déterminée par la valeur du gradient
et par le taux d'apprentissage.
L'algorithme de descente de gradient itère ce processus en se rapprochant de plus en plus
du minimum jusqu'à ce que la valeur du paramètre (poids ou biais) atteint un point au-delà
duquel la fonction de perte ne peut pas diminuer:
Pour récapituler, l’algorithme d’apprentissage passe par les étapes suivantes :
1. Commencer par des valeurs souvent aléatoires pour les paramètres d'apprentissage
(poids et biais).
2. Passer les données d’entrées de l’ensemble d’apprentissage par le réseau de neurones
afin d’obtenir leurs prédictions.
3. Comparer ces résultats des prédications avec les sorties attendues de l’ensemble
d’apprentissage en calculant la fonction de perte (signal de perte).
134
4. Effectuer la rétropropagation afin de propager ce signal de perte à tous les
composants du réseau de neurones.
5. Utiliser ce signal propagé afin de réduire la fonction de perte en utilisant un
algorithme d’optimisation (descente du gradient par exemple).
Continuer à itérer ces étapes jusqu’à ce que le réseau doit être capable de prédire des
bonnes prédictions, d’une autre manière la fonction de perte converge à 0.
9.4.5 Surapprentissage
Après avoir vu l’apprentissage, ses types et le processus de l’un de ses types, La question qui
se pose:
À quel moment doit-on arrêter l’apprentissage du réseau de neurones ?
En effet, il ne suffit pas qu’un réseau de neurones produise des bons résultats, mais il doit
être capable en même temps de bien prévoir les nouvelles données, d’une autre manière, il
doit être capable de généraliser.
Parfois, le réseau de neurones peut être si précis sur les données reçues pendant la phase
d’apprentissage qu’il devient incapble de généraliser, nous parlons alors de «sur
apprentissage».
Pour éviter ce phénomène, lors de la phase d’apprentissage, nous divisons l’ensemble
d’apprentissage en deux sous-ensembles, que nous soumettons en parallèle au réseau de
neurones, tel que le réseau apprend avec le 1ér sous-ensemble, le 2éme est un ensemble
d’échantillon de validation, sert à vérifier la capacité d’extrapolation du réseau.
9.4.6 Domaines d’application
Industrie
Application
Banque
Prêts et scoring
Cartes de crédit
Détection des fraudes
135
Finance
Analyse d'investissements et de fluctuations des taux de change
Assurance
Couverture assurantielle et estimation des réserves
Marketing
Ciblage des prospections, mesures et comparaisons des
campagnes et des méthodes
Archéologie
Identification et datation de fossiles et d'ossements
Défense
Identification de cibles
Environnement
Prévisions de la qualité de l'air et de l'eau
Sécurité
Identification de terroristes potentiels
Production
Contrôles qualité
Médecine
Diagnostics médicaux
Energies
Estimations des réserves, prévisions de prix
Pharmacie
Efficacité de nouveaux médicaments
Psychologie
Prévisions comportementales
Immobilier
Études de marchés
Télécommunication
Détection des pannes de réseaux
Transport
Maintenance des voix
136
9.5 Les algorithmes génétiques
9.5.1 Introduction
Les algorithmes génétiques (AG) sont des méthodes utilisées dans les problèmes
d’optimisation. Les AG tirent leur nom de l’évolution biologique des êtres vivants. Ils
permettent de calculer une solution acceptable a un problème dont l’espace de solutions est
trop grand pour être parcouru dans un temps raisonnable. Les algorithmes génétiques
sont basés sur trois éléments principaux : la sélection, le croisement et la mutation.
•
Quelques définitions
Un Gène est une unité d'information génétique transmise par un individu à son descendant.
Il code généralement une des variables du problème à optimiser.
Un Chromosome est une structure contenant une séquence finie de gènes.
Un Individu est une solution potentielle qui peut être présenté par un ou plusieurs
chromosomes.
Une population est un ensemble d'individus.
Une génération est un ensemble d'opérations effectuées afin de passer d'une population à
une autre.
9.5.2 Les étapes de l’algorithme génétique
1- Génération de la population initiale
Cette étape consiste à générer une population constituée de n individus, chaque Individu
représente une ou une partie de la solution. La représentation de chaque individu suit un
codage particulier, le plus fréquemment utilisé est le codage binaire. Les individus sont aussi
appelés chromosomes et leur représentation est un ensemble de gènes.
2- La Sélection
L'opérateur de sélection est un opérateur permettant la sélection des individus d’une
population (reproduction) pour la nouvelle population.
Cet opérateur utilise le fitness comme critère de sélection et décide si les individus doivent
survivre, se reproduire ou mourir, Il existe différentes méthodes de sélection, Nous en
présentons ici quelques-unes : Sélection par roulette, Sélection par élitiste et Sélection par
tournoi.
137
▪
Sélection par roulette
Il s'agit de la méthode la plus fréquemment utilisée, dont le principe d'une roue de loterie
biaisée est utilisé Plus un individu a une fonction fitness élevée plus il a de chance d'être
sélectionné
▪
La sélection élitiste
Son principe site que les individus les moins performants sont totalement éliminés de la
population, et le meilleur individu est toujours sélectionné.
Elle permet cependant de ne pas perdre des individus avec une fonction fitness élevée donc,
solution possible du problème.
Cette technique utilise la sélection proportionnelle sur des paires d'individus, puis choisit
parmi ces paires l'individu qui a le meilleur score d'adaptation.
▪
Sélection par tournoi
Cette technique utilise la sélection proportionnelle sur des paires d'individus, puis choisit
parmi ces paires l'individu qui a le meilleur score d'adaptation.
3- Le Croisement
A partir de deux chromosomes le croisement produit deux nouveaux chromosomes
incorporant chacun du matériel génétique pris dans le patrimoine initial, Il y a plusieurs
méthodes de croisements, citons quelques-unes : Le croisement simple point, le croisement
double points et le croisement uniforme
▪
Le croisement simple point
Les deux chaînes initiales vont être divisées en deux. La première partie de la première
chaîne sera associée à la seconde partie de la seconde chaîne et inversement, deux nouveaux
individus sont ainsi obtenus résultant d’un croisement entre les deux chaînes initiales.
▪
Le croisement double points
Le principe est assez proche de croisement simple point, à cette différence qu’il y a deux
points de séparation des chaînes, la chaîne initiale est divisée en 3 parties et la combinaison
de ces 3 parties permet d’obtenir deux nouvelles chaînes
138
4- La Mutation
C’est un opérateur qui consiste à modifier un ou plusieurs allèles d'un gène avec une
probabilité souvent assez faible (de l'ordre de 0.01 à 0.1) Il consiste donc à modifier
aléatoirement les caractéristiques d'une solution, Il permet d'éviter le maximum possible une
convergence de l'algorithme vers un optimum local
9.5.3 Exemple pratique
➢ Problématique
Le problème des n-reines consiste à positionner N reines sur un échiquier de sorte qu’aucune
d’entre elles n’est en position d’attaquer une autre. Une reine peut attaquer une autre si elles
sont toutes les deux sur : la même ligne, la même colonne, ou la même diagonale.
139
➢ Résolution
Résolution de ce problème pour n=8 en utilisant l’algorithme génétique :
On va utiliser le codage suivant pour les chromosomes : 67251448 où chaque nombre indique
la position de la reine sur la colonne (voir l’exemple ci-dessous).
o
Générer aléatoirement une population de N chromosomes
- la création d’une nouvelle population de N individus
- l’initialisation aléatoire des individus
o
Calculer la valeur d’adaptabilité (fitness) de chaque chromosome x
On calcule le nombre des attaques dans chaque individu en utilisant une fonction de fitness
qui donne la valeur d’adaptabilité.
o
La sélection
Sélectionner une nouvelle population de taille N (de la nouvelle génération)
- En retirant 1 ou plusieurs individus de la populations (chaque individu est supprimé avec
une probabilité proportionnelle à son adaptabilité), Puis en continue à remplir le nombre des
individus de la population
En doublant les individus les plus adaptés jusqu’à avoir une population de taille N.
o
Faire des croisements entre les individus en des indices aléatoires.
On effectue le croisement entre les nouveaux distincts individus pour avoir de nouveaux
individus
140
o
La mutation
Mutant un (maximum 1) des enfants obtenus avec une certaine probabilité (entre 0.01 et 0.1).
o
Si la population satisfait le critère d’arrêt, on s’arrête.
Les conditions d’arrêt sont :
• Arriver au nombre max des itérations passé en paramètres de la méthode de la classe
Population.
• Trouver un individu dont le nombre des attaques mutuels est 0.
o
Sinon on répète le étapes (à partir de la sélection, Croisement…).
141
9.6 L’optimisation par essaims de particules
9.6.1 Introduction
« Le désir humain de perfection trouve son expression dans la théorie de l’optimisation, Il
étudie comment décrire et atteindre ce qui est meilleure, une fois que l’on connait comment
mesurer et modifier ce qui est bon et ce qui est mauvais, la théorie de l’optimisation
comprend l’étude quantitative des optimums et les méthodes pour les trouver »
A partir de la citation ci-dessus on comprend que l’optimisation cherche à améliorer une
performance en se rapprochant d’un point optimum.
Dans le cadre des mathématiques, l’optimisation cherche des réponses à un type général de
problèmes, qui consistent à sélectionner le meilleur élément parmi plusieurs appartenant au
même ensemble. En général l’optimisation peut se réaliser dans différents domaines,
toujours avec le même but : améliorer le fonctionnement au moyen d’une gestion
perfectionnée des ressources. L’optimisation peut avoir lieu à n’importe quelle étape quoi
qu’il est conseillé de la mener à bien jusqu’à la fin du processus visé.
Aujourd’hui, l'optimisation dispose d’une vaste application dans différentes branches de la
science, par exemple : contrôle, robotique, consommation d'énergie, ...etc.
En raison de la nécessité de traiter plusieurs variétés de problèmes d'optimisation, de
nombreux changements en optimisation concernant les méthodes et les approches ont été
proposés. Parmi ces approches, on trouve les algorithmes métaheuristiques qui sont des
algorithmes standards, proposés pour la résolution des différents problèmes complexes et
fortement non linéaires sans nécessiter de modification profonde de l’algorithme pour
chaque problème à résoudre.
9.6.2 Histoire
L’optimisation par essaim de particule (OEP) en anglais : PSO (PARTICULE SWARM
OPTIMIZATION) Inventée par RUSSEL EBERHART (ingénieur en électricité) et JAMES
KENNEDY (socio psychologue) en 1995 .
L’algorithme d’optimisation par essaim des particules s’inspire à l'origine du monde du
vivant.
Il s'appuie notamment sur un modèle développé par Craig Reynolds à la fin des années 1980,
permettant de simuler le déplacement d'un groupe d'oiseaux. Une autre source d'inspiration,
revendiquée par les auteurs, James Kennedy et Russel Eberhart, est la socio-psychologie .
Cette méthode d'optimisation se base sur la collaboration des individus entre eux. Elle a
d'ailleurs des similarités avec les algorithmes de colonies de fourmis, qui s'appuient eux aussi
sur le concept d'auto-organisation. Cette idée veut qu'un groupe d'individus peu intelligents
peut posséder une organisation globale complexe.
142
9.6.3 Définitions
➢
La métaheuristique
Une métaheuristique est un algorithme d’optimisation visant à résoudre des problèmes
d’optimisation difficile (souvent issus des domaines de la recherche opérationnelle, de
l'ingénierie ou de l'intelligence artificielle) pour lesquels on ne connaît pas de méthode
classique plus efficace.
Nous allons faire la connaissance avec une de ces méthodes, celle-ci est dite "optimisation par
essaims des particules" dont l'idée directrice est la simulation du comportement collectif des
oiseaux à l'intérieur d'une nuée.
➢ L’optimisation par essaim des particules
L’optimisation des essaims de particules (PSO) : est une méthode de calcul qui permet
d’optimiser un problème en essayer itérativement d'améliorer une solution candidate en
s’appuyant sur un système de mesure de la qualité précisé.
Cela résout un problème en disposant d'une population de solutions candidates, appelées ici
particules, et en les déplaçant dans l’espace de recherche selon des formules mathématiques
simples sur la position et la vitesse de la particule. Le mouvement de chaque particule est
influencé par sa position locale la plus connue, mais il est également guidé vers les positions
les plus connues de l'espace de recherche, qui sont utilisées lorsque de meilleures positions
sont trouvées par d'autres particules. Ceci devrait amener l'essaim vers les meilleures
solutions.
L’optimisation des essaims de particules est une métaheuristique car il fait peu ou pas
d'hypothèses sur l'optimisation du problème et peut rechercher de très grands espaces de
solutions candidates. Cependant, des métaheuristiques telles que PSO ne garantissent pas
qu'une solution optimale soit trouvée. De plus, PSO n'utilise pas le gradient du problème à
optimiser, ce qui signifie que PSO n'exige pas que le problème d'optimisation soit
différentiable comme le requièrent les méthodes d'optimisation classiques telles que les
méthodes de descente de gradient et de quasi-Newton.
9.6.4 Le concept des oiseaux
L'homme s'inspire de plus en plus de la nature qui l'entoure pour mettre en place des
algorithmes simulant le comportement des animaux.
L’optimisation par essaim de particules est une méthode métaheuristique, développée à
partir de l'intelligence en groupe qui est basée sur le comportement du déplacement des
oiseaux ou des poissons pour la recherche de la nourriture.
Lorsque les oiseaux sont à la recherche de nourriture, d'un endroit à l'autre, il y a toujours un
oiseau qui peut sentir la nourriture et trouver l'endroit où elle peut être trouvée. Comme qu'il
y’a un échange d’informations entres eux à tout moment, ils finiront par affluer vers l'endroit
où la nourriture peut être trouvé. Une bonne information est égale à la solution la plus
optimiste et la nourriture est égale à la solution la plus optimiste pendant tout le parcourt.
143
L’algorithme proposé par Kennedy et Eberhart cherche à simuler ce comportement social
basé sur l’analyse de l’environnement et du voisinage et constitue alors une méthode de
recherche d’optimum par l’observation des tendances des individus voisins. Chaque individu
cherche à optimiser ses chances en suivant une tendance qu’il modère par ses propres vécus.
Le modèle qu’ils ont proposé à ensuite été étendu en un algorithme simple et efficace
d’optimisation.
9.6.5 Le principe d’optimisation des particules
On peut résumer le principe dans les étapes suivant :
•Les particules reposent sur un ensemble d’individus originellement disposés de façon
aléatoire et homogène-solution
•Chaque particule dispose d’une mémoire concernant sa meilleure solution visitée ainsi que
la capacité de communiquer avec les particules constituant son entourage.
•La particule va suivre une tendance faite, d’une part, et d’autre part de sa volonté à
Retourner vers sa solution optimale
•En fin l’ensemble des particules va normalement converger vers la solution optimale globale
du problème traité
Le déplacement d’une particule dans espace
144
9.6.6 La topologie des voisinages
La topologie du voisinage défini avec qui chacune des particules va pouvoir communiquer. Il
existe de nombreuses combinaisons dont les suivantes sont les plus utilisées :
1- Topologie en rayon : les particules ne communiquent qu’avec une seule particule
centrale
2- Topologie en anneau : chaque particule est reliée à n particules (en général, n = 2),
c’est la topologie la plus utilisée
3- Topologie en étoile : chaque particule est reliée à toutes les autres particulier :
145
9.6.7 Le déplacement des particules
Dans PSO le comportement social est modélisé par une équation mathématique permettant
de guider les particules durant leur processus de déplacement. Le déplacement d’une
particule est influencé par trois composantes : la composante d’inertie, la composante
cognitive et la composante sociale. Chacune de ces composantes reflète une partie de
l’équation
1) La composante d’inertie : la particule tend à suivre sa direction courante de déplacement
2) La composante cognitive : la particule tend à se diriger vers le meilleur site par lequel elle
est déjà passée
3) La composante sociale : la particule tend à se diriger vers le meilleur site atteint par ses
voisines
9.6.8 Formalisation
➢ Vocabulaire
Une particule i de l’essaim dans un espace de dimension D est caractérisée, à l’instant t, par :
–x: sa position dans l’espace de recherche
–V : sa vitesse ;
–Pb : la position de la meilleure solution par laquelle elle est passée
–Pg : la position de la meilleure solution connue de tout l’essaim
–f (Pb) : la valeur de fitness de sa meilleure solution
–f (Pg) : la valeur de fitness de la meilleure solution connue de tout l’essaim
Le déplacement de la particule i entre les itérations t et t+1 se fait selon les deux équations [1]
et [2]
V (t+1)= V( t) C1 r1 (Pb( t)- X( t))+ C2 r2 (P g( t)-X (t ))
X (t+1)= X( t)+ V( t+1)
[1]
[2]
-C1 et C2 : deux constantes qui représentent les coefficients d’accélération, elles peuvent être
non constantes dans certains cas selon le problème d’optimisation posé
– r1 et r2 : deux nombres aléatoires tirés de l’intervalle [0,1]
➢ Algorithme
L’algorithme de base de la méthode PSO proposé par Kennedy, commence par une
initialisation aléatoire des particules dans leur espace de recherche, en leurs attribuant une
position et une vitesse Initiales.
À chaque itération de l’algorithme les particules se déplacent selon les équations (1) et (2) et
les fonctions objectives (fitness) des particules sont calculées afin de pouvoir calculer la
meilleure position de toutes Pg.
146
La mise à jour des Pb et Pg est faite à chaque itération suivant l’algorithme cité en figure 2.2.
Le processus est répété jusqu’à satisfaction du critère d’arrêt
Pseudo code de l’algorithme de base de la méthode PSO
9.6.9 Configuration de la méthode
➢ Les paramètres
Il existe plusieurs paramètres qui interviennent et influencent la performance de la méthode
PSO. Le choix de ces paramètres reste critique et dépend généralement du problème posé,
mais a une grande influence sur la convergence de l’algorithme. Parmi les paramètres qui
rentrent en ligne de compte citons :
–
La dimension du problème
–
Le nombre des particules
–
La disposition des particules
–
Les coefficients de confiance
–
La vitesse maximale
147
–
Le facteur d’inertie
–
Le facteur de construction
–
La notion du voisinage
➢ Le coefficient d’inertie
Le coefficient d’inertie w a été introduit pour contrôler l’influence de la direction de la
particule sur le déplacement futur. Le but de l’introduction de ce paramètre est de réaliser un
équilibre entre la recherche locale (exploitation) et la recherche globale (exploration). La
formule [1] de calcul de la vitesse devient :
V (t+1)= w V( t)+ C1 r1 (Pb( t)- X( t))+ C2 r2 (P g( t)-X (t))
La valeur de w est généralement constante, mais peut être variable dans certains cas, une
grande valeur de w est synonyme d’une grande amplitude de mouvement et donc
d’exploration globale de l’espace de recherche. Les études indiquent une meilleure
convergence pour w entre 0.8 et 1.2.
La détermination de la meilleure valeur de ce paramètre pour chaque algorithme se fait à
travers des expérimentations numériques.
Les auteurs ont proposé un coefficient d’inertie dynamique qui varie au cours du temps, et
diminue linéairement au cours du processus de l’optimisation. Il commence par une valeur
proche de 0.9 et descend linéairement pour arriver à 0.4.
➢ Le critère d’arrêt
Le critère d’arrêt diffère suivant le problème d’optimisation posé et les contraintes de
l’utilisateur, il est fortement conseillé de doter l’algorithme d’une porte de sortie puisque la
convergence vers la solution optimale globale n’est pas garantie dans tous les cas de figure
même si les expériences dénotent la grande performance de la méthode.
Différentes propositions ont eu lieu : l’algorithme doit alors s’exécuter tant que l’un des
critères de convergence n’a pas été atteint cela peut être : le nombre maximum d’itérations ;
l’optimum global est connu a priori, on peut définir une "précision acceptable". D’autres
critères d’arrêt peuvent être utilisés selon le problème d’optimisation posé et des contraintes
utilisateurs. Trois critères sont proposés pour notre modèle.
➢ Proposition d’une approche de parallélisassions de la méthode PSO
Dans l’implémentation de l’algorithme classique de la méthode PSO, tous les calculs se font
d’une manière séquentielle, c’est de là que vient l’idée de la parallélisassions pour améliorer
les performances de l’algorithme. Plusieurs scénarios s’imposent, celui que nous avons
adopté pour notre implémentation, permet de paralléliser les calculs en lançant un ensemble
de threads sur des lots de particules se positionnant dans des voisinages différents.
Les threads, sorte de processus, s’exécutent en parallèle pour chaque itération de
l’algorithme. Chaque thread exécute le traitement d’une itération de son lot de particules, et
attend que les autres threads finissent leurs traitements pour mettre à jour les voisinages et
148
commencer une Nouvelle itération. Ce scénario se répète jusqu’à l’obtention d’une solution
satisfaisante : “atteinte du critère d’arrêt”.
Nos voisinages ont la forme de sphères, qui sont mises à jour à chaque itération : leurs
centres évoluent et la valeur du rayon change suivant des conditions relatives au nombre de
voisinages.
La particularité de l’approche consiste à profiter de la robustesse de l’algorithme PSO dans le
choix du bon paramétrage, plus particulièrement la notion de voisinage dynamique, dans le
but de créer la diversité dans la recherche et dans le partage de l’information pour une
convergence plus optimale. Aussi bien le calcul parallèle qui permet d’accélérer les calculs
afin d’avoir une solution optimale dans un temps de calcul optimisé.
Représentation de l’approche implémentée
149
9.7 Système immunitaire artificiel
9.7.1 Introduction
Le système immunitaire biologique constitue une arme contre des intrus dans un corps
donné. Pour ce faire, il existe plusieurs cellules qui contribuent à éliminer ces intrus nommé
antigènes. Ces cellules participent pour ce qu’on appelle une réponse immunitaire biologique.
Le système immunitaire naturel est assez compliqué pour qu’une simulation artificielle soit
réalisée d’une façon complète. Par contre, les chercheurs ont réussi à simuler les fonctions les
plus pertinentes dans un système immunitaire biologique pour que l’artificiel hérite le
maximum des fonctionnalités naturelles dans le domaine de la reconnaissance des formes.
9.7.2 Principe du fonctionnement du système immunitaire naturel
Le système immunitaire protège l'organisme contre l'invasion de corps étrangers. Il est
constitué de cellules différentes réparties dans tout l'organisme. Chaque catégorie de cellules
à une fonction spécifique et se déplace dans l'organisme selon les besoins.
La réponse immunitaire fait intervenir deux types de mécanismes qui sont d'apparitions
successives au cours de l'évolution des espèces et sont intimement connectés :
a. L'immunité naturelle non spécifique, encore appelée innée ou naïve, repose sur une
distinction globale du soi et du non-soi. C'est une réponse immédiate, non spécifique de
l'agresseur et non adaptative.
b. L'immunité acquise spécifique, également appelée immunité saisie ou adaptative,
représente la partie du système immunitaire qui peut identifier spécifiquement et éliminer
sélectivement le micro-organisme et les molécules étrangères elle se caractérise par une
spécificité antigénique, diversité, et mémoire immunologique.
9.7.3 Définition des AIS
Les systèmes immunitaires artificiels (AIS) sont des systèmes informatiques inspirés par les
principes et les processus du système immunitaire naturel des vertébrés.
Les algorithmes exploitent typiquement les caractéristiques du système immunitaire d’étude
et de mémoire pour résoudre un problème. Ils sont couplés à l’intelligence artificielle et
quelques algorithmes d’AIS sont étroitement liés à algorithmes génétiques.
9.7.4 Histoire des AIS
L'AIS a commencé au milieu des années 80 par Farmer, Packard et Perelson's (1986) et
papiers de Bersini et de Varela sur les réseaux immunisés (1990). Cependant, c'était
seulement au milieu des années 90 que l'AIS est devenu un domaine à son propre chef.
Forrest et autres (sur choix négatif) a commencé en 1994 ; et Dasgupta a entrepris des études
150
étendues sur des algorithmes négatifs de choix. La chasse et le Cooke ont commencé les
travaux sur les modèles immunisés de réseau en 1995 ; Timmis et Neal ont continué ce travail
et ont apporté quelques améliorations. De Castro et Von Zuben's et travail de Nicosia et de
Cutello (sur choix clonal) est devenu notable en 2002. Le premier livre sur les systèmes
immunitaires artificiels a été édité par Dasgupta en 1999.
Nouvelles idées, telles que la théorie de danger et les algorithmes inspirés par système
immunitaire inné, sont maintenant explorés également. Bien qu'un certain doute qu'ils
offrent encore à quelque chose au-delà des algorithmes existants d'AIS, ceci soit discuté avec
chaleur, et la discussion fournit un les forces d'entraînement principales pour le
développement d'AIS à l'heure actuelle.
À l'origine l'AIS s'est mis à trouver des abstractions efficaces des processus trouvés dans
système immunitaire mais, plus récemment, il devient a intéressé en modelant les processus
biologiques et en s'appliquant des algorithmes immunisés aux problèmes de bioinformatiques.
9.7.5 Les algorithmes des AIS
Les modèles de conceptions les plus utilisés sont les réseaux immunitaires, la sélection
clonale et la sélection négative.
➢ Algorithme de la sélection négative
La sélection négative est le processus qui permet de distinguer le soi du non soi, elle a été
appliquée à des problèmes de détections d'anomalies, son algorithme a la forme suivante :
Générer le Soi comme étant un ensemble S d’éléments dans un espace U qui doivent être
surveillés. S peut représenter le sous-ensemble des états considérés comme normaux pour le
système.
Générer un ensemble F de détecteurs (motifs) s’appariant avec certains éléments de S. Pour
copier le fonctionnement du système immunitaire générer des détecteurs aléatoires et
supprimer ceux qui sont trop généraux. Une approche efficace essaye de réduire au minimum
le nombre de détecteurs produits tout en maximisant la zone couverte de l’espace du non soi.
Surveillez S à l’aide de F. Si l’un quelconque des détecteurs ne s’apparie pas alors un
changement s’est produit.
Domaine d’application :
Cet algorithme est utilisé dans la sécurité informatique et la détection des spam.
➢ Algorithme de la sélection clonal
La sélection clonale artificielle est une abstraction des mécanismes de mémorisation
des systèmes immunitaires, les algorithmes développés sont généralement dédiés à
l’optimisation ou à la recherche. Un anticorps est une abstraction de la cellule S et des
anticorps qu’elle produit, et les antigènes représentent eux-mêmes.
151
1. Produire un ensemble de solutions (répertoire d'anticorps) de N candidat qui sont défini
par le problème à étudier ;
2. Choisir les n1 cellules qui ont la plus grande affinité à l'antigène ;
3. Copier (produire des copies identiques de) ces cellules choisies. Le nombre de copies est
proportionnel aux affinités : plus l'affinité est haute, plus le nombre de clone est grand;
4. Changer la structure des cellules choisies (hyper mutation). Le taux de changement est
proportionnelle à leurs affinités : plus l'affinité est haute, plus le taux de Changement est
petit;
5. Sélectionner les n2 cellules (du résultat de l'étape 4) qui ont la plus grande affinité à
l'antigène pour composer le nouveau répertoire ;
6. Remplacer quelques cellules qui possèdent des valeurs d'affinité faible par les nouvelles
cellules ;
7. Répéter les étapes 2 à 6 jusqu'à ce qu'un critère d'arrêt donné soit rencontré.
Domaine d’application :
Ce genre d'algorithme peut être utilisé pour des problèmes d'optimisations, de Clustering,
ou de reconnaissance des formes.
➢ Réseaux immunitaires
La théorie immunitaire de réseau semble très attrayante sur l'intelligence artificielle. Car
premièrement, elle présente un système dynamique capable d'exécuter des interactions entre
ses propres constituants et entre ses constituants et l'environnement externe.
Deuxièmement, elle offre les possibilités d'ajuster la structure du système (réseau) et les
paramètres du système sur l'environnement. Son algorithme général est :
1. Initialisation : initialiser un réseau de cellules immunisées ;
2. Boucle de population : pour chaque antigène :
2.1. Identification antigénique : calculez les affinités des anticorps face à l'antigène ;
2.2. Interactions du réseau : calculez les affinités entre toutes les paires
d'anticorps ;
2.3. Méta dynamique : ajoutez des nouveaux anticorps aux réseaux et supprimez qui
sont inutile (le choix est basé sur un certain critère) ;
2.4. Niveau de stimulation : évaluez le niveau de stimulation de chaque cellule du réseau
tenant compte des résultats des étapes précédentes ;
2.5. Dynamique de réseau : mettre à jour la structure et les paramètres du réseau selon le
niveau de stimulation de différentes cellules ;
3. Cycle : répéter l'étape 2 jusqu'à ce qu'un critère donné d'arrêt soit rencontré ;
152
Domaines d’applications :
•
•
•
Datamining
Robotique
Ordonnancement.
9.7.6 Exemples d’applications
❖ Esponda et Forrest ont appliqué la sélection négative au problème de détection
d’intrusion dans un réseau informatique (Le système nommé LYSIS).
❖ Knight et Timmis ont proposé MARITA, un algorithme pour l’apprentissage
supervisé inspiré de la théorie des réseaux immunitaires et de la sélection clonale.
❖ De Castro et Von Zuben, en 2001, ont proposé aiNet, un algorithme qui combine
la théorie des réseaux immunitaires et la sélection clonale.
❖ Warrender et Forrest ont appliqué un algorithme de détection des intrusions à
l’aide d'appels système.
153
9.8 La recherche tabous
9.8.1 Introduction
La recherche tabous a été introduite par Glover (1989). L’exploitation du voisinage permet de
se déplacer de la solution courante vers son meilleur voisin. Ce dernier n’est pas forcément
meilleur que la solution courante. Cette méthode permet un déplacement d’une solution S
vers la meilleure solution S 0 appartenant à son voisinage V (S). L’algorithme 5 résume la
procédure de la Recherche Tabous. Le déplacement interdit, d’où vient le mot tabou, consiste
au retour vers une solution récemment visitée. Pour cela, les solutions visitées sont
temporairement interdites et stockées dans une liste taboue. Une fois la liste taboue est
remplie, la solution la plus ancienne est retirée (selon le principe d’une file d’attente). La
taille de cette liste est un paramètre crucial qui affecte la résolution du problème. Elle peut
être statique ou dynamique.
9.8.2 Histoire
Tendance dans les années 70 : techniques d’amélioration des solutions par recherche
locale ⇒ procédure de recherche itérative qui améliore une solution de départ en lui
appliquant une série de modifications locales (mouvements).
⇒ arrêt lorsqu’un optimum local est trouvé
• 1983 : une nouvelle heuristique apparaît, le Recuit Simulé
⇒ permet une exploration aléatoire contrôlée de l’espace des solutions.
• 1986 : bien que son origine remonte à 1977, la Recherche Tabou n’est proposée qu’au milieu
des années 80 par Fred Glover :
⇒ méthode développée pour résoudre des problèmes combinatoires (la plupart NP-durs).
⇒ révolution de cette méthode par rapport aux autres : permet de surmonter le problème
des optima locaux par l’utilisation de listes taboues (principe de mémoire).
• Par la suite : algorithmes génétiques, colonies de fourmis, …
Mise en contexte :
« La recherche avec tabou peut être vue comme une "méta-heuristique",
superposée à une autre heuristique. L'approche vise à éviter les optimums
locaux par une stratégie d'interdiction (ou, plus généralement, de pénalisation)
de certains mouvements. »
Heuristique :
Une heuristique est une stratégie de bon sens pour se déplacer intelligemment dans l’espace
des solutions, afin d’obtenir une solution approchée, le meilleur possible, dans un délai de
temps raisonnable.
154
Métaheuristique :
Le but d’une méta-heuristique, est de réussir à trouver un optimum global. Pour cela, l’idée
est à la fois de parcourir l’espace de recherche, et d’explorer les zones qui paraissent
prometteuses ; mais sans être « piégé » par un optimum local.
« Méta heuristique »
• notion de méta heuristique : souvent utilisée pour décrire la RT (≠ méthode exacte).
• une stratégie qui guide et modifie d’autres heuristiques afin de produire des solutions qui
diffèrent de celles généralement obtenues dans la recherche d’un optimum local.
• ces heuristiques « guidées » peuvent se limiter à de simples descriptions et évaluations de
déplacements permis pour passer d’une solution à une autre.
9.8.3 Définition de la Recherche Tabous
Méthode heuristique de recherche locale utilisée pour résoudre des problèmes complexes
et/ou de très grande taille (souvent NP-durs). La RT a plusieurs applications en
programmation non linéaire (PNL).
Principe de base :
● poursuivre la recherche de solutions même lorsqu’un optimum local est rencontré et ce,
■ en permettant des déplacements qui n’améliorent pas la solution.
■ en utilisant le principe de mémoire pour éviter les retours en arrière (mouvements
cycliques).
• Mémoire :
⇒ elle est représentée par une liste taboue qui contient les mouvements qui sont
temporairement interdits.
⇒ mouvements interdits ou solutions interdites.
⇒ son rôle évolue au cours de la résolution : diversification (exploration de l’espace des
solutions) vers intensification.
2 alternatives :
● Une liste contient les solutions interdites (coûteux en place mémoire).
● Une liste des mouvements interdits (qui ramènent vers ces solutions déjà visitées). ○
Avantages : prend moins de place mémoire. ○ élimine plus de solutions que celles visitées
effectivement Généralement les listes sont gérées en FIFO (first in first out).
Résultat :
•
Liste taboue des mouvements interdits élimine plus de solutions que celles
visitées effectivement.
•
Plus efficace que la liste des solutions taboues mais élimine éventuellement de très
bonnes solutions.
• Exception aux interdictions :
155
Il est possible de violer une interdiction lorsqu’un mouvement interdit permet d’obtenir la
meilleure solution enregistrée jusqu’à maintenant.
Idée : une fonction d’aspiration qui permet de lever le statu tabou. (L’exception à
l'interdiction).
•
La liste taboue peut s’avérer trop contraignante lors de la recherche d’une solution. Le
mécanisme d’aspiration permet de lever ponctuellement le statut “tabou” afin
d’atteindre des solutions inédites.
– L’intensification : est l’une des stratégies qui permet de mémoriser les meilleures
solutions rencontrées (ou leur configuration) et les utilise afin d’améliorer la recherche.
– La diversification : cherche à utiliser des mouvements encore jamais réalisés afin
d’explorer des régions nouvelles de l’espace de recherche en mémorisant bien sur les
solutions les plus visitées.
Résumé d’idée de base
Acceptation de solutions moins bonnes que la solution courante
Risque de cycler
Liste de tabous : solutions interdites pour un nombre d’itérations
Critères d ’aspiration : conditions permettant de lever le statut tabou d ’une
solution
9.8.4 Exemple application de la RT : la fable des randonneurs
Un randonneur malchanceux, est perdu dans une région montagneuse. Toutefois, il sait
qu’une équipe de secours passe régulièrement par le point situé à la plus basse altitude dans
la région. Ainsi, il doit se rendre à ce point pour attendre les secours. Comment s’y prendra-til ? Il ne connaît pas l’altitude de ce point et, à cause du brouillard, il ne voit pas autour de lui.
Donc, arrivé à un croisement, il doit s’engager dans une direction pour voir si le chemin
monte ou descend. Tout d’abord, il commence par descendre tant qu’il peut, en choisissant le
chemin de plus grande pente à chaque croisement. Voir figure 01 Puis, lorsqu’il n’y a plus de
sentier menant vers le bas, il décide de suivre le chemin qui remonte avec la plus faible pente
car il est conscient qu’il peut se trouver à un minimum local. Voir figure 02 Toutefois, dès
qu’il remonte, il redescend vers le point où il était. Cette stratégie ne fonctionne pas. Par
conséquent, il décide de s’interdire de faire marche arrière en mémorisant la direction d’où il
vient. Il est à noter que sa mémoire ne lui permet de mémoriser que les deux dernières
directions prohibées. Voir figure 03
156
Cette nouvelle stratégie lui permet d’explorer des minimums locaux et d’en ressortir. À un
moment donné, il arrive à un point où il décèle une forte pente descendante vers le sud.
Toutefois, les directions mémorisées lui interdisent d’aller vers le sud car cette direction est
prohibée. Il décide d’ignorer cette interdiction et emprunte ce chemin. Voir figure 04 Cette
décision fut bénéfique: il arriva au point de plus basse altitude et attendit les secours qui ne
tardèrent à arriver. Voir figure 05
Définition des variables : Voir figure 06
i : la solution actuelle.
• i’ : la prochaine solution atteinte (solution voisine).
• N(i): l’espace de solutions voisines à i (l’ensemble des i’).
• m : mouvement de i à i’
• i globale : la solution optimale globale qui minimise la fonction objectif f( ).
• i* : la solution optimale actuelle
157
➢ Définition des termes des mouvements a appliqué dans l’algorithme
Mouvement non améliorateur : un mouvement qui nous sortirait d’un minimum local i* en
nous amenant à une solution voisine i’ pire que l’actuelle.
La méthode taboue permet un mouvement non améliorateur, comme le permet le recuit
simulé.
La différence entre les 2méthodes est que la RT choisira le meilleur i’ dans N(i), l’ensemble
des solutions voisines. Voir figure 07
Mouvement tabou : un mouvement non souhaitable, comme si on redescendait à un
minimum local d’où on vient juste de s’échapper. Le mouvement est considéré tabou pour un
nombre prédéterminé d’itérations. k représente l’index des itérations (l’itération actuelle).
Voir la figure 08
T : liste des mouvements tabous. Il peut exister plusieurs listes simultanément. Les éléments
de la liste sont t (i,m).
Une liste T avec trop d’éléments peut devenir très restrictive. Il a été observé que trop de
contraintes (tabous) forcent le programme à visiter des solutions voisines peu alléchantes à la
prochaine itération.
Une liste T contenant trop peu d’éléments peut s’avérer inutile et mener à des mouvements
cycliques.
• a (i,m) :critères d’aspiration. Déterminent quand il est avantageux d’entreprendre m,
malgré son statut tabou.
9.8.5 L’algorithme de la Recherche Tabous
•
Étape 1 : choisir une solution initiale i dans S (l’ensemble des solutions)
Appliquer i* = i et k = 0
•
Étape 2 : appliquer k = k+1 et générer un sous-ensemble de solutions en N(i,k)
pour que :
– les mouvements tabous ne soient pas choisis.
– un des critères d’aspiration a(i,m) soit applicable.
158
•
Étape 3 : choisir la meilleure solution i’ parmi l’ensemble de solutions voisines
N(i,k).
Appliquer i = meilleur i’.
•
Étape 4 : si f(i) <= f(i*), alors nous avons trouvé une meilleure solution.
Appliquer i* = i
•
Étape 5 : mettre à jour la liste T et les critères d’aspiration.
•
Étape 6 : si une condition d’arrêt est atteinte, stop. Sinon, retour à Étape 2.
Condition d’arrêt : condition qui régira l’arrêt de l’algorithme.
Des critères d’arrêt possibles sont :
- Si une solution prouvée optimale a été trouvée.
- Si une limite a été atteinte en ce qui concerne :
- Le nombre d’itérations ;
- Le temps de calcul.
- Si la recherche semble stagner : nombre d’itérations sans amélioration de la meilleure
configuration trouvée.
Ex : arrêt après 22 itérations (k = 22).
Comportement de l’algorithme tabous
●Si la liste taboue est courte :
⁻ Il y a moins d’interdictions (mouvements tabous).
⁻ La recherche épouse mieux les optima locaux rencontrés.
⁻ L’algorithme tend à parcourir de moins grandes distances dans l’espace de recherche. Il
explore moins l’espace de recherche.
⁻ Le risque de cycles est plus grand.
● Si la liste taboue est longue :
⁻ Il y a avantage d’interdictions (mouvements tabous).
⁻ La recherche risque de manquer de nombreux optima locaux sur son chemin.
⁻ L’algorithme tend à parcourir de plus grandes distances dans l’espace de recherche. Il
explore davantage l’espace de recherche.
⁻ Le risque de cycles est réduit.
Résultat :
•
Le comportement de l’algorithme dépend :
⁻ De la longueur de la liste taboue.
159
⁻ la taille de la liste de candidats (si on en utilise une) Plus la liste de candidats est petite,
moins la liste taboue a besoin d’être grande.
9.8.6 Domaines d'applications
• Optimisation de la production et gestion des inventaires :
⇒ production juste-à-temps.
⇒ planification d’inventaires multi-produits .
⇒ gestion des économies d’échelle.
• Problèmes d’affectation et de localisation.
• Optimisation de graphes :
⇒ coloration de graphes (Hertz, Taillard, De Werra).
⇒ clique maximale (Gendreau, Soriano).
• Télécommunications :
⇒ conception de réseaux (optiques, de service, …).
⇒ routage d’appels.
• Logique et intelligence artificielle :
⇒ reconnaissance et classification de formes.
⇒ réseaux de neurones.
• Application à diverses technologies :
⇒ construction de stations spatiales.
⇒ distribution de puissance électrique.
⇒ inversion sismique.
• Création d’horaires.
• Optimisation de structures.
⇒ structures des protéines.
⇒ séquençage d’ADN.
• Techniques spécialisées.
⇒ reactive Tabu search.
• Design.
• Résolution en parallèle (parallel computing) .
• Optimisation continue et stochastique.
• Analyses financières.
160
9.8.7 Exemple d’application : Problème du job shop
Les pièces n’ont pas la même progression sur les machines.
- n pièces, m machines ⇒ (n!)m cédules possibles.
- 10 pièces, 8 machines = 3 X 1052 cédules possibles.
- solution : utilisation d’heuristiques comme la RT.
Déterminer la valeur de la fonction objective :
• Fonction objectif = minimiser le temps total de production : ⇒ Minimiser le plus long
chemin dans le graphe
• Diagramme de Gantt (supposons que toutes les opérations ont une durée unitaire) :
161
Déterminer le voisinage :
• Utilisation de la RT pour trouver une bonne solution puisqu’il est impossible de tester le
temps total de production pour toutes les cédules applicables.
• Comment déterminer le voisinage d’une solution ?
⇒ À partir d’une solution, on peut obtenir une solution voisine réalisable en permutant deux
tâches consécutives sur le chemin critique (et sur une même machine).
Résultat de cette permutation
Solution finale:
M1: P1 – P3 – P2
M2: P2 – P1 – P3
M3: P1 – P2 – P3
162
Rôle de la RT :
• En fonction des solutions retenues et des permutations réalisées avec la RT, il est possible
de modifier le graphe qui modélise le problème du job shop.
• Présentation de la résolution d’un problème de job shop dans
Excel à l’aide de la RT.
163
Chapitre 4
10 Les solveurs d'optimisation
10.1 Introduction
Dans le but de découvrir des méthodes de résolution et d’optimisation des problèmes dans la
recherche opérationnelle nous avons fait une recherche sur les solveurs d’optimisation que
nous résumons dans ce rapport.
En effet beaucoup de problèmes de programmation de diffèrent type ne peuvent pas être
résolus manuellement, ils nécessitent des moyens plus rapide et efficace pour avoir de
meilleures décisions en matière de planification, d’allocation et programmation des
ressources plus rares. C’est ici que l’importance des solveurs d’optimisation et leur rôle
devient clair.
Au cours des dernières années, les solveurs d’optimisation ont attiré l’attention des
chercheurs en raison de leur capacité à mieux gérer un grand nombre de contraintes ainsi
que des fonctions objectives.
Un grand nombre de solveurs d’optimisation sont développé pour résoudre des problèmes
complexes. La conception et le développement de ces solveurs d’optimisation dépend de la
nature du problème particulier à être manipulé. Un seul solveur d’optimisation est incapable
de résoudre tous les types de problèmes de la vie réelle.
Dans ce rapport nous introduisons et analysons les différents types de solveurs
d’optimisation (CPLEX, ARTLEYS KNITRO, AMPL, APMONITOR), leurs avantages et
inconvénients, et une comparaison entre ces différents solveurs d’optimisation.
Enfin, nous présentons quelques exemples d’application expliquant comment ces solveurs
fonctionnent et comment nous pouvons les utiliser.
10.2 Définition d’un solveur de programmation
mathématique
C’est un logiciel capable de calculer le résultat d’un problème mathématique après sa
transcription informatique.
En effet, c’est un outil de calcul très puissant qui permet de résoudre de manière optimale ou
non optimale les systèmes d’équations et inéquations complexes qu’on lui soumet.
164
Quand la fonction objective et les contraintes ont des relations linéaires on fait appel aux
solveurs d’optimisation tant que toutes les variables de décision peuvent prendre des valeurs
continues dans le résultat.
10.3 Les différents types des solveurs d’optimisation
Il existe généralement cinq solveurs d’optimisation dépendamment de type de
programmation utilisé, on les liste comme suit :
10.3.1 Solveurs de programmation linéaire
On s’intéresse à ces solveurs mathématiques lorsque les contraintes et la fonction objective
ont des relations linéaires. C’est le cas où on trouve que le résultat contient des valeurs
continues pris par les variables de décisions.
Exemple : CPLEX, Artelys Knitro
10.3.2
Solveurs de programmation en nombres entiers mixtes
On est besoin des solveurs de programmation en nombres entiers mixtes Lorsqu’on on
rencontre des décisions admettant des choix discrets et continu.
Ces solveurs de programmation de type entier peuvent être utiliser au cas où les décisions
contiennent des choix discrets, les variables entières sont les seuls types que les variables de
décisions peuvent prendre, par contre il existe certains cas où ces variables peuvent prendre
des valeurs continues dans le résultat.
10.3.3
Solveurs de programmation quadratiques
Quand les variables des décisions prennent des valeurs entières ou continues on est censé
d’utiliser des solveurs de programmation quadratiques en entier mixtes. De même, on
s’intéresse à utiliser ces types de solveurs au cas où la fonction objective admet des termes
quadratiques. Les termes quadratiques peuvent être convexe ou non convexe.
10.3.4
Solveurs de programmation par contraintes quadratiques
Des solveurs de programmation comme CPLEX nous permet également de résoudre des
problèmes contenant des contraintes de type quadratiques convexe. Les solveurs de
programmation à contraintes quadratiques en nombres entiers mixtes sont utilisés quand les
variables de décision peuvent être entières ou continues.
165
En effet, les problèmes contenant des contraintes de type quadratique sont formulés sous
forme de programme SOCP, le SOCP (second-order-cone programs), contient des
formulations à l’aide des cônes pivotés.
10.3.5
Solveurs de programmation par contraintes
Ce type de solveurs nous permet d’obtenir des solutions optimales concernant les problèmes
de type combinatoire qui ont des variables de décision de type entières, de même, les
problèmes de séquencement et de planification détaillés, ces derniers concernent les activités
représentées comme variables d’intervalles ainsi sous forme de fonction cumulative. Les
contraintes de ces problèmes peuvent prendre des valeurs linéaires ou non linéaires.
Example : ILOG CP Optimizer.
Dans la partie qui suit, nous allons montrer quelques exemples de solveurs d’optimisation
très connus qui sont : CPLEX, AMPL, ARTELYS KNITRO et APMONITOR
10.4 Des solveurs d’optimisation
10.4.1CPLEX
Le CPLEX est un outil informatique, c’est un solveur d’optimisation produit par IBM,
Le nom du CPLEX en anglais, adresse sur le langage C ainsi que l’algorithme du Simplexe, il
se compose d’une bibliothèque riche en fonctions qui sont compatibles avec plusieurs
langages de programmation comme C, C#, C++, Python et Java, et un exécutable
(CPLEX)interactif.
CPLEX nous offre la possibilité de résoudre plusieurs types de problèmes, on peut citer :
• Programmation en nombres entiers.
• Programmation mixte en nombres entiers.
• Programmation quadratique.
• Optimisation multi-objectifs.
Aussi CPLEX Optimizer fournit des solveurs de programmation mathématique flexibles et
d’hautes performances pour la PL, PNM, PQ, et PCQ. Ces solveurs incluent un algorithme
parallèle distribué pour la programmation en nombres entiers mixtes afin de tirer parti de
plusieurs ordinateurs pour résoudre des problèmes difficiles, en outre, il nous permet de
résoudre des modèles d’optimisation avec des millions de contraintes et variables.
Cela d’une part, d’une autre part le CPLEX trouve des difficultés concernant :
La résolution des problèmes de programmation par contrainte et L’existence de divers
paramètres à régler.
Traitement des données provenant de différentes sources comme le bloc-notes, etc…
166
Ceci d’une part, d’autre part il existe certains problèmes d’optimisations combinatoire que les
méthodes de programmation mathématique traditionnelles ne peuvent pas facilement les
linéariser et résoudre (dans le cas des problèmes de grande taille, le temps de traitement peut
dépasser un jour par exemple) ce qui est considérer comme l’un des inconvénients du
CPLEX.
Á titre d’exemple, la programmation par contrainte, c’est pour cela l’IBM a produit un
complémentaire de CPLEX sous le nom de ILOG CP Optimizer qui fournit un large ensemble
de contraintes logiques et arithmétiques, de plus un optimiseur très puissant qui permet à
l’optimisation combinatoire plusieurs avantages d’un processus d’exécution et de
développement par modèle.
10.4.2
AMPL
AMPL ou ‘‘A Mathematical Programming Language’’ est un langage de modélisation
algébrique sert à décrire et résoudre des problèmes de type optimisation et planification à
grande échelle et grande complexité.
AMPL peut fonctionner avec une large gamme de solveurs, à la fois open source et
propriétaires, notamment CBC, CPLEX… et il est communément connu pour être utilisé par
plusieurs entreprises clientes, des agences gouvernementales et aussi des établissements
universitaires. En plus AMPL permet de traiter plusieurs formes de problèmes
d’optimisation :
•
Programmation linéaire
•
Programmation quadratique
•
Programmation en nombre entier mixte
•
Programmation par contrainte
Parmi les avantages d'AMPL on peut citer sa syntaxe qui est bien similaire avec la notation
mathématique des problèmes d'optimisation. Ce qui permet de définir très concisément et
lisiblement des problèmes dans le domaine de l'optimisation. En outre, l’AMPL support
plusieurs autre solveurs d’optimisation (CPLEX, CPLEX CP Optimizer, Artelys Knitro…).
Selon les statistiques de NEOS, AMPL est le format le plus populaire pour représenter des
problèmes de programmation mathématique.
D’après des statistiques réalisées par NEOS en 2011 on a :
167
Un des inconvénient d’AMPL est que La version gratuite « étudiant » est limitée à 300
variables (500 pour les problèmes linéaires) et un total de 300 objectifs et contraintes c’est
que ne permet pas de résoudre des problèmes de larges tailles.
10.4.3
Artelys Knitro
Artelys Knitro est un solveur d'optimisation mercantile spécialisée dans la détermination de
solutions pour les problèmes non linéaire. Richard Waltz, Jorge Nocedal, Todd Plantenga et
Richard Byrd ont co-fondé KNITRO, qui signifie "Nonlinear Interior Point Trust Region
Optimization".
La version initiale, lancée en 2001, a été réalisée par Artelys après plusieurs années de
recherche à la Northwestern University (via Ziena Optimization LLC). Il permet de traiter
plusieurs formes de problèmes d’optimisation :
• Problèmes d’optimisation non linéaire généraux (NLP).
• Problèmes linéaires (LP) ;
• Problèmes quadratiques (QP/QCQP/SOCP).
• Systèmes d'équations non linéaires ;
En outre Artelys Knitro est un outil polyvalent, déjà utilisé dans de nombreux domaines
d’application telle que : Banque & finance, Economie & théorie des jeux, Statistique et
analyses de données, Energie, Développement durable, Mathématique & géométrie …Et ses
principales fonctionnalités :
Artelys Knitro fonctionne avec une grande variété de langages de programmation et de
modélisation (tels que AIMMS, AMPL, GAMS, et MPL) :
• Programmation orientée objet avec C++, C#, Java et Python.
• Programmation matricielle avec Julia, C, Fortran, MATLAB, et R.
• Interface avec Excel par le biais de Front line System.
Artelys Knitro possède également plusieurs fonctionnalités majeures et options disponibles,
un tuner automatique, multi start (parallélisable) pour l'optimisation globale, des outils
intégrés d'approximation et de vérification des dérivées et un pré-solveur intégré.
10.4.4
APMonitor
APMonitor, ou "Advanced Process Monitor" est un logiciel d'optimisation pour les équations
algébriques mixtes entières et différentielles. Les modes de fonctionnement incluent la
réconciliation des données, l'estimation de l'horizon mobile, l'optimisation en temps réel, la
simulation dynamique et le contrôle prédictif non linéaire avec des capacités de solution pour
les équations différentielles et algébriques (DAE) à indice élevé. APMonitor est couplé à des
solveurs à grande échelle et permet de traiter plusieurs formes de problèmes d’optimisation :
• Programmation linéaire
• Programmation non-linéaire
168
• Programmation quadratique
• Programmation en nombre entier mixte
Un des avantages de APMonitor est qu’il est en concurrence avec des logiciels similaires sous
différents aspects, mais il est unique en termes d'étendue, de facilité d'utilisation et de
disponibilité en tant que logiciel gratuit pour une utilisation académique et commerciale, et la
facilité de leur support produit grâce à une interface en ligne.
D’ailleurs, l’APMonitor n'est pas la bonne solution si vous devez résoudre un problème
d'optimisation avec des nombres complexes.
10.5 Comparaison des solveurs Inconvénients des
solveurs d’optimisation
Ainsi qu’on a introduit quelques solveurs d’optimisation, on va montrer une comparaison
entre eux concernant le langage de programmation qu’ils supportent et quelques remarques
sur chacun d’eux :
Nom
AMPL
APMonitor
Artelys Knitro
Langage
C, C++, C#, Python,
Java, Matlab
Python, C++, Fortran,
Julia
C, C++, C#, Python,
Java, Matlab
Remarques
Un langage de modélisation algébrique populaire pour
l’optimisation linéaire, mixte et non linéaire.
Les versions étudiant et AMPL pour les cours sont
disponibles gratuitement.
Un langage de modélisation différentielle et algébrique
pour l’optimisation en nombres entiers mixtes et non
linéaires.
Il est disponible sous forme de boîte à outils MATLAB,
de module Python, de package Julia ou à partir d'une
interface de navigateur Web
Bibliothèque à usage général, spécialisée dans
l’optimisation non linéaire. Gère les problèmes en
nombres entiers mixtes et les programmes
mathématiques avec contraintes d’équilibre. Algorithmes
spécialisés pour les problèmes des moindres carrés non
linéaires.
169
CPLEX
C, C++, C#, Python,
Java
IBM CPLEX Optimization Studio est une suite de
moteurs d’optimisation (CPLEX pour la programmation
par contraintes), un langage de modélisation (OPL) et un
environnement de développement intégré.
Le tableau ci-dessus met en œuvre une comparaison entre les prix des différents types de
solveurs d’optimisations.
D’après ce qui précède, il est clair que les solveurs d’optimisation sont très couteux, c’est
qu’on peut considérer comme l’un des plus grands inconvénients de ces solveurs.
10.6 Quelques exemples d’application
Pour clarifier un peu le fonctionnement des précédents solveurs on donne les exemples
suivants pour chaque solveur d’optimisation :
170
➢ APMonitor:
Model hs55
Parameters
u[1] = 1androscots
u[2:3] = 1e20
u[4] = 1
u[5:6] = 1e20
End Parameters
Variables
x[1] = 1, >=0, <=u[1]
x[2] = 2, >=0, <=u[2]
x[3:5] = 0, >=0, <=u[3:5]
x[6] = 2, >=0, <=u[6]
End Variables
Equations
x[1] + 2*x[2] + 5*x[5] = 6
x[1] + x[2] + x[3] = 3
x[4] + x[5] + x[6] = 2
x[1] + x[4] = 1
x[2] + x[5] = 2
x[3] + x[6] = 2
! best known objective = 19/3
minimize x[1] + 2*x[2] + 4*x[5] + exp(x[1]*x[4])
End Equations
End Model
Solution:
apm 128.187.56.207_online_7162
---------------------------------------------------------------APMonitor, Version 1.0.1
APMonitor Optimization Suite
---------------------------------------------------------------171
--------- APM Model Size -----------Each time step contains
Objects
:
0
Constants :
0
Variables :
12
Intermediates:
0
Connections :
0
Equations :
7
Residuals :
7
Number of state variables:
6
Number of total equations: -
6
Number of slack variables: -
0
--------------------------------------Degrees of freedom
:
0
---------------------------------------------Steady State Optimization with APOPT Solver
----------------------------------------------
Iter Objective Convergence
0 6.66667E+00 2.50000E-01
1 6.66667E+00 2.50000E-01
Successful solution
--------------------------------------------------Solver
: APOPT (v1.0)
Solution time : 1.230000000214204E-002 sec
Objective
: 6.66666666666667
Successful solution
--------------------------------------------------172
success flag: 1
Successful Solution
Objective Value = 6.66666667
➢ Artyles Knitro et AMPL :
#Exemple de problème formulé comme un modèle AMPL utilisé # pour démontrer
l'utilisation de Knitro avec AMPL.
# Le problème a deux solutions locales :
# le point (0,0,8) avec objectif 936.0, et
# le point (7,0,0) avec objectif 951.0
# Définir des variables et Ils doivent être positifs.
var x{j in 1..3} >= 0;
# Fonction objectif à minimiser.
minimize obj:
1000 - x[1]^2 - 2*x[2]^2 - x[3]^2 - x[1]*x[2] - x[1]*x[3];
# Contrainte d'égalité.
s.t. c1: 8*x[1] + 14*x[2] + 7*x[3] - 56 = 0;
# Contrainte d'inégalité.
s.t. c2: x[1]^2 + x[2]^2 + x[3]^2 -25 >= 0;
data;
# Définir le point initial.
let x[1] := 2;
let x[2] := 2;
let x[3] := 2;
Solution:
alg=2
bar_maxcrossit=2
173
outlev=1
=======================================
Commercial License
Artelys Knitro 12.4.0
=======================================
Knitro presolve eliminated 0 variables and 0 constraints.
algorithm:
2
bar_maxcrossit:
2
datacheck:
0
hessian_no_f:
1
outlev:
1
par_concurrent_evals: 0
The problem is identified as a QCQP.
Problem Characteristics
( Presolved)
----------------------Objective goal: Minimize
Objective type: quadratic
Number of variables:
3(
3)
bounded below only:
3(
3)
bounded above only:
0(
0)
bounded below and above:
0(
0)
fixed:
0(
0)
free:
0(
0)
Number of constraints:
2(
2)
linear equalities:
1(
1)
quadratic equalities:
0(
0)
gen. nonlinear equalities:
0(
0)
linear one-sided inequalities:
0(
0)
quadratic one-sided inequalities:
1(
1)
174
gen. nonlinear one-sided inequalities:
0(
0)
linear two-sided inequalities:
0(
0)
quadratic two-sided inequalities:
0(
0)
gen. nonlinear two-sided inequalities:
0(
0)
Number of nonzeros in Jacobian:
6(
6)
Number of nonzeros in Hessian:
5(
5)
Knitro using the Interior-Point/Barrier Conjugate Gradient algorithm.
EXIT: Locally optimal solution found.
Final Statistics
---------------Final objective value
= 9.36000000000000e+02
Final feasibility error (abs / rel) = 0.00e+00 / 0.00e+00
Final optimality error (abs / rel) = 0.00e+00 / 0.00e+00
# of iterations
=
# of CG iterations
7
=
8
# of function evaluations
= 0
# of gradient evaluations
= 0
# of Hessian evaluations
= 0
Total program time (secs)
=
Time spent in evaluations (secs) =
0.00115 (
0.001 CPU time)
0.00000
================================================================
===========
Knitro 12.4.0: Locally optimal or satisfactory solution.
objective 936; feasibility error 0
7 iterations; 0 function evaluations
CPLEX :
Max Z = 5x + 4y
Les contraints :
175
6x + 4y <= 24
x + 2y <= 6
-x + y <=1
y<=2
x,y >=0
Exemple (Production de jouets) par AMPL :
– Une société de jouets produit des trains, des camions et des voitures, en utilisant 3
machines.
– Les disponibilités quotidiennes des 3 machines sont 430, 460 et 420 minutes, et les profits
par train, camion et voiture sont respectivement EUR 3, EUR 2 et EUR 5.
176
– Les temps nécessaires sur chaque machine sont :
Exemple de production de jouets au format AMPL (modèle)
Exemple de production de jouets au format AMPL (données)
177
178
Conclusion
Dans ce document, nous avons essayé de comprendre la recherche opérationnelle (RO).
D’abord nous avons vu quelques théories utilisées dans la RO tels que la NP-Complétude qui
permet de classifier les problèmes RO (P, NP, NP-complet, NP-Difficile…) et la théorie des
jeux. Ensuite, nous avons défini, modélisé et résolu quelques problèmes célèbres de la
recherche opérationnelle qui peuvent être des problèmes de transport comme le VRP, TSP,
FCTP… ou des problèmes d’ordonnancement comme le JSP. Après, nous avons étudié les
méthodes de résolution utilisées dans la RO. Nous avons classifié ces méthodes en deux
groupes : Les méthodes exactes comme la programmation dynamique et la méthode de
Branch & Bound, qui donnent une solution optimale mais pour des problèmes de petites
instances. Et les méthodes approchées (Heuristiques et métaheuristiques) tels que les
algorithmes génétiques, la recherche tabous, les chaines de Markov… qui sont capables de
trouver des solutions acceptables en un temps raisonnable. Enfin, nous avons vu quelques
notions et exemples des solveurs d’optimisation qui sont des logiciels utilisés en recherche
opérationnelle pour résoudre les problèmes RO.
Bibliographie/ Webographie
Game Theory 101: The Complete Textbook By William Spaniel
Game Theory: A Very Short Introduction By Ken Binmore
An Introduction to Game Theory By Diego Sánchez Rosas
A Course in Game Theory By Martin J. Osborne and Ariel Rubinstein
THEORIE DES JEUX : UNE INTRODUCTION By Jacques-Francois Thisse
Adlakha, V., & Kowalski, K. (2003). A simple heuristic for solving small fixed-charge
transportation problems.
Omega, 31(3), 205-211.
Balinski, M. L. (1961). Fixed‐cost transportation problems. Naval Research Logistics (NRL),
8(1), 41- 54.
Buson, E., Roberti, R., & Toth, P. (2014). A reduced-cost iterated local search heuristic for the
fixed-charge transportation problem. Operations Research, 62(5), 1095-1106.
179
Dwyer, P. S. (1966). Use of completely reduced matrices in solving transportation problems
with fixed charges. Naval Research Logistics Quarterly, 13(3), 289-313.
El-Sherbiny, M. M., & Alhamali, R. M. (2013). A hybrid particle swarm algorithm with
artificial immune learning for solving the fixed charge transportation problem. Computers &
Industrial Engineering, 64(2), 610-620.
Gen, M., Altiparmak, F., & Lin, L. (2006). A genetic algorithm for two-stage transportation
problem using priority-based encoding. OR spectrum, 28(3), 337- 354.
Glover, F. (2005). Parametric ghost image processes for fixed-charge problems: A study of
transportation networks. Journal of Heuristics, 11(4), 307-336.
Hajiaghaei-Keshteli, M. (2011). The allocation of customers to potential distribution centers
in supply chain
[ALA 04] ALAYA I., SOLNON C., GHÉDIRA K., « Ant algorithm for the multi-dimensional
knapsack problem », Proceedings of International Conference on Bioinspired Optimization
Methods and their Applications (BIOMA 2004), 2004, p. 63–72.
[BUL 99] BULLNHEIMER B., HARTL R., STRAUSS C., « An Improved Ant system
Algorithm for the Vehicle Routing Problem », Annals of Operations Research, vol. 89, 1999,
p. 319–
GLOVER, Fred et Manuel LAGUNA. 1997. Tabu Search, Boston : Kluwer Academic
Publishers, 382p
[CAS 1999] L.N. Castro, F.J. Von Zuben, "Artificial immune systems : part I - Basic theory
and applications», Rapport technique, Décembre 1999.
https://fr.wikipedia.org/wiki/Optimisation_multiobjectif
https://wikimemoires.net/2014/02/optimisation-multiobjectif-et-problemes-doptimisationmono-objectifs
https://www.researchgate.net/figure/Classication-des-methodes-doptimisationmultiobjectif_fig2_321642314
https://publications.polymtl.ca/1603/1/2014_AlexandreLeuliet.pdf
https://corpus.ulaval.ca/jspui/bitstream/20.500.11794/26365/1/31447.pdf
https://homepages.laas.fr/sungueve/Docs/PhD/These_SUNGUEVEU_20062009.pdf
https://doc.rero.ch/record/32038/files/MASBA_6.pdf
https://fr.wikipedia.org/wiki/Probl%C3%A8me_de_tourn%C3%A9es_de_v%C3%A9hicules
https://fr.wikipedia.org/wiki/S%C3%A9paration_et_%C3%A9valuation
https://fr.slideshare.net/kamarmeddah/branch-andbound-183852735
http://www.artificial-immune-systems.org/
http://www.multilingualarchive.com/ma/enwiki/fr/Artificial_immune_system
http://apmonitor.com/
180
Téléchargement