sac a dos

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

Upload: yassine-sadqi

Post on 01-Jul-2015

1.125 views

Category:

Documents


5 download

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.

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

18

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