Vous êtes sur la page 1sur 81




    

   


 
    

   



 

  
 


  

 
  
 


   
  
   
 
   
 



   
 


  
  
 
   
  

 


  
   


 
       
  
 

 
  
 

   

  

  
 
  
 
    

 


 
 
 


 

  
 

 !


 
 
"
 # $
%

&

 ' %   
( 
)*$
 %

#
# *)+,-$




  


 

 .$
//
% 0/
  . 1,)2 "
  #  $
 %

 &

 
' %   ( 



WƌŽŐƌĂŵŵĂƚŝŽŶůŝŶĠĂŝƌĞĞŶŶŽŵďƌĞĞŶƚŝĞƌƐ͗ƵŶĞ
ĂƉƉƌŽĐŚĞƉƌĂƚŝƋƵĞ

—–‘”ǣ

   
TABLE DES MATIÈRES

1 Introduction 2

2 Notes basiques de PNE 3

3 Notes intermediaires de PNE 24

4 Notes avancées de PNE 50

5 Conclusions 70

1
Chapitre 1

Introduction

Un problème de programmation entière est un modèle de programmation linéaire dans


lequel une partie ou la totalité des variables du problème appartiennent à l’ensemble des
entiers. Lorsque toutes les variables sont des nombres entiers, le modèle est appelé pro-
grammation par nombres entiers purs ; sinon, on parle de programmation mixte à nombres
entiers

2
Chapitre 2

Notes basiques de PNE

3
Programmation en nombres entiers

1. Formuler le problème de taille des lots sans capacité comme un problème de localisa-
tion d’entrepôts sans capacité.

2. Considérons le problème de déterminer l’horaire de tournage des scènes d’un film dans
un même lieu. Soit S l’ensemble des scènes à tourner, A l’ensemble des acteurs, As le
sous-ensemble des acteurs requis pour la scène s ∈ S et J l’ensemble des jours dispo-
nibles pour tourner ces scènes. Au plus U scènes peuvent être tournées le même jour.
Les acteurs sont payés pour chaque jour dont leur présence est requise, indépendam-
ment du nombre de scènes à tourner dans une journée. Le cachet de l’acteur a ∈ A
pour un jour de tournage est ca dollars. L’objectif du problème consiste à minimiser
la somme des cachets versés aux acteurs.

(a) Formuler ce problème comme un programme linéaire en nombres entiers qui fait
appel à des variables binaires d’affectation scène/jour de tournage.
(b) Formuler ce problème comme un programme linéaire en nombres entiers qui est
basé sur l’énumération des groupes de scènes pouvant être tournées le même jour.
(c) Modifier chacune de ces formulations pour tenir compte des contraintes suivantes.
i. Les scènes s1 et s2 doivent être tournées la même journée.
ii. Les scènes s3 et s4 ne doivent pas être tournées la même journée.
iii. L’acteur a1 ne peut tourner plus de u1 scènes par jour (u1 < U ).
iv. L’acteur a2 ne peut tourner plus de u2 scènes par jour (u2 < U ) à moins qu’il
reçoive un supplément de cachet de δ dollars par scène supplémentaire.

4
3. Considérons un problème de planification d’une production juste-à-temps de différents
produits sur un horizon de temps fini. Soit T l’ensemble des périodes de l’horizon et P
l’ensemble des produits. À chaque période t ∈ T , on cherche à satisfaire une demande
de dpt unités du produit p ∈ P (dpt ∈ N). Pour ce faire, les unités d’un même produit
p ∈ P sont fabriquées par lot de taille p . Toutefois, dans un contexte juste-à-temps,
l’accumulation d’inventaire est proscrit autant que possible et entraı̂ne une pénalité de
qp+ dollars par unité du produit p en stock à la fin de chaque période. En contrepartie,
toute demande peut être satisfaite en retard moyennant une pénalité de qp− dollars par
unité du produit p en manque à la fin de chaque période. La production d’un lot du
produit p ∈ P requiert wp unités de temps et un total de W unités de temps est dispo-
nible par période de temps, liant ainsi la production des différents produits à chaque
période. Formuler comme un programme linéaire en nombres entiers le problème de
déterminer les lots à fabriquer à chaque période de façon à minimiser la somme des
pénalités. Supposer que l’inventaire est nul en début d’horizon.

4. Considérons un programme linéaire en nombres entiers avec variables bornées :

(P N E) min c x
x
sujet à : Ax ≤ b
x≤u
x ∈ Nn .

(a) Transformer PNE en un programme linéaire en nombres entiers avec variables


binaires seulement. Dénoter ce nouveau programme par PNEVB.
(b) Pour répondre à cette question, utiliser Mosel et Xpress-MP. Sur le site Web du
cours, vous trouverez les quatre fichiers bin1.dat, bin2.dat, bin3.dat et binNE.mos.
Les trois premiers contiennent les données de trois exemplaires de PNE à résoudre
tandis que le dernier contient les déclarations et initialisations nécessaires pour
lire ces données.
Pour chaque exemplaire, vous devez résoudre PNE (avec les variables entières) et
PNEVB (avec les variables binaires) et indiquer la solution et la valeur optimale
de PNE. Pour l’ensemble des exemplaires, comparer les temps de calcul et les
nombres de noeuds de branchement requis. Discuter très brièvement en fonction
de la taille des deux modèles.

5
Exercice 1
Formuler le problème de taille des lots sans capacité comme un problème de localisation
d’entrepôts sans capacité.

Solution

On peut considérer un lieu potentiel comme une période et considérer la variable unissant
les lieux et les clients comme une variable unissant deux périodes une à une. De cette façon,
on obtient les variables suivantes :

xij : i ≤ j - Quantité produite à la période i pour atteindre la demande dans la période j ;



⎨1 s’il y a production dans la période j
yj =
⎩0 sinon
En ayant ces variables, on peut faire un traitement de données pour les coûts associés à
la production et au stockage. On peut définir le coût unitaire de production dans le période
i destiné à la période j, cij comme :
j

cij : i ≤ j = ht + pi , où ht est le coût d’entreposage du stock à la fin de la période t
t=i
et pt est le coût unitaire de production à la période t.

De plus, on utilise ft comme le coût fixe d’activation de production à la période t.

Soit donc, N = { 1,..,n } l’ensemble de périodes. Avec cela, on a un modèle :

n
 n 
 n
minimiser fj yj + cij xij (2.1)
xij :i,j∈N i≤j,
j=1 i=1 j=1
yj :j∈N i≤j
s. a.
j

xij = dj ∀j∈N (2.2)
i=1
xij ≤ dj yi ∀ i, j ∈ N : i ≤ j (2.3)
xij ≥ 0 ∀ i, j ∈ N : i ≤ j (2.4)
yj ∈ {0, 1} ∀j∈N (2.5)
La fonction objectif minimise les coûts définis ci-dessus. La contrainte 4.2 dit que la
demande doit être satisfaite pour chaque période. La contrainte 4.3 fait l’activation de la
production pour chaque période. Les autres contraintes sont pour le domaine des variables.
Pour tester cela, nous avons utilisé la langage Mosel avec le solveur Xpress. Nous avons
utilisés deux instances dont les données suivent :

Instance 1 :

ht : [7, 3, 4, 2, 20, 3, 5, 2, 8, 2]

6
pt : [6, 15, 17, 28, 11, 22, 16, 18, 9, 12]

ft : [10, 1, 4, 21, 14, 5, 3, 0, 19, 2]

dt : [101, 102, 103, 104, 105, 106, 107, 108, 109, 110]

Instance 2 :

ht : [7, 3, 4, 2, 20, 3, 5, 2, 8, 2, 4, 2, 1, 3, 5, 2, 3, 2, 1, 5, 3, 10, 2, 3, 6]

pt : [6, 15, 17, 28, 11, 22, 16, 18, 9, 12, 5, 8, 17, 12, 19, 22, 4, 12, 24, 28, 6, 6, 8, 10, 9]

ft : [10, 1, 4, 21, 14, 5, 3, 0, 19, 2, 2, 40, 10, 3, 3, 20, 12, 2, 30, 1, 2, 4, 2, 1, 20]

dt : [101, 102, 103, 104, 105, ...., 124, 125]

Nous montrons les fichiers. mosc i-dessousd ontl ar ésolution,d ansl es ensd’optimisa-
tion, ont donné les mêmes résultats pour chaque instance, et pour chaque formulation par
rapportàlavaleuroptimale.Lesvaleursobtenuespourlesvariablesoptimalessontpratiques.

Lesfichierssontaussidisponiblesauhttp://www.4shared.com/rar/4N4A9MQvce/Question_
1.html.

7
Exercice 2
Considérerons le problème de déterminer l’horaire de tournage des scènes d’un film dans
un même lieu. Soit S l’ensemble des scènes à tourner, A l’ensemble des acteurs, As le sous-
ensemble des acteurs requis pour la scène s ∈ S et J l’ensemble des jours disponibles pour
tourner ces scènes. Au plus U scènes peuvent être tournées le même jour. Les acteurs sont
payés pour chaque jour dont leur présence est requise, indépendamment du nombre de scènes
à tourner dans une journée. Le cachet de l’acteur a ∈ A pour un jour de tournage est ca
dollars. L’objectif du problème consiste à minimiser la somme des cachets versés aux acteurs.

a) Formuler ce problème comme un programme linéaire en nombres entiers qui fait appel à
des variables binaires d’affectation scène/jour de tournage.

b) Formuler ce problème comme un programme linéaire en nombres entiers qui est basée sur
l’énumération des groupes de scènes pouvant être tournées le même jour.

c) Modifier chacune de ces formulations pour tenir compte des contraintes suivantes.

i. Les scènes s1 et s2 doivent être tournées la même journée.


ii. Les scènes s3 et s4 ne doivent pas être tournées la même journée.
iii. L’acteur a1 ne peut tourner plus de u1 scènes par jour (u1 < U ).
iv. L’acteur a2 ne peut tourner plus de u2 scènes par jour (u2 < U ) à moins qu’il reçoive
un supplément de cachet de δ dollars par scène supplémentaire.

Solution

Lettre a

On⎧utilise les variables suivantes :


⎨1 si la scène s avoir lieu le jour j
zsj = ⎩
0 sinon

⎨1 si l’acteur a travail le jour j
yaj = ⎩
0 sinon


minimiser ca yaj (2.6)
y, z j∈J a∈A
s. a.

zsj ≤ U ∀j∈J (2.7)
s∈S

zsj = 1 ∀s∈S (2.8)
j∈J
zsj ≤ yaj ∀ s ∈ S, j ∈ J, a ∈ As (2.9)
zsj ∈ {0, 1} ∀ s ∈ S, j ∈ J (2.10)
yaj ∈ {0, 1} ∀ a ∈ A, j ∈ J (2.11)

La fonction objective minimise la somme des coûts de cachet versés aux acteurs. La
contrainte 3.15 dit que au plus U scènes peuvent être tournées le même jour. La contrainte

10
3.16 fait que tous les scènes doivent être tournées. La contrainte 2.9 fait l’activation de la
variable yaj de façon que les acteurs requis pour la scène s ∈ S travaillent le jour j durant
lequel cette scène aura lieu. Les autres contraintes sont pour le domaine des variables.

Lettre b

Soit R des ensembles de groupes réalisables de scènes, pouvant être tournées le même
jour. On définit les groupes potentiels comme toutes les combinaisons des scènes possibles.
Ainsi, pour chaque ensemble r ∈ R, nous avons un ensemble de scènes Sr ⊆ S. On peut
définir donc une matrice de paramètres ksr telle que :

⎨1 si le scène s ∈ Sr
ksr =
⎩0 sinon
On peut aussi créer le paramètre xas tel que :

⎨1 si l’acteur a est requis pour le scène s
xas =
⎩0 sinon
De⎧cette façon, on obtient un modèle ayant comme variables :
⎨1 si l’ensemble r des scènes est choisi pour avoir lieu le jour j
zrj =
⎩0 sinon

⎨1
si l’acteur a travail le jour j
yaj = ⎩
0 sinon


minimiser ca yaj (2.12)
y, z j∈J a∈A
s. a.

ksr zrj ≤ U ∀j∈J (2.13)
s∈S r∈R

ksr zrj = 1 ∀s∈S (2.14)
j∈J r∈R
xas ksr zrj ≤ yaj ∀ s ∈ S, j ∈ J, a ∈ A, r ∈ R (2.15)
zrj ∈ {0, 1} ∀ r ∈ R, j ∈ J (2.16)
yaj ∈ {0, 1} ∀ a ∈ A, j ∈ J (2.17)

La fonction objective minimise la somme des coûts de cachet versés aux acteurs. La
contrainte 2.13 dit que au plus U scènes peuvent être tournées le même jour. La contrainte
2.14 fait fait en sorte que toutes les scènes ne sont tournées qu’une seule fois. Cela empêche
aussi que les groupes de scènes aient des éléments communs. La contrainte 2.15 fait l’acti-
vation de la variable yaj , de façon que si la scène s ∈ Sr a lieu le jour j et a ∈ ASr , alors,
yaj = 1. Les autres contraintes sont pour le domaine des variables.

Lettre c

Pour le modèle 3.14 - 2.11, nous avons :

11
i) Ajouter la contrainte suivante :

zs1 j = zs2 j ∀ j ∈ J

ii) Ajouter la contrainte suivante :

zs3 j + zs4 j ≤ 1 ∀ j ∈ J

iii) On peut créer le paramètre xas tel que :



⎨1 si l’acteur a est requis pour le scène s
xas =
⎩0 sinon
De cette façon, on peut ajouter la contrainte suivante :

xa1 s zsj ≤ u1 ∀ j ∈ J
s∈S

iv) On peut créer la variable wj ∈ N pour représenter la quantité de scènes de l’acteur a2


qui dépasse u2 . En utilisant encore le paramètre xas de iii), on peut ajouter les contraintes
suivantes :

xa2 s zsj − wj ≤ u2 ∀ j ∈ J
s∈S

wj ∈ N ∀ j ∈ J

De plus, on doit remplacer la fonction objective 3.14 par :


 
min
y,z,w
ca yaj + δwj
j∈J a∈A j∈J

Pour le modèle 2.12 - 2.17, nous avons :

i) Ajouter la contrainte suivante :


 
ks1 r zrj = ks2 r zrj ∀ j ∈ J
r∈R r∈R

ii) Ajouter la contrainte suivante :


 
ks3 r zrj + ks4 r zrj ≤ 1 ∀ j ∈ J
r∈R r∈R

iii) Ajouter la contrainte suivante :



xa1 s ksr zrj ≤ u1 ∀ j ∈ J
r∈R s∈S

iv) Ajouter les contraintes suivantes :



xa2 s ksr zrj − wj ≤ u2 ∀ j ∈ J
r∈R s∈S

wj ∈ N ∀ j ∈ J

12
De plus, on doit remplacer la fonction objective 2.12 par :
 
min
y,z,w
ca yaj + δwj
j∈J a∈A j∈J

Tests des modèles

Pour tester cela, nous avons utilisé la langage Mosel avec le solveur Xpress. Tous les
fichiers sont aussi disponibles au http://www.4shared.com/rar/wdRwcs7gce/Question_
2.html.
Pour les résultats numériques, toutes les variables que ne sont pas montrés sont de valeurs
nulles. Sans considérer les contraintes abordés à la lettre c, nous avons eu ces résultats.

Temps CPU total = 0.041 Temps CPU total = 0.056


Valeur optimale PNE = 29 Valeur optimale PNE = 29
Solution : Solution :
z(1,1) : 1 , z(2,2) : 1, z(3,2) : 1 z(11,1) : 1 , z(12,3) : 1, z(13,3) : 1
z(4,3) : 1 , z(5,1) : 1, y(1,1) : 1 z(14,2) : 1 , z(15,1) : 1, y(1,1) : 1
y(1,2) : 1 , y(2,1) : 1, y(2,2) : 1 y(1,3) : 1, y(2,1) : 1 , y(2,2) : 1
y(2,3) : 1 , y(3,2) : 1, y(4,1) : 1 y(2,3) : 1 , y(3,3) : 1 , y(4,1) : 1

(a) Résultats du modèle lettre a. (b) Résultats du modèle lettre b.

En ajoutant seulement la contrainte de la lettre c - i) :

Temps CPU total = 0.031


Valeur optimale PNE = 33 Temps CPU total = 0.032
Solution : Valeur optimale PNE = 33
z(1,2) : 1 , z(2,2) : 1, z(3,1) : 1 Solution :
z(4,3) : 1 , z(5,1) : 1, y(1,1) : 1 z(1,2) : 1 , z(13,3) : 1 , z(14,1) : 1
y(1,2) : 1, y(2,1) : 1, y(2,2) : 1 z(15,3) : 1 , y(1,2) : 1 , y(1,3) : 1
y(2,3) : 1, y(3,1) : 1, y(3,2) : 1 y(2,1) : 1, y(2,2) : 1, y(2,3) : 1
y(4,1) : 1 y(3,2) : 1 , y(3,3) : 1 , y(4,3) : 1

(a) Résultats du modèle lettre a. (b) Résultats du modèle lettre b.

En ajoutant seulement la contrainte de la lettre c - ii les résultats sont les mêmes sans
contraintes, puisque cette contrainte n’est pas actif dans l’optimale pour notre instance.
En ajoutant seulement la contrainte de la lettre c - iii) :

Temps CPU total = 0.079 Temps CPU total = 0.077


Valeur optimale PNE = 33 Valeur optimale PNE = 33
Solution : Solution :
z(1,2) : 1 , z(2,3) : 1, z(3,3) : 1 z(3,2) : 1, z(12,3) : 1, z(13,3) : 1
z(4,2) : 1 , z(5,1) : 1, y(1,1) : 1 z(15,1) : 1, y(1,1) : 1, y(1,2) : 1
y(1,2) : 1 , y(1,3) : 1, y(2,2) : 1 y(1,3) : 1, y(2,2) : 1, y(2,3) : 1
y(2,3) : 1 , y(3,3) : 1, y(4,1) : 1 y(3,3) : 1, y(4,1) : 1

(a) Résultats du modèle lettre a. (b) Résultats du modèle lettre b.

En ajoutant seulement la contrainte de la lettre c - iv) :

13
Temps CPU total = 0.08 Temps CPU total = 0.151
Valeur optimale PNE = 34 Valeur optimale PNE = 34
Solution : Solution :
z(1,1) : 1 , z(2,2) : 1, z(3,2) : 1 z(11,1) : 1, z(12,2) : 1, z(13,2) : 1
z(4,3) : 1, z(5,1) : 1, y(1,1) : 1 z(14,3) : 1, z(15,1) : 1, y(1,1) : 1
y(1,2) : 1, y(2,1) : 1, y(2,2) : 1 y(1,2) : 1, y(2,1) : 1, y(2,2) : 1
y(2,3) : 1, y(3,2) : 1, y(4,1) : 1 y(2,3) : 1, y(3,2) : 1, y(4,1) : 1
w(2) : 1 w(2) : 1

(a) Résultats du modèle lettre a. (b) Résultats du modèle lettre b.

14
Exercice 3
Considérerons un problème de planification d’une production juste-à-temps de différents
produits sur un horizon de temps fini. Soit T l’ensemble des périodes de l’horizon et P
l’ensemble des produits. À chaque période t ∈ T , on cherche à satisfaire une demande de
dpt unités du produit p ∈ P (dpt ∈ N ). Pour ce faire, les unités d’un même produit p ∈ P
sont fabriquées par lot de taille lp . Toutefois, dans un contexte juste-à-temps, l’accumulation
d’inventaire est proscrit autant que possible et entraîne une pénalité de qp+ dollars par unité
du produit p en stock à la fin de chaque période. En contrepartie, toute demande peut être
satisfaite en retard moyennant une pénalité de qp− dollars par unité du produit p en manque
à la fin de chaque période. La production d’un lot du produit p ∈ P requiert wp unités de
temps et un total de W unités de temps est disponible par période de temps, liant ainsi la
production des différents produits à chaque période. Formuler comme un programme linéaire
en nombres entiers le problème de déterminer les lots à fabriquer à chaque période de fa-
çon à minimiser la somme des pénalités. Supposer que l’inventaire est nul en début d’horizon.

Solution

On peut définir un ensemble de périodes T2 = T ∪{0}. De plus, on peut avoir les variables
suivantes :

spt ∈ N - Quantité du produit p ∈ P stocké à la fin de période t ∈ T2 .


rpt ∈ N - Quantité non livré du produit p ∈ P à la fin de période t ∈ T .
xpt ∈ N - Quantité de lots à produire du produit p ∈ P à la période t ∈ T .

De cette façon, nous pouvons avoir le modèle suivant :


minimiser (qp+ spt + qp− rpt ) (2.18)
x, s, r t∈T p∈P
s. a.
spt−1 + rpt − rpt−1 + lp xpt = dpt + spt ∀ p ∈ P, t ∈ T (2.19)
sp0 = 0 ∀ p∈P (2.20)
rp0 = 0 ∀ p∈P (2.21)

wp xpt ≤ W ∀ t∈T (2.22)
p∈P
spt ∈ N ∀ p ∈ P, t ∈ T (2.23)
rpt ∈ N ∀ p ∈ P, t ∈ T (2.24)
xpt ∈ N ∀ p ∈ P, t ∈ T (2.25)
 
lp xpt ≥ dpt ∀ p∈P (2.26)
t∈T t∈T

La fonction objetif minimise la somme des pénalités. La contrainte 2.19 fait la liaison
entre les variables de manière à satisfaire la demande sur toute la durée en laissant au
solveur la liberté d’avoir un surplus ou un manque. La contrainte 3.17 modélise la capacité de
production disponible par période de temps. Comme l’inventaire est nul en début d’horizon,
on peut fixer sp0 = 0 ∀p ∈ P . Dans le même sens, on fixe rp0 = 0 ∀p ∈ P , alors, on a
ajouté les contraintes 2.20, 3.17. On va considérer que la demande doit être satisfaite, sinon
la contrainte 2.26 peut être enlevé. Les autres sont pour le domaine des variables.

15
Pour tester cela, nous avons utilisé la langage Mosel avec le solveur Xpress. Une instance
a été crée de manière aléatoire pour l’analyse. Les fichiers sont aussi disponibles au http:
//www.4shared.com/rar/sg5fg923ce/Question_3.html. Nous montrons ici les résultats
numériques et le fichier .mos. Les résultats sont montrés en forme de tableau à la figure 2.7.

Figure 2.7 – Résultat pour le problème.

16
Exercice 4
Considérerons un programme linéaire en nombres entiers avec variables bornées :

(PNE) minimiser cT x
x
s. a.
Ax ≤ b
x ≤ u
x ∈ Nn

a) Transformer PNE en un programme linéaire en nombres entiers avec variables binaires


seulement. Dénoter ce nouveau programme par PNEVB.
b) Pour répondre à cette question, utiliser Mosel et Xpress-MP. Sur le site Web du cours, vous
trouverez les quatre fichiers bin1.dat, bin2.dat, bin3.dat et binNE.mos. Les trois premiers
contiennent les données de trois exemplaires de PNE à résoudre tandis que le dernier contient
les déclarations et initialisations nécessaires pour lire ces données.
Pour chaque exemplaire, vous devez résoudre PNE (avec les variables entières) et PNEVB
(avec les variables binaires) et indiquer la solution et la valeur optimale de PNE. Pour l’en-
semble des exemplaires, comparer les temps de calcul et les nombres de nœuds de branche-
ment requis. Discuter très brièvement en fonction de la taille des deux modèles.

Solution
Lettre a

Pour chaque xj : j ∈ {1, ..., n} on crée 6 variables. Ainsi, nous avons utiliser les variables
suivantes :

⎨1 si la variable binaire i, lié à la variable xj , est actif
yij = ⎩
0 sinon
Définissons I = {1, .., 6} , J = {1, .., n} et M le nombre contraintes.

 
(PNEVB) minimiser cTj 2i−1 yij (2.27)
y j∈J i∈I
s. a.
 
amj 2i−1 yij ≤ bm ∀ m ∈ {1, .., M } (2.28)
j∈J i∈I

2i−1 yij ≤ uj ∀j∈J (2.29)
i∈I
yij ∈ {0, 1} ∀ i ∈ I, j ∈ J (2.30)

Lettre b

Pour tester cela, nous avons utilisé la langage Mosel avec le solveur Xpress dont le code
est affiché ci-dessous. Ces fichiers et les fichiers avec les sorties des résultats sont aussi
disponibles au http://www.4shared.com/rar/nt2gn3Hzce/Question_4.html.
Nous avons pris un extrait de la sortie des résultats. Les variables qui ne sont pas montrés
dans les résultats sont de valeurs nulles.
Pour l’instance bin1, on a :

18
Original problem has : 30 rows 120
cols 936 elements 120 globals
Original problem has :
10 rows 20 cols 136 elements 20 *** Search completed *** Time : 0
globals Nodes : 371
*** Search completed *** Time : Number of integer feasible solutions
0 Nodes : 171 found is 11
Number of integer feasible solu- Best integer solution found is -
tions found is 9 97.000000
Best integer solution found is Best bound is -97.000000
-97.000000 Temps CPU total = 0.137
Best bound is -97.000000
Valeur optimale PNE = -97
Temps CPU total = 0.05
Solution :
Valeur optimale PNE = -97 y(3,1) : 1 , y(4,1) : 1 , y(2,3) : 1 ,
y(3,3) : 1
Solution : y(4,6) : 1 , y(1,8) : 1 , y(3,10) : 1 ,
x(1) : 12 , x(3) : 2 , x(6) : 12, x(8) : y(2,11) : 1
1, x(10) : 4 y(2,12) : 1 , y(2,18) : 1 , y(1,19) : 1,
x(11) : 2 , x(12) : 2 , x(18) : 2, y(2,19) : 1
x(19) : 3

(a) Extrait des résultats du modèle PNE. (b) Extrait des résultats du modèle PNEVB.

On peut noter que le modèle PNEVB a plus de variables et de contraintes que le modèle
PNE. De plus, le nombre de nœuds est plus grand pour le modèle PNEVB que pour le modèle
PNE. Alors, cela nous donne comme hypothèse une corrélation positive entre le nombre de
nœuds et le temps de CPU total.

19
Pour l’instance bin2, on a :

Original problem has :


35 rows 150 cols 1224 elements 150 globals
Original problem has :
10 rows 25 cols 179 elements 25 *** Search completed *** Time : 0 Nodes :
globals 679
*** Search completed *** Time : Number of integer feasible solutions found
1 Nodes : 295 is 17
Number of integer feasible solu- Best integer solution found is -250.000000
tions found is 10 Best bound is -250.000000
Best integer solution found is
-250.000000 Temps CPU total = 0.206
Best bound is -250.000000
Valeur optimale PNE = -250
Temps CPU total = 0.096
Solution :
Valeur optimale PNE = -250 y(3,1) : 1 , y(1,2) : 1, y(3,2) : 1, y(1,6) : 1
y(5,6) : 1, y(1,14) : 1, y(2,17) : 1, y(3,18) :
Solution : 1
x(1) : 4 , x(2) : 5 , x(6) : 17, y(4,18) : 1, y(3,19) : 1, y(2,21) : 1, y(3,21) :
x(14) : 1 1
x(17) : 2, x(18) : 12 , x(19) : 4 , y(1,22) : 1, y(2,22) : 1, y(4,22) : 1, y(1,25) :
x(21) : 6 1
x(22) : 11, x(25) : 9 y(4,25) : 1

(a) Extrait des résultats du modèle PNE. (b) Extrait des résultats du modèle PNEVB.

On peut noter que le modèle PNEVB a plus de variables et des contraintes que le modèle
PNE. Les résultats sont semblables à ceux de l’instance bin1.
Pour bin3, voyons les résultats :

22
Original problem has :
37 rows 150 cols 1476 elements 150 globals

*** Search completed *** Time : 0 Nodes :


Original problem has : 399
12 rows 25 cols 221 elements 25 Number of integer feasible solutions found
globals is 7
*** Search completed *** Time : Best integer solution found is -188.000000
0 Nodes : 309 Best bound is -188.000000
Number of integer feasible solu-
tions found is 10 Temps CPU total = 0.139
Best integer solution found is
-188.000000 Valeur optimale PNE = -188
Best bound is -188.000000
Solution :
Temps CPU total = 0.053 y(2,1) : 1, y(3,1) : 1, y(1,6) : 1, y(3,6) : 1
y(2,14) : 1, y(3,14) : 1, y(3,17) : 1, y(1,18) :
Valeur optimale PNE = -188 1
y(2,18) : 1, y(3,18) : 1, y(1,19) : 1, y(3,19) :
Solution : 1
x(1) : 6, x(6) : 5, x(14) : 6, x(17) : y(1,20) : 1, y(2,20) : 1, y(3,20) : 1, y(2,21) :
4 1
x(18) : 7, x(19) : 5, x(20) : 7, y(3,21) : 1, y(1,22) : 1, y(2,22) : 1, y(1,24) :
x(21) : 6 1
x(22) : 3, x(24) : 9, x(25) : 9 y(4,24) : 1, y(1,25) : 1, y(4,25) : 1

(a) Extrait des résultats du modèle PNE. (b) Extrait des résultats du modèle PNEVB.

Le modèle PNEVB a encore un moins bon résultat. On note, une autre fois, une corré-
lation positive entre le nombre de nœuds et le temps de CPU.

23
Chapitre 3

Notes intermediaires de PNE

24
1. Considérons le PNE suivant :

min c x (1)
x
sujet à : a
i x = bi , ∀i = 1, . . . , m1 (2)
d
j x ≤ ej , ∀j = 1, . . . , m2 (3)
n
x∈N . (4)

Utiliser la définition d’une relaxation présentée à la page 2.9 des notes de cours pour répondre
aux questions suivantes :
(a) Obtient-on une relaxation de PNE en remplaçant toutes les contraintes (2) par une
combinaison linéaire de celles-ci ?
(b) Obtient-on une relaxation de PNE en remplaçant toutes les contraintes (3) par une
combinaison linéaire de celles-ci ?
(c) Obtient-on une relaxation de PNE en ajoutant k variables supplémentaires yl ∈ N,
l = 1, . . . , k, à PNE ?

2. Considérons le programme linéaire en nombres entiers vu en classe :

z= min −8x − 5y
x,y

sujet à : x+y ≤ 6

9x + 5y ≤ 45

x, y ∈ N.

Résoudre manuellement ce problème par un algorithme d’énumération implicite qui explore


l’arbre d’énumération en utilisant la stratégie de meilleur d’abord. Utiliser la variable y pour
séparer le noeud 0. Tracer l’arbre d’énumération en indiquant l’ordre dans lequel les noeuds
ont été évalués, les décisions imposées, la solution obtenue à chaque noeud et sa valeur.

25
 
3. Une matrice d’intervalle en colonnes A = aij de dimensions n × m est une matrice telle
que aij ∈ {0, 1} et, dans chaque colonne, les 1 sont consécutifs. Par exemple, la matrice
suivante est une matrice d’intervalle :
⎛ ⎞
1 0 0 0 1
⎜ 1 1 0 0 1 ⎟
⎜ ⎟.
⎝ 0 1 1 0 1 ⎠
0 0 1 1 0

(a) Considérons une matrice d’intervalle A carrée. Montrer que le déterminant de A est égal
à 0, 1 ou -1.
Indice : Le déterminant d’une matrice carrée B obtenue d’une matrice C en ajoutant sa
ligne i à sa ligne j (i = j) ou en soustrayant sa ligne i de sa ligne j (i = j) est égal au
déterminant de C.
(b) En utilisant le résultat précédent, montrer que toute matrice d’intervalle est totalement
unimodulaire.
4. Dans cette question, on considère le problème de la taille des lots avec capacité d’entreposage
qui peut se formuler comme suit (en utilisant la notation présentée dans la section 1.3.6 des
notes de cours et en supposant que ft = f , pt = p et ht = h, ∀t ∈ T ) :

n
 
min f yt + pxt + hst
x,y,s
t=1

sujet à : st−1 + xt = dt + st , ∀t ∈ T

x t ≤ Mt y t , ∀t ∈ T

s0 = 0,

st ≤ Q, ∀t ∈ T

xt , st ≥ 0, ∀t ∈ T

yt ∈ {0, 1}, ∀t ∈ T

où T = {1, 2, . . . , n} et Q représente la capacité de l’entrepôt. Un exemplaire de ce problème


est fourni sur le site Web du cours dans le fichier lot.dat. Vous trouverez aussi deux fichiers
lotA.mos et lotC.mos pour vous aider à réaliser les sous-questions suivantes : le premier
peut servir pour (a) et (b), et le second pour (c).

(a) i. En utilisant Mt = M , ∀t ∈ T , résoudre l’exemplaire pour chacune des valeurs de M =


1000, 500, 300, 100. Pour chaque test, rapporter la valeur optimale de la relaxation
linéaire, la valeur optimale du PNE et le nombre de noeuds de branchement requis.
Comparer ces résultats.

26
ii. Proposer les meilleures valeurs possibles pour Mt (en supposant que vous ne connais-
sez pas de solution optimale). Résoudre l’exemplaire à nouveau et comparer les ré-
sultats obtenus avec ceux en a).
(b) Pour cette question et les suivantes, utiliser Mt = 300, ∀t ∈ T .
i. Comme s0 = 0, il est évident que y1 = 1 dans toute solution optimale. Ajouter donc
la contrainte y1 = 1 au modèle. Quel est son impact sur la valeur optimale de la
relaxation linéaire et sur le processus de résolution ? Conserver cette contrainte pour
toutes les autres questions, incluant (c).
ii. Les décisions de branchement pourraient porter sur les variables yt , une variable
à la fois (i.e., yt = 0 et yt = 1). En général, une solution optimale s’obtient plus
rapidement lorsque l’arbre de branchement est équilibré, i.e., lorsque les nombres de
noeuds dans la partie droite et la partie gauche de l’arbre sont presque égaux. Pour
ce faire, il faut prendre des décisions de branchement qui permettent d’augmenter
de façon relativement égale les bornes inférieures des deux noeuds-fils. Comparer
l’impact sur ces bornes des décisions de branchement que l’on peut prendre sur
chacune des variables y7 , y10 et y13 au noeud racine. Discuter les résultats obtenus.
iii. Suggérer une paire de décisions de branchement autre que yt = 0 et yt = 1. Quel est
son impact sur les bornes des noeuds-fils ? Comparer avec les résultats précédents.
(c) Dans ce numéro, vous devez implanter un branchement heuristique pour résoudre ce
problème. Il s’agit d’une procédure itérative qui, à chaque itération, résout la relaxation
linéaire courante et analyse la solution pour savoir si elle est entière. Si elle l’est, c’est
fini, on a obtenu une solution entière heuristique. Sinon, il faut identifier la variable yt
fractionnaire qui prend la valeur la plus élevée, la fixer à 1 et recommencer. Implanter
cette méthode avec Mosel (fichier lotC.mos). Donner la valeur de la solution obtenue et
comparer la avec la valeur optimale.

27
Exercice 1
Considérerons le PNE suivant.

minimiser
x
cT x (3.1)
s. a.
aTi x = bi ∀ i = 1, ..., m1 (3.2)
dTj x ≤ ej ∀ j = 1, ..., m2 (3.3)
x ∈ Nn (3.4)

Utiliser la définition d’une relaxation présentée à la page 2.9 des notes de cours pour
répondre aux questions suivantes :
(a) Obtient-on une relaxation de PNE en remplaçant toutes les contraintes (4.2) par une
combinaison linéaire de celles-ci ?
(b) Obtient-on une relaxation de PNE en remplaçant toutes les contraintes (4.3) par une
combinaison linéaire de celles-ci ?
(c) Obtient-on une relaxation de PNE en ajoutant k variables supplémentaires yl ∈ N, l =
1,...,k, à PNE ?

Solution

a)

La contrainte 4.2 peut être écrite comme :

aTi x − bi = 0 ∀ i = 1, .., m1 . (3.5)

Nous avons que la combinaison linéaire des ces contraintes donnent :

m1
 m1

λi (aTi x − bi ) = λi (0) = 0. (3.6)
i=1 i=1

Une solution pour 3.5 va être une solution pour 3.6 pour tout λi : i = 1, .., m1 . Alors, le
polyèdre formé par 3.5 est inclus dans le polyèdre définit par 3.6 (3.5 ⊆ 3.6). Comme nous
avons la même fonction objective, on obtient une relaxation de PNE en remplaçant toutes
les contraintes (4.2) par une combinaison linéaire de celles-ci.

b)

La contrainte 4.3 peut être écrite comme :

dTj x − ej ≤ 0 ∀ j = 1, .., m2 . (3.7)

28
Nous avons que la combinaison linéaire des ces contraintes donnent :

m2

λj (dTj x − ej ) (3.8)
j=1

Si λj ≥ 0 ∀ j = 1, .., m2 , on peut assurer qu’une solution pour 3.7 sera une solution pour
3.8. Si un λ est négatif, on ne peut pas assurer que la combinaison est une relaxation pour le
PNE proposé. Par exemple nous pourrions avoir les contraintes −x1 + x2 ≤ 2 et x1 + x2 ≤ 3.
Si on fait la première moins la deuxième, cela fait 2x1 ≥ 1 qui coupe un morceau de la région
de faisabilité. On suppose donc que pour λj ≥ 0, nous avons (3.7 ⊂ 3.8). Par exemple nous
pouvons avoir :

X = {3x1 + 2x2 ≤ 10, 4x1 + x2 ≤ 3} et T = {(3x1 + 2x2 ≤ 10) + (4x1 + x2 ≤ 3) =


7x1 + 3x2 ≤ 13}. On a que (x1 , x2 ) = (1, 2) est solution pour T mais pas pour X. Ainsi,
comme la fonction objective n’a pas changée, nous obtenons une relaxation de PNE en rem-
plaçant toutes les contraintes (4.3) par une combinaison linéaire de celles-ci.

c)

On ajoutant les k variables, la formulation se deviennent :

minimiser
x,y
cT x (3.9)
s. a.
aTi x = bi ∀ i = 1, ..., m1 (3.10)
dTj x ≤ ej ∀ j = 1, ..., m2 (3.11)
x ∈ Nn (3.12)
y ∈ Nk (3.13)

La fonction objective n’a pas changée. L’ensemble des contraintes par rapport à l’objectif
n’a pas changé, alors cette nouvelle formulation inclus la première. De plus, (3.13) augmente
le nombre de dimensions du polyèdre. Ainsi c’est une relaxation de PNE.

29
Exercice 2
Considérons le programme linéaire en nombres entiers vu en classe :

minimiser
x,y
−8x − 5y (3.14)
s. a.
x+y ≤ 6 (3.15)
9x + 5y ≤ 45 (3.16)
x, y ∈ N (3.17)

Résoudre manuellement ce problème par un algorithme d’énumération implicite qui ex-


plore l’arbre d’énumération en utilisant la stratégie de meilleur d’abord. Utiliser la variable
y pour séparer le nœud 0. Tracer l’arbre d’énumération en indiquant l’ordre dans lequel les
nœuds ont été évalués, les décisions imposées, la solution obtenue à chaque nœud et sa valeur.

Solution

Nous avons développé l’algorithme pas à pas, ce qui nous montrons aux figures 3.1, 3.2
et 3.3.

30
Figure 3.3 – Application de l’algorithme pas à pas.

Cela nous donne l’arbre d’énumération représenté à la figure 3.4.

33
Figure 3.4 – Arbre d’énumération.

Nous avons utilisé les carrés selon la légende suivante :


Le premier carré(# i) de la figure 3.5 indique le numéro du nœud. Après nous avons les
valeurs de bornes (z et z) et les valeurs des variables( x et y).

Figure 3.5 – Légende pour les nœuds de l’arbre.

L’ordre d’évaluation des nœuds est : 0,2,1,3,4,5,6,7,8.

34
Exercice 3
Une matrice d’intervalle en colonnes A = (aij ) de dimensions n × m est une matrice telle que
aij ∈ {0, 1} et, dans chaque colonne, les 1 sont consécutifs. Par exemple, la matrice suivante
est une matrice d’intervalle :
⎛ ⎞
1 0 0 0 1
⎜1 1 0 0 1⎟
⎜ ⎟
⎜ ⎟
⎝0 1 1 0 1⎠
0 0 1 1 0
(a) Considérons une matrice d’intervalle A carrée. Montrer que le déterminant de A est égal
à 0, 1 ou -1.
Indice : Le déterminant d’une matrice carrée B obtenue d’une matrice C en ajoutant sa ligne
i à sa ligne j(i = j) ou en soustrayant sa ligne i de sa ligne j(i = j) est égal au déterminant
de C.
(b) En utilisant le résultat précédent, montrer que toute matrice d’intervalle est totalement
unimodulaire.

Solution

a)

On suppose Anxn . On suppose qu’on n’a pas une ligne ou une colonne avec seulement
des éléments nuls ni que A soit linéairement dépendante, cas où le déterminant serait 0.

On va construire la matrice A∗ de la façon


 suivante : On choisi la colonne j avec a1j = 1
qui a la moindre somme des éléments (min aij ) pour la permuter avec la première colonne.
j
i
Cette opération fait que det(A∗ ) = −det(A). Après cela, pour chaque colonne j : j ≥ 2 de
A∗ tel que a1j = 1 on fait aij = aij − ai1 ∀ i = 1, .., n.

A ce point là, Soit A1 la sous-matrice carré de A∗ en prenant les éléments [aij ] : i ≥


2, j ≥ 2. Cette matrice est d’intervalle aussi par construction puisque la soustraction asurre
que les séquences de 1 ne sont pas séparés par des nombres 0 au seins d’une même colonne.
On a que det(A∗ ) = 1 × det(A1 ) = det(A1 ). En répétant sur A1 les mêmes transforma-
tions faites sur A de manière récurrente, qu’on peut faire au plus n − 2 fois, on obtient une
matrice triangulaire dont le module du déterminant, est aii . Le déterminant est changé de
i
−1 pour chaque transformation faite. Comme aij ∈ {0, 1}, le déterminant de A∗ ∈ {1, 0, −1}
et donc, det(A) = −det(A∗ ) ∈ {1, 0, −1}.

b)

Si on supprime une colonne ou une ligne de la matrice A, cela ne change pas sa structure
d’intervalle. On peut donc avoir tous les sous-matrices carrés de A en faisant la suppres-
sion combinatoire d’une ligne et d’une colonne, deux lignes et deux colonnes, jusqu’au point
d’avoir des sous matrices 1x1. Ces matrices seront donc des matrices d’intervalles. En utili-
sant le résultat précédent, nous avons vu que une matrice d’intervalle A a det(A) ∈ {1, 0, −1}.
Par définition, une matrice est totalement unimodulaire si chacune de ses sous-matrices car-
rées a un déterminant égale à 1, −1 ou 0. Ainsi, det(A) = 1, −1 ou 0.

35
On peut montrer cela d’une autre manière aussi. En prenant l’idée d’Indice, on construit
la matrice A∗ : a∗i,j = ai,j − ai+1,j ∀ i = 1, .., n − 1, j = 1, .., n. Avec cela, dans chaque co-
lonne j, on aura au plus un indice i tel que a∗i,j = −1 et exactement un indice i tel que a∗i,j = 1.

La matrice A∗ a donc :

(i) a∗i,j ∈ {1, 0, −1} ∀ i, j


n

(ii) |a∗i,j | ≤ 2 ∀ j
i=1
n

Si on prend une partition M1 comme toutes les lignes de A∗ tel que |a∗i,j | = 2 pour
 i=1

une colonne j et une autre partition M2 = ∅, nous aurons que a∗i,j = a∗i,j = 0 ∀j .
i∈M1 i∈M2

Ainsi, A∗ a les conditions suffisantes pour dire que elle est totalement unimodulaire.

36
Exercice 4
Solution

a) i.

Nous avons utilisé le langage Mosel avec le solveur Xpress dont le code est affiché ci-
dessous. On met aussi des extraits de la résolution en mettant l’emphase sur le PNE. Les
sorties ont été mises en format complet sur des fichiers disponibles au http://www.4shared.
com/rar/Ns-_bzf2ce/Question_4a.html.

Figure 3.6 – Extrait pour la sortie du programme avec M = 100.

37
Figure 3.7 – Extrait pour la sortie du programme avec M = 300.

Figure 3.8 – Extrait pour la sortie du programme avec M = 500.

38
Figure 3.9 – Extrait pour la sortie du programme avec M = 1000.

39
PRGHOORW

XVHVPP[SUV
XVHVPPV\VWHP

GHFODUDWLRQV
QEBSHU QRPEUHGHSHULRGHV
3(5 QEBSHUHQVHPEOHGHVSHULRGHV
3(5 QEBSHU

FDSLQWHJHUFDSDFLWHGHO
HQWUHSRW
KWUHDOFRXWSDUXQLWHHQLQYHQWDLUH
SWUHDOFRXWSDUXQLWHSURGXLWH
IWLQWHJHUFRXWIL[HSDUSHULRGHGHSURGXFWLRQ

GWDUUD\ 3(5 RILQWHJHUGHPDQGHSDUSHULRGH


[DUUD\ 3(5 RIPSYDUYDULDEOHVTXDQWLWHSURGXLWHSDUSHULRGH
\DUUD\ 3(5 RIPSYDUYDULDEOHV VLSURGXFWLRQSDUSHULRGH
VDUUD\ 3(5 RIPSYDUYDULDEOHVLQYHQWDLUHHQILQGHSHULRGH
0 

7HPSV,QLWUHDO
HQGGHFODUDWLRQV

/HFWXUHGHVGRQQHHVGXILFKLHUORWGDW
LQLWLDOL]DWLRQVIURP
ORWGDW

FDSKWSWIWGW
HQGLQLWLDOL]DWLRQV

2EMHFWLIPLQLPLVHUFRXWVWRWDX[
&RXWB7RWDO VXP WLQ3(5  IW \ W SW [ W 
KW V W
FRQWUDLQWHVGHGHPDQGH
[   GW  V 
IRUDOO LLQ3(  V L [ L  GW L V L

FRQWUDLQWHV[YV\
IRUDOO LLQ3(5 [ L  0 \ L

FRQWUDLQWHVFDSDFLWH
IRUDOO LLQ3(5 V L  FDS

FRQWUDLQWHVG
LQWHJULWHHWGRPDLQH
IRUDOO LLQ3(5 [ L ! 
IRUDOO LLQ3(5 V L ! 
IRUDOO LLQ3(5 \ L LVBELQDU\

$XEHVRLQLPSULPHUOHSUREOHPH
H[SRUWSURE &RXWB7RWDO
VHWSDUDP ;356BYHUERVH $FWLYHUDIILFKDJH
VHWSDUDP ;356B&87675$7(*< 'HVDFWLYHUOHVFRXSHV
VHWSDUDP ;356B+(85675$7(*< 'HVDFWLYHUOHVKHXULVWLTXHV
VHWSDUDP ;356B35(62/9( 'HVDFWLYHUOHSUHWUDLWHPHQW
VHWSDUDP ;356B12'(6(/(&7,21 ([SORUHUDYHFEHVWILUVW
VHWSDUDP ;356B0,35(/6723 3DVGHWROHUDQFH PHWKRGHH[DFWH
VHWSDUDP ;356B0,3/2* $IILFKHUDFKDTXHQRHXGVGHEUDQFKHPHQW
VHWSDUDP ;356B0,37+5($'6 1RPEUHGHSURFHVVHXUV
7HPSV,QLW JHWWLPH

PLQLPL]H ;356B/,1&RXWB7RWDO 5HVRXGUHODUHOD[DWLRQOLQHDLUH


ZULWHOQ ?Q7HPSV&38WRWDO5/ JHWWLPH7HPSV,QLW?Q

ZULWHOQ ?Q9DOHXURSWLPDOH5/ JHWREMYDO?Q


ZULWHOQ 6ROXWLRQ
IRUDOO WLQ3(5_JHWVRO [ W ! GR
ZULWH [ W  JHWVRO [ W
LI WPRG  WKHQ
ZULWHOQ 
HQGLI
HQGGR
IRUDOO WLQ3(5_JHWVRO \ W ! GR
ZULWH \ W  JHWVRO \ W
LI WPRG  WKHQ
ZULWHOQ 
HQGLI
HQGGR
IRUDOO WLQ3(5_JHWVRO V W ! GR
ZULWHOQ V W  JHWVRO V W
LI WPRG  WKHQ
ZULWHOQ 
HQGLI
HQGGR

7HPSV,QLW JHWWLPH
PLQLPL]H &RXWB7RWDO 5HVRXGUHOHSUREOHPH

ZULWHOQ ?Q7HPSV&38WRWDO31( JHWWLPH7HPSV,QLW?Q

,PSULPHUODVROXWLRQ
ZULWHOQ ?Q9DOHXURSWLPDOH31( JHWREMYDO?Q
ZULWHOQ 6ROXWLRQ
ZULWHOQ 6ROXWLRQ
IRUDOO WLQ3(5_JHWVRO [ W ! GR
ZULWH [ W  JHWVRO [ W
LI WPRG  WKHQ
ZULWHOQ 
HQGLI
HQGGR
IRUDOO WLQ3(5_JHWVRO \ W ! GR
ZULWH \ W  JHWVRO \ W
LI WPRG  WKHQ
ZULWHOQ 
HQGLI
HQGGR
IRUDOO WLQ3(5_JHWVRO V W ! GR
ZULWHOQ V W  JHWVRO V W
LI WPRG  WKHQ
ZULWHOQ 
HQGLI
HQGGR
HQGPRGHO
Pour les résultats, nous les avons résumé sous forme de tableau, montrés à la figure 3.10.

Figure 3.10 – Tests pour l’exemplaire selon M .

Étant donné que c’est la même instance, nous pouvons vérifier que avec M = 100, la
contrainte xt ≤ M yt ∀ t ∈ T a un impact sur la valeur et solution optimales. Pour les autres
valeurs de M, cette différence est noté seulement pour RL. On soupçonne ici que M = 100
est trot petit pour la formulation, la rendant mauvaise, comme on note pour la valeur de
x1 par exemple. Disons que pour RL cette contrainte est active dans l’optimale. Au fur et
à mesure qu’on augmente la valeur de M , plus on réussi à baisser la valeur optimale dans
un intervalle (même base). Par contre, cela n’affecte pas PNE, puisque la solution entière
ne change pas pour M ≥ 300. Par contre, le nombre de nœuds est affecté. Comme cette
contrainte est importante pour la RL, l’augmentation de M fait que la variable y s’adapte
plus pour atteindre une bonne valeur de la FO dans les nœuds de l’arbre du branch-and-
bound. Comme cela, le nombre de nœuds augmente du au besoin d’un plus grand nombre
de séparations.

a) ii.
T

Une façon d’obtenir une meilleure valeur possible pour Mt serait de faire Mt = di .
i=t
Nous avons testé cette idée en fixant sn = 0 et sans la fixer dont les solutions étaient les
mêmes, sauf que sans la contrainte sn = 0 le nombre de nœuds augmente en 2 pour PNE.

Nous mettons les fichiers utilisés au http://www.4shared.com/rar/KvaCH2loce/Question_


4aii.html. Pour les fichier .mos, la seule différence sont ces dernières contraintes.

On montre un extrait de la sortie pour RL à la figure 3.11 et pour PNE à la figure 3.12.

42
Figure 3.11 – Résultats pour RL avec la modification de M.

43
Figure 3.12 – Résultats pour PNE avec la modification de M.

44
Nous pouvons constater que M = 100 est insuffisant pour donner une bonne formula-
tion car la valeur optimale de PNE est 3516.3, tel que trouvé pour M = 300, M = 500 et
M = 1000, et pour la modification apportée ici.

De plus, cette formulation a trouvé une borne inférieure pire que celle qui utilise M = 300,
mais meilleure que pour les autres formulations qui utilisent d’autres valeurs pour M . Néan-
moins, par rapport au nombre de nœuds, cette formulation est la meilleure. Puisqu’il en
résulte seulement 91 nœuds, le temps de CPU total a été meilleur.

b) i.

On présente à la figure 4.7 un extrait de la réponse trouvé après ajouter la contrainte


proposée.

Figure 3.13 – Extrait des résultats avec y1 = 1.

On note que l’impact est une augmentation de la borne inférieure pour la RL, ainsi
qu’une réduction du nombre de nœuds requis dans le processus de résolution du PNE (181
versus 203 ), ce qui apporte une petite réduction du temps de CPU requis.

b) ii.

En prenant la variable y7 pour être au nœud racine, on note que dans les nœuds avec
y7 = 0 et y7 = 1 donnent, respectivement, les valeurs optimales 3252.4 et 3282.52 pour la
RL. La différence entre ces bornes est de 30.12.

En appliquant le même raisonnement pour y10 on obtient d’un côté une borne inférieure

45
de 3242.05 et d’autre 3295.67 dont la différence est de 53.62.

Enfin pour y13 les bornes trouvés sont 3237.1 et 3308.75 avec une différence de 71.65.

La différence entre ces bornes permet de comparer de façon relative l’augmentation des
bornes inférieures des deux nœuds-fils. Plus cette différence est petite, plus l’arbre semble
être équilibré. Ainsi, avoir la variables y7 au nœud racine pour le branchement semble donner
comme résultat un arbre de branchement plus équilibré.

b) iii.

Notre idée c’est de faire à chaque fin de résolution de la relaxation linéaire, la sommation


des valeurs de yt ∀t pour faire une séparation dichotomique en :

 
1. yt ≤ yt .
t t
 
 
2. yt ≥ yt .
t t

On a obtenu, au nœud racine, yt = 3.23. En faisant une séparation au nœud racine,
t
selon les réglés au-dessus, pour comparer
 avec les résultats de lettre b ii, on a obtenu pour le
 
nœud avec la contrainte yt ≤ yt une borne inférieure de 3206.95. Pour l’autre nœud,
t  t
 
avec la contrainte yt ≥ yt , la borne inférieure est 3233.35. La différence entre ces
t t
bornes est de 26.4. On note que la différence est plus petite que la moindre différence des
bornes pour les branchements faites à la question b ii. En prenant comme valide la hypothèse
qu’augmenter de façon relativement égale les bornes inférieures des deux nœuds-fils fait une
arbre plus équilibré, on conclu que le paire de décisions de branchement choisie laisse l’arbre
plus équilibré.

Le fichier utilisé pour cette question et pour la question précédente est disponible au
http://www.4shared.com/file/6VporNfAce/lotA_lettrebiii.html.

c)

Le fichier .mos est affiché ci-dessous. On met des extraits de la résolution à la figure 3.14.

46
PRGHOORW&
XVHVPP[SUV
XVHVPPV\VWHP

GHFODUDWLRQV
QEBSHU QRPEUHGHSHULRGHV
3(5 QEBSHUHQVHPEOHGHVSHULRGHV
3(5 QEBSHU

FDSLQWHJHUFDSDFLWHGHO
HQWUHSRW
KWUHDOFRXWSDUXQLWHHQLQYHQWDLUH
SWUHDOFRXWSDUXQLWHSURGXLWH
IWLQWHJHUFRXWIL[HSDUSHULRGHGHSURGXFWLRQ
GWDUUD\ 3(5 RILQWHJHUGHPDQGHSDUSHULRGH
[DUUD\ 3(5 RIPSYDUYDULDEOHVTXDQWLWHSURGXLWHSDUSHULRGH
\DUUD\ 3(5 RIPSYDUYDULDEOHV VLSURGXFWLRQSDUSHULRGH
VDUUD\ 3(5 RIPSYDUYDULDEOHVLQYHQWDLUHHQILQGHSHULRGH

0 
LQWWROUHDO
LWULQWHJHUFRPSWHXUG
LWHUDWLRQV
W)L[LQWHJHUQXPHURGHODSHULRGHDIL[HU
7HPSV,QLWUHDO
PD[LPRB\WUHDOYDOHXUGH\WIUDFWLRQDLUHODSOXVHOHYp
HQGGHFODUDWLRQV

/HFWXUHGHVGRQQHHVGXILFKLHUORWGDW
LQLWLDOL]DWLRQVIURP
ORWGDW

FDSKWSWIWGW
HQGLQLWLDOL]DWLRQV

7ROHUDQFH H GH;SUHVVSRXUG­‹WHUPLQHUVLXQH


YDULDEOHHVWHQWL­ŽUH
LQWWRO JHWSDUDP ;356B0,372/ 

2EMHFWLIPLQLPLVHUFRXWVWRWDX[
&RXWB7RWDO VXP WLQ3(5  IW \ W SW [ W 
KW V W
FRQWUDLQWHVGHGHPDQGH
[   GW  V 
IRUDOO LLQ3(  V L [ L  GW L V L

FRQWUDLQWHV[YV\
IRUDOO LLQ3(5 [ L  0 \ L
\  

FRQWUDLQWHVFDSDFLWH
IRUDOO LLQ3(5 V L  FDS

FRQWUDLQWHVG
LQWHJULWHHWGRPDLQH
IRUDOO LLQ3(5 [ L ! 
IRUDOO LLQ3(5 V L ! 
IRUDOO LLQ3(5 \ L LVBELQDU\

$XEHVRLQLPSULPHUOHSUREOHPH
H[SRUWSURE &RXWB7RWDO
VHWSDUDP ;356BYHUERVH $FWLYHUDIILFKDJH
VHWSDUDP ;356B&87675$7(*< 'HVDFWLYHUOHVFRXSHV
VHWSDUDP ;356B+(85675$7(*< 'HVDFWLYHUOHVKHXULVWLTXHV
VHWSDUDP ;356B35(62/9( 'HVDFWLYHUOHSUHWUDLWHPHQW
VHWSDUDP ;356B12'(6(/(&7,21 ([SORUHUDYHFEHVWILUVW
VHWSDUDP ;356B0,35(/6723 3DVGHWROHUDQFH PHWKRGHH[DFWH
VHWSDUDP ;356B0,3/2* $IILFKHUDFKDTXHQRHXGGHEUDQFKHPHQW

ZULWHOQ ?Q 
ZULWHOQ  5HVROXWLRQKHXULVWLTXH 
ZULWHOQ  )L[DWLRQGHSHULRGHVGHSURGXFWLRQ 
ZULWHOQ  
LWU 

3RXUHQVDYRLUSOXVVXUOHVFRPPDQGHVUHSHDWLIGRHWF
/LUHOHFKDSLWUHGX;SUHVV0RVHOXVHUJXLGH
UHSHDW
W)L[ 
LWU LWU
PD[LPRB\W 
PLQLPL]H ;356B/,1&RXWB7RWDO 5HVRXGUHODUHOD[DWLRQOLQHDLUH
ZULWH ?Q,WHUDWLRQLWUYDOHXUREMHFWLI JHWREMYDO

IRUDOO WLQ3(5 GR
LI  JHWVRO \ W  LQWWRO DQG JHWVRO \ W ! LQWWRO DQG JHWVRO \ W ! PD[LPRB\W  
PD[LPRB\W JHWVRO \ W
W)L[ W
HQGLI
HQGGR

IRUDOO WLQ3(5_JHWVRO \ W ! GR
ZULWH \ W  JHWVRO \ W
LI WPRG  WKHQ
ZULWHOQ 
HQGLI
HQGGR

LI W)L[! WKHQ
\ W)L[ 
ZULWHOQ )L[HU\ W)L[  
HQGLI
DFRPSOHWHU
XQWLO W)L[ 

ZULWHOQ ?Q 
ZULWHOQ  6ROXWLRQHQWLqUH 
ZULWHOQ  ?Q

,PSULPHUODVROXWLRQ
ZULWHOQ ?Q9DOHXURSWLPDOH31( JHWREMYDO?Q
ZULWHOQ 6ROXWLRQ
IRUDOO WLQ3(5_JHWVRO [ W ! GR
ZULWH [ W  JHWVRO [ W
LI WPRG  WKHQ
ZULWHOQ 
HQGLI
HQGGR
IRUDOO WLQ3(5_JHWVRO \ W ! GR
ZULWH \ W  JHWVRO \ W
LI WPRG  WKHQ
ZULWHOQ 
HQGLI
HQGGR
IRUDOO WLQ3(5_JHWVRO V W ! GR
ZULWHOQ V W  JHWVRO V W
LI WPRG  WKHQ
ZULWHOQ 
HQGLI
HQGGR

HQGPRGHO
Figure 3.14 – Extrait des résultats pour la Résolution Heuristique.

Tel que vu dans la figure 3.14, on a eu une valeur pour la fonction objective égale à
3889.7 en utilisant l’heuristique. En sachant que la valeur optimale est 3516.3, on a un
GAP d’optimalité d’environ 10% pour cette instance. Pour cette instance, c’est préférable la
méthode exacte puisque le temps de CPU requis pour trouver une solution a été plus grande
sur l’heuristique.

49
Chapitre 4

Notes avancées de PNE

50
1. Pour chaque cas, trouver une inégalité valide pour X qui coupe le point donné.
(a) X = {x ∈ N4 | 4x1 + 7x2 + 3x3 + 9x4 ≥ 25}, x = (0, 0, 0, 25
9
).
(b) X = {(x, y) ∈ R2+ × B1 | x1 + x2 ≤ 5y, x1 ≤ 2, x2 ≤ 4}, (x1 , x2 , y) = (1, 1, 25 ).
(c) X = {(x, y) ∈ R2+ × N1 | x1 + x2 ≤ 14, x1 + x2 ≤ 9y}, (x1 , x2 , y) = (7, 5, 43 ).
(d) X = {x ∈ N5 | 2x1 + x2 + 3x3 + 4x4 + 3x5 ≤ 13}, x = ( 13
2
, 0, 0, 0, 0).

2. Considérons un domaine S ⊂ R3+ et supposons que toutes les inégalités suivantes sont des
inégalités valides pour S.
(a) Est-ce que 4x1 + 7x2 + 8x3 ≤ 35 domine 6x1 + 11x2 + 13x3 ≤ 58 ?
(b) Est-ce que 4x1 + 6x2 + 15x3 ≤ 45 est redondante par rapport aux inégalités 4x1 + 7x2 +
8x3 ≤ 35 et 5x1 + 9x2 + 20x3 ≤ 58 ?

3. Soit d ∈ Rn+ un vecteur positif donné et T = {1, 2, . . . , n}. Considérons le domaine

S = {(s, x, y) ∈ Rn+1
+ × Rn+ × Bn | st−1 + xt = dt + st , ∀t ∈ T,

s0 = sn = 0, xt ≤ d i yt , ∀t ∈ T }.
i∈T

(a) Montrer que xt ≤ dt yt + st est une inégalité valide pour S quelque soit t ∈ T .
(b) En supposant que n = 3, d1 = 40, d2 = 10 et d3 = 50, donner une solution de la relaxa-
tion linéaire de S qui soit violée par une inégalité du type proposé en (a).

51
4. Considérons le domaine suivant :

S = {x ∈ N3 | 6x1 + 4x2 + 3x3 ≤ 12, x1 + 2x2 + 4x3 ≤ 10}.

(a) Déterminer tous les points de S et montrer que x1 + x2 + x3 ≤ 3 est une inégalité valide
pour S.
(b) Montrer que x1 + x2 + x3 ≤ 3 est une inégalité de Chvátal-Gomory de rang 1 pour un
PNE défini sur le domaine S.
(c) Prouver que dim(conv(S)) = 3 en trouvant quatre points de S affinement indépendants.
(d) Soit P un polyèdre de pleine dimension n et π  x ≤ π0 une inégalité valide pour P . On
peut déterminer que F = {x ∈ P | π  x = π0 } est une facette de P de la façon suivante.
Soit k points v1 , v2 , . . . , vk de F avec k ≥ n et un hyperplan quelconque μ x = μ0
les contenant, i.e., μ vi = μ0 pour tout i = 1, . . . , k. Si la résolution de ce système
d’équations linéaires en μ et μ0 ne possède que des solutions de la forme (μ, μ0 ) =
λ(π, π0 ), λ ∈ R, alors F est une facette. À l’aide cette approche, montrer que x1 + x2 +
x3 ≤ 3 engendre une facette de conv(S).
(e) Déterminer une représentation polyédrale minimale (i.e., qui ne contient que des inéga-
lités engendrant des facettes) de conv(S). Ne pas prouver que chaque inégalité engendre
une facette.

5. Considérons un programme linéaire en nombres entiers sous la forme

(P N E) max c x
x
sujet à : Ax ≤ b
x ∈ Nn .

Sur le site web du cours, vous trouverez le fichier q5.dat qui fournit les données pour un
exemplaire de ce modèle. De plus, vous trouverez le fichier q5a.mos qui vous aidera à
répondre à la première question ci-bas.

(a) Compléter le modèle dans le fichier q5a.mos et résoudre à l’aide de Mosel le problème
pour les données fournies. Indiquer les valeur et solution optimales de la relaxation
linéaire, de même que les valeur et solution optimales en nombres entiers.
(b) Formuler le problème de séparation pour trouver une inégalité disjonctive violée qui
s’appuie sur les décisions de branchement pouvant être imposées sur la variable x3 .
(c) Résoudre ce problème de séparation à l’aide de Mosel et indiquer la coupe disjonctive

obtenue. (Indice : Pour éviter un problème non borné, vous pouvez imposer i πi ≤ 1.)
(d) Ajouter cette coupe au modèle initial et résoudre à nouveau la relaxation linéaire. Quelles
sont les valeur et solution optimales de cette relaxation linéaire ?

52
Exercice 1

Solution

a)

Comme x ∈ N4 , A ∈ Z1×4 , b ∈ Z, nous pouvons utiliser une inégalité de Chvatal-Gomory


en considérant les contraintes ATi x ≥ bi , i = 1, .., m comme des inégalités valides. Soit
m m
u ∈ Rm n
+ , donc, l’inégalité πx ≥ π0 avec π = i=1 ui Ai ∈ Z et π0 = i=1 ui bi ∈ Z est
une inegalité valide.

Preuve : Soit x une solution réalisable. Alors,


m m m
πT x = i=1 ui Ai x ≥ i=1 ui Ai x = i=1 ui bi
m m
Or, comme i=1 ui Ai est entier, on peut donc dire que π T x ≥ i=1 ui bi = π 0 .

Si nous utilisons u = 1/9, nous avons :

1/9 × 4 x1 + 1/9 × 7 x2 + 1/9 × 3 x3 + 1/9 × 9 x4 ≥ 1/9 × 25 que donne l’inégalité


x1 + x2 + x3 + x4 ≥ 3 qui coupe le point donné.

b)

En énumérant tous les points extrêmes de X, dont l’ensemble on appelle EXT (X), on a
trouvé que :

EXT (X) = {(0, 0, 0), (0, 0, 1), (1, 4, 1), (0, 4, 1), (2, 3, 1), (2, 0, 1)}. Comme nous voulons
couper la solution (x, y) = (1, 1, 25 ), on peut construire le programme linéaire non réalisable :

6

minimiser 0λi (4.1)
λ
i=1
s. a.
6

λi = 1 (4.2)
i=1
0λ1 + 0λ2 + 1λ3 + 0λ4 + 2λ5 + 2λ6 = 1 (4.3)
0λ1 + 0λ2 + 4λ3 + 4λ4 + 3λ5 + 0λ6 = 1 (4.4)
0λ1 + 1λ2 + 1λ3 + 1λ4 + 1λ5 + 1λ6 = 2/5 (4.5)
λi ≥ 0 ∀i = 1..6 (4.6)

Associons aux contraintes (4.2), (4.3), (4.4) et (4.5) respectivement les variables duales
w0 , w1 , w2 , w3 . Le dual de (4.1)-(4.6) est donc :

53
maximiser
w
w1 + w2 + 2/5w3 + w0 (4.7)
s. a.
w0 ≤ 0 (4.8)
w3 + w0 ≤ 0 (4.9)
w1 + 4w2 + w3 + w0 ≤ 0 (4.10)
4w2 + w3 + w0 ≤ 0 (4.11)
2w1 + 3w2 + w3 + w0 ≤ 0 (4.12)
2w1 + w3 + w0 ≤ 0 (4.13)

qui est réalisable donc non borné. Alors, si on fait w0 = w2 = 0, w1 = 5/2 et w3 = −5,
on trouve une solution réalisable de valeur optimale 0.5 > 0.

Si on fait donc, π = wT et π0 = −w0 on trouve une inégalité valide du type π T x ≤ π0 .

Cela fait donc, 5/2x1 + 0x2 − 5y ≤ 0 ⇒ 5/2x1 − 5y ≤ 0 qui coupe le point donné.

c)

On peut noter que si y ≥ 2, on va avoir que x1 + x2 ≤ 9y va être redondante. Alors, on


peut considérer les points extrêmes réalisables pour y = {0, 1} dont l’ensemble on appelle
EXT (X) :

EXT (X) = {(0, 0, 0), (0, 9, 1), (9, 0, 1), (14, 0, 2), (0, 14, 2)}. Comme nous voulons couper
la solution (x, y) = (7, 5, 34 ), on peut construire le programme linéaire non réalisable :

5

minimiser 0λi (4.14)
λ
i=1
s. a.
5

λi = 1 (4.15)
i=1
0λ1 + 0λ2 + 9λ3 + 14λ4 + 0λ5 = 7 (4.16)
0λ1 + 9λ2 + 0λ3 + 0λ4 + 14λ5 = 5 (4.17)
0λ1 + 1λ2 + 1λ3 + 2λ4 + 2λ5 = 4/3 (4.18)
λi ≥ 0 ∀i = 1..5 (4.19)

Associons aux contraintes (4.15), (4.16), (4.17) et (4.18) respectivement les variables
duales w0 , w1 , w2 , w3 . Le dual de (4.14)-(4.19) est donc :

54
maximiser
w
7w1 + 5w2 + 4/3w3 + w0 (4.20)
s. a.
w0 ≤ 0 (4.21)
w0 + 9w2 + w3 ≤ 0 (4.22)
w0 + 9w1 + w3 ≤ 0 (4.23)
w0 + 14w1 + 2w3 ≤ 0 (4.24)
w0 + 14w2 + 2w3 ≤ 0 (4.25)
2w1 + w3 + w0 ≤ 0 (4.26)

qui est réalisable donc non borné. Alors, si on fait w0 = −3, w1 = w2 = 1 et w3 = −6,
on trouve une solution réalisable de valeur optimale 1 > 0.

Si on fait donc, π = wT et π0 = −w0 on trouve une inégalité valide du type π T x ≤ π0 .

Cela fait donc, x1 + x2 − 6y ≤ 3 qui coupe le point donné.

d)

Comme x ∈ N5 , A ∈ Z1×5 , b ∈ Z, nous pouvons utiliser Inégalité de Chvatal-Gomory. Si


on prend u = 0.5, nous avons :
0.5 × 2x1 + 0.5 × 1x2 + 0.5 × 3x3 + 0.5 × 4x4 + 0.5 × 3x5 ≤ 0.5 × 13 que donne
l’inégalité
x1 + x3 + 2x4 + x5 ≤ 6 qui coupe le point donné.

55
Exercice 2
a)

Si on trouve k > 0 tel que π ≥ kμ et π0 ≤ kμ0 , alors πx ≤ π0 domine μx ≤ μ0 .


Ainsi, faisons :

π = (4, 7, 8), π0 = 35 μ = (6, 11, 13), μ0 = 58, nous aurons le système :

4 ≥ 6k
7 ≥ 11k
8 ≥ 13k
35 ≤ 58k

On peut trouver un k > 0 réalisable pour cela, par exemple k = 0.61.

Donc, 4x1 + 7x2 + 8x3 ≤ 35 domine 6x1 + 11x2 + 13x3 ≤ 58.

b)

Si on trouve des ki > 0, où |i| est égal au nombre d’inégalité valides et un k > 0 tel
|i| |i| |i| |i|
   
que ki πi ≥ kμi ∀ i = 1, ..., |i| et ki π0,i ≤ kμ0,i ∀ i = 1, ..., |i|, alors ki πi x ≤ ki π0,i
i=1 i=1 i=1 i=1
domine μx ≤ μ0 .

On utilisant cette définition, on peut faire :


π1 = (4, 7, 8), π0,1 = 35
π2 = (5, 9, 20), π0,2 = 58
μ = (4, 6, 15), μ0 = 45.

Cela nous donne donc le système S :

4k1 + 5k2 ≥ 4k
7k1 + 9k2 ≥ 6k
8k1 + 20k2 ≥ 15k
35k1 + 58k2 ≤ 45k

On peut trouver par exemple k = 15.7333333, k1 = 2, k2 = 11.


Donc, la contrainte 4x1 + 6x2 + 15x3 ≤ 45 est redondante par rapport aux inégalités
4x1 + 7x2 + 8x3 ≤ 35 et 5x1 + 9x2 + 20x3 ≤ 58.

56
Exercice 3
a)

Nous devons montrer que xt ≤ dt yt + st ∀ t ∈ T sont des inégalités valides.

Montrons cela pour induction. Supposons que x soit une solution réalisable.
Pour t = 1, nous avons que :

x1 ≤ d1 y1 + s1
≤ d1 + s1 car y1 ∈ {0, 1} et d1 ≥ 0
= d1 + s1 − s0 car s0 = 0
Soit k ∈ {2, . . . , n}. On suppose que l’inégalité est vraie pour t = k − 1. Voyons pour
t=k:

xk ≤ dk yk + sk
≤ dk + sk car yk ∈ {0, 1} et dk ≥ 0
≤ dk + sk − sk−1 car sk−1 ≥ 0
= xk
Ainsi, si x est une solution réalisable, elle respecte xt ≤ dt yt + st ∀ t ∈ T , et ainsi, ces
inégalités sont valides.

b)

Si on a x1 = 40, x2 = 40, x3 = 20, s0 = 0, s1 = 0, s2 = 30 et s3 = 0, on aurait la


plus petite valeur pour y, c’est à dire, y = (40/100, 40/100, 20/100). Dans ce contexte, si on
ajoute la contrainte x1 ≤ d1 y1 + s1 , cette solution va être violé :
40 ≤ 40 × 40/100 − 0 ⇒ 40  16.

57
Exercice 4
Solution

a)

Nous avons que les points de S sont :


⎧ ⎫

⎨ (2, 0, 0), ⎪

S= (1, 1, 0), (1, 0, 1), (1, 0, 2), (1, 0, 0),

⎩ ⎪
(0, 3, 0), (0, 2, 1), (0, 2, 0), (0, 1, 2), (0, 1, 1), (0, 1, 0), (0, 0, 2), (0, 0, 1), (0, 0, 0)⎭
Comme pour tous les points nous avons que la somme des coordonnes x1 , x2 et x3 est au
plus 3, nous avons que x1 + x2 + x3 ≤ 3 est une inégalité valide.

b)

Comme x ∈ N3 , A ∈ Z2×3 , b ∈ Z2 , pour montrer que x1 + x2 + x3 ≤ 3 est une Inégalité


de Chvatal-Gomory de rang 1 pour un PNE défini sur le domaine S, il suffit de trouver un
2
vecteur u ∈ R+ tel que :

6u1 + 1u2  = 1
4u1 + 2u2  = 1
3u1 + 4u2  = 1
12u1 + 10u2  = 3

On peut trouver u1 = u2 = 1/6 pour cela. À ce moment là, nous avons utilisé la défi-
nition de l’Inégalité de Chvatal-Gomory en partant des contraintes originales pour générer
x1 + x2 + x3 ≤ 3 qui est aussi de rang 1 par définition.

c)

Nous avons que dim(P ) = max{|k| − 1} òu k ⊆ P est l’ensemble des points affinement
indépendants de P .

Pour conv(S), si on prends les points v1 = (0, 0, 0), v2 = (0, 0, 1), v3 = (0, 1, 0) et
v4 = (2, 0, 0), il faut vérifier que :
4 4
i=1 αi vi = 0 et i=1 αi = 0 si l’unique solution est αi = 0 ∀ i = 1, .., 4.

Cela nous donne :

2α4 = 0
1α3 = 0
1α2 = 0
α1 + α2 + α3 + α4 = 0
dont l’unique solution est αi = 0 ∀ i = 1, ..4.

Alors, les points choisis de S sont affinement indépendants.

58
d)

Nous avons que π = (1, 1, 1), π0 = 3 qui provient de l’inégalité valide x1 + x2 + x3 ≤ 3.

On peut choisir k ≥ 3 points dans F = {x ∈ S | x1 + x2 + x3 = 3}.

Choisissons ces points : (0, 3, 0), (1, 0, 2), (0, 2, 1) et (0, 1, 2).

Soit μ = (y1 , y2 , y3 ) et μ0 l’hyperplan quelconque μT x = μ0 . Cela nous donne ce système


en équations linéaires :

0y1 + 3y2 + 0y3 = μ0


1y1 + 0y2 + 2y3 = μ0
0y1 + 1y2 + 2y3 = μ0
0y1 + 2y2 + 1y3 = μ0

La solution pour ce système est y1 = y2 = y3 = μ0 /3.


Ainsi, nous avons que :

( μ30 , μ30 , μ30 , μ0 ) = μ30 (1, 1, 1, 3). Or, (1,1,1,3) est (π, π0 ), donc, la solution du système prend
la forme (μ, μ0 ) = λ(π, π0 ) : λ ∈ R. Ainsi, x1 + x2 + x3 ≤ 3 engendre une facette de conv(S).

e)

En faisant une représentation graphique, nous avons trouvé trois graphiques :

Figure 4.1 – Graphique de x1 avec x2 .

59
Figure 4.2 – Graphique de x1 avec x3 .

Figure 4.3 – Graphique de x2 avec x3 .

On peut noter que tous les points réalisables sont représentés dans au moins une entre
les figures 4.1, 4.2 et 4.3.

Si on fait que x3 soit inférieur ou égale a 2, on enrichi la formulation. Ainsi, une autre
facette serait : F1 = {x3 ≤ 2 : 0 ≤ x1 ≤ 1, 0 ≤ x2 ≤ 1},

On peut noter dans la figure 4.3, que le point (0, 2, 1) n’est pas touché par la formulation
et que l’ajout de la contrainte x3 + x2 ≤ 3 décrit une inégalité qui lie ce point aux points
(0, 1, 2) et (0, 3, 0).

Ainsi, on peut déduire les facettes :

F2 = {x1 = 0 : x3 + x2 ≤ 3, x2 ≥ 0, x3 ≥ 0, x3 ≤ 2},

60
F3 = {x2 = 0 : 2x1 + x3 ≤ 4, x1 ≥ 0, x3 ≥ 0, x3 ≤ 2},
F4 = {x3 = 0 : 6x1 + 4x2 ≤ 12, x2 ≥ 0, x1 ≥ 0},

Pour finir, on peut noter que la contrainte 6x1 + 4x2 + 3x3 ≤ 12 est une facette vu quelle
est une inégalité valide avec 3 points affinement indépendants. Par contre, comme ce plan
ne contient pas le point (0, 2, 1), on peut essayer de trouver un autre plan de plus qui lie les
points (1, 0, 2), (0, 1, 2) et (0, 3, 0) et définir mieux conv(S).

Pour le faire, en utilisant les points (1, 0, 2), (0, 1, 2) et (0, 3, 0), on peut trouver :
1a + 0b + 2c = d
0a + 1b + 2c = d
0a + 3b + 0c = d
Pour d = 1, cela nous donne a = b = c = 1/3. La forme générale du plan est
ax1 + bx2 + cx3 = d. Alors :

1/3x1 + 1/3x2 + 1/3x3 = 1 ⇒ x1 + x2 + x3 = 3. Dans notre question, on prend donc


x1 + x2 + x3 ≤ 3.

Ainsi, on peut prendre la contrainte originale comme facette de la façon suivante :


F5 = {6x1 + 4x2 + 3x3 ≤ 12 : 0 ≤ x1 ≤ 2, 0 ≤ x2 ≤ 3, 0 ≤ x3 ≤ 2, 5x1 + 3x2 + 2x3 ≥ 9},

et ajouter la facette :
F6 = {x1 + x2 + x3 ≤ 3 : 0 ≤ x1 ≤ 1, 0 ≤ x2 ≤ 3, 0 ≤ x3 ≤ 2, 5x1 + 3x2 + 2x3 ≤ 9},

61
Exercice 5
Solution

a)

Nous avons utilisé le langage Mosel avec le solveur Xpress dont le code est affiché ci-
dessous. On met aussi la sortie du programme avec les résultats demandés (les valeur et
solution optimales de la relaxation linéaire, de même que les valeur et solution optimales en
nombres entiers). Les variables qui ne sont pas montrés à la sortie sont de valeurs nulles.

Figure 4.4 – Sortie du programme.

62
PRGHOTD
XVHVPP[SUV
XVHVPPV\VWHP
GHFODUDWLRQV
QY QRPEUHGHYDULDEOHV
QF QRPEUHGHFRQWUDLQWHV

9$56 QY
&2176 QF
$DUUD\ &21769$56 RILQWHJHU
EDUUD\ &2176 RILQWHJHU
FDUUD\ 9$56 RILQWHJHU

[DUUD\ 9$56 RIPSYDUYDULDEOHV


HQGGHFODUDWLRQV

/HFWXUHGHVGRQQHHVGXILFKLHUTGDW
LQLWLDOL]DWLRQVIURP
TGDW

$EF
HQGLQLWLDOL]DWLRQV

2EMHFWLIPD[LPLVHUFRXWVWRWDX[
2EM VXP LLQ9$56  F L  [ L 

FRQWUDLQWHV
IRUDOO MLQ&2176 VXP LLQ9$56  $ ML [ L  E M

FRQWUDLQWHVG
LQWHJULWH
IRUDOO LLQ9$56 [ L LVBLQWHJHU
IRUDOO LLQ9$56 [ L ! 

$XEHVRLQLPSULPHUOHSUREOHPH
H[SRUWSURE 2EM
VHWSDUDP ;356BYHUERVH $FWLYHUDIILFKDJH
VHWSDUDP ;356B&87675$7(*< 'HVDFWLYHUOHVFRXSHV
VHWSDUDP ;356B+(85675$7(*< 'HVDFWLYHUOHVKHXULVWLTXHV
VHWSDUDP ;356B35(62/9( 'HVDFWLYHUOHSUHWUDLWHPHQW
VHWSDUDP ;356B12'(6(/(&7,21 ([SORUHUDYHFEHVWILUVW
VHWSDUDP ;356B0,35(/6723 3DVGHWROHUDQFH PHWKRGHH[DFWH
VHWSDUDP ;356B0,3/2* $IILFKHUDFKDTXHQRHXGVGHEUDQFKHPHQW
VHWSDUDP ;356B0,37+5($'6 1RPEUHGHSURFHVVHXUV

PD[LPL]H ;356B/,12EM 5HVRXGUHODUHOD[DWLRQOLQHDLUH

,PSULPHUODVROXWLRQ
ZULWHOQ ?Q9DOHXURSWLPDOH5/ JHWREMYDO?Q
ZULWHOQ 6ROXWLRQ
IRUDOO LLQ9$56_JHWVRO [ L ! GR
ZULWH [ L  JHWVRO [ L
HQGGR
ZULWHOQ 

PD[LPL]H 2EM 5HVRXGUHOHSUREOHPH

,PSULPHUODVROXWLRQ
ZULWHOQ ?Q9DOHXURSWLPDOH31( JHWREMYDO?Q
ZULWHOQ 6ROXWLRQ
IRUDOO LLQ9$56_JHWVRO [ L ! GR
ZULWH [ L  JHWVRO [ L
HQGGR
HQGPRGHO
b)

Soit P le polyèdre formé par la formulation initiale. Comme x3 = 5.7018, on peut définir
 
P1 = P {x3 ≤ 5} et P2 = P {x3 ≥ 5 + 1}.
Le problème de séparation pour trouver une inégalité disjonctive violée qui s’appuie sur
les décisions de branchement pouvant être imposées sur la variable x3 est donné par :

maximiser
π,π0 ,u1 ,v1 ,u2 ,v2
2.89717π(1) + 1.94344π(2) + 5.7018π(3) + 4.24422π(4) − π0 (4.27)
s. a.
π(1) + π(2) + π(3) + π(4) + π(5) + π(6) ≤ 1 (4.28)
6v2 (3) − 50u2 (1) − 45u2 (2) − 36u2 (3) − 24u2 (4) + π0 ≥ 0 (4.29)
−5v1 (3) − 50u1 (1) − 45u1 (2) − 36u1 (3) − 24u1 (4) + π0 ≥ 0 (4.30)
−4u2 (1) − 2u2 (2) + π(6) ≤ 0 (4.31)
−u2 (1) − 5u2 (2) − u2 (4) + π(5) ≤ 0 (4.32)
−7u2 (2) − u2 (3) − 2u2 (4) + π(4) ≤ 0 (4.33)
v2 (3) − 3u2 (1) − 2u2 (2) − 2u2 (3) + π(3) ≤ 0 (4.34)
−5u2 (1) − 2u2 (2) − 6u2 (3) − 5u2 (4) + π(2) ≤ 0 (4.35)
−8u2 (1) − 3u2 (3) − 2u2 (4) + π(1) ≤ 0 (4.36)
−4u1 (1) − 2u1 (2) + π(6) ≤ 0 (4.37)
−u1 (1) − 5u1 (2) − u1 (4) + π(5) ≤ 0 (4.38)
−7u1 (2) − u1 (3) − 2u1 (4) + π(4) ≤ 0 (4.39)
−v1 (3) − 3u1 (1) − 2u1 (2) − 2u1 (3) + π(3) ≤ 0 (4.40)
−5u1 (1) − 2u1 (2) − 6u1 (3) − 5u1 (4) + π(2) ≤ 0 (4.41)
−8u1 (1) − 3u1 (3) − 2u1 (4) + π(1) ≤ 0 (4.42)
u1 , v1 , u2 , v2 ≥ 0 (4.43)

Ce problème de séparation a été construit en appliquant la proposition 8.10 de Wolsey 1 .


c)

Nous avons utilisé le langage Mosel avec le solveur Xpress dont le code est affiché ci-
dessous. On met aussi des extraits de la résolution en mettant l’emphase sur la coupe dis-
jonctive obtenue.

1. Wolsey, L. A. (1998). Integer programming (Vol. 42). New York : Wiley, pag 131.

64
Comme solution, nous avons eu : π(1) = 0.236388, π(2) = 0.504648, π(3) = 0.0686144, π(4) =
0.19035, π0 = 2.82869. Cela nous donne la coupe suivante :

x(1)0.236388 + x(2)0.504648 + x(3)0.0686144 + x(4)0.19035 ≤ 2.82869, qui est violé par


la solution courante de la lettre a) par ≈ 0.036.

Le code est affiché ci-dessous.

65
PRGHOTE

XVHVPP[SUV
XVHVPPV\VWHP
GHFODUDWLRQV
QY QRPEUHGHYDULDEOHV
QF QRPEUHGHFRQWUDLQWHV

9$56 QY
&2176 QF
$DUUD\ &21769$56 RILQWHJHU
EDUUD\ &2176 RILQWHJHU
FDUUD\ 9$56 RILQWHJHU
DOSKDDUUD\ 9$56 RILQWHJHU
DOSKDBLQWHJHU

YBDUUD\ 9$56 RIPSYDUYDULDEOHVYGXSRO\HGUH
XBDUUD\ &2176 RIPSYDUYDULDEOHVXGXSRO\HGUH
YBDUUD\ 9$56 RIPSYDUYDULDEOHVYGXSRO\HGUH
XBDUUD\ &2176 RIPSYDUYDULDEOHVXGXSRO\HGUH
SLDUUD\ 9$56 RIPSYDUYDULDEOHVSL
SLBPSYDU
HQGGHFODUDWLRQV

/HFWXUHGHVGRQQHHVGXILFKLHUTGDW
LQLWLDOL]DWLRQVIURP
TEGDW

$EFDOSKDDOSKDB
HQGLQLWLDOL]DWLRQV

2EMHFWLIPD[LPLVHUFRXWVWRWDX[
2EM  SL   SL   SL   SL  SLB

FRQWUDLQWHV
IRUDOO MLQ9$56 SL M  VXP LLQ&2176  $ LM XB L DOSKD M YB M UHVWULFDRGHSLSDU
IRUDOO MLQ9$56 SL M  VXP LLQ&2176  $ LM XB L DOSKD M YB M UHVWULFDRGHSLSDU
SLB! VXP LLQ&2176  E L XB L DOSKDB YB  UHVWULFDRGHSLBSDUDSRO\HGUH
SLB! VXP LLQ&2176  E L XB L  DOSKDB YB  UHVWULFDRGHSLBSDUDSRO\HGUH

QRUPDOL]HWKHLQHTXDOLW\
VXP LLQ9$56 SL L  

FRQWUDLQWHVG
LQWHJULWH
IRUDOO LLQ9$56 YB L ! 
IRUDOO LLQ9$56 YB L ! 
IRUDOO LLQ&2176 XB L ! 
IRUDOO LLQ&2176 XB L ! 

$XEHVRLQLPSULPHUOHSUREOHPH
H[SRUWSURE 2EM
VHWSDUDP ;356BYHUERVH $FWLYHUDIILFKDJH
VHWSDUDP ;356B&87675$7(*< 'HVDFWLYHUOHVFRXSHV
VHWSDUDP ;356B+(85675$7(*< 'HVDFWLYHUOHVKHXULVWLTXHV
VHWSDUDP ;356B35(62/9( 'HVDFWLYHUOHSUHWUDLWHPHQW
VHWSDUDP ;356B12'(6(/(&7,21 ([SORUHUDYHFEHVWILUVW
VHWSDUDP ;356B0,35(/6723 3DVGHWROHUDQFH PHWKRGHH[DFWH
VHWSDUDP ;356B0,3/2* $IILFKHUDFKDTXHQRHXGVGHEUDQFKHPHQW
VHWSDUDP ;356B0,37+5($'6 1RPEUHGHSURFHVVHXUV

PD[LPL]H 2EM 5HVRXGUHODUHOD[DWLRQOLQHDLUH

,PSULPHUODVROXWLRQ
ZULWHOQ ?Q9DOHXURSWLPDOH JHWREMYDO?Q
ZULWHOQ 6ROXWLRQ
IRUDOO LLQ9$56_JHWVRO SL L ! GR
ZULWHOQ SL L  JHWVRO SL L
HQGGR
ZULWH SLB JHWVRO SLB
ZULWHOQ 
PRGHOTD
XVHVPP[SUV
XVHVPPV\VWHP

GHFODUDWLRQV
QY QRPEUHGHYDULDEOHV
QF QRPEUHGHFRQWUDLQWHV
9$56 QY
&2176 QF
$DUUD\ &21769$56 RILQWHJHU
EDUUD\ &2176 RILQWHJHU
FDUUD\ 9$56 RILQWHJHU

[DUUD\ 9$56 RIPSYDUYDULDEOHV


HQGGHFODUDWLRQV

/HFWXUHGHVGRQQHHVGXILFKLHUTGDW
LQLWLDOL]DWLRQVIURP
TGDW

$EF
HQGLQLWLDOL]DWLRQV

2EMHFWLIPD[LPLVHUFRXWVWRWDX[
2EM VXP LLQ9$56  F L  [ L 

FRQWUDLQWHV
IRUDOO MLQ&2176 VXP LLQ9$56  $ ML [ L  E M

FRQWUDLQWHVG
LQWHJULWH
IRUDOO LLQ9$56 [ L LVBLQWHJHU
IRUDOO LLQ9$56 [ L ! 

LQHJDOLWHYDOLGHWURXYpHQTEPRV
[  [  [  [   

$XEHVRLQLPSULPHUOHSUREOHPH
H[SRUWSURE 2EM
VHWSDUDP ;356BYHUERVH $FWLYHUDIILFKDJH
VHWSDUDP ;356B&87675$7(*< 'HVDFWLYHUOHVFRXSHV
VHWSDUDP ;356B+(85675$7(*< 'HVDFWLYHUOHVKHXULVWLTXHV
VHWSDUDP ;356B35(62/9( 'HVDFWLYHUOHSUHWUDLWHPHQW
VHWSDUDP ;356B12'(6(/(&7,21 ([SORUHUDYHFEHVWILUVW
VHWSDUDP ;356B0,35(/6723 3DVGHWROHUDQFH PHWKRGHH[DFWH
VHWSDUDP ;356B0,3/2* $IILFKHUDFKDTXHQRHXGVGHEUDQFKHPHQW
VHWSDUDP ;356B0,37+5($'6 1RPEUHGHSURFHVVHXUV
PD[LPL]H ;356B/,12EM 5HVRXGUHODUHOD[DWLRQOLQHDLUH

,PSULPHUODVROXWLRQ
ZULWHOQ ?Q9DOHXURSWLPDOH5/ JHWREMYDO?Q
ZULWHOQ 6ROXWLRQ
IRUDOO LLQ9$56_JHWVRO [ L ! GR
ZULWH [ L  JHWVRO [ L
HQGGR
ZULWHOQ 
PD[LPL]H 2EM 5HVRXGUHOHSUREOHPH

,PSULPHUODVROXWLRQ
ZULWHOQ ?Q9DOHXURSWLPDOH31( JHWREMYDO?Q
ZULWHOQ 6ROXWLRQ
IRUDOO LLQ9$56_JHWVRO [ L ! GR
ZULWH [ L  JHWVRO [ L
HQGGR
HQGPRGHO
Figure 4.5 – Sortie du programme.

69
Chapitre 5

Conclusions

Certaines stratégies de formulation ont été présentées et deux méthodes distinctes de


programmation de nombres entiers et de recherche combinatoire ont été vérifiées afin de
résoudre le problème de l’attribution automatisée de clés dans les réseaux de distribution.
Branch-and-Bound, avec une approche généraliste, qui nécessite essentiellement l’assem-
blage de tableaux de contraintes, mais garantit la solution optimale, a servi de guide à la
réponse d’une heuristique à usage spécial, l’algorithme génétique. Ce dernier nécessite un
plus grand ajustement des paramètres, et la connaissance du problème pour formuler la fonc-
tion d’aptitude et le jugement de la convergence de l’algorithme permettent cependant, une
fois ajustés, de trouver la solution optimale, ou d’autres solutions très proches de l’optimum,
avec efficacité. Toutefois, si l’utilisateur ne dispose pas de packages informatiques avec ces
méthodes, la mise en œuvre d’un AG est beaucoup plus rapide et simple.

70
Buy your books fast and straightforward online - at one of world’s
fastest growing online book stores! Environmentally sound due to
Print-on-Demand technologies.
Buy your books online at
www.morebooks.shop
Achetez vos livres en ligne, vite et bien, sur l'une des librairies en
ligne les plus performantes au monde!
En protégeant nos ressources et notre environnement grâce à
l'impression à la demande.
La librairie en ligne pour acheter plus vite
www.morebooks.shop
KS OmniScriptum Publishing
Brivibas gatve 197
LV-1039 Riga, Latvia info@omniscriptum.com
Telefax: +371 686 204 55 www.omniscriptum.com

Vous aimerez peut-être aussi