Vous êtes sur la page 1sur 11

RÉPUBLIQUE DU CAMEROUN RÉPUBLIC OF CAMEROON

Paix-Travail-Patrie Peace-Work-Fatherland
******* *******
UNIVERSITE DE YAOUNDE 1 THE UNIVERSITY OF YAOUNDE 1
******* *******
FACULTE DES SCIENCES FACUTY OF SCIENCE
******* *******
DEPARTEMENT D’INFORMATIQUE COMPUTER SCIENCE DEPARTMENT
******* *******
NIVEAU L2 LEVEL L2

EXPOSE DE L’UE INFO 210 :


TECHNIQUES D’OPTIMISATION

THEME : PROGRAMMATION DYNAMIQUE –


PROCESSUS D’ALLOCATION
MULTIDIMENSIONNEL

Noms & prénoms des participants Matricules

POUMEYOU CHIMSSIATOU 17R2125


ABOUAR PROSPER 17Q2803
SIME NZEUGANG ULRICH EXCEL 17R2079
TZEUTON FOTSO ROFRIGUE VANICK 17Q2752
MOUSSA SODEA ALFRED 17R2178
ONANA DAMASE DONALD 17R2138
KWITE MAURICE JUNIOR 17Q2834

Année scolaire 2018-2019


Plan détaillé
INTRODUCTION.............................................................................................................3
I. Principes et application des techniques de programmation dynamique................4
1. Principes..............................................................................................................4
2. Domaines d’applications......................................................................................4
II. Résolution des problèmes d’allocation multidimensionnels : problème du sac a
dos 5
1. Problème et méthode de résolution....................................................................5
1.1. Le système dynamique..................................................................................5
1.2. La fonction additive à optimiser....................................................................6
1.3. Stratégie optimale.........................................................................................6
2. Exemple d’application.........................................................................................7
3. Cas ou le nombre de sacs est strictement supérieur a 1.....................................8
Conclusion...................................................................................................................11
INTRODUCTION

De nombreux problèmes, de la vie de tous les jours, peuvent être modélisés


sous la forme de problèmes d’optimisation combinatoire. La résolution de ces
derniers peut intervenir dans divers contextes, et les méthodes de résolution
destinées à les résoudre doivent fournir des solutions de bonne qualité en un temps
raisonnable. L’importance de la contrainte liée au temps est perceptible dans de
nombreuses situations, par exemple dans le cas où les solutions doivent être utilisées
dans une interaction avec les utilisateurs, ou bien, dans le cas où le nombre de
problèmes à résoudre dans une application est très important. Définir une méthode
de résolution efficace, capable d’obtenir une solution optimale, avec une complexité
spatiale et temporelle raisonnable, est un objectif difficile à atteindre, en particulier si
l’instance traitée est de grande taille. Les méthodes de résolution capables de
générer une solution optimale sont appelées méthodes exactes. Elles consistent en
général à énumérer l’ensemble des solutions de l’espace de recherche de manière
implicite. Cependant, elles ne permettent de résoudre que des problèmes de petites
tailles, puisque leur temps d’exécution augmente exponentiellement avec la taille du
problème. L’objectif de ce cour est de proposer plusieurs méthodes de résolution
exactes ou approchées pour obtenir des solutions de bonne qualité en un temps
d’exécution raisonnable pour une classe de problèmes de l’optimisation
combinatoire, à savoir le problème du sac-à-dos. Le choix de ce problème s’explique
par le fait que c’est un cas particulier de la programmation Dynamique en nombres
entiers et reste un problème particulier difficile à résoudre.
I. Principes et application des techniques de programmation
dynamique

1. Principes
Introduit par Richard Bellman dans les années 1950, la programmation dynamique
est un paradigme de programmation, c'est-à-dire une façon particulière
d'appréhender un problème algorithmique donné. Elle permet de résoudre des
problèmes en les décomposant en sous-problèmes, puis à résoudre les sous-
problèmes, des plus petits aux plus grands en stockant les résultats intermédiaires. La
programmation dynamique peut être vue comme une amélioration du DPR (Diviser
Pour Reigner) car consiste à découper le problème de base en sous problèmes.

Ainsi la programmation dynamique consiste à placer le problème dans une famille


de problèmes de même nature mais de difficulté différente, puis à trouver une
relation de récurrence liant les solutions optimales de ces problèmes.

La méthode comprend 4 étapes :


 Faire apparaitre le problème P comme une famille de problèmes Pi.
 Trouver les solutions aux problèmes de base.
 Trouver une formule de récurrence pour les problèmes qui ne sont pas
de base.
 Construire une boucle permettant de résoudre les problèmes non de
base a l’aide de la formule de récurrence.
Bien que très puissante, son cadre d’application est relativement restreint, dans la
mesure où les problèmes qu’elle s’adresse doivent vérifier un principe dit « principe
d’optimalité » qui stipule qu’une solution optimale d’un problème de taille n peut
s’exprimer en fonction de la solution optimale de problèmes de taille inférieure à n.

2. Domaines d’applications
La programmation dynamique est appliquée dans les domaines tels
l’informatique, la chimie, la biologie et bien d’autres.

Un exemple concret est dans les processus de chargements des cargos. Dans ce
processus on veut maximiser le nombre d’objets ayant la plus grande valeur que peut
contenir le cargo en respectant le volume de ce dernier. Donc on cherchera des
objets ayant une très grande valeur tout en respectant les limites du cargo.
II. Résolution des problèmes d’allocation multidimensionnels :
problème du sac a dos

Les méthodes s’appliquant sur ce type de problèmes sont destinées à


l’optimisation des fonctions à une ou plusieurs variables. Ainsi la programmation
dynamique permet de résoudre ce type de problèmes mais il en existe d’autres
méthodes telles que le multiplicateur de Lagrange, la méthode heuristique ….

1. Problème et méthode de résolution


On désire charger un sac de capacité volumique b avec des objets de type 1,…, N.
Chaque objet de type k a un volume a k et une valeur vk. Combien d’objets de chaque
type faut-il prendre pour maximiser la valeur du chargement ?
Notons uk le nombre d’objets de type k à emporter. On doit donc résoudre le
problème suivant de programmation linéaire en nombres entiers.

Ce problème peut être résolut par la méthode de programmation dynamique. Le


contexte est le suivant :
 On doit gérer un système dynamique à temps discret
 La fonction à optimiser est additive dans le temps
 La stratégie optimale

1.1. Le système dynamique


 L’état du processus au fil des N périodes a la forme x k+1 = fk(xk, uk) où k
numérote les périodes (ou étapes) du processus
 xk est l’état du système au début de la période k (avant la prise de décision), et
xN+1 est l’état du système en fin de processus. L’état x 1 est connu.
 uk est la décision prise à la période k

Pour le problème du sac à dos,


 xk est l’espace restant pour les objets de type k, k+1,…,N
 uk est le nombre d’objets de type k à prendre.
 fk(xk, uk) = xk − akuk

1.2. La fonction additive à optimiser


La fonction à optimiser doit être additive, de la forme ∑kN=1 gk(xk, uk) + gN+1(xN+1)
où gk(xk, uk) représente la valeur de la décision u k étant donné l’état xk et gN+1(xN+1)
représente la valeur de l’état xN+1 atteint en fin de processus.
Pour le problème du sac à dos, gk(xk, uk) = vkuk et gN+1(xN+1) = 0.

1.3. Stratégie optimale


Chaque variable d’état xk fait partie d’un ensemble S k d’états possibles, et chaque
décision uk doit être prise dans un ensemble U k (xk) de choix restreint qui dépend de
l’état xk actuel.
Pour le problème du sac à dos, on a Sk={0,1,…, b} et Uk(xk)={0,1,…, [xk/ak]}.
Une politique de décision est une suite de fonctions μ 1, μ2, …, μN où μk associe à
chaque état xk de Sk une décision uk=μk(xk)Uk(xk). Le but est de déterminer une
politique de décision qui optimise la fonction additive.

Propriété :
Si μ1, μ2, …, μN est une politique optimale pour les N périodes, et si on atteint
l’état xk à la période k en suivant cette politique, alors la politique partielle μ k, μk+1, …,
μN est optimale pour les N-k+1 dernières périodes, en débutant avec l’état xk.

Algorithme de détermination d’une politique optimale :


 Poser CN+1(xN+1) = gN+1(xN+1) pour tout xN+1 dans SN+1
 Pour k=N, N-1, …, 1 et pour tout xk ∈ Sk faire
o Poser Ck(xk) = opt {gk(xk, uk) , Ck+1(fk(xk, uk))} et stocker une décision
μk(xk) pour laquelle l’optimum est atteint
 Le coût optimal est C1(x1) et une politique optimale consiste à prendre les
décisions suivantes : u1=μ1(x1) et uk=μk(fk−1(xk−1, uk−1)) pour k=2,…,N.

2. Exemple d’application
Pour le problème du sac à dos, nous disposons de 3 types d’objets a remplir
astucieusement dans le sac, le sac disposant d’un volume maximum de 6 et les
valeurs des objets suivantes :

On a donc C1(x1)=C1(6)=max{0+10, 5+3, 10+0}=10. Il existe donc deux politiques


optimales :
 x1=2, et x2=x3=0 ou
 x1=0, et x2=x3=1
On peut représenter ce processus à l’aide d’un graphe :
 Pour chaque période k (1 <= k <= N+1) et pour chaque xk ∈ Sk on crée un
sommet (k, xk);
 Pour chaque sommet (k, xk), et pour chaque décision u k ∈ Uk(xk) on crée un arc
de (k, xk) vers (k+1, fk (xk, uk)) de coût gk(xk, uk).
 On crée finalement un sommet FIN et, pour chaque x N+1 ∈ SN+1 on crée un arc
de (N+1, xN+1) vers FIN de coût gN+1(xN+1).
On recherche alors un chemin de longueur optimale du sommet (1, x k) vers FIN.
3. Cas ou le nombre de sacs est strictement supérieur a 1

3.1. Problème

Notre problème ici est une généralisation du problème sac à dos. Nous avons
m sacs a dos de capacités différentes et les remplir simultanément.

Il nous revient de sélectionner un sous ensemble d’élément de façon à


maximiser le profit total tout en respectant la disponibilité de chaque ressource.

Nos contraintes :

 Le poids cumulé du sous ensemble d’élément choisi ne dépasse pas la capacité


du sac.
 Le profit généré par le sous ensemble d’élément choisi est maximal. Dans ce
cas, il faut savoir quels sont les objets qu’on mettra dans le sac pour maximiser
ce profit.
3.2. Modélisation du problème

Avec m=1 on se ramène au problème standard du sac à dos. Nous sommes


donc amenés à considérer m>1.

Pour la suite nous allons prendre m=2 c'est-à-dire en quelque sorte considérer
2 sac.

On peut donc modéliser ainsi :

m : nombre de ressources (sacs)

n : nombre d’objets

Pj : (j=1,…, n) Profit apporte par l’objet j

Wij : ([i=1,…, m],[j=1,…,n]) la consommation de la ressource i par l’objet j

Ci : (i=1,…, m) quantité ou capacité total du sac

3.3. Exemple de résolution

Nous pouvons nous servir de plusieurs méthodes mais on va s’axer sur la


méthode des compietes.

Cette méthode consiste en un arbre binaire qui servira a représenter la


chemin le plus optimal pour Maximiser notre solution.

On a m=2 soit Wi nos sac avec i = 1,…, m.

On a 4 objets et on veut mettre le plus d’objets possible dans ces 2 sacs de


volumes respectifs 6 et 10 en même temps.
Xi (objets) 1 2 3 4
Valeur Pj
5 3 2 6
Volume
2 4 3 5
Wij

A travers la méthode nous allons procéder comme suit :

 Nous allons construire un arbre avec pour base les tailles maxi de nos
ressources
 Nous allons nous servir du binaire, c'est-à-dire : si nous somme a l’état un(1)
nous considérons que l’objet est mis dans le sac sinon si l’état est a zéro(0)
l’objet n’est pas utiliser.
 En vue de l’obtention d’une solution optimal nos allons remplir les sacs en
même temps selon se model :
o Si nous somme à l’état (1,0) alors l’objet est mis dans le sac m =1
o Si nous somme à l’état (0,1) alors l’objet est mis dans le sac m =2
o Si nous somme à l’état (0,0) alors l’objet est mis dans aucun sac
o L’état (1,1) n’est pas considéré car l’objet ne peut pas être dans 2 sacs.
Conclusion
Grace à ce travail, nous savons dorénavant que la programmation dynamique
permet de résoudre les problèmes d’optimisation ayant une ou plusieurs ressources à
prendre en compte, plus précisément des fonctions a plusieurs variables. Mais une
conséquence directe est sur l’utilisation excessive de la mémoire du au nombre de
dimensions à manipuler. Mais reste à savoir si cette méthode est la plus optimale car
il en existe plusieurs autres méthodes de résolution de ce type de problèmes : le
lagrangien, l’heuristique et bien d’autres.

Vous aimerez peut-être aussi