Vous êtes sur la page 1sur 37

Problème

 de  Transport  
 
 
Analysons  cet  exemple  de  distribution.  
 
 
Nous  Avons  3  Usines  (Sources)  et  4  Clients  (Destinations)  
• Les  usines  1,  2  et  3    possèdent  un  stock  de    700,  900  et  1600  
Unités  respectivement  
• Les  clients  A,  B,  C  et  D  commandent  800,  500,  600    et  1300  
Unités  respectivement  
• Le  coût  de  transport  unitaire  de  chacune  des  sources  vers  
chacune  des  destinations  est  donné  dans  le  tableau  suivant  :  
 
 
  A   B   C   D   Stock  
1   4   6   8   3   700  
2   5   5   7   4   900  
3   2   3   11   9   1600  
Commande   800   500   600   1300    
 
 
Question  
 
De  quelle  manière  devons  nous  servir  l’ensemble  des  clients  
afin  de  minimiser  le  coût  de  transport  total  ?  
   
De  manière  générale  on  a  :  
 
• N  Sources  
• M  Destinations  
• Chaque  Source  produit  Ai  unités  1<  =  i  <=  N  
• Chaque  Destination  commande  Bj  unités  1  <=  j  <=  M  
• Le  coût  de  transport  unitaire  de  la  source  i  à  la  destination  j  
est  donné  dans  la  matrice  des  coûts  Cij.  
 
 
 
 
Formulation  Mathématique  
 
 
Notons  par  :       Xij  
 
La  quantité  de  produit  servie  par  la  source  i  à  la  destination  j  
 
 
Que    vaut  :  
 
!
• La  production  Totale      = !!! 𝐴𝑖  
 
!
• La  Commande  Totale      = !!! 𝐵𝑗  
 
! !
• Le  coût  de  transport  total   = !!! !!! 𝐶𝑖𝑗 ∗ 𝑋𝑖𝑗  
 
!
• La  quantité  reçue  par  le  client  j    = !!! 𝑋𝑖𝑗  
 
!
• La  quantité  servie  par  la  source  i    = !!! 𝑋𝑖𝑗  
 
Formulation  Mathématique  
 
! !

𝑀𝑖𝑛   𝐶𝑖𝑗 ∗ 𝑋𝑖𝑗  


!!! !!!
!

𝑋𝑖𝑗   = 𝐵𝑗              1 ≤ 𝑗 ≤ 𝑀  
!!!
!

𝑋𝑖𝑗   ≤ 𝐴𝑖              1 ≤ 𝑖 ≤ 𝑁  
!!!
𝑋𝑖𝑗 ≥ 0  
 
Problème  de  Programmation  Linéaire  
 
Hypothèse  
! !

𝐴𝑖 =   𝐵𝑗  
!!! !!!
 
! !

𝑀𝑖𝑛   𝐶𝑖𝑗 ∗ 𝑋𝑖𝑗  


!!! !!!
!

𝑋𝑖𝑗 = 𝐴𝑖              1 ≤ 𝑖 ≤ 𝑁  
!!!
!

𝑋𝑖𝑗   = 𝐵𝑗              1 ≤ 𝑗 ≤ 𝑀  
!!!
𝑋𝑖𝑗 ≥ 0  
Problème  de  Transport  
 
 
 
Contraintes  sous  forme  de  Tableau  
  X11   X12   X13   X14   X21   X22   X23   X24   X31   X32   X33   X34    

1   1   1   1                   700  
Sources  

        1   1   1   1           900  

                1   1   1   1   1600  

1         1         1         800  
Destinations  

  1         1         1       500  

    1         1         1     600  

      1         1         1   1300  

 
 
 
Algorithme  de  Transport  
 
 
1. Vérification  de  L’Hypothèse  
 
  A   B   C   D   Sources  
       

1   4   6   8   3   700  
       

2   5   5   7     4   900  
       

3   2   3   11   9   1600  

Destinations   800   500   600   1300   3200  

 
 
 
2. Tableau  Initial  
 
  A   B   C   D   Sources  
     

1   4   6   8   700   3   700  
   

2   300   5   5   7     600   4   900  


 

3   500   2   500   3   600   11   9   1600  

Destinations   800   500   600   1300   3200  

 
X0  =  3*700  +  5*300  +  4*600  +  2*500  +  3*500  +  11*600  
X0  =  15100  
 
3. Nombre  de  Variables  de  Base    
N+M-­‐1  
 
4. Calcul  des  coûts  réduits  Par  La  méthode  
des  θ  :  
 
  A   B   C   D   Sources  

1   0   4   1   6   -­‐5   8   700   3   700  

2   300     5   -­‐1   5   -­‐7     7     600   4   900  


-­‐θ   θ    
3   500   2   500   3   600     11   8   9   1600  
θ     -­‐θ    
Destinations   800   500   600   1300   3200  

Les  variables  candidates  à  devenir  Hors  base  sont  celles  


correspondantes  aux  cases  contenant  –  θ  
𝑅 =  𝑀𝑖𝑛   300, 600  
X0  =  X0    +    (  7  –  5  +  2  –  11  )  *  θ  
X0  =  X0    -­‐  7  *  R  
 
 
 
  A   B   C   D   Sources  
     

1   4   6   8   700   3   700  
   

2   5   5   300   7     600   4   900  


 

3   800   2   500   3   300   11   9   1600  

Destinations   800   500   600   1300   3200  

 
 
 
5. Calcul  des  coûts  réduits  Par  La  méthode  
des  θ  :  
  A   B   C   D   Sources  

1   7   4   8   6   2   8   700   3   700  

2   7   5   6   5   300   7     600   4   900  

3   800   2   500   3   300   11   1   9   1600  

Destinations   800   500   600   1300   3200  

 
 
Tous  les  coûts  réduits  sont  positifs  ou  nuls  donc  le  tableau  en  
cours  est  un  tableau  final.  
 
 
Le  client  A  sera  servi  par  la  source  3  de  800  Unités  
Le  client  B  sera  servi  par  la  source  3  de  500  Unités  
Le  client  C  sera  servi  par  les  sources  2  et  3  de  la  quantité  300  
et  300  unités  
Le  client  D  sera  servi  des  sources  1  et  2  des  quantités  700  et  
600  unités  
   
X0  =  15  100      +  300    *    (  -­‐  7  )  =  13  000  
 
 
 
Question  
 
Comment  Eviter  le  Calcul  des  coûts  réduits  
Par  La  méthode  des  θ  ?  
 
 
 
 
 
Résolution  par  la  méthode  Duale  
 
 
Le  dual  du  problème  de  transport    
 
! !

𝑀𝑖𝑛   𝐶𝑖𝑗 ∗ 𝑋𝑖𝑗  


!!! !!!
!

𝑋𝑖𝑗 = 𝐴𝑖              1 ≤ 𝑖 ≤ 𝑁  
!!!
!

𝑋𝑖𝑗   = 𝐵𝑗              1 ≤ 𝑗 ≤ 𝑀  
!!!
𝑋𝑖𝑗 ≥ 0  
 
 
 

est  :  
 
 
! !

𝑀𝑎𝑥   𝑉𝑖 ∗ 𝐴𝑖 +   𝑊𝑗 ∗ 𝐵𝑗  
!!! !!!
𝑉𝑖 + 𝑊𝑗 ≤ 𝐶𝑖𝑗          1 ≤ 𝑖 ≤ 𝑁, 1 ≤ 𝑗 ≤ 𝑀  
 
𝑉𝑖, 𝑊𝑗  𝐿𝑖𝑏𝑟𝑒𝑠  
 
 
Les  Variables  d’écarts    
Zij  de      
𝑉𝑖 + 𝑊𝑗 + 𝑍𝑖𝑗 =  𝐶𝑖𝑗          1 ≤ 𝑖 ≤ 𝑁, 1 ≤ 𝑗 ≤ 𝑀  
Sont  en  bijection  avec  les  variables    
Xij  
 
 
 
Remarque  
 
Si  Xij  est  une  variable  de  Base,  sa  correspondante  Zij  est  alors  
Hors  base,  et  vaut  donc  Zéro.  
L’équation  :    
𝑉𝑖 + 𝑊𝑗 + 𝑍𝑖𝑗 =  𝐶𝑖𝑗    
Devient  
𝑉𝑖 + 𝑊𝑗 =  𝐶𝑖𝑗    
 
Les  inconnues  (N  +  M)  de  ce  système  sont  :  les  Vi  1<=i<=N,  et  les  
Wj  1<=  j<=  M.  
Le  nombre  de  Variables  de  Base  dans  le  problème  Primal  est  de  :    
(N  +  M  –  1).    
Si  on  fixe  V1  =  0,  on  aura  un  système  de  N+M-­‐1  équations  à  N+M-­‐1  
inconnues,  à  partir  duquel  on  peut  connaître  tous  les  Vi  et  les  Wj.  
 
Si  par  contre  Xij  est  Hors  base  comment  calculer  son  coût  
réduit  ?  
Il  suffit  de  calculer  la  valeur  de  sa  correspondante  Zij  qui  est  
alors  une  variable  de  base,  en  utilisant  l’équation  :  
 
𝑍𝑖𝑗 =  𝐶𝑖𝑗  -­‐  Vi  –  Wj  
 
Application  
  A   B   C   D   Sources  
W1=   W2=   W3=   W4=  
     

1   4   6   8   700   3   700  
V1=0  
   

2   300   5   5   7     600   4   900  


V2=  
 

3   500   2   500   3   600   11   9   1600  


V3=  
Destinations   800   500   600   1300   3200  

 
 
Calcul  des  Coûts  réduits  
  A   B   C   D   Sources  
W1=4   W2=5   W3=13   W4=3  
1   0   4   1   6   -­‐5   8   700   3   700  
V1=0  
2   300   5   -­‐1   5   -­‐7   7     600   4   900  
V2=1  
3   500   2   500   3   600   11   8   9   1600  
V3=-­‐2  
Destinations   800   500   600   1300   3200  

 
 
Remarques  
 
1.  Si  au  cours  des  itérations  une  ou  plusieurs    cases  
contenant  (  –  θ    )  sont  toutes  égales  à  R,  alors  une  
seule  sortira  de  la  base  et  les  autres  resteront  avec  une  
valeur  égale  à  Zéro.  
! !
2. Si  l’hypothèse   !!! 𝐴𝑖 =   !!! 𝐵𝑗  n’est  pas  
vérifiée,  alors    
! !
a. 1er  Cas  :   !!! 𝐴𝑖 >   !!! 𝐵𝑗    
Dans  ce  cas  on  crée  un  client  Fictif  qui  
commandera  la  différence.    
Le  coût  de  transport  unitaire  de  chacune  des  
sources  vers  ce  client  fictif  sera  nul.    
! !
b. 2ème  Cas  :   !!! 𝐴𝑖 <   !!! 𝐵𝑗    
Dans  ce  cas  on  crée  une  source  Fictive  qui  
produira  la  différence.    
Le  coût  de  transport  unitaire  de  la  source  Fictive  
vers  chacun  des  clients  sera  d’autant  plus  élevé  
qu’est  la  qualité  de  ce  client.    
Exercice  
 
Année     1er     2ème   3ème   4ème  
2014   Trimestre   Trimestre   Trimestre   Trimestre  
Demande  
24   18   36   44  
Clients  
Capacité  
Temps   20   16   20   24  
Normal  
Capacité  
16   12   10   8  
Temps  sup  
 
• Les  Produits  fabriqués  en  Temps  Normal  ont  un  prix  de  revient  de  20.  
• Les  Produits  fabriqués  en  Temps  Supplémentaire  ont  un  prix  de  
revient  de  30.  
• Les  produits  fabriqués  le  trimestre  N  livrés  aux  clients  le  trimestre  
N+k,  engendrent  un  coût  supplémentaire  de  stockage  de  :  2*k  
 
Quel  est  le  plan  de  fabrication,  qui  répond  aux  demandes  des  clients  
et    qui  minimise  le  coût  de  revient  total  ?  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Problème  d’affectation  
 
Le  problème  d’affectation  est  un  cas  particulier  du  problème  de  
transport.  
Dans  un  problème  d’affectation  il  y  a  :  
• Autant  de  sources  que  de  destinations.  (N  =  M)  
• Chaque  source  produit  une  unité  et  une  seule  (  Ai  =  1)  
• Chaque  destination  commande  une  unité  et  une  seule    
(  Bj  =  1)  
 
Formulation  Mathématique  
 
 
! !

𝑀𝑖𝑛   𝐶𝑖𝑗 ∗ 𝑋𝑖𝑗  


!!! !!!
!

𝑋𝑖𝑗 = 1              1 ≤ 𝑖 ≤ 𝑁  
!!!
!

𝑋𝑖𝑗   = 1              1 ≤ 𝑗 ≤ 𝑁  
!!!
𝑋𝑖𝑗 ≥ 0  
 
Problème  de  Programmation  Linéaire  
 
 
 
 
 
 
 
 
Exercice  
 
Une  compagnie  désire  installer  des  photocopieuses  nouvellement  
achetées.  Elle  dispose  de  4  bureaux  et  de  3  Photocopieuses.  
Les  frais  d’aménagements  pour  installer  chacune  des  
photocopieuses  dans  chacun  des  bureaux  sont  donnés  par  la  
matrice  des  coûts  suivante  :  
 
  1   2   3   4  
A   65   50   60   55  
B   65   Impossible   75   100  
C   25   35   50   30  
 
Sachant  qu’un  Bureau  ne  peux  pas  disposer  de  plus  d’une  
Photocopieuse,  de  quelle  manière  devons  nous  les  installer  pour  
minimiser  les  frais  d’aménagements.    
 
Remarque  
• Nous  devons  affecter  chacune  des  photocopieuses  à  un  
bureau  :    ceci  est  un  problème  d’affectation.  
• Dans  ce  Problème  nous  disposons  de  3  Photocopieuses  
(Sources)  et  4  Bureaux  (Destinations).    
 
• Créons  une  Photocopieuse  Fictive.    
Les  Frais  d’aménagement  associés  à  l’installation  de  la  
Photocopieuse  Fictive  sont  nuls.  
 
  1   2   3   4  
A   65   50   60   55  
B   65   M   75   100  
C   25   35   50   30  
F   0   0   0   0  
 
 
 
 
 
Présentation  de  la  méthode  Hongroise  
 
Etape  1  :  Réduction  de  la  Matrice  M  
Dans  cette  étape  on  cherche  BI  le  coût  d’une    Borne  Inferieur  à  
toute  solution  possible.  Ceci  est  fait  en  réduisant  la  Matrice  en  
ligne  puis  en  Colonne  de  la  manière  suivante  :  
 
Réduction  En  Ligne  
  1   2   3   4   Min  
A   65   50   60   55   50  
B   65   M   75   100   65  
C   25   35   50   30   25  
F   0   0   0   0   0  
BI  =  50  +  65  +  25  +  0  
 
Matrice  réduite  en  ligne  
  1   2   3   4  
A   15   0   10   5  
B   0   M   10   35  
C   0   10   25   5  
F   0   0   0   0  
 
  Réduction  En  Colonne  
  1   2   3   4  
A   15   0   10   5  
B   0   M   10   35  
C   0   10   25   5  
F   0   0   0   0  
Min   0   0   0   0  
BI  =  BI  +  0  +  0  +  0  +  0  
 
 
 
 
 
Matrice  réduite  
BI  =  140  
  1   2   3   4  
A   15   0   10   5  
B   0   M   10   35  
C   0   10   25   5  
F   0   0   0   0  
 
Etape  2  :  Recherche  d’une  solution  coutant  BI  
• On  commence  par  la  1ère  ligne  contenant  le  minimum  de  
Zéro.  On  Encadre  un  de  ces  Zéros  et  on  Barre  tous  les  zéros  
se  trouvant  sur  la  même  ligne  ou  la  même  colonne  que  le  
zéro  encadré.  
• On  répète  ce  processus  pour  toutes  les  lignes  de  la  matrice.  
• Ensuite,  on  vérifie  l’existence  d’un  zéro  encadré  sur  toutes  
les  lignes  et  toutes  les  colonnes  de  la  matrice.    
o Si  ceci  existe,  cela  signifie  que  nous  avons  trouvé  une  
solution  au  problème  d’affectation,  son  coût  correspond  
à  la  borne  Inférieure  BI.  
o Sinon  cela  signifie  qu’il  n’existe  pas  de  solution  avec  un  
coût  inférieur  ou  égal  à  BI  et  on  passe  à  l’étape  3.  
 
Etape  3  :  Augmenter  BI  du  plus  petit  élément  non  nul  de  la  plus  
grande  sous  matrice  de  M  
Dans  cette  étape  on  cherche  à  éliminer  un  nombre  minimum  de  
lignes  et  de  colonnes  contenant  les  zéros  de  M.  Ainsi,  on  
obtiendra  la  plus  grande  sous  matrice  de  M  dont  aucun  élément  
n’est  nul.  
1. On  marque  d’une  croix  toutes  les  lignes  ne  contenant  pas  de  
zéro  encadré.  
2. On  marque  d’une  croix  toutes  les  colonnes  non  marquées  
contenant  un  zéro  (Barré)  sur  une  ligne  marquée.  
3. On  marque  d’une  croix  toutes  les  lignes  non  encore  
marquées,  contenant  un  zéro  encadré  sur  une  colonne  
marquée.  
4. Répéter  2  et  3  tant  que  nous  pouvons  encore  marquer.  
5. On  élimine  les  lignes  non  marquées  et  les  colonnes  
marquées.  
6. Les  cases  non  éliminées  représentent  la  plus  grande  sous  
matrice  de  M  dont  aucun  élément  n’est  nul.  
Dans  notre  cas    
 
1  
  2   3   4  

0  
A   15   10   5  
 
B   0  
M   10   35  
 
C  
10   25   5  
 

F         0  

Le  plus  petit  élément  de  la  sous  matrice  est  5    


BI  =  BI  +  5  
Le  soustraire  aux  éléments  de  la  sous  matrice  et  l’ajouter  à  
l’intersection  des  lignes  et  des  colonnes  éliminées  
 
  1   2   3   4  
A   20   0   10   5  
B   0   M   5   30  
C   0   5   20   0  
F   5   0   0   0  
 
Retour  à  l’étape  2  
Recherche  d’une  solution  coutant  BI  
 
  1   2   3   4  
A   20   0   10   5  
B   0     M  
  5   30  
C     5   20   0  

F   5     0  
   
   
Vérification  
A     è     2   è     50  
B     è     1   è     65  
C     è     4   è     30  
F     è     3   è      0  
 
Total  =  145  =  BI  
 
Matrice  Initiale  
  1   2   3   4  
A   65   50   60   55  
B   65   M   75   100  
C   25   35   50   30  
F   0   0   0   0  
 
Exercice  
  1   2   3   4   5  
A   20   25   10   15   30  
B   20   15   30   40   20  
C   40   35   20   30   50  
D   25   15   40   30   20  
E   20   15   10   15   20  
Problème  de  Voyageur  de  commerce  
 
Un  représentant  de  commerce  désire  visiter  N  villes,  sans  
répétitions,  à  l’exception  de  la  ville  de  départ  qui  est  aussi  
la  ville  d’arrivée.  
 
Trouvez  la  tournée  qui  minimise  la  distance  totale  
parcourue.  
 
Difficulté  du  problème  
• Nombre  de  parcours   :   (N  –  1)  !  
• Nombre  d’additions   :   N  !  
• Temps  d’exécution  nécessaire  pour  N  =  30    
30  !  *  10  -­‐5    Secondes  soit  :    
2,65253E+27  Secondes  ou  encore  8  *  1017  siècles  
 
Exemple  
Trouvons  le  parcours  le  plus  court  pour  visiter  les  villes  
A,B,C,D,E  et  F  .    
La  matrice  des  distances  entre  les  villes  est  :  
 
  A   B   C   D   E   F  
A   0   27   43   16   30   26  
B   7   0   16   1   30   25  
C   20   13   0   35   5   0  
D   21   16   25   0   18   18  
E   12   46   27   48   0   5  
F   23   5   5   9   5   0  
 
 
 
 
Algorithme  du  Voyageur  de  commerce  
 
Etape  1  
• Remplacer  les  Zéros  de  la  diagonale  de  la  matrice  des  
distances  M  par  l’  ∞  
  A   B   C   D   E   F  
A   ∞   27   43   16   30   26  
B   7   ∞   16   1   30   25  
C   20   13   ∞   35   5   0  
D   21   16   25   ∞   18   18  
E   12   46   27   48   ∞   5  
F   23   5   5   9   5   ∞  
• Réduire  la  matrice  M  et  calculer  BI  la  Borne  
Inferieure.  
  A   B   C   D   E   F   Min  
A   ∞   27   43   16   30   26   16  
B   7   ∞   16   1   30   25   1  
C   20   13   ∞   35   5   0   0  
D   21   16   25   ∞   18   18   16  
E   12   46   27   48   ∞   5   5  
F   23   5   5   9   5   ∞   5  
 
• BI  =  (  16  +  1  +  0  +  16  +  5  +  5  )  =  43  
 
 
 
 
  A   B   C   D   E   F  
A   ∞   11   27   0   14   10  
B   6   ∞   15   0   29   24    
     
C   20   13   ∞   35   5   0    
D   5   0   9   2   2    
∞    
E   7   41   22   43   ∞   0    
F   18   0   0   4   0              
∞    
Min   5   0   0   0   0   0  
• BI  =    BI  +  (  5  +  0  +  0  +  0  +  0  +  0  )  
• BI  =  48  
 
Matrice  Réduite  
  A   B   C   D   E   F    
 
A   ∞   11   27   0   14   10    
B   1   ∞   15   0   29   24    
 
C   15   13   ∞   35   5   0    
D   0   0   9   2   2    
∞    
E   2   41   22   43   ∞   0    
F   13   0   0   4   0    
∞    
 
Etape  2  
Soit  Ω l’ensemble de toutes les solutions  
Dans  cette  étape,  on  divise  Ω en deux sous ensembles S1 et
S2 complémentaires et disjoints ( S1 U S2 = Ω ) et
( S1 Π S2 = Φ ) tels que :
S1 contient très probablement la solution optimale et
donc
S2 exclue probablement la solution optimale.
1. Calculons  pour  toutes  les  cases  contenant  un  Zéro,  la  
pénalité  de  ne  pas  choisir  ce  Zéro.  

Θ(i,j) = Min ( Mik ) + Min ( Mkj)


k <> j k <> i

  A   B   C   D   E   F  
A   11   27   0  (10)   14   10    
∞  
 
B   1   ∞   15   0(1)   29   24  
 
C   15   13   ∞   35   5   0(5)  
 
D   0(1)   0(0)   9   ∞   2   2  
 
E   2   41   22   43   ∞   0(2)    
F   13   0(0)   0(9)   4   0(2)   ∞    
 

Θ(1,4) = 10
 
2. Choisir  le  Zéro  (i,j)  avec  la  plus  forte  pénalité  et  construire  
S1 comme  étant  le  sous  ensemble  de Ω incluant  le  
tronçon  (i,j).  
S2 comme  étant  le  sous  ensemble  de Ω excluant  le  tronçon  (i,j).  
 
La  borne  Inférieure  associée  à  S2 est  celle  de  Ω +  la  pénalité.  
 
 
48  

 
Ω  
 
58  
 
AD   AD  
 
3. Eliminer  la  ligne  i  et  la  colonne  j  associés  au  tronçon    AD  
Eliminer  les  Sous-­‐parcours  :  DA  =  ∞  
Enfin,    réduire  la  nouvelle  matrice.  
 

  A   B   C   D   E   F   Min  
A                
B   1   ∞   15     29   24   1  
C   15   13   ∞     5   0   0  
D   ∞   0   9     2   2   0  
E   2   41   22     ∞   0   0  
F   13   0   0     0   ∞  
 
Réduction  en  colonne  

  A   B   C   D   E   F  
A              
B   0   ∞   14     28   23  
C   15   13   ∞     5   0  
D   ∞   0   9     2   2  
E   2   41   22     ∞   0  
F   13   0   0     0   ∞  
Min   0   0   0     0   0
 
 
  49  
AD  
 
 
 

  A   B   C   D   E   F  
A              
B   0   ∞   14     28   23  
C   15   13   ∞     5   0  
D   ∞   0   9     2   2  
E   2   41   22     ∞   0  
F   13   0   0     0   ∞  
 
Répéter  ce  processus  jusqu’à  atteindre  une  matrice  2x2  
 

  A   B   C   D   E   F  
A              
B   0(16)   ∞   14     28   23  
C   15   13   ∞     5   0(5)  
D   ∞   0(2)   9     2   2  
E   2   41   22     ∞   0(2)  
F   13   0(0)   0(9)     0(2)   ∞  
D’où  le  choix  de  (B,A)  
 
49  
 
49+16=65   AD  
 
  BA   BA  
 
 
Sous  Parcours   :       B  è  A  è  D     =>     DB  =  ∞
Nouvelle  Matrice  avant  Réduction  

  A   B   C   D   E   F   Min  
A                
B                
C     13   ∞     5   0   0  
D     ∞   9     2   2   2  
E     41   22     ∞   0   0  
F     0   0     0   ∞   0
 
Nouvelle  Matrice  après  Réduction  

  A   B   C   D   E   F  
A              
B              
C     13   ∞     5   0  
D     ∞   7     0   0  
E     41   22     ∞   0  
F     0   0     0   ∞  
 
 
 
 
 
 
 

  A   B   C   D   E   F  
A              
B              
C     13   ∞     5   0(5)  
D     ∞   7     0(0)   0(0)  
E     41   22     ∞   0(22)  
F     0(13)   0(7)     0(0)   ∞  
 
D’où  le  choix  de  (E,F)  
 
Sous  Parcours   :       B  è  A  è  D      
E    è    F   =>     FE  =  ∞

  A   B   C   D   E   F  
A              
B              
C     13   ∞     5    
D     ∞   7     0    
E              
F     0   0     ∞    

 
51  
  BA  

51+22=73   51+5=56  
 
EF   EF  
Réduction  

  A   B   C   D   E   F   Min  
A                
B                
C     13   ∞     5     5  
D     ∞   7     0     0  
E                
F     0   0     ∞     0  
Pénalités  

  A   B   C   D   E   F  
A              
B              
C     8   ∞     0(8)    
D     ∞   7     0(7)    
E              
F     0(8)   0(7)     ∞    
Choisir     :   C,E  
Sous  Parcours   :       B  è  A  è  D      
C    è    E    è    F   =>     FC  =  ∞

  A   B   C   D   E   F  
A              
B              
C              
D     ∞   7        
E              
F     0   ∞        

Réduction  

  A   B   C   D   E   F  
A              
B              
C              
D     ∞   0        
E              
F     0   ∞        
 
56+7=63  
  EF  
 
 
Arrivé  à  une  matrice  2x2  on  prend  les  Zéros  :  (D,C)  et  (F,B)  
 

4. Construire  la  solution  trouvée  :  


A,D  –  B,A  –  E,F  –  C,E  -­‐  D,C  –  F,B  
Avec  un  coût  de  63  
5. Eliminer  tous  les  nœuds  dont  la  borne  inferieure  est  supérieure  ou  
égale  au  coût  actuel.  
6. Retrouver  la  matrice  correspondante  au  nœud  ayant  la  plus  petite  
borne  inferieure.  
a. Eliminer  toutes  les  lignes  et  les  colonnes  correspondantes  
aux  tronçons  pris  
b. Eliminer  tous  les  sous  parcours  
c. Réduire  la  matrice  
 
 
Arbre  
 
48  
v  
 
Ω  
 
 
 
  58   49  

 
AD     AD  
 
 
  65   51  

 
  BA   BA  
 
  56  
73  
 
  EF  
EF  
 
 
 
  64   63  

 
 
CE   CE  
 
 
63  
  Infini  

  DC  
  DC  
FB  
  FB  
   
 
 
 
 
 
 
 
 
 
 
 
 
Matrice  AD(Barre)  
 
  A   B   C   D   E   F   Min  
A   ∞   11   27   ∞   14   10   10  
B   1   ∞   15   0   29   24   0  
C   15   13   ∞   35   5   0   0  
D   0   0   9   ∞   2   2   0  
E   2   41   22   43   ∞   0   0  
F   13   0   0   4   0   ∞   0
 
 
Matrice  Réduite  
 
  A   B   C   D   E   F    
 
A   ∞   1   17   ∞   4   0(1)    
 
B   1   ∞   15   0(5)   29   24    
 
C   15   13   ∞   35   5   0    
 
D   0(1)   0(0)   9   ∞   2   2    
 
E   2   41   22   43   ∞   0(2)    
 
F   13   0(0)   0(9)   4   0(2)   ∞    
 
 
  58  
 
AD  
Choisir  :  F,C   67  
 
 
FC   FC  
 
 
 
 
 
Sous  Parcours  :  FC  
  A   B   C   D   E   F   Min  
A   ∞   1     ∞   4   0   0  
B   1   ∞     0   29   24   0  
C   15   13     35   5   ∞   5
D   0   0     ∞   2   2   0  
E   2   41     43   ∞   0   0  
F                
 
 
Réduction  
 
  A   B   C   D   E   F    
A   1     4   0    
∞   ∞  
 
B   1   ∞     0   29   24  
 
C   10   8     30   0   ∞    
D   0   0     2   2    
∞    
E   2   41     43   ∞   0    
F                
 
 
FC  possède  une  borne  Inferieure  >=  63  le  coût  de  la  
solution  déjà  trouvée.  
 
  58+5=63  
 
FC    
Conclusion    
 
La  solution  en  cours  «  a  un  coût  de  63  »    est  la  meilleure  
solution.  
 
Remarque  
 
  Cet  Algorithme  porte  le  nom  de  :  Branch  and  Bound  
Son  but  est  de  trouver  la  meilleure  solution.  
Il  est  utilisé  dans  des  problèmes  de  complexité  non  
polynomiale.  
 
Un  Algorithme  Heuristique  a  pour  but  de  trouver  une  
solution  proche  de  la  solution  optimale  en  des  temps  
réduits  (Polynomiaux).  
   
  La  présentation  faite  correspond  à  un  algorithme  
hybride  mixant  l’heuristique  et  le  Branch  and  Bound.      
 
 
Exercice  
 
Trouver  la  solution  du  problème  de  voyageur  de  
commerce  associé  à  la  matrice  suivante  :  
 
  A   B   C   D   E   F  
A     60   52   23   55   54  
B   24     58   60   16   49  
C   23   11     27   52   34  
D   44   40   29     37   12  
E   8   38   15   7     52  
F   55   48   11   54   9    
Algorithme  de  Floyd-­‐Murchland  
 
Etant  donné  un  réseau  R,  on  souhaite  trouver  la  distance  
minimale  et  le  chemin  associé  entre  tout  nœud  i  et  tout  
nœud  j  de  ce  réseau.  
 
Exemple  
 

 
 
 
 
Cet  Algorithme  se  base  sur  deux  matrices  :    
• Une  matrice  D  des  distances  et    
• une  matrice  C  des  chemins  
 
 
 
Initialisation  
 
    Dist(i,j)     si    (i,j)  Appartient  au  Réseau      
 
D  =      0         si  i  =  j  
 
    Infini     sinon    
 
 
    j     si    (i,j)  Appartient  au  Réseau      
C  =        
*     sinon  
 
 
 
 
(i)                   (j)  
 
 
 
 
        (k)  
 
 
Cij(k)   est  le  1er  nœud  à  visiter  pour  réaliser  
le  tronçon  i  è  j  en  la  distance  Dij(k)  
 
 
Algorithme  
 
Pour  K  :=  1  à  N  faire    
Pour  I    :=  1  à  N  faire  
Pour  J  :=    1  à  N  faire  
 
Si  Dij(k-­‐1)      <=      Dik(k-­‐1)  +  Dkj(k-­‐1)  Alors  
Dij(k)   =   Dij(k-­‐1)  
Cij(k)     =     Cij(k-­‐1)  
Sinon    
Dij(k)   =   Dik(k-­‐1)  +  Dkj(k-­‐1)  
Cij(k)     =     Cik(k-­‐1)  
 
 
 
 
 
 
Remarque  
 
Dij(N)   donne  la  distance  minimale  entre  
i  et  j.  
 
Cij(N)  indique  le  premier  nœud  après  i  à  
visiter  pour  faire  le  tronçon  i  è  j  en  
Dij(N)  
 
D’où  le  tronçon  total  de  i  à  j  :  
 
(i)     è   r=C (N)     è   s=
Crj(N)     è   t=
Caj(N)    
ij
 
…   è   (j)  

 
 
 
 
 
 
 
 
Algorithme  de  Ford  –  Fulkerson  
 

Maximiser    𝐹 = 𝑁
𝑗=1 𝑋 𝑗𝑁  

Sujet  aux  contraintes  de  capacité  :    


0  <=  Xij  <=  Sij  
et  aux  contraintes  de  conservation  des  flots  :  
!  =   ! 𝑋𝑗𝑖  
!!! 𝑋 𝑖𝑗 !!!
 

2<=i<=N  
 
Algorithme  
 
1. Xij  =  0  pour  tous  les  arcs  (i,j)  du  
réseau  R  
2. Attribuer  la  marque  (*,  ∞)  au  nœud  
(1)  
3. Choisir  un  sommet    i  qui  possède  
déjà  une  marque  (k,  αi)  et  marquer  un  
sommet  j    sans  marque  par    (i,  αj)    
ssi    (  rij  >  0  )  où  :    
 
rij          =      Sij  -­‐  Xij       si  (  i,  j)  appartient  à  R  
 Xji        si  (  j,  i)  appartient  à  R  
et  dans  ce  cas  αj  =  Min(αi,  rij)  
 
4. continuer  jusqu’à  ce  que  N  soit  
marqué  ou  qu’il  ne  soit  plus  possible  de  
le  marquer.    
• S’il  n’est  plus  possible  de  le  marquer  
alors  le  système  des  valeurs  Xij  
représente  le  flot  maximum.  
• Sinon  on  modifie  le  flot  Xij  de  la  
manière  suivante  :    
 
5. Partant  de  N,  on  détermine  les  
sommets  qui  acheminent  le  flot  αN  de  1  
vers  N  et  pour  ces  sommets  :    
 
• on  augmente  le  flot  Xij  de  ces  sommets  
de  αN  pour  tous  les  arcs  (i,j)  appartenant  
au  réseau  et    
 
• on  diminue  le  flot  Xji  de  ces  sommets de
αN  pour  tous  les  arcs  (j,i)  appartenant  au  
réseau