121
Outils d’Aide à la Décision Christophe Duhamel & Philippe Lacomme ZZ2 F2/F3 - 2014

Outils d’Aide à la Décisionduhamel/OAD/2014_OAD.pdf · Temps de calcul ... Outils de profilage, de tests (unitaires, ... HAMILTONIEN(G,o,d) : existe-t-il un chemin hamiltonien

Embed Size (px)

Citation preview

Outils d’Aide à la Décision

Christophe Duhamel & Philippe Lacomme

ZZ2 F2/F3 - 2014

Complexité algorithmique

Conception d'algorithmes

Problèmes combinatoires

Problèmes d'ordonnancement

Problèmes de transport

Plan du cours

cours thème TP F2 TP F3 thème

S38 16/09 ordo

S39 23/09 ordo 26/09 22/09 graphe

S40 30/10 ordo 03/10 29/09 graphe

S41 07/10 complexité 10/10 06/10 ordo

S42 14/10 heuristiques 17/10 13/10 ordo

S43 21/10 transport 24/10 20/10 ordo

S44 Toussaint

S45 04/11 transport 07/11 03/11 transport

S46 14/11 10/11 transport

S47 21/11 17/11 transport

Complexité : 1 cours

Ordonnancement : 4 cours, 4 TP

Transport : 4 cours, 4 TP

Planning du cours

1. Complexité algorithmique

Motivations

Définitions

Principales classes de complexité

Calcul de complexité

Concevoir un algorithme, c'est bien

Connaître les limites de l'algorithme, c'est mieux !

Limites

Préconditions

Postconditions

Temps de calcul

Taille mémoire

Communications

1.1 Motivations

Efficacité d'un algorithme

Les performances sont importantes lorsque l'algorithme

constitue un goulot d'étranglement du système

Volumétrie importante (grande taille de données)

Nombre élevé d'appels (algorithme utilisé souvent)

Contraintes sur le temps de réponse

Contextes typiques

Systèmes embarqués, temps-réel

Logiciels de calcul

Fouille de données

1.1 Motivations

1.1 Motivations

Comparaison d'algorithmes

Plusieurs algorithmes pour résoudre le même problème

Lequel est le meilleur ?

Selon quel critère ?

Dans quel contexte ?

Sur quel type de données ?

1.1 Motivations

Analyse a priori

Formulation mathématique pour le critère

+ meilleure compréhension de l'algorithme

- obtention parfois complexe

Analyse a postériori

Outils de profilage, de tests (unitaires, couverture...)

+ utilisation simple

- algorithme = boîte noire, délai d'obtention

Ici, analyse a priori

1.1 Motivations

Trouver des critères d'analyse pertinents

Indépendants de la plateforme, du langage

Discriminants

Permettant une analyse rigoureuse

Possibilité d'analyse multicritères

Dominance

Front de Pareto

Agrégation de critères...

1.1 Motivations

Critères d'analyse

Temps de calcul → nombre d'opérations effectuées

Taille mémoire → quantité de mémoire consommée

Communications → nombre d'octets émis/reçus

Typiquement : temps de calcul

Dans ce cours : complexité temporelle des algorithmes

1.2 Définitions

Analyse du temps de calcul : complexité temps

Nombre d'opérations élémentaires effectuées en fonction des

données du problème

Nécessite de définir

Une opération élémentaire

La taille du problème

1.2 Définitions

Opération élémentaire

Opération caractéristique de l'algorithme étudié

Exemples

Recherche dans un tableau (ZZ1) : accès, comparaison

Tri d'un tableau (ZZ1) : comparaison, déplacement

Produit scalaire : multiplication

Minimisation : évaluation d'un point, calcul du gradient

Calcul du PGCD : division, modulo

Enveloppe convexe : test d'un point

1.2 Définitions

Taille du problème

Grandeur caractéristique utilisée par l'algorithme

Exemples

Recherche dans un tableau (ZZ1) : taille du tableau

Tri d'un tableau (ZZ1) : taille du tableau

Produit scalaire : dimension

Minimisation : -

Calcul du PGCD : taille des nombres

Enveloppe convexe : dimension, nombre de points

1.2 Définitions

Trois types de complexité

Dans le pire des cas

Instance pathologique pour l'algorithme

Utilisé le plus souvent car donne une borne supérieure

Dans le meilleur des cas

Instance ”parfaite” pour l'algorithme

En moyenne

Pas d'hypothèses sur l'instance

Plus compliquée à calculer

Donne une idée plus proche du comportement réel

Aussi, complexité amortie…

1.2 Définitions

La complexité est fonction de la taille du problème

Elle peut être compliquée

Exemple : 𝑓 𝑛,𝑚 = 3𝑛 +𝑚2 − 2 log 𝑛 + 3 +𝑚5 𝑛

Précis mais peu pratique

Ordre de grandeur

Expression simplifiée indiquant l'évolution

Même comportement limite que la formule

Simplifie les comparaisons et analyses

1.3 Classes de complexité

Ordre de grandeur

Notation 𝑜 : 𝑓 𝑥 = 𝑜 𝑔 𝑥 si lim𝑥→∞

𝑓 𝑥

𝑔 𝑥= 0

𝑓 croît plus lentement que 𝑔

Exemples

sin 𝑥 = 𝑜 𝑥 17𝑥2 + 3𝑥 − 4 = 𝑜 𝑥4

Notation 𝑂 : 𝑓 𝑥 = 𝑂 𝑔 𝑥 si ∃𝑘|∀𝑥 > 𝑥0, 𝑓 𝑥 < 𝑘𝑔 𝑥

𝑓 dominée par 𝑔 à partir d'un certain point 𝑥0

Exemples

sin 𝑥 = 𝑂 𝑥 sin 𝑥 = 𝑂 1

𝑂 moins précis et plus simple à obtenir que 𝑜

𝑂 suffisant en général

1.3 Classes de complexité

Notations

Notation ~ : 𝑓 𝑥 ~𝑔 𝑥 si lim𝑥→∞

𝑓 𝑥

𝑔 𝑥= 1

𝑓 et 𝑔 sont globalement similaires

Exemples

17𝑥2 + 3𝑥 − 4~17𝑥2

on se concentre sur le terme dominant

ne fonctionne pas pour les fonctions trigonométriques (Taylor !)

Autres notations

Notation Θ

Notation Ω

1.3 Classes de complexité

On va rester sur 𝑂

On va chercher la fonction 𝑔 la plus ”approchante”

∃𝑘|∀𝑥 > 𝑥0, 𝑓 𝑥 < 𝑘𝑔 𝑥 et lim𝑥→∞

𝑓 𝑥

𝑔 𝑥= 𝑘

on se concentre sur le terme dominant dans 𝑓

on essaie de l'approcher au mieux

Exemples

17𝑥2 + 3𝑥 − 4 = 𝑂 𝑥2

sin 𝑥 = 𝑜 1

1.3 Classes de complexité

Principales classes de complexité

𝑂 1 constante

𝑂 log 𝑛 superlinéaire (logarithmique, etc.)

𝑂 𝑛 linéaire

𝑂 𝑛 log 𝑛 n-log-n

𝑂 𝑛2 quadratique

𝑂 𝑛3 cubique

𝑂 2𝑛 exponentielle

𝑂 𝑛! factorielle

1.3 Classes de complexité

Évolution de la quantité de calculs

𝒏 log 𝑛 𝒏 𝒏 log𝒏 𝒏𝟐 𝒏𝟑 𝟐𝒏 𝒏!

10 3,3 10 3,3 × 10 102 103 103 3,6 × 106

102 6,6 102 6,6 × 102 104 106 1,3 × 1030 9,3 × 1057

103 10 103 1,0 × 104 106 109

104 13 104 1,3 × 105 108 1012

105 17 105 1,7 × 106 1010 1015

106 20 106 2,0 × 107 1012 1018

1.3 Classes de complexité

Évolution du temps de calcul

Une instance de taille 𝑛

Un ordinateur d’une puissance de 109 flops (gigaflop)

𝒏 102 103 106

𝑶 𝒏 < 1 s < 1 s < 1 s

𝑶 𝒏𝟑 < 1 s 1 s 32 ans

𝑶 𝒏𝟓 10 s 11 jours 3 × 1013 ans

𝑶 2𝒏 3 × 1014 ans 10281 siècles 103×105 siècles

1.3 Classes de complexité

Remarques

Pour des problèmes de petite taille, les termes constants ne

doivent pas être négligés

Exemple

0,00001𝑛3 vs. 𝑛2

On compare souvent sur l'asymptotique...

Conséquence

Rechercher l'algorithme offrant la meilleure complexité

Techniques pour réduire la complexité

1.4 Calcul de complexité

Calcul de la complexité

Évaluer le nombre d'opérations élémentaires

Considérer chaque étape de l'algorithme

Faire la somme des appels

Déduire l'ordre de grandeur

Nécessite de connaître quelques formules

Sommations

Récurrences

Limites

1.4 Calcul de complexité

Rappels sur les séries

1.4 Calcul de complexité

Rappels sur les relations de récurrence

1.4 Calcul de complexité

Rappels sur les limites

1.4 Calcul de complexité

Exercices

Addition, multiplication matricielle

Recherche linéaire, dichotomique, interpolation

Tri insertion, sélection, rapide, histogramme

2. Conception d’algorithmes

3. Problèmes NP-complets

Complexité d'un problème

Souvent plusieurs algorithmes possibles

Complexité du meilleur algorithme associé

Exemples

Recherche dans un tableau de taille 𝑛

𝑂 𝑛 s’il n’est pas trié

𝑂 log𝑛 s’il est trié

Tri dans un tableau de taille 𝑛

𝑂 𝑛 log 𝑛

Résolution de systèmes linéaires de taille 𝑛 × n

𝑂 𝑛2

3. Problèmes NP-complets

Complexité d'un problème

Permet de connaître la classe d'un problème

Prouver qu'on ne peut faire mieux est complexe

Beaucoup de problèmes ouverts

Multiplication matricielle

Test de primalité

Problèmes combinatoires...

3. Problèmes NP-complets

Au final, 2 catégories de problèmes

Les problèmes ”faciles”

faible complexité : 𝑂 1 → 𝑂 𝑛𝑘

existence d'algorithmes efficaces (pour 𝑘 petit !)

Les problèmes ”difficiles”

forte complexité : 𝑂 2𝑛 , 𝑂 𝑛!

absence d'algorithmes efficaces

contiennent souvent une structure combinatoire

3. Problèmes NP-complets

Problèmes de décision

Leur réponse est oui / non

Utilisés pour la définition des classes P et NP

Exemples

PREMIER(a) : le nombre a est-il un premier ?

CONNEXE(G) : G est-il connexe ?

PCC(G,p) : le chemin p est-il le plus court ?

Problèmes d'optimisation traités ”par la bande”

3. Problèmes NP-complets

Classe P (polynômial)

Problèmes de décision qui peuvent être résolus par un

algorithme fortement polynômial

Fortement polynômial

indépendant de la grandeur des données

Exemples

CONNEXE(G) : algo de parcours BFS

CHEMIN(G,o,d) : algo de parcours BFS

PREMIER(a) : algo de Aggarwal et al.

3. Problèmes NP-complets

Classe NP (polynômial non-déterministe)

Problèmes de décision qui peuvent être résolus par un

algorithme non-déterministe fortement polynômial

Définition plus compliquée que pour P

À chaque étape, l'algorithme a plusieurs choix

Réponse ”oui” : il existe une séquence de branchements tels

que l'algorithme trouve

Réponse ”non” : quelque soit la séquence de branchements,

l'algorithme ne trouve pas

3. Problèmes NP-complets

Classe NP

Exemples

HAMILTONIEN(G,o,d) : existe-t-il un chemin hamiltonien de o à d

dans G ?

COLORATION(G,k) : G peut-il être colorié avec k couleurs ?

SAT(f,x) : existe-t-il un vecteur x satisfaisant f ?

De petites modifications peuvent changer la classe

3-SAT est de classe NP, 2-SAT est de classe P

HAMILTONIEN(G,o,d) est de classe NP, EULERIEN(G,o,d) est de

classe P

3. Problèmes NP-complets

Relation P ↔ NP

Trivialement P dans NP

”qui peut le plus, peut le moins”

Question ouverte : P = NP ?

sans réponse depuis 30 ans

un des 7 problèmes du Millennium Prize

à vous de répondre !

3. Problèmes NP-complets

Classe Indécidable

Problèmes pour lesquels on ne connait pas d'algorithme qui

réponde en un nombre fini d'étapes

Exemple

HALT(P) : le programme P se termine-t-il ?

DIOPHANTE(E) : l'équation diophantienne E a-t-elle une solution ?

3. Problèmes NP-complets

Classe Co-NP

Étant donné un problème, son complémentaire consiste à

échanger les réponses

Exemple

COMPOSE(a) : le nombre a est-il composé ?

PREMIER(a) : le nombre a est-il premier ?

change radicalement la nature de la question (il existe / quelque soit)

Un problème est dans Co-NP si le complémentaire est dans

NP

3. Problèmes NP-complets

Réduction

Deux problèmes A et B

Une transformation f : A → B

un algorithme pour B résoud les instances de A

Si f est polynômiale

réduction polynômiale

si B est dans P alors A est dans P

Classe NP-difficile

Si tout problème NP peut se réduire polynomialement à A

3. Problèmes NP-complets

Classe NP-complet

Problème NP-difficile qui est dans NP

Intérêt

un algo pour un problème NP-complet peut, de fait, résoudre

tous les problèmes NP

s'il existe un algo polynômial pour un problème NP-complet,

alors P = NP

Théorème de Cook (1971) : SAT est NP-complet

Karp (1972) : 21 problèmes NP-complets

3. Problèmes NP-complets

Classe NP-complet

Karp (1972) : 21 problèmes NP-complets

Garey & Johnson (1979) : livre-référence

3. Problèmes NP-complets

SAT(f)

Une formule booléenne est une expression (à base de AND,

OR, NOT et ()) de variables booléennes

Forme Normale Conjonctive

conjonction de clauses (disjonctions de litéraux)

ex :

𝑓 𝑎, 𝑏, 𝑐, 𝑑, 𝑒 = ¬𝑎 ∨ 𝑏 ∨ 𝑐 ∨ ¬𝑑 ∧ ¬𝑏 ∨ 𝑒 ∧ ¬𝑐 ∨ 𝑑 ∨ ¬𝑒

Existe-t-il un vecteur satisfaisant la formule ?

ex : 𝐹 𝐹 𝐹 𝑉 𝑉

Problème fondamental de la classe NP-complet

Applications pratiques (logique, électronique...)

3. Problèmes NP-complets

3-SAT(f)

Idem à SAT avec des clauses d'au plus 3 litéraux

Exemple :

𝑓 𝑎, 𝑏, 𝑐 = ¬𝑎 ∨ 𝑏 ∨ 𝑐 ∧ ¬𝑏 ∨ 𝑐 ∧ 𝑎 ∨ 𝑏 ∨ ¬𝑐

Existe-t-il un vecteur satisfaisant la formule ?

Exemple : 𝐹 𝐹 𝐹

Par contre 2-SAT est dans la classe P

3. Problèmes NP-complets

CLIQUE(G,k)

On considère un graphe non orienté G=(V,E)

Sous-graphe complet

Existe-t-il une clique de cardinalité 𝑘 ?

Par la suite, trouver une clique de cardinalité maximum

3. Problèmes NP-complets

STABLE(G,k)

On considère un graphe non orienté G=(V,E)

Ensemble de sommets 2 à 2 non adjacents

Existe-t-il un stable de cardinalité 𝑘 ?

Aussi, trouver un stable de cardinalité maximum

Le stable et la clique sont complémentaires

3. Problèmes NP-complets

COLORATION(G,k)

On considère un graphe non orienté G=(V,E)

Affecter une couleur à chaque sommet

deux sommets adjacents ont une couleur ≠

Existe-t-il une coloration avec 𝑘 couleurs ?

Aussi, trouver le nombre minimal de couleurs

Note : 4 couleurs suffisent pour un graphe planaire

3. Problèmes NP-complets

PLNE 0-1

On considère un PL avec des variables de décision

𝑥𝑖 = 0 → on ne prend pas la décision 𝑖

𝑥𝑖 = 1 → on prend la décision 𝑖

Le système admet-il une solution ?

Par la suite, trouver une solution optimale

PL est P, PLNE 0-1 est NP-complet

3. Problèmes NP-complets

SUBSET-SUM

On a un ensemble de 𝑛 entiers 𝐸 = 𝑒1, … , 𝑒𝑛

On a un entier 𝑆

Existe-t-il une partie de 𝐸 de somme 𝑆 ?

Exemple : 𝐸 = −3,−1,2,6

pour 𝑆 = 0, pas de solution

pour 𝑆 = 1, 𝐸′ = −1,2

pour 𝑆 = 2, 𝐸′ = 2 ou 𝐸′ = −3,−1,6

3. Problèmes NP-complets

SAC-A-DOS(c,p,P)

On considère 𝑛 objets d'intérêt 𝑐𝑖 et de poids 𝑝𝑖 On a une limite de poids total 𝑃

Existe-t-il une combinaison d'objets de poids 𝑃 ?

Aussi, trouver un ensemble viable d'intérêt max

Exemple : 𝑂 = 1,2 8,10 7,3 4,1

𝑃 = 12, 𝑂′ = 1,2 7,3 4,1 , intérêt = 12, poids = 6

3. Problèmes NP-complets

Liens entre SUBSET-SUM et SAC-A-DOS

SAC-A-DOS peut résoudre SUBSET-SUM

On garde la contrainte de capacité

L'intérêt d'un entier est sa valeur

Si la solution de SAC-A-DOS sature la contrainte alors c'est une

solution de SUBSET-SUM

Sinon SUBSET-SUM n'a pas de solution

SUBSET-SUM est un problème d'existence

SAC-A-DOS est un problème d'optimisation

3.1 Méthodes exactes

Méthodes d'énumération

Forte complexité

Limitées à certains problèmes et à certaines tailles

Programmation Linéaire en Nombres Entiers

Reprend le formalisme de la PL

Considère des variables entières, modélisant

des quantités entières

des décisions

3.1 Méthodes exactes

Variables de décision 𝑥𝑖 ∈ 0,1

Ne peuvent prendre que deux valeurs : 0 ou 1

𝑥𝑖 = 1 on prend la décision 𝑖

𝑥𝑖 = 0 on ne prend pas la décision 𝑖

Modélise ”simplement” des situations booléennes

Toute variable entière peut s'exprimer en décision

𝑥 ∈ ℕ → 𝑥 = 2𝑖𝑦𝑖𝑖=1…𝑘 avec 𝑦𝑖 ∈ 0,1

3.1 Méthodes exactes

Résolution d'un PLNE

Branch & Bound (séparation / évaluation)

On relâche les contraintes d'intégrité du problème

On résoud le problème relâché

Si la solution est fractionnaire

il existe au moins une variable fractionnaire

on effectue un branchement dessus

stratégie récursive

3.1 Méthodes exactes

Stratégies évoluées

Branch & Cut (génération de coupes)

Branch & Price (génération de colonnes)

Relaxation lagrangienne

Méthodes de décomposition

Dantzig-Wolfe

Benders

décomposition lagrangienne, ...

Programmation dynamique, ...

3.2 Méthodes approchées

Lorsque les problèmes sont de classe NP

Temps de calcul explose sur les grosses instances

Se tourner vers des méthodes approchées

on ne garantit plus l'optimalité de la solution

on réduit fortement les temps de calcul

compromis entre le temps et la qualité

3 grandes catégories

heuristiques

métaheuristiques

algorithmes d'approximation

3.2 Méthodes approchées

Heuristiques

Principe général

les bonnes solutions ont certaines propriétés

contruire des solutions favorisant ces propriétés

La contruction doit rester polynômiale

souvent un algorithme glouton

à chaque itération de l'algorithme, on ne remet pas en cause les

choix précédents

3.2 Méthodes approchées

Algorithmes gloutons

Algorithme itératif, choix irréversibles

le choix fixe une (des) variable(s) du problème

on réitère sur le reste du problème

équivaut à une descente dans l'arbre des choix

ne garantit pas l'optimalité (ni même la réalisabilité)

sauf si le choix est optimal

Si le choix à chaque itération est optimal

Alors c’est une méthode exacte (et itérative)

Exemples

recherche séquentielle/dichotomique, tri sélection

algorithmes de Prim, Kruskal, Dijkstra

3.2 Méthodes approchées

Heuristiques

Deux types d'heuristiques

Contructives

on part de rien

on construit progressivement une solution

on itère jusqu'à la solution complète

d'amélioration

on part d'une solution

à chaque itération on la modifie (un peu)

on itère jusqu'à ne plus pouvoir améliorer

3.2 méthodes heuristiques

Heuristiques de construction

On part de la solution vide

À chaque itération

on a une liste d'éléments possibles à ajouter

on prend le meilleur (critère de sélection)

Jusqu'à obtention d'une solution

Critère de sélection polynômial (linéaire si possible)

Nombre d'itérations polynômial

Complexité polynômiale

3.2 Méthodes approchées

Mise en application : SAC-A-DOS(c,p,P)

on trie les objets selon le ratio 𝑐𝑖 𝑝𝑖 décroissant

dans cet ordre

on prend l'objet si la capacité n'est pas violée

on passe au suivant

équivalent à une descente dans l'arbre des choix possibles

1 niveau par objet

pour chaque noeud, 2 branches (prend ou pas)

1 feuille = solution

3.2 méthodes heuristiques

Mise en application : SAC-A-DOS(c,p,8)

ordre = 2 1 6 4 5 3

itération 1 : on prend 2, capacité résiduelle 7

itération 2 : on prend 1, capacité résiduelle 4

itération 3 : on ne prend pas 6

itération 4 : on ne prend pas 4

itération 5 : on prend 5, capacité résiduelle 2

itération 6 : on ne prend pas 3

Solution = 1,2,5 , intérêt = 12, poids = 6

objet 1 2 3 4 5 6

intérêt 7 4 2 10 1 9

poids 3 1 5 7 2 5

3.2 méthodes heuristiques

Mise en application : SAC-A-DOS(c,p,8)

ordre = 2 1 6 4 5 3

solution obtenue = 1 2 5 , intérêt = 12, poids = 6

solution optimale = 1 6 , intérêt = 16, poids = 8

objet 1 2 3 4 5 6

intérêt 7 4 2 10 1 9

poids 3 1 5 7 2 5

3.2 méthodes heuristiques

Mise en application : MAX_STABLE(G)

À chaque itération

on prend le sommet libre le moins connecté

on le supprime ainsi que ses voisins

Exemple

2

3

4

8

9

7 10 5

6

1

3.2 méthodes heuristiques

Mise en application : MAX_STABLE(G)

Exemple

itération 1 : sommet 1

itération 2 : sommet 10

itération 3 : sommet 7

itération 4 : sommet 6

itération 5 : sommet 4

2

3

4

8

9

7 10 5

6

1

2

3

4

8

9

7 10 5

6

1

3.2 méthodes heuristiques

Mise en application : MIN_COLORATION(G)

À chaque itération

on cherche un stable max sur les sommets non colorés

on lui affecte une nouvelle couleur

réutilisation de l'heuristique précédente

Exemple

2

3

4

8

9

7 10 5

6

1

3.2 méthodes heuristiques

Mise en application : MIN_COLORATION(G)

Exemple

itération 1 : stable {1, 4, 6, 7, 10}

itération 2 : stable {2, 9, 5}

itération 3 : stable {3, 8}

2

3

4

8

9

7 10 5

6

1

2

3

4

8

9

7 10 5

6

1

3.2 méthodes heuristiques

Heuristiques d'amélioration : principe

On part d'une solution réalisable

À chaque itération

on a une liste de modifications améliorantes

on en applique une (critère de sélection)

Jusqu'à ne plus pouvoir améliorer

Critère de sélection polynômial (linéaire si possible)

Nombre d'itérations pseudo-polynômial (valeur)

Complexité souvent pseudo-polynômiale

3.2 méthodes heuristiques

Heuristiques d'amélioration : voisinage

Repose sur la notion de mouvement

Notion fondamentale pour les recherches locales

𝑆 : espace des solutions

solution courante 𝑠0 ∈ 𝑆

un type de modification 𝑡

voisinage 𝑉𝑡 𝑠𝑜 : ensemble des solutions obtenues en appliquant 𝑡 sur 𝑠0 de toutes les manières possibles

3.2 méthodes heuristiques

Exemples de voisinage

Stable

supprimer/ajouter/échanger des sommets

Coloration

changer la couleur d'un sommet (stable)

Sac-à-dos

supprimer/ajouter/échanger des objets

3.2 méthodes heuristiques

Heuristiques d'amélioration : voisinage

Gestion du voisinage

Exploration

complète : on visite tous les voisins

partielle : on ne visite qu'une partie du voisinage

premier réalisable

𝑘 voisins

Sélection

Meilleur voisin

premier voisin améliorant

un voisin au hasard

3.2 méthodes heuristiques

Heuristiques d'amélioration : distance

Soit 𝑡 un type de modification

Distance 𝑑𝑡 𝑠1, 𝑠2 entre deux solutions 𝑠1 et 𝑠2

nombre minimal de mouvements de type 𝑡 pour aller de 𝑠1 à 𝑠2

conditions pour définir une métrique

non-négative : 𝑑𝑡 𝑠1, 𝑠2 ≥ 0

élément nul : 𝑑𝑡 𝑠1, 𝑠2 = 0 ⇔ 𝑠1 = 𝑠2

symétrie : 𝑑𝑡 𝑠1, 𝑠2 = 𝑑𝑡 𝑠2, 𝑠1

inégalité triangulaire : 𝑑𝑡 𝑠1, 𝑠2 ≤ 𝑑𝑡 𝑠1, 𝑠3 + 𝑑𝑡 𝑠3, 𝑠2

3.2 méthodes heuristiques

Heuristiques d'amélioration : optimum

Soit 𝑡 un type de modification

𝑠0 est un optimum local si

𝑓 𝑠0 ≤ 𝑓 𝑠 , ∀𝑠 ∈ 𝑉𝑡 𝑠0

𝑠0 est un optimum global si

𝑓 𝑠0 ≤ 𝑓 𝑠 , ∀𝑠 ∈ 𝑆

𝑓 𝑠0 ≤ 𝑓 𝑠 , ∀𝑡 ∀𝑠 ∈ 𝑉𝑡 𝑠0

les deux critères sont aussi compliqués à vérifier

3.2 méthodes heuristiques

Heuristiques d'amélioration: SAC-A-DOS(c,p,P)

Voisinage 1

ajout d'un objet

fonctionne sur des solutions quelconques

mais pas sur les solutions de l'heuristique vue précédemment

(pourquoi ?)

complexité = 𝑂 𝑛

Voisinage 2

suppression d'un objet + ajout d'un autre

complexité = 𝑂 𝑛2

3.2 méthodes heuristiques

Heuristiques d'amélioration : MAX_STABLE(G)

Voisinage 1

ajout d'un sommet

fonctionne sur des solutions quelconques

mais pas sur les solutions de l'heuristique vue précédemment

(pourquoi ?)

complexité = 𝑂 𝑛

Voisinage 2

suppression d'un sommet + ajout d'un autre

complexité = 𝑂 𝑛2

3.2 méthodes heuristiques

Heuristiques d'amélioration : MIN_COLORATION(G)

Voisinage 1

changement de la couleur d'un sommet

complexité = 𝑂 𝑘𝑛2

Voisinage 2

extraire 𝑘 sommets

les réinsérer en les coloriant

Voisinage 3

extraire 𝑘 sommets indépendants

créer une nouvelle couleur pour eux

3.2 méthodes heuristiques

Recherche Locale

Regroupe plusieurs stratégies pour l'amélioration

méthode de descente (hill climbing)

une structure de voisinage (type de modification)

appliquée sur la solution courante tant qu'on peut

méthode à voisinages variables (VND)

𝐾 structures de voisinage, triées (complexité)

on commence par la plus simple (𝑘 ← 1)

si on améliore, on valide et on réinitialise (𝑘 ← 1)

sinon, on passe à la suivante (𝑘 ← 𝑘 + 1)

on stoppe lorsque 𝑘 = 𝐾

N1

N2

N4

N5

N3

3.2 méthodes heuristiques

Métaheuristiques

Stratégies d'exploration de l'espace des solutions

Pallier les limites des recherches locales

blocage sur le premier optimum local

vision myope de l'espace des solutions

Deux grandes catégories

évolution de population : algorithme génétique, colonies de

fourmis, scatter search...

monosolution : recuit simulé, recherche tabou, GRASP, VNS...

Hybridations : combinaisons de métaheuristiques

3.2 méthodes heuristiques

Recuit simulé

Années 80 : Kirkpatrick, Gelatt & Vecci

Analogie avec la sidérurgie

gérer le refroidissement d'un alliage

si trop rapide → cristallisation

si apparition de cristaux → réchauffe

un paramètre : la température 𝑇

température initiale 𝑇0, paliers : 𝑇 ← 𝛼𝑇 toutes les 𝜏 itérations

choix d'un mouvement au hasard 𝑠 ∈ 𝑉 𝑠𝑜

si Δ = 𝑓 𝑠 − 𝑓 𝑠0 ≥ 0, proba d'accepter 𝑒−Δ 𝑇

3.2 méthodes heuristiques

Recherche Tabou

Années 80 : Glover, Hansen

Autoriser les voisins non améliorants

Mais risque de cyclage (revenir sur des solutions déjà visitées)

Introduction d'une liste tabou

stocke les 𝜏 dernières solutions visitées

on s’interdit de revenir dessus

mise à jour à chaque itération

Extensions : aspiration, intensification/diversification

3.2 méthodes heuristiques

GRASP

Années 90 : Feo & Resende

Rafinement de la technique du multistart

Multistart

on génère aléatoirement une solution (construction)

puis on l'améliore (recherche locale)

on fait ça 𝑘 fois

on garde la meilleure solution

GRASP

la génération est randomisée (glouton+aléatoire)

Extensions : path relinking, hybridations

3.2 méthodes heuristiques

VNS

Années 90 : Hansen & Mladenovic

Utilisation de plusieurs voisinages

Raisonnement géométrique

𝑘 structures de voisinages, triées (complexité)

on commence par la plus simple (𝑘 ← 1)

on prend un voisin dans le voisinage

on lui applique une recherche locale

si on améliore, on valide et 𝑘 ← 1

sinon, 𝑘 ← 𝑘 + 1 (stoppe lorsque 𝑘 = 𝐾)

Utilisation conjointe de VNS et VND

3.2 méthodes heuristiques

Algorithme génétique

Années 70 : Holland

Analogie avec la sélection naturelle

une population d'individus

un individu = un chromosome

encodage d'une solution (évaluation = fitness)

création de nouveaux individus

croisement, mutation

sélection de la nouvelle population

Clés : gestion de la diversité, hybridation (algorithmes

mémétiques)

3.2 méthodes heuristiques

Colonies de fourmis

Années 2000 : Dorigo

Analogie avec les fourmis

recherche coopérative de la nourriture

chaque fourmi construit une solution

utilise information locale (gloutonne)

utilise information globale (phéromone)

phéromone = support de communication

mise à jour de la phéromone en fonction des résultats

biais vers les bons éléments

4. Problèmes d'ordonnancement

Partie de Philippe Lacomme !

5. Problèmes de transport

Transport de biens / personnes

Composante essentielle de la société moderne

Charbon puis pétrole : essor du transport moderne

plus rapide : réduction des délais de transport

plus loin : accès à de nouveaux marchés, délocalisation

plus sûr : maîtrise des aléas

davantage : augmentation des quantités transportées

Massification des transports

5. Problèmes de transport

Environnement fortement concurrentiel

Mécanisme de bourse au transport

Répondre aux offres de transport

Offrir les meilleures prestations de transport

délais, coûts

Savoir rapidement si une offre est intéressante

augmentation du bénéfice

respect de la nouvelle demande

respect des demandes existantes

5. Problèmes de transport

Trois entités en jeu

Client : quantité, origine, destination, dates...

Véhicule : capacité, vitesse...

Réseau : urbain / routier, distances

Dimensions

Nombre de demandes, de véhicules

Prétraitement

Calcul du chemin entre chaque point

Réduction au sous-graphe des points

5. Problèmes de transport

Exemples de problématiques

Organiser des tournées de transport (ex : la Poste)

collecte, livraison, collecte + livraison

gestion de la flotte de véhicules

satisfaire tous les clients

Organiser des lignes régulières (ex : bus, train)

point d'arrêt, fréquence

gestion de la flotte de véhicules

satisfaire le plus de clients possible

5. Problèmes de transport

Problèmes de transport en Aide à la Décision

Des problèmes simples

Plus court chemin

Problème de transport

Flot maximal, flot de coût minimal

Aux problèmes difficiles

Voyageur de commerce

Tournées de véhicules

Transport à la demande

5. Problèmes de transport

Problème de Plus Court Chemin (PCC)

soit un graphe 𝐺 = 𝑆, 𝐴 muni de coût sur les arcs, trouver

le plus court chemin d'un sommet origine 𝑜 à un sommet

destination 𝑑

coût positifs : Dijsktra, Bellman

coût négatifs (sans cycle) : Bellman

problème polynômial

sous-problème de nombreux problèmes de transport

5. Problèmes de transport

PCC : Dijsktra

2 ensembles de sommets

𝑆1 : sommets validés

𝑆2 : sommets non traités

labels de distance : 𝜋

1. // initialisation

2. 𝑆1 ← ∅

3. 𝑆2 ← 𝑆

4. 𝜋𝑠 ← 0

5. 𝜋𝑖 ← ∞,∀𝑖 ≠ 𝑠

6.

7. // boucle d’expansion

8. tant que 𝑺𝟐 ≠ ∅

9. 𝑖 ← 𝑎𝑟𝑔𝑚𝑖𝑛𝑗∈𝑆2 𝜋𝑗

10. 𝑆1 ← 𝑆1 ∪ 𝑖

11. 𝑆2 ← 𝑆2 ∖ 𝑖

12. ∀ 𝑖, 𝑗 ∈ 𝐴

13. si 𝜋𝑗 > 𝜋𝑖 + 𝑐𝑖𝑗 alors

14. 𝜋𝑗 ← 𝜋𝑖 + 𝑐𝑖𝑗

on peut ajouter une structure pour stocker le sommet qui connecte chaque sommet dans l’arbre des PCC

5. Problèmes de transport

PCC : Bellman

𝐿 liste des sommets modifiés

propage le label aux voisins

labels de distance : 𝜋

on peut ajouter une structure pour stocker le sommet qui connecte chaque sommet dans l’arbre des PCC

1. // initialisation

2. 𝜋𝑠 ← 0

3. 𝜋𝑖 ← ∞,∀𝑖 ≠ 𝑠

4. 𝐿 ← 𝑠

5.

6. // boucle de correction

7. tant que 𝑳 ≠ ∅

8. Choisir 𝑖 ∈ 𝐿

9. ∀ 𝑖, 𝑗 ∈ 𝐴

10. si 𝜋𝑗 > 𝜋𝑖 + 𝑐𝑖𝑗 alors

11. 𝜋𝑗 ← 𝜋𝑖 + 𝑐𝑖𝑗

12. si 𝒋 ∉ 𝑳 alors

13. 𝐿 ← 𝐿 ∪ 𝑗

5. Problèmes de transport

Présence de cycle négatif : pas d'optimalité

rechercher un PCC élémentaire

NP-difficile

Méthodes exactes

Programme linéaires en nombres entiers

Programmation dynamique

5. Problèmes de transport

Problème de Transport

soit un graphe biparti 𝐺 = 𝑆1, 𝑆2, 𝐴 muni de quantités sur

les sommets et de coûts unitaires sur les arcs, trouver le flot

de coût minimal permettant de router les entités de 𝑆1 (producteurs) vers 𝑆2 (consommateurs)

stocks = demandes, sinon on ajoute un élément fictif (p/c)

problème polynomial

solutions initiales : coin nord-ouest, Balas-Hammer

optimisation : stepping stone ou programmation linéaire

5. Problèmes de transport

Problème de Flot Maximal

soit un graphe 𝐺 = 𝑆, 𝐴 muni de capacités sur les arcs,

trouver le flot maximal d'un sommet origine 𝑜 à un sommet

destination 𝑑

problème polynomial

algorithme de Ford-Fulkerson

algorithme de push-relabel

5. Problèmes de transport

Problème de Flot de Coût Minimal

soit un graphe 𝐺 = 𝑆, 𝐴 muni de capacités et de coûts

unitaires sur les arcs, trouver le flot de coût minimal routant

𝑞 unités d'un sommet origine 𝑜 à un sommet destination 𝑑

problème polynomial

algorithme de suppression de cycle négatif

algorithme de plus courts chemins successifs

5. Problèmes de transport

Problème du Voyageur de Commerce (TSP)

soit un graphe 𝐺 = 𝑆, 𝐴 muni de coûts sur les arcs, trouver

un cycle hamiltonien de coût minimal

problème NP-complet

méthodes exactes

programmation linéaire en nombres entiers, coupes

méthodes approchées

heuristiques, métaheuristiques

Un des problèmes phares de la RO

Presque toutes les méthodes exactes et approchées ont été

testées dessus

Permet donc de connaître le potentiel d'une nouvelle

méthodes

Intérêt multiple

industriel : au coeur de presque toutes les problèmatiques de

transport

académique : un des problèmes complexes les plus simples

ludique : simple à comprendre / visualiser

5. Problèmes de transport

Exemple

Concours dans les années 50 : trouver le plus court cycle

passant par la capitale des 48 états + Washington (hors Alaska

et Hawai)

Solution fournie en 1954 par Dantzig, Fulkerson et Johnson

Modèle linéaire, relaxation, coupes, branch&bound

5. Problèmes de transport

Présence de nombreuses variantes

sur les distances

euclidiennes ou non

normes 𝐿1, 𝐿2, 𝐿∞

symétrique, asymétrique

complet ou non

sur les contraintes

interdiction de certains virages

précédence entre certains noeuds

5. Problèmes de transport

5. Problèmes de transport

Problème de Tournées de Véhicules (VRP)

Soit un graphe 𝐺 = 𝑆, 𝐴 muni de coûts sur les arcs, où le

sommet 0 représente le dépôt et les sommets 1. . 𝑛 les clients.

Chaque client possède une demande 𝑞𝑖 > 0 à traiter par une

flotte de véhicules identiques de capacité 𝑄. On souhaite

desservir les clients en minimisant le nombre de véhicules et, de

manière secondaire, le coût.

Problème NP-difficile

Généralisation du TSP

5. Problèmes de transport

De (très) nombreuses variantes

Problème central en logistique

Fenêtres de temps (date d’ouverture / fermeture)

Livraison / collecte

Gestion explicite de l’espace de stockage

Possibilité de livrer un client par plusieurs véhicules

Flotte hétérogène

Multi-dépôts

Livraison sélective

5. Problèmes de transport

Problème de Transport à la Demande (PDP)

Soit un graphe 𝐺 = 𝑆, 𝐴 muni de coûts sur les arcs, où le

sommet 0 représente le dépôt et les sommets 1. . 𝑛 les clients.

Un ensemble 𝑜𝑖 , 𝑑𝑖 , 𝑞𝑖 , 𝑖 = 1…𝑟 de requêtes de transport

doit être traité par une flotte homogène de capacité 𝑄. Chaque

requête est un triplet origine, destination, quantité. On souhaite

traiter les requêtes en minimisant le nombre de véhicules et, de

manière secondaire, le coût.

Problème NP-complet

Généralisation du VRP

5. Problèmes de transport

Globalement, mêmes variantes que pour le VRP

Le VRP modélise un transport organisé par le dépôt

Livraison depuis un dépôt logistique

Collecte (logistique inverse, retraitement)

Le PDP modélise un transport point-à-point

Déménagements

Bourse de transport

5.1 Le VRP

Données

Graphe 𝐺 = 𝑆, 𝐴 , dépôt 0, clients 1…𝑛, demande 𝑞𝑖, coût 𝑐𝑖𝑗 , véhicules de capacité 𝑄

Contraintes

Chaque client doit être desservi, en une seule fois

Chaque véhicule débute et termine sa tournée au dépôt

Sa capacité doit être respectée

Objectifs

Minimiser le nombre de véhicules (primaire)

Minimiser le coût total (secondaire)

5.1 Le VRP

Représentation géographique

Représentation logique

1 2

3

4

5

6

7

9

8

10

11

12

13

0

1 2 3 4

5 6

7 9 8

10

11 12 13

0 0

5.1 Le VRP

Structures de données

Représentation du graphe

Vecteur de sommets

Vecteur d’arcs

Listes d’adjacence

Représentation d’une solution

Vecteur indexé sur les clients (indique le prochain arc)

Vecteur indexé sur les véhicules (indique le premier arc)

Éventuellement

Vecteur indexé sur les véhicules (indique le dernier arc)

Vecteur indexé sur les clients (charge en quittant le sommet)

Vecteur indexé sur les clients (numéro de tournée associée)

5.1 Le VRP

Heuristiques constructives Création de tournées valides (dépôt – {clients} – dépôt)

Respect à chaque itération de la capacité

Choix des arcs de faible coût

Principes généraux Séquentiel / parallèle : toutes les routes sont actives ou non

Clustering : regrouper un sous-ensemble de clients

Routing : ordonner un sous-ensemble de clients

Stratégie « cluster || route »

Stratégie « cluster first – route second »

Stratégie « route first – cluster second »

5.1 Le VRP

Heuristiques « classiques »

Savings (Clarke & Wright 64)

Construire des tournées élémentaires puis les fusionner

Insertion (Solomon 87), « cluster || route »

Ouvrir une nouvelle tournée puis insérer des clients tant que possible

Sweep (Gillett & Miller, 74), « cluster || route »

Balayage radial pour les clients, sinon ≈ insertion

Fisher & Jaikumar (81), « cluster first – route second »

Affectation généralisée pour le clustering, puis un TSP par route

Split (Beasley 83), « route first – cluster second »

TSP puis découpage optimal par algorithme Split

5.1 Le VRP

Heuristique Savings

On crée initialement une tournée par client

À chaque itération

On considère la possibilité de concaténer deux tournées

Pour tout couple de tournées 0,… , 𝑖, 0 et 0, 𝑗, … , 0

Vérifier le respect de la capacité

Vérifier le gain en distance : 𝜇𝑖𝑗 = 𝑐𝑖0 + 𝑐0𝑗 − 𝑐𝑖𝑗 > 0

Choisir une fusion améliorante

Soit la première trouvée

Soit la meilleure trouvée

Astuce

trier les arcs selon le gain décroissant

évaluer les possibilités de fusion dans cet ordre

5.1 Le VRP

Heuristique Savings

Solution initiale Première itération

Seconde itération Troisième itération…

1 2

3

4

5

6

7

9

8

10

11

12

13

0

1 2

3

4

5

6

7

9

8

10

11

12

13

0

1 2

3

4

5

6

7

9

8

10

11

12

13

0

1 2

3

4

5

6

7

9

8

10

11

12

13

0

5.1 Le VRP

Heuristique d’insertion

On crée les tournées une à une

Pour chaque tournée

On commence par la tournée vide

Parmi les clients non traités, on recherche celui dont l’insertion en fin

Respecte la contrainte de capacité

Augmente le moins la distance

S’il existe, on l’insère, sinon on crée une nouvelle tournée

Nombreuses variantes

Considérer un ordre sur les clients

Considérer les insertions en fin ou n’importe où dans la tournée

Considérer les insertions dans la tournée courante ou dans toutes

5.1 Le VRP

Heuristique d’insertion

Solution initiale Première itération

Seconde itération Troisième itération…

1 2

3

4

5

6

7

9

8

10

11

12

13

0

1 2

3

4

5

6

7

9

8

10

11

12

13

0

1 2

3

4

5

6

7

9

8

10

11

12

13

0

1 2

3

4

5

6

7

9

8

10

11

12

13

0

5.1 Le VRP

Structures de voisinage

Mouvement de type 𝑘 − Opt

Défini à la base pour le TSP

Consiste à retirer 𝑘 arcs et à en insérer 𝑘 autres

𝑘-optimalité : il n’existe aucun mouvement 𝑘 − Opt améliorant

Complexité d’évaluer un voisinage 𝑘 − Opt

Nombre de voisins = 𝑂 𝑛𝑘

Évaluer un voisin = 𝑂 1

Complexité finale = 𝑂 𝑛𝑘

En pratique, on se limite à 𝑘 ≤ 4 (et encore, sur des cas particuliers)

5.1 Le VRP

Structures de voisinage

Le mouvement 2-Opt

Remplacer 2 arcs par 2 autres

2 variantes, selon qu’ils appartiennent à la même tournée ou pas

2-Opt interne = renverser une partie de la tournée

Test de capacité inutile

Inutile de considérer 2 arcs successifs

Cas particulier, le swap

Illustration (général et swap)

5.1 Le VRP

Structures de voisinage

Le mouvement 2-Opt

2-Opt externe = échanger deux fins de tournée

Tests de capacité nécessaires

Inutile de considérer simultanément les arcs initiaux ou finaux

Possibilité de supprimer une tournée

Illustration (général et suppression tournée)

5.1 Le VRP

Structures de voisinages

Voisinages de type 3-Opt

Remplacer 3 arcs par 3 autres

Davantage de variantes

3-Opt interne = déplacer un bloc de tournée dans la tournée

Test de capacité inutile

Habituellement, on limite la taille du bloc à déplacer (1, 2, 3 éléments)

Illustrations (général, bloc 1 élément)

5.1 Le VRP

Structures de voisinages

Voisinages de type 3-Opt

3-Opt externe 1 = déplacer un bloc dans une autre tournée

Test de capacité nécessaire pour la tournée de réception

Habituellement, on limite la taille du bloc à déplacer (1, 2, 3 éléments)

Possibilité de supprimer une tournée

Illustrations (général, bloc 1 élément, suppression)

5.1 Le VRP

Structures de voisinages

Voisinages de type 3-Opt

3-Opt externe 2 = échanger la fin de 3 tournées

Tests de capacité nécessaires

Généralisation du 2-Opt externe

Possibilité de supprimer une tournée

Illustrations (général, suppression)

5.1 Le VRPTW

Impact des fenêtres de temps

Chaque sommet 𝑖 ∈ 𝑆 reçoit

Une fenêtre de temps 𝐴𝑖; 𝐵𝑖

Une durée de livraison 𝑡𝑖

→ Plage de disponibilité du client (date d’ouverture et de fermeture)

Interprétation pour le dépôt

Les véhicules ne peuvent quitter le dépôt avant 𝐴0

Ils doivent retourner au dépôt avant 𝐵0

Extensions

Fenêtres de temps multiples

5.1 Le VRPTW

Impact des fenêtres de temps

Principe

Le véhicule ne peut arriver après 𝐵𝑖

S’il arrive dans la fenêtre, il traite le client immédiatement

S’il arrive avant 𝐴𝑖, il attend l’ouverture pour pouvoir traiter le client

Impact

Ajouter un vecteur indexé sur les clients (date d’arrivée)

Tests de respect des fenêtres de temps en 𝑂 𝑘 , voire en 𝑂 1