Académique Documents
Professionnel Documents
Culture Documents
Optimisation
Master 1 — Informatique
Denis Robilliard
2010
Denis Robilliard (Lisic — Univ Littoral-Côte d’opale) Recherche opérationnelle et Optimisation 2010 1 / 100
Sommaire général
Origines
”Recherche Opérationnelle” vient de ”operations research” (Royaume-Uni, 2nd
guerre mondiale).
Où placer les stations radars ? Comment plannifier les vols de
surveillance anti-sous-marins ? ...
Définition
Recherche Opérationnelle : élaboration et amélioration / optimisation de
méthodes de résolution de problèmes complexes.
Définition
On dispose d’un ensemble S de solutions ”candidates” : c’est l’espace de
recherche.
A chaque solution est associé un réel, sa qualité, calculable par une
fonction qualité / objectif / coût / ”fitness”
On cherche la solution de meilleure qualité, appelée optimum global (ou
du moins on veut s’en approcher).
Optimisation multi-critères
Très souvent on veut optimiser plusieurs fonctions/critères de qualité en
même temps : problème multi-critères, multi-objectifs.
Ex : on veut le moteur le plus puissant, mais aussi le plus léger, qui
consomme le moins possible et qui coûte le moins cher à fabriquer...
L’optimisation multi-critères est un sous-domaine spécifique (voir plus
loin).
Problème continu
Optimisation continue : les solutions sont des vecteurs de réels : on parle
de variables réelles, et l’espace de recherche est infini.
Problème discret
L’espace de recherche est fini, discret.
Les problèmes discrets sont généralement combinatoires.
Optimisation combinatoire : une solution est une combinaison d’éléments
pris dans un ensemble discret : on parle de variables discrètes. Ex : un
sous-ensemble des arcs d’un graphe.
Contraintes
On a souvent un ensemble de contraintes sur la valeurs des variables / la
forme des solutions (ex : pas de valeurs négatives en optimisation
continue).
La résolution de contraintes, notamment discrètes (ex : sudoku...) est un
champ spécialisé : (Constraint Solving Problem — CSP).
Note
On pourrait vouloir discrétiser chaque proportion :
I On discrétise en 21 valeurs de 0% à 100% par pas de 5%
I Taille de l’espace de recherche : 2116 = 1, 43e + 21
Définition
Complexité d’un algorithme : relation entre le temps de calcul ou la
mémoire occupée et la taille des données traitées.
On se limite à la complexité en temps de calcul, toujours supérieure à
celle en mémoire.
On exprime la relation par une fonction : temps = fn(taille).
On s’interesse au taux d’accroissement de cette fonction.
Raffinement
Pour une même taille de données, le temps peut varier selon la valeur des
données. Ex : trier un tableau presque rangé ou complètement aléatoire.
⇒ complexité dans le cas moyen, dans le pire des cas, etc.
Classes de complexité
On classe les fonctions en deux familles selon leur taux d’accroissement :
les polynômes et les exponentielles.
une fonction est dite (à croissance) polynômiale s’il existe un polynôme
qui la borne supérieurement : ∀n ∈ N, ∃b ∈ N, c ∈ R tels que f (n) ≤ c .nb
une fonction dans N est dite (à croissance) exponentielle si sa croissance
suit une progression géométrique : f (n) ≈ c .eb.n
les fonctions polynômiales croissent moins vite que les fonctions
exponentielles : il n’existe pas b ∈ N tel que ∀ n ∈ N, nb > en
Note : il existe d’autres classes plus fines de complexité.
Bilan
Nombreux problèmes difficiles => développement d’heuristiques en temps
polynomial pour approcher les solutions optimales.
Classification
Les heuristiques procèdent par transformation ou par construction.
Méthodes par transformation partielle de solution, on parle aussi de
recherche locale. On cherche à améliorer peu à peu une solution
existante et complète.
Méthodes constructives : on construit une solution morceau par morceau,
généralement en se basant sur la qualité des morceaux (donc pas ”boı̂te
noire”).
() Recherche opérationnelle et Optimisation 17 / 100
Voisinage
Dans les méthodes par transformation, une solution peut souvent être
transformée en plusieurs autres possibles :
Définitions
l’ensemble des solutions transformées possibles est le voisinage de la
solution initiale.
La méthode/algorithme de transformation : opérateur de voisinage.
v e c t o r GaussianConvolution ( v e c t o r v , i n t N, f l o a t sigma2 ) {
/ / v : v e c t e u r s o l u t i o n de t a i l l e N
/ / sigma2 : v a r i a n c e de l a d i s t r i b u t i o n Gaussienne / Normale
/ / min , max : borne minimum , maximum
f l o a t tmp ;
f o r ( i n t i = 0 ; i < N ; i ++) {
do {
tmp = GaussianRandom ( 0 , sigma2 ) ;
} while ( ( v [ i ] + tmp ) < min | | ( v [ i ] + tmp ) > max ) ;
v [ i ] = v [ i ] + tmp ;
}
return v ;
}
() Recherche opérationnelle et Optimisation 19 / 100
Voisinage dans les problèmes continus (suite)
Echantillonage gaussien :
La méthode de Box-Mueller permet d’obtenir un bruit gaussien de
moyenne µ et de variance σ2 (algo ci-dessous).
En Java, le package java.util.Random fournit un générateur gaussien
de moyenne 0 et de variance 1, que l’on peut adapter :
Gauss(µ, σ2 ) = µ + σ2 Gauss(0, 1)
Problème uni/multi-modal
Problème uni-modal : il n’y a qu’un optimum local (/ au voisinage), et il est
aussi global.
Problème multi-modal : plusieurs optima locaux (/ au voisinage) ⇒ a priori
plus difficile à traiter.
Interprétation
La ”p-value” est la probabilité que les heuristiques soient semblables (ici,
≈ 1, 6% avec une confiance de 95% par défaut). On peut
raisonnablement rejeter cette hypothèse.
() Recherche opérationnelle et Optimisation 24 / 100
Exemple de calcul avec R : suite
Test h1 < h2
data : h1 and h2
W = 1 , p−v a l u e = 0.996
a l t e r n a t i v e h y p o t h e s i s : t r u e l o c a t i o n s h i f t i s g r e a t e r than 0
Interprétation
Ici, avec une confiance de 95% (par défaut) on sait qu’il y a ≈ 99.6% de
chance que h1 soit inférieure à h2 , ce qu’on peut raisonnablement
accepter.
1 Généralités
4 Problèmes multi-critères
5 TD / TP
s o l u t i o n H i l l C l i m b e r ( s o l u t i o n s0 ) {
solution s , t ;
s = s0 ; / / copier s o l u t i o n courante
do {
t = Voisin ( s ) ; / / o b t e n i r un v o i s i n
if ( f ( t ) < f (s) ) / / un m e i l l e u r v o i s i n
s = t; / / remplacement
} while ( ! s o l u t i o n s a t i s f a i s a n t e && ! temps epuise ) ;
return s ; / / s e s t un optimum l o c a l
}
Principe : ”on suit la plus grande pente vers le bas” (le ”gradient”)
comme le hill-climber de base mais tester plusieurs (tous les) voisins
avant d’accepter.
Voisin() retourne sucessivement toutes les solutions du voisinage si
celui n’est pas trop grand (Ex : heuristique Lin-Kernighan pour le PVC).
s o l u t i o n H i l l C l i m b e r E l i t i s t e ( s o l u t i o n s0 , i n t n ) {
solution s , t , r ;
s = s0 ; / / copier s o l u t i o n courante
I n i t V o i s i n a g e ( s ) ; / / preparer l e 1er v o i s i n
do {
t = P r e m i e r V o i s i n ( s ) ; / / o b t e n i r un v o i s i n
f o r ( i = 0 ; i < n −1; i ++) { / / n = nombre de v o i s i n s
r = VoisinSuivant ( s ) ; / / o b t e n i r un v o i s i n
if ( f ( r ) < f ( t ) ) / / un m e i l l e u r v o i s i n
t = r; / / remplacement
}
i f ( f ( t ) < f ( s ) ) / / le meilleur voisin est meilleur
s = t;
} while ( ! s o l u t i o n s a t i s f a i s a n t e && ! temps epuise ) ;
return s ; / / s e s t un optimum l o c a l
}
Question
A quelle temperature commencer ? Tester l’acceptation de 95% de
solutions aléatoires.
Quelle décroissance de température ?
I Créer des paliers de température : idéalement on devrait avoir une chance
non nulle de pouvoir atteindre n’importe quelle solution de l’espace
(ergodicité) pendant le palier.
I Faible baisse de température entre paliers : tempt +1 = c · tempt avec
0 < c < 1 proche de 1.
Est que ça marche ? Selon les problèmes... Très bon ou très mauvais
(en temps) par rapport aux autres heuristiques.
Exemple d’application : déplacement du bras de Mars Explorer.
Principe
Recherche Tabou : extension du Hill-climber.
Arrivé sur un optimum local on poursuit la recherche pour sortir du bassin
d’attraction de cet optimum.
Bassin d’attraction d’un optimum local : ensemble des solutions telles
que, en partant d’elles, le hill-climber mène au même optimum local
(rappel : dépendant du voisinage).
On accepte de perdre de la qualité, pour s’éloigner de l’optimum local.
Problème :
I On veut pouvoir accepter une bonne nouvelle solution
I On veut éviter de succomber à l’attraction des relativement bonnes
solutions que l’on laisse derrière nous autour de l’optimum local
s = s0 ;
b e s t = s0 ;
compteur = 0 ;
while ( compteur < BORNE) {
compteur = compteur + 1 ;
/ / o b t e n i r m e i l l e u r v o i s i n non taboue ( ou a s p i r e )
t = meilleur voisin (s , T) ;
old = s ;
s = t;
if ( f ( i ) < f ( best ) ) {
best = i ;
compteur = 0 ; / / i n i t temps recherche
}
m e t t r e a j o u r (& old , &s , &T ) ;
}
return best ;
}
() Recherche opérationnelle et Optimisation 42 / 100
Random restart
Idée
Chacune des heuristiques explore une (infime) partie de l’espace de
recherche.
Toutes sont génées par les optima locaux de la partie de l’espace
explorée.
⇒ relancer l’algo avec une autre solution initiale, générée
stochastiquement ou avec un schéma systématique de diversification.
4 Problèmes multi-critères
() Recherche opérationnelle et Optimisation 44 / 100
Méthodes à base de population
Méthodes évolutionnaires
Plusieurs méthodes à base de population de solutions s’inspirent de
l’évolution Darwinienne.
Idée : l’évolution a su assembler des molécules pour créer des être
vivants sophistiqués
⇒ modéliser l’évolution de solutions à un problème donné.
Pinsons de Darwin
Table d’équivalence
individu = solution
population = ensemble d’individus
fitness = qualité
évaluation = calcul du fitness pour tous les individus de la population
génotype / génome / chromosome = encodage d’une solution
phénotype = représentation de la solution afin de calculer sa qualité (peut
être semblable ou pas à son génome)
géne = position dans le génome
allèle = valeur d’un gène
Modèles naturels
La nature offre deux modèles de reproduction :
I Reproduction asexuée ou clônage, plutôt organismes simples
(unicellulaires, moisissures, fraisiers, pucerons, ...) ⇒ variation du génome
par mutation.
I Reproduction sexuée, plutôt organismes complexes ⇒ variation du
génome par mutation et par recombinaison des génomes des parents.
Modélisation informatique
Stratégies évolutionnaires (Schwefel & Rechenberg, 1969) : mutation
seule, généralement implantée comme une transformation dans un
voisinage.
Algorithme génétique (Holland, 1974) : mutation et recombinaison.
Caractéristiques
Coûteuses en temps de calcul : on manipule des populations parfois de
l’ordre du million d’individus.
⇒ à réserver aux problèmes difficiles.
Généralement stochastiques ⇒ maintenir la variété des individus.
Très paramétrées : taille de la population, nombre de génération,
opérateurs de variations, ...
Assez robustes au paramétrage.
Efficaces si on sait introduire de la connaissance sur le problème,
notamment dans les opérateurs de variations, et dans l’évaluation (gain
de temps).
parents ;
Utilisées plutôt sur les problèmes continus.
Heuristique du 1/5ème
Une règle heuristique pour adapter la variance du bruit Gaussien sur les
problèmes continus : augmenter la variance si plus de 1/5ème des enfants
sont de fitness meilleurs que les parents, la diminuer si c’est moins de
1/5ème , laisser identique sinon.
() Recherche opérationnelle et Optimisation 55 / 100
Stratégies évolutionnaires (µ, λ)
s o l u t i o n E v o l S t r a t ( i n t mu, i n t lambda ) {
s o l u t i o n b e s t = NULL ;
int child ;
P o p u l a t i o n P , Q;
i n i t ( P , lambda ) ; / / c r e e r l a pop i n i t i a l e de t a i l l e lambda
i n i t (Q, mu) ; / / t e m p o r a i r e pour r e p r o d u c t e u r s
while ( 1 ) {
f o r ( i n t i = 0 ; i < lambda ; i ++) / / e v a l pop
Evaluer (P[ i ] ) ;
t r i e r ( P ) ; / / par c o u t c r o i s s a n t
i f ( b e s t == NULL | | f i t n e s s ( P [ 0 ] ) < f i t n e s s ( b e s t ) )
best = P [ 0 ] ;
i f ( s o l u t i o n s a t i s f a i s a n t e ( b e s t ) | | temps epuise )
return best ;
c o p i e r (Q, P , mu) ; / / Q [ 0 . . mu−1] <− P [ 0 . . mu− 1];
child = 0;
f o r ( i n t i =0; i < mu; i ++) / / l e s mu m e i l l e u r s
f o r ( i n t j = 0 ; j < lambda /mu; j ++)
P [ c h i l d ++] = Muter ( Copie (Q[ i ] ) ) ; / / nouvel e n f a n t
}
}
() Recherche opérationnelle et Optimisation 56 / 100
Stratégies évolutionnaires (µ + λ)
s o l u t i o n E v o l S t r a t ( i n t mu, i n t lambda ) {
s o l u t i o n b e s t = NULL ;
int child ;
Population P;
i n i t ( P , mu+lambda ) ; / / pop i n i t , t a i l l e mu+lambda
while ( 1 ) {
f o r ( i n t i = 0 ; i < mu+lambda ; i ++) / / e v a l pop
Evaluer (P[ i ] ) ;
t r i e r ( P ) ; / / par c o u t c r o i s s a n t
i f ( b e s t == NULL | | f i t n e s s ( P [ 0 ] ) < f i t n e s s ( b e s t ) )
best = P [ 0 ] ;
i f ( s o l u t i o n s a t i s f a i s a n t e ( b e s t ) | | temps epuise )
return best ;
c h i l d = mu;
f o r ( i n t i =0; i < mu; i ++) / / l e s mu m e i l l e u r s
f o r ( i n t j = 0 ; j < lambda /mu; j ++)
P [ c h i l d ++] = Muter ( Copie ( P [ i ] ) ) ; / / nouvel e n f a n t
}
}
Cas binaire
Les solutions sont des vecteurs de bits.
Les opérateurs de transformations standards sont :
I La mutation ”bit-flip” qui inverse certains bits selon une probabilité donnée.
I Le crossover 1-point qui coupe 2 vecteurs parents au même endroit et
échange deux moitiés pour créer les enfants.
s o l u t i o n TournamentSelection ( P o p u l a t i o n P , i n t t o u r n a m e n t s i z e ) {
s o l u t i o n b e s t = P [ rand ( 0 ,N− 1]; / / t i r a g e a l e a d ’ un i n d i v i d u
f o r ( i n t i =2; i <= t o u r n a m e n t s i z e ; i ++) {
s o l u t i o n n e x t = P [ rand ( 0 ,N− 1];
i f ( f i t n e s s ( next ) < f i t n e s s ( best ) ) / / next est m e i l l e u r
best = next ;
}
return best ;
}
Mutation bit-flip
s o l u t i o n B i t −F l i p M u t a t i o n ( s o l u t i o n v , f l o a t p ) {
/ / p : p r o b a b i l i t e d ’ i n v e r s e r un b i t
f o r ( i n t i =0; i < L ; i ++) / / L e s t l a l o n g u e u r de v
i f ( rand ( 0 . 0 , 1 . 0 ) < p )
v [ i ] = ˜ v [ i ] ; / / i n v e r s i o n du ieme b i t
return v ;
}
void One−P o i n t C r o s s o v e r ( s o l u t i o n ∗ pa , s o l u t i o n ∗ pb ,
s o l u t i o n ∗ ca , s o l u t i o n ∗ cb ) {
i n t tmp ;
c o p i e r S o l u t i o n ( ca , pa ) ; c o p i e r S o l u t i o n ( cb , pb ) ;
i n t c = rand ( 0 , L −1) ; / / L = t a i l l e des s o l u t i o n s
f o r ( i n t i = c ; i < L ; i ++) {
tmp = ca [ i ] ; ca [ i ] = cb [ i ] ; cb [ i ] = tmp ;
}
}
Caractéristiques
méthode à base de population mais sans fondements évolutionnaires.
Principe :
I Utiliser des redémarrages d’un algo de recherche locale pour obtenir une
archive d’optima locaux.
I Explorer l’espace en parcourant les solutions situées entre paires d’optima
locaux.
I Optimiser ces solutions intermédiaires dans l’espoir d’obtenir de nouveaux
optima, qui pourront être intégrés à l’archive.
Pré-requis (pour relier les solutions entre elles) :
I opérateur de voisinage ergodique
I mesure de distance entre solutions et/ou calcul de la différence entre
solutions (relativement au voisinage)
s o l u t i o n P a t h R e l i n k i n g ( s o l u t i o n ol1 , s o l u t i o n o l 2 ) {
s o l u t i o n best , courant , tmp , c i b l e ;
Population P;
i f ( f ( ol1 ) < f ( ol2 ) ) {
best = c i b l e = ol1 ; courant = ol2 ;
} else {
best = c i b l e = ol2 ; courant = ol1
};
while ( c o u r a n t ! = c i b l e ) {
t r i e r (P ) ; / / par c o u t c r o i s s a n t
t r i e r D i s t ( P ) ; / / par d i s t a n c e c r o i s s a n t e a c i b l e
c o u r a n t = P [ 0 ] ; / / l e m e i l l e u r des p l u s proches de c i b l e
tmp = OptimLocale ( c o u r a n t ) ; / / recherche l o c a l e
i f ( f ( tmp ) < f ( b e s t ) )
b e s t = tmp ;
}
return best ;
}
Présentation
≈ 2% des insectes ont un comportement social :
fourmis, termites, abeilles.
⇒≈ 1016 insectes sociaux !
50% sont des fourmis.
100 millions d’années d’évolution...
Quelques exemples :
I Les Atta coupent des feuilles d’arbres et
organisent des ”autoroutes” pour aller les
chercher.
I Les Oecophylla construisent des ponts entre
feuilles. fourmis Oecophylla
I Les Eciton organisent des raids de chasse
comprenant jusqu’à 200.000 individus.
Principe
Un comportement ”intelligent” (en fait adapté) au niveau macrosocpique
émerge d’interactions simples au niveau microscopique.
Cela n’exclut pas la possibilité de comportements complexes
indépendants au niveau microscopique.
4 composantes de base :
I Amplification positive : les bons comportements sont renforcés (ex :
recrutement de fourmis).
I Renforcement négatif : les mauvais comportements sont évités (ex :
abandon d’anciennes pistes périmées).
I Fluctuations aléatoires : de nouvelles solutions peuvent être découvertes
(ex : marches aléatoires).
I Interactions multiples : le succès repose sur le grand nombre d’agents (ex :
colonies de 30 à plusieurs millions de fourmis).
Principes
Les agents communiquent :
I directement : contact par les antennes, visuel, sonore ...
I indirectement : en modifiant l’environnement par des dépôts de
phéromones.
La communication indirecte s’appelle stigmergie, et est essentielle à la
coordination des activités des fourmis.
En pratique
On gère une mémoire de phéromones, associé aux éléments du
problème. Ex : choisir le sommet suivant dans un PVC :
⇒ Préférer les arcs avec de forts dépôts de phéromone.
⇒ Ajouter de la phéromone sur les arcs constituant de bons circuits.
⇒ Diminuer régulièrement la phéromone (évaporation) pour ”oublier” les
arcs peu utilisés (mauvais circuits).
C’est une méthode constructive (ajout d’arcs).
() Recherche opérationnelle et Optimisation 69 / 100
Fourmis artificielles pour le PVC
Probabilité de choisir un arc
Un agent fourmi situé sur un noeud du graphe va choisir le prochain
noeud à visiter. La probabilité de choisir l’arc (i,j) dépend :
I de la concentration relative en phéromone τ, par rapport à tous les arcs
issus du sommet i ;
I d’une mesure heuristique η de la qualité de la composante (ex : inverse de
la longueur de l’arc) :
β
ταi ,j ηi ,j
⇒ P [(i , j )] = β où α, β : importance relative de τ et η.
∑k ∈succ(i ) (ταi ,k ηi ,k )
1 Généralités
4 Problèmes multi-critères
Définitions
Front Pareto
Réduction à un objectif
Combinaison linéaire
Approches évolutionnaires
Approches par Pareto-domination
Rang Pareto
Gestion de la diversité
5 TD / TP
Définition
Les solutions de l’espace de recherche non Pareto-dominée forment le
front Pareto.
On parle de solutions Pareto-optimales (et on étend ces concepts aux
solutions effectivement visitées par l’algorithme).
Les solutions Pareto-optimales sont incomparables entre elles ⇒ elles
réalisent des compromis différents / aux objectifs
Le front Pareto n’est pas forcément continu, et il peut être très étendu.
On cherche à échantillonner au mieux les solutions du front Pareto ⇒ on
veut une collection de solutions non Pareto-dominée et pas une seule
solution-compromis.
⇒ les méthodes à base de population sont à privilégier comme
l’algorithme génétique.
Combinaison linéaire
Une méthode ancienne : prendre une combinaison linéaire des objectifs.
Ex : f (s) = 2 ∗ Perf (s) + Duree(s) − 3 ∗ Cout (s)
Problèmes :
I Comment fixer les poids ?
I Les solutions préférées ne sont pas toujours les plus proches du front
Pareto théorique. Exemple avec f (s) = fx (s) + fy (s) :
Approches évolutionnaires
Utiliser une méthode évolutionnaire à base de population, modifier la
sélection.
Pour éviter de déterminer des poids, utiliser la sélection par tournoi :
I Tournoi ”lexicographique” : considérer un ordre sur les objectifs
ex : Cout (s) > Perf (s) > Duree(s))
I Tournoi avec objectif tiré aléatoirement.
I Tournoi avec comparaison majoritaire des fonctions objectives.
Rang Pareto
Assigner le (fitness de) rang 1 aux solutions non dominées.
Assigner le rang 2 à celles dominées uniquement par celles de rang 1.
Assigner le rang 3 aux solutions dominées uniquement par celles de rang
2 et 1, etc...
L’algo se code facilement en ignorant à chaque étape les solutions des
rangs précédents
P o p u l a t i o n ParetoDominantFront ( P o p u l a t i o n G) {
/ / G : groupe de s o l u t i o n dont on v e u t un f r o n t
F = {} / / Le f r o n t , v i d e au d e p a r t
f o r each s o l u t i o n G[ i ] de G {
F = F + {G[ i ] } / / a j o u t e r G[ i ] / / on l e suppose dans l e f r o n t
f o r each s o l u t i o n F [ j ] de F a u t r e que G[ i ] {
i f ( F [ j ] Pareto −domine G[ i ] )
F = F − { G[ i ] } / / l e r e t i r e r
else i f (G[ i ] Pareto −domine F [ j ] )
F = F − { F [ j ] } / / un p r e t e n d a n t a r e t i r e r
}
}
return F
}
Espacement — Sparsity
On souhaite que le front soit échantillonné le mieux possible
⇒ utiliser une mesure d’espacement en plus du rang Pareto.
Ex : sommer les dimensions des côtés de la boı̂te qui contient un point du
front et s’arrète à ses voisins.
P o p u l a t i o n A s s i g n S p a r s i t y ( P o p u l a t i o n R, O b j e c t i v e s O) {
/ / R : P o p u l a t i o n s t r u c t u r e e en rangs Pareto
/ / O = {O[ 1 ] , . . . , O[ n ] } o b j e c t i f s
f o r each rang Pareto F de R {
f o r each s o l u t i o n F [ j ] de F {
F [ j ] . espacement = 0 ;
f o r each o b j e c t i f O[ i ] de O {
t r i e r O b j ( F , O[ i ] ) / / F par v a l e u r d ’ o b j e c t i f i c r o i s s a n t
F [ 0 ] = INFINITY ;
F [ LAST ] = INFINITY ;
f o r ( j = 1 ; j < LAST ; j ++)
F [ j ] . espacement = F [ j ] espacement + O[ i ] ( F [ j − 1]) −
O[ i ] ( F [ j + 1 ] ) ;
}
}
return F ;
}
Algorithme NSGA-II
Lors de la phase de sélection, lorsque 2 individus ont même fitness (rang)
Pareto, on préfère celui qui a le plus grand espacement.
L’algorithme NSGA-II (K. Deb, 2000) utilise l’espacement et intègre en
plus une archive des meilleures solutions trouvées, dans le cadre d’une
stratégie évolutionnaire (µ + λ).
1 Généralités
4 Problèmes multi-critères
5 TD / TP
Exercices
Présentation des TPs
La fonction de Griewank
Les matrices de Erickson
Compte-rendu
Codage de Gray
B o ol V e c t or GrayEncode ( B o o l V e c t o r v ) {
B o o lV e c t or w = v ;
f o r ( i = 1 ; i < w . s i z e ( ) ; i ++)
i f ( v [ i − 1])
w[ i ] = ˜w [ i ] ;
r e t u r n w;
}
Coloration de graphe
On veut colorer un graphe avec le nombre minimum K de couleurs.
Sac à dos
Soit un ensemble O = {O0 , O1 , . . . , On } ;
Chaque objet est caractérisé par sa taille t (0i ) et sa valeur v (Oi ) ;
On veut remplir un sac de capacité C avec un sous-ensemble S ⊂ O ;
Soit i0 , i1 , . . . , ik les numéros des objets de S, il faut :
I maximiser la valeur des objets emmenés : ∑k
j =0 v (Oij )
I respecter la capacité maximum du sac : ∑k
j =0 t (Oij ) ≤ C
Sudoku 4x4
Un sudoku 4x4 se compose d’une grille de 4x4 cases ;
divisée en 4 régions de 2x2 cases ;
la grille est déjà partiellement remplie ;
il faut la compléter avec des nombres entre 1 et 4 ;
de telle sorte qu’un chiffre n’apparaisse jamais 2 fois dans chaque ligne,
chaque colonne et chaque région.
Définition
La fonction de Griewank est donnée par la formule :
n
2
n √
f (x1 , x2 , . . . , xn ) = (x
∑ i / 4000) − ∏ cos(xi / i ) + 1
i =1 i =1
Note : on connait l’optimum global, qui est le point origine. On pourra donc
facilement constater en TP si l’heuristique fait converger les xi vers 0.
Vous rendrez :
un compte-rendu (format pdf) comportant les noms de étudiants du
binôme, les résultats obtenus et commentés (qualité, temps d’exécution,
...), avec les algos et le paramétrage complet utilisé pour les obtenir.
le code source compilable sous Unix.
Vous enverrez le tout par e-mail à
robilliard@lisic.univ-littoral.fr en respectant impérativement
le format suivant :
I fichiers rassemblés dans un répertoire à votre nom
I répertoire compressé dans une archive à votre nom au format zip ou tar.gz
I Note importante : ce format permet d’éviter les conflits de noms et les
écrasements accidentels de fichiers lors de la correction.
Attention, les compte-rendus ne respectant pas ce format recevront
la note 0.