Vous êtes sur la page 1sur 18

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

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

2
Mini projet : problème de sac a dos à multi contraintes

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).

3
Mini projet : problème de sac a dos à multi contraintes

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.

4
Mini projet : problème de sac a dos à multi contraintes

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.

5
Mini projet : problème de sac a dos à multi contraintes

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.

6
Mini projet : problème de sac a dos à multi contraintes

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.

7
Mini projet : problème de sac a dos à multi contraintes

 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.

8
Mini projet : problème de sac a dos à multi contraintes

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].

9
Mini projet : problème de sac a dos à multi contraintes

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.

10
Mini projet : problème de sac a dos à multi contraintes

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.

11
Mini projet : problème de sac a dos à multi contraintes

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

12
Mini projet : problème de sac a dos à multi contraintes

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 :

13
Mini projet : problème de sac a dos à multi contraintes

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 o j ; 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 S k ε {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

14
Mini projet : problème de sac a dos à multi contraintes

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

15
Mini projet : problème de sac a dos à multi contraintes

//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.

16
Mini projet : problème de sac a dos à multi contraintes

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.

17
Mini projet : problème de sac a dos à multi contraintes

References :
 Algorithme fourmi avec différentes stratégies pheromonales pour le sac-
a-dos multidimensionnel
LIRIS, CNRS FRE 2672, University Lyon 1
 www.wikipedia.org

18