sac a dos
TRANSCRIPT
Mini projet : recherche opérationnel
Sous thème : Problème de sac a dos à multi contraintes
Réalisé par : HACHIMI Fayza
13/12/2010
Encadré par : PR.ASIMI Ahmed
Mini projet : problème de sac a dos à multi contraintes
2
I. Sommaire Introduction .......................................................................................................................... 3
I. Problème de sac a dos ................................................................................................... 4
1. Définition et Formulation........................................................................................... 4
2. Algorithme glouton .................................................................................................... 5
II. Problème de sac a dos multidimensionnel(MKP)............................................................ 6
3. Définition : ................................................................................................................. 6
4. Utilisation pratique .................................................................................................. 7
III. Les classes de complexités ............................................................................................. 7
IV. Résolution du problème de sac a dos multidimensionnel : ............................................. 9
5. Exemples de méthodes de résolution : ...................................................................... 9
6. Algorithme de résolution : Optimisation par colonies de fourmis ............................. 10
V. Simulation du problème de sac a dos ........................................................................... 15
VI. CONCLUSION ............................................................................................................... 17
Mini projet : problème de sac a dos à multi contraintes
3
Introduction
Dans la vie quotidienne on est souvent confronté a toutes sortes de problèmes
d’ordre économiques, industrielle, militaire, etc. Ces problèmes peuvent être décrit et
représente sous forme d’un langage formel, par exemple plusieurs problèmes peuvent
être formulé sous forme d’un problème d’optimisation combinatoire c'est-à-dire
maximiser ou minimiser la fonction objectif sous certain contraintes.
Le problème de sac a dos est tout programme linéaire entiers ne
comprenant qu’une seule contrainte fonctionnelle (Knapsack Problem ) , il est de
plus en plus utilise dans le domaine décisionnel. Le domaine d’application de ce
problème (ainsi que ses variantes) inclut des cas du domaine de transport, de la
logistique, de la fiabilité´e ainsi que de la production. Le problème du sac-`a-dos est
parfois considère comme un sous Problème ou une relaxation de problèmes plus
complexes, la généralisation de ce problème est un problème de sac a dos a multi
contraintes ou multidimensionnel (multidimensionnal Knapsack Problem).
Mini projet : problème de sac a dos à multi contraintes
4
I. Problème de sac a dos
1. Définition et Formulation
Le problème du sac à dos, noté également KP (Knapsack Problem) est un
problème d'optimisation combinatoire. 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.
Ce problème consiste donc à choisir un sous ensemble d’élément parmi n éléments
donnes à mettre dans un sac de capacité c, chaque élément dispose d’un profit v. et d’un
poids w pour j=1, …, n .l’objectif de ce problème est de maximiser le profit génère par
le sous ensemble d’éléments choisis sans dépasser la capacité c donne.
On utilisant xj comme variable de décision a valeur binaire xj= {1 : si le j-eme
éléments est sélectionne et 0 : sinon}.
Le problème kp peut être formule comme le programme linéaire suivant :
Figure1: KP.
Mini projet : problème de sac a dos à multi contraintes
5
2. Algorithme glouton
Le problème KP est un problème d’optimisation combinatoire NP_complet il
est donc intéressant d’avoir des algorithmes polynomiaux faciles à mettre en œuvre ;
permettant de calculer une solution approchée. Parmi les méthodes heuristiques les plus
utilisées pour la recherche d’une solution pour le KP, on trouve la méthode gloutonne.
Les algorithmes gloutons varient mais ils reposent généralement sur le même
principe. Le principe de la méthode gloutonne, consiste à construire pas a pas une
solution réalisable du problème sans revenir sur ses décisions. A chaque étape de
l’algorithme, la solution en cours est utilisée pour construire une meilleure solution.
Ainsi l’algorithme s’arrête, âpres un certain nombre de phases, avec une solution
réalisable pour le KP.
trier les objets i par ordre décroissant d'efficacité
solution:= 0
pour i de 1 à n
si w[i] + solution <= W alors
x[i] := 1//objet i sélectionner.
solution := solution + w[i]
sinon
x[i] := 0
fin si
fin pour
La généralisation de ce problème donne un problème plus complexe : c’est le
problème de sac a dos multidimensionnel ou multi contraintes qui sera développé dans
la suit.
Mini projet : problème de sac a dos à multi contraintes
6
II. Problème de sac a dos multidimensionnel(MKP)
3. Définition :
Apparue dans le contexte de la budgétisation de l’investissement (par lori et Savage
1955).
Le problème de sac à dos multidimensionnel (MKP) est un problème NP_difficile
qui possède de nombreuses applications pratiques comme l’allocation des processeurs,
affectation de processeurs dans les systèmes repartis.
L’objectif du MKP est de trouver un sous ensemble d’objets qui maximise un profit
total tout en satisfaisant certains contraintes de capacité ,plus formellement
Un MKP est modélise comme suit :
Maximiser Σpj xj avec j= {1, n}
S/c Σrij xj ≤bi, avec i= {1,.,.,., m}
xj£{0,1}.
ou rij est la quantité de ressources i consommée par l’objet j ,
et bi est la quantité totale disponible de la ressource i
pj est le profit associe a l’objet j
Xj variable de décision associée a l’objet j
c.-à-d. xj=1 si j est sélectionné et 0 sinon.
Mini projet : problème de sac a dos à multi contraintes
7
4. Utilisation pratique
En pratique, la version multidimensionnelle peut servir à modéliser et résoudre le
problème du remplissage d'un container dont le volume et la charge maximale sont
limitées.
Un autre exemple est celui de la gestion de personnel. Dans une version
simplifiée, on estime la productivité ou la compétence de chaque personne (son
« poids » dans le problème), et on lui attribue d'autres variables : son coût et sa
disponibilité. Chacun de ces paramètres représente une dimension du sac à dos. On
définit finalement les contraintes liées à son projet eu égard les paramètres précédents :
le budget disponible et le temps imparti pour réaliser le travail. La résolution permet de
déterminer quelles personnes doivent être retenues pour réaliser le projet.
III. Les classes de complexités
NP_complet et NP_difficile :
Dans ce paragraphe, je présenterai les quatre classes de complexité:
Classe P, classe NP, classe NP_complet et NP_difficile.
Classe P : P est la classe de tous les problèmes de décision qui peuvent être
résolus par un algorithme polynomial.
P-complet : Un problème décisionnel appartient à ce classement s’il fait
partie de la classe P et si tout problème P dans P peut s’y réduire en temps
poly-logarithmique en utilisant un ordinateur avec un nombre polynomial de
processeurs. En pratique, si X est un problème dans P alors il appartient à P
et pour tout problème Y dans P, il existe les constantes c et k telles que Y
puisse être réduit en X en O ((log(n)) c) avec un ordinateur qui possède O
(nk) processeurs en parallèle.
Mini projet : problème de sac a dos à multi contraintes
8
NP (Non-déterministic Polynomial time) est la classe de tous les problèmes
de décision dont la solution peut être vérifiée en temps polynomial, i.e. si
l’on nous donne une solution certifiée, il est possible de vérifier que cette
solution est correcte en un temps polynomial par rapport à la taille de
l’entrée.
Exemple :
– Systèmes d’équations linéaires
– Problèmes des nombres premiers
NP_complet : Un problème est NP_complet si tout problème NP s’y réduit
en temps polynomial. Autrement, les problèmes NP les plus difficiles sont
NP-Complets
Propriété : Si un seul problème NP_complet peut être résolu en un temps
polynomial, alors tous les problèmes de NP peuvent être résolus en un temps
polynomial. Un problème NP_complet est un problème dans NP au moins
aussi difficile que tout autre problème de NP.
NP_difficile : Un problème est NP_difficile si tout problème s’y réduit en
temps polynomial. On à NP_complet _ NP_difficile, par contre un problème
NP_difficile n’est pas nécessairement dans NP.
Mini projet : problème de sac a dos à multi contraintes
9
IV. Résolution du problème de sac a dos
multidimensionnel :
La résolution de ce problème consiste à choisir un sous ensemble qui maximise la
fonction objectif en respectant certaines contraintes. Plusieurs travaux ont été
développés pour résoudre le MKP. Les méthodes exactes, généralement basées sur une
approche par séparation et évaluation sont limitées à des instances de petites tailles, ce
qui justifie le recours aux méthodes heuristiques.
5. Exemples de méthodes de résolution :
Magazine et Oguz [11] ont présente un algorithme qui combine une heuristique
duale avec l’approche du multiplicateur lagrangien généralise en utilisant les
multiplicateurs génères comme borne supérieure. Les heuristiques duales commencent
avec une solution dont les variables sont initialisées à 1, ensuite les variables sont mises
`à 0 relativement à des règles heuristiques. Récemment plusieurs metaheuristiques ont
été développées pour le MKP. Ces metaheuristiques ont permis d’avoir des résultats très
compétitifs avec des instances larges. Plusieurs algorithmes bases sur la recherche
taboue ont été proposés. Glover et Kochenberger [9] ont présente un algorithme bas´e
sur la recherche taboue qui utilise une mémoire flexible intégrant des informations de
fréquence.
Hanafi et Freville [10] ont proposés un algorithme étroitement li´e au travail de
Glover et Kochenberger [9]. Ils trouvent des résultats meilleurs que ceux trouvés par
Glover et Kochenberger sur un sous-ensemble des mêmes jeux de tests. Vasquez et Hao
[14] ont présentes une approche hybride qui combine la recherche taboue avec la
programmation linéaire. Cet algorithme utilise une recherche taboue qui emploie la
méthode d’´elimination inverse pour la gestion de la liste taboue. Cette dernière méthode
à été mise en œuvre pour la première fois sur le MKP par Damneyers et Voß[4].
Mini projet : problème de sac a dos à multi contraintes
10
L’algorithme proposé améliore les meilleurs résultats connus jusqu’à présent sur des
instances jugées difficiles. Plusieurs algorithmes génétiques ont été développes pour le
MKP, nous citons l’algorithme de Chu et Beasley [3] qui trouve parmi les meilleurs
résultats sur des instances larges de MKP.
Cet algorithme incorpore, en plus des operateurs classiques d’un algorithme
génétique, un operateur heuristique qui utilise des connaissances spécifiques au
problème.
6. Algorithme de résolution : Optimisation par colonies
de fourmis
Les fourmis sont capables de résoudre collectivement des problèmes
complexes, comme trouver le plus court chemin entre deux points dans un
environnement accidente. Pour cela, elles communiquent entre elles de façon locale et
indirecte, grâce a une hormone volatile, appelée phéromone : au
Cours de leur progression, les fourmis déposent une trace de phéromone ; elles
choisissent ensuite leur chemin de façon aléatoire, selon une probabilité dépendant de la
quantité de phéromone précédemment déposée.
Ce mécanisme, qui permet aux fourmis de résoudre collectivement des problèmes
complexes, est `a l’origine des algorithmes a base de fourmis artificielles. Ces
algorithmes ont été initialement proposes dans [5], [6], comme une approche multi-
agents pour résoudre des problèmes d’optimisation combinatoire. L’idée est de
représenter le problème à résoudre sous la forme de la recherche d’un meilleur chemin
dans un graphe, puis d’utiliser des fourmis artificielles pour rechercher de bons chemins
dans ce graphe. Le comportement des fourmis artificielles est inspire des fourmis réelles
: elles déposent des traces de phéromone sur les composants du graphe et elles
choisissent leurs chemins relativement aux traces de phéromone précédemment
déposées ; ces traces sont évaporées au cours du temps.
Intuitivement, cette communication indirecte fournit une information sur la qualité
des chemins empruntes afin d’attirer les fourmis, dans les itérations futures, vers les
zones correspondantes de l’espace de recherche.
Mini projet : problème de sac a dos à multi contraintes
11
Pour la résolution de MKP avec la metaheuristiques ACO, un point clé est de
décider sur quels composants des solutions construites les traces de phéromone vont être
déposées et comment exploiter ces traces lors de la construction de nouvelles solutions.
Une solution d’un MKP est un ensemble d’objets sélectionnes S = {o1, . . . , ok} (on
considérera qu’un objet oi est sélectionne si la variable de décision correspondante xoi a
été mise a 1). Etant donnée une telle solution S, trois différentes manières de déposer la
phéromone peuvent être considérées :
Dans Vertex-AK, les fourmis déposent la phéromone sur les sommets V du graphe.
La quantité de phéromone sur un objet oi ε V est notée t (oi). Cette quantité représente la
“désirabilité” de choisir l’objet oi lors de la construction d’une solution.
Dans Path-AK, les fourmis déposent de la phéromone sur les couples de sommets
sélectionnés consécutivement, i.e., sur les arcs du graphe. La quantité de phéromone sur
un arc (oi, oj) ε E est notée t (oi, oj). Cette quantité représente la “désirabilité” de choisir
l’objet oi juste âpres avoir choisi l’objet oj lors de la construction d’une solution. Il est à
noter que dans ce cas le graphe est oriente.
Dans Edge-AK, les fourmis déposent la phéromone sur les paires de sommets
sélectionnés dans une même solution, i.e., sur les arêtes E du graphe. La quantité de
phéromone sur une arête (oi, oj) est notée t (oi, oj). Cette quantité représente la
désirabilité de choisir un objet oie lors de la construction d’une solution qui contient
déjà l’objet oj. Il est à noter que, dans ce cas le graphe est non oriente, et donc
t (oi, oj) = t (oj, oi).
L’algorithme générique Ant-Knapsack est décrit dans la Figure 1 chaque cycle de
cet algorithme, chaque fourmi construit une solution. Lorsque toutes les fourmis ont
construit une solution, les traces de phéromone sont mises à jour. L’algorithme s’arrête
lorsqu’une fourmi a trouve une solution optimale (si la valeur optimale est connue), ou
lorsqu’un nombre maximal de cycles a été atteint.
Pour construire une solution, les fourmis choisissent aléatoirement un objet initial,
puis ajoutent itérativement des objets qui sont choisis à partir d’un ensemble Candidats
qui contient tous les objets qui peuvent être sélectionnés.
Mini projet : problème de sac a dos à multi contraintes
12
Algorithme Ant-Knapsack:
Initialiser les traces de phéromone a t_max
Répéter
Pour chaque fourmi k dans 1..nbAnts, construire une solution Sk comme suit:
Choisir aléatoirement un premier objet o1 ε{ 1..n}
Sk = {o1}
Candidats {oi ε1..n/ oi peut être sélectionné sans violer des contraintes de ressources}
Tant que Candidats ≠ {} ; faire
enlever de Candidats chaque objet qui viole des contraintes de ressources
Fin tant que
Fin pour
Mettre a jour les traces de phéromone en fonction de {S1, . . ., SnbAnts}
Si une trace de phéromone est inferieure à t_min alors la mettre a t_min
Si une trace de phéromone est supérieure à t_max alors la mettre a t_max
Jusqu’a nombre maximal de cycles atteint ou solution optimale trouvée
Mini projet : problème de sac a dos à multi contraintes
13
A chaque étape, l’objet oi à ajouter à la solution en cours de construction Sk est
choisi parmi l’ensemble de sommets Candidats relativement à une probabilité pSk (oi).
Cette probabilité est définie proportionnellement a un facteur phéromonal tSk (oi) et un
facteur heuristique ήSk (oi), ces deux facteurs étant pondérés par deux paramètres α et β
qui déterminent leur importance relative. Le facteur pheromonal dépend de la stratégie
pheromonale choisie. Le facteur heuristique ήSk (oi) et de même pour toutes les
composantes pheromonales.
Facteur heuristique
Soit
La quantité restante de la ressource i lorsque la fourmi a construit la solution Sk ;
Soit le ratio suivant qui présente la dureté de l’objet j par rapport a toutes les
contraintes i ε 1..m et relativement a la solution construite Sk,
de sorte que plus ce ratio est faible plus l’objet est intéressant. On définit alors le
facteur heuristique de la façon suivante :
Mini projet : problème de sac a dos à multi contraintes
14
Facteur pheromonal :
Le facteur pheromonal tSk (oi) traduit l’expérience passée de la colonie et est utilise
dans la probabilité de transition des fourmis pour les guider vers des zones de l’espace
de recherche prometteuses.
Dans Edge-AK (puisque elle la meilleur), le facteur pheromonal dépend de la
quantité déposée sur les arêtes connectant l’objet candidat oi avec les différents objets
présents dans la solution partie
Notons que ce facteur pheromonal peut être calculer de façon incrémentale :
lorsque le premier objet o1 a été sélectionné, le facteur pheromonal tSk (oj) est
initialise a t (oi, oj) pour chaque objet candidat oj ; ensuite, a chaque fois qu’un nouvel
objet oi est ajoute a la solution courante Sk, le facteur pheromonal tSk (oj) de chaque
objet candidat oj est incrémente de t (oi, oj).Apres que toutes les fourmis aient fini la
construction de leurs solutions, les traces de phéromone sont mises a jour. Tel que
dans une première étape toutes les traces de phéromone sont diminuées, pour simuler
l’évaporation, en multipliant chaque composant pheromonal par un ratio de
persistance (1−δ) tel que 0 ≤δ≤1.et dans un deuxième temps, la meilleure fourmi du
cycle dépose de la phéromone. Plus précisément, soit Sk ε {S1, . . . , SnbAnts} la
meilleure solution (celle ayant un profit maximal) construite durant le cycle courant et
Sbest la meilleure solution construite depuis le début de l’exécution (y compris le
cycle courant). La quantité de phéromone déposée par la fourmi k est inversement
proportionnelle `a la différence de profit entre Sk et Sbest, i.e., elle est égale a
1/ (1 + profit(Sbest) −profit(Sk)). Cette quantité de phéromone est déposée sur les
composants phénoménaux
Mini projet : problème de sac a dos à multi contraintes
15
V. Simulation du problème de sac a dos
Pour la simulation de ce problème j’utilise un algorithme implémenté en
langage c++ en se serviras de Microsoft Visual c++ comme éditeur pour un sac
à dos à une seule contrainte.
//fichier header
#ifndef _KP_H
#define _KP_H
#include<iostream>
using namespace std;
class KP{
private:
float v[10];
float p[10];
float m;//poid max de sac a dos
float n;//nbre d'objets
public:
kp(float u[10],float k[10],float n_m,float n_n);
float solution(float ratio[10],int s[10]);
void affiche();
};
#endif
Mini projet : problème de sac a dos à multi contraintes
16
//fichier cpp et programme principale.
#include "KP.h"
#include<iostream>
using namespace std;
//variable
int i,j;
float c;
float sk[10],x[10];
//method
KP::kp(float u[10],float k[10],float n_m,float n_n){
n=n_n;
m=n_m;
for(i=0;i<n;i++)
{v[i]=u[i];
p[i]=k[i];
}
}
Illustration d’une partie de l’algorithme.
Mini projet : problème de sac a dos à multi contraintes
17
VI. CONCLUSION
Dans ce mini projet j’avais essai d’étudie le problème de sac a dos, qui est
devenu de plus en plus utilisable dans les domaines économique, industriel,
militaire ….
D’abord j’avais présenté une définition et la formulation de problème pour
arriver enfin aux méthodes de résolution de problème qui connaitre un
développement au niveau des derniers années ou il existe plusieurs méthodes
qui sont soient exactes ou approchées.