SlideShare une entreprise Scribd logo
Cours 9 : programmation linéaire
      (recherche opérationnelle)                             C. JARD
                                                             Cours ALGO1
                                                             MMI+MIT
                                                             2007-2008


•   1. Exemple introductif
•   2. La méthode du simplexe
•   3. Dictionnaires
•   4. Algorithme



                                                                     1




            1. Introduction : la raffinerie
• Production optimale d’une raffinerie produisant 4 produits
  finis (essence, kérosène, mazout et résidu) à partir de deux
  types de pétrole brut (brut1 et brut2), avec les paramètres
  suivants :
                                              Rendement(%)   Production
            Produit    $/baril                Brut1, Brut2   maximale
                                                             (baril/jour)

                                 Essence      80, 44         24000
    Achat   Brut1      24        Kérosène     5, 10          2000
            Brut2      15        Mazout       10, 36         6000
                                 Résidu       5, 10
    Vente   Essence    36
            Kérosène   24
            Mazout     21        Cout de      0.5, 1
            Résidu     10        production
                                 ($/baril)

                                                                     2




                                                                            1
Le modèle mathématique


•   Les variables de décision (l’information recherchée) :
    p1, p2 : nombre de barils/jour de Brut1 et 2 raffinés
    x1, …, x4 : nombre de barils/jour obtenus pour chaque produit
•   Les contraintes sur ces variables :
    0.80p1+0.44p2=x1
    0.05p1+0.10p2=x2
    0.10p1+0.36p2=x3
    0.05p1+0.10p2=x4
    x1 ≤ 24000, x2 ≤ 2000, x3 ≤ 6000, p1,p2 ≥ 0
•   L’objectif (maximisation sous contraintes du profit = vente - achat -
    coût de production) :
    max (36x1+24x2+21x3+10x4-24p1-15p2-0.5p1-1p2)



                                                                       3




       Simplification par élimination de variables



• max (8.1p1 + 10.8p2) sous contraintes :
  0.80p1 + 0.44p2 ≤ 24000
  0.05p1 + 0.10p2 ≤ 2000
  0.10p1 + 0.36p2 ≤ 6000
  p1,p2 ≥ 0

• Forme standard (on peut toujours s’y ramener) :

    max ∑j=1,n cjxj
    sous contraintes ∑j=1,n aijxj ≤ bi (1≤i≤m)
                     xj ≥ 0 (1≤j≤n)


                                                                       4




                                                                            2
•   Une solution (x1,…,xn) est réalisable si elle satisfait à toutes les
    contraintes
•   Elle est optimale si elle est réalisable et si elle maximise l’objectif
    (pas nécessairement unique)
•   Il n’existe pas forcément de solution optimale (soit il n’existe pas de
    solution réalisable, soit il n’existe pas de valeur optimale finie) :
           max x1-x2
           sous contraintes :
           -2x1 + x2 ≤ -1
           -x1 -2x2 ≤ -2
           x1, x2 ≥ 0
    (il existe des solutions réalisables : 1,1 ; 5,0 mais on peut toujours
    trouver une solution meilleure)


                                                                        5




     2. La méthode du simplexe
     (Dantzig 1955) -> points intérieurs

•   Idée 1 : rajouter des variables d’écarts pour se ramener à des
    équations linéaires.

•   Exemple : max z = 5x1 + 4x2 + 3x3 s.c.
                 2x1 + 3x2 + x3 ≤ 5
                 4x1 + x2 + 2x3 ≤ 11
                 3x1 + 4x2 + 2x3 ≤ 8
                 x1, x2, x3 ≥ 0

•   max z = 5x1 + 4x2 + 3x3 s.c.
         x4 = 5 - 2x1 - 3x2 - x3
         x5 = 11 - 4x1 - x2 - 2x3
         x6 = 8 - 3x1 - 4x2 - 2x3
         x1, x2, x3, x4, x5, x6 ≥ 0
                                                                        6




                                                                              3
Itération

• Idée 2 : d’une solution réalisable (x1, …, x6) trouver une autre
  réalisable (x’1, … x’6) meilleure, i.e.
       5x1 + 4x2 + 3x3 < 5x’1 + 4x’2 + 3x’3
• Première solution réalisable :
       x1 = x2 = x3 = 0, x4 = 5, x5 = 11, x6 = 8, objectif z = 0
• Amélioration par augmentation de l’objectif (d’une variable de
  décision x1, x2 ou x3). Choisissons x1 par exemple (z = 5x1) :
   – x1 = 1 => x4 = 3, x5 = 7, x6 = 5, z = 5
   – x1 = 2 => x4 = 1, x5 = 3, x6 = 2, z = 10
   – x1 = 3 => x4 = -1, x5 = -1, x6 = -1 non réalisable
• Jusqu’où augmenter ?
   – x4 ≥ 0 => x1 ≤ 5/2, x5 ≥ 0 => x1 ≤ 11/4, x6 ≥ 0 => x1 ≤ 8/3
   – On prend la plus contraignante (x1 = 5/2)


                                                                   7




• x1 = 5/2, x2 = 0, x3 = 0 => x4 = 0, x5 = 1, x6 = 1/2, z = 25/2
• On exprime les variables positives (x1, x5, x6) en fonction des
  variables nulles (x2, x3, x4) :
       x1 = 5/2 - 3/2 x2 - 1/2 x3 -1/2 x4
       x5 = 1 + 5x2 + 2x4
       x6 = 1/2 + 1/2 x2 -1/2 x3 + 3/2 x4
       z = 25/2 - 7/2 x2 + 1/2 x3 - 5/2 x4
• Solution courante z = 25/2. De l’expression de z, on voit que
  l’amélioration ne peut être obtenue que par l’augmentation de
  x3. x1, x6 ≥ 0 => (x3 ≤ 5) & (x3 ≤ 1). On prend donc x3 = 1 (x6
  prend la valeur 0).



                                                                   8




                                                                       4
• Les nouvelles variables non nulles sont x1, x5 et x3. On obtient
  le nouveau système :
       x1 = 2 - 2x2 - 2x4 + x6
       x5 = 1 + 5x2 + 2x4
       x3 = 1 + x2 + 3x4 - 2x6
       z = 13 - 3x2 - x4 - x6
• Solution courante :
       x1 = 2, x3 = 1, x5 = 1, x2 = 0, x4 = 0, x6 = 0, z = 13
• Quelle variable peut-on augmenter ? Aucune car une
  augmentation de x2, x4 ou x6 fait diminuer z. Cette solution est
  optimale.



                                                              9




                3. Dictionnaires

• Soit un PL sous forme standard :
       max z = ∑j=1,n cjxj
       s.c. ∑j=1,n aijxj ≤ bi (1≤i≤m)
                        xj ≥ 0 (1≤j≤n)
• On introduit les variables d’écarts xn+1, …, xn+m :
       xn+i = bi - ∑j=1,n aijxj (1≤i≤m)
       xj ≥ 0 (1≤j≤n+m)
• Chaque itération de l’algorithme du simplexe produit un
  système d’équations linéaires, appelé dictionnaire ; les
  équations expriment m variables et la variable z en fonction
  des n autres variables.
• Un dictionnaire est réalisable si en posant à 0 les variables
  droites, on obtient une solution réalisable
                                                             10




                                                                     5
•   Attention, il existe des solutions réalisables qui ne correspondent pas
    à un dictionnaire. Exemple : x1 = 1, x2 = 0, x3 = 1, x4 = 2, x5 = 5, x6 = 3 ;
    le simplexe ignore toutes les autres
•   Les variables gauches d’un dictionnaire sont les variables de base
•   Les variables droites sont les variables hors-base
•   A chaque itération, une variable entre dans la base et une variable
    sort de la base
•   Le choix de la variable à entrer est dicté par l’amélioration de
    l’objectif z
•   Le choix de la variable à sortir est dicté par le désir de conserver
    toutes les variables non négatives
•   On appelle pivotage le processus permettant de passer d’une
    dictionnaire à un autre (ou encore de passer d’une base à une autre)



                                                                           11




                               Exemple

• max z = 5x1 + 5x2 + 3x3 s.c.
          x1 + 3x2 + x3 ≤ 3
          -x1 + 3x3 ≤ 2
          2x1 - x2 + 2x3 ≤ 4
          2x1 + 3x2 - x3 ≤ 2
          x1, x2, x3 ≥ 0
• Dictionnaire initial :
        x4 = 3 - x1 - 3x2 - x3
        x5 = 2 + x1 - 3x3
        x6 = 4 - 2x1 + x2 - 2x3
        x7 = 2 - 2x1 - 3x2 + x3
       z = 5x1 + 5x2 + 3x3
• Choix entrée x1

                                                                           12




                                                                                    6
•   Choix entrée x1 (x2 et x3 sont considérés à 0)
          x4 = 3 - x1 ≥ 0 => x1 ≤ 3
          x5 = 2 + x1 => x1 ≥ -2
          x6 = 4 - 2x1 => x1 ≤ 2
          x7 = 2 - 2x1 => x1 ≤ 1
•   Choix sortie x7 (pivot : utiliser sa ligne) : x1 = 1 - 3/2 x2 + 1/2 x3 -1/2 x7
•   Nouveau dictionnaire :
         x4 = 2 - 3/2 x2 - 3/2 x3 + 1/2 x7
         x5 = 3 - 3/2 x2 - 5/2 x3 - 1/2 x7
         x6 = 2 + 4x2 - 3x3 +x7
         x1 = 1 - 3/2 x2 + 1/2 x3 -1/2 x7
         z = 5 - 5/2 x2 + 11/2 x3 - 5/2 x7
•   Choix entrée x3 etc…
•   Lorsqu’il n’y a plus avantage à entrer une variable dans la base, on obtient
    une solution optimale : x1 = 32/29, x2 = 8/29, x3 = 30/29, pour z = 10


                                                                              13




         4. Algorithme du simplexe
• Résumé :
    – 1. Initialisation : former le dictionnaire (partir d’une base
      admissible)
    – 2. Chercher à effectuer un pivotage (itération) :
        • Si tous les coefficients des variables de la fonction objectif sont
          positifs alors il n’y a pas d’optimum fini, STOP
        • Si tous les coefficients des variables de la fonction objectif sont
          négatifs, l’optimum est atteint, STOP
        • Sinon, choix de la variable d’entrée, choix de la variable de sortie,
          pivotage


• Correction :
    – Le problème est la terminaison qui n’est pas garantie a priori.

    – Règle de Bland : lors d’un pivotage, la variable qui entre est celle
      d’indice minimal parmi celles qui peuvent rentrer, et la variable qui
      sort est celle d’indice minimal parmi celles qui peuvent sortir.
    – Proposition : le simplexe termine avec la règle de Bland

                                                                              14




                                                                                     7
Problème de l’initialisation

• Dictionnaire initial :
           xn+i = bi - ∑j=1,n aijxj (1≤i≤m)
           z = ∑j=1,n cjx j
•   Il n’est réalisable que si les bi sont non négatifs (le vecteur 0 est une solution
    initiale)
•   Sinon, on construit le programme auxilliaire suivant :
          min x0
          s.c. ∑j=1,n aijxj - x0 ≤ bi (1≤i≤m)
                               xj ≥ 0 (0≤j≤n)
•   Une solution réalisable est facile à obtenir pour ce problème
•   Le programme initial a une solution réalisable ssi ce problème a pour valeur
    optimale 0




                                                                                 15




                                Exemple

•   Problème initial : max z = x1 - x2 + x3 s.c.
          2x1 - x2 + 2x3 ≤ 4
          2x1 - 3x2 + x3 ≤ -5
          -x1 + x2 - 2x3 ≤ -1
          x 1 , x2 , x 3 ≥ 0
•   Dictionnaire initial non réalisable -> Problème auxilliaire : max z = - x0
    s.c.
          2x1 - x2 + 2x3 - x0 ≤ 4
          2x1 - 3x2 + x3 - x0 ≤ -5
          -x1 + x2 - 2x3 - x0 ≤ -1
           x0, x1, x2, x3 ≥ 0
•   Son dictionnaire initial :
          x4 = 4 - 2x1 + x2 - 2x3 + x0
          x5 = -5 - 2x1 + 3x2 - x3 + x0
          x6 = -1 + x1 - x2 + 2x3 + x0
          z = - x0
•   On rentre x0 dans la base et sort la variable la plus négative x5
                                                                                 16




                                                                                         8
•   On obtient alors le dictionnaire :
         x0 = 5 + 2x1 - 3x2 + x3 + x5
         x4 = 9 - 2x2 - x3 + x5
         x6 = 4 + 3x1 - 4x2 + 3x3 + x5
         z = -5 - 2x1 + 3x2 - x3 - x5

•   En 2 itérations du simplexe, on obtient :
          x3 = 8/5 - 1/5x1 + 1/5x5 + 3/5x6 - 4/5x0
          x2 = 11/5 + 3/5x1 + 2/5x5 +1/5x6 - 3/5x0
          x4 = 3 - x1 - x6 + 2x0
          z = - x0
•   Valeur optimale 0 => il existe une solution réalisable au problème initial =>
    on obtient un dictionnaire réalisable au problème initial en éliminant la
    colonne de x0 et en écrivant l’objectif en fonction des variables hors-
    base :
          x3 = 8/5 - 1/5x1 + 1/5x5 + 3/5x6
          x2 = 11/5 + 3/5x1 + 2/5x5 + 1/5x6
          x4 = 3 - x1 - x6
          z = -3/5 + 1/5x1 - 1/5x5 + 2/5x6 (z = x1 - x2 + x3)


                                                                         17




                             Itération


•   La variable d’entrée est une variable hors-base dont le coefficient
    dans la dernière ligne du dictionnaire courant est positif
•   La variable de sortie est une variable de base dont la non-négativité
    impose la contrainte la plus forte sur la borne supérieure de la
    variable d’entrée choisie. Si on ne trouve pas de variable de sortie,
    l’objectif peut prendre une valeur aussi grande que l’on veut et le
    problème est donc non borné
•   Peut-on générer un nombre infini de dictionnaires ? Oui
•   Exemple (on choisit en entrée la variable dont le coefficient est le
    plus grand dans la ligne z, et en sortie, celle dont l’indice est le plus
    petit) :
         max 10x1 -57x2 -9x3 -24x4 s.c.
         0.5x1 - 5.5x2 -2.5x3 +9x4 ≤ 0
         0.5x1 - 1.5x2 -0.5x3 - x4 ≤ 0
         x1 ≤ 1
•   Ce cyclage apparaît lorsque l’on retombe sur un même dictionnaire

                                                                         18




                                                                                    9
Théorèmes


• La seule façon de ne pas terminer est le cyclage. Il existe des
  méthodes pour lever le cyclage
• Preuve : il y a un nombre fini de façons de choisir m variables
  de base parmi les n+m variables. Il suffit de montrer que deux
  dictionnaires ayant la même base sont identiques
• Vitesse :
   – En pratique, on observe que le nombre d’itérations requis est de
     l’ordre de 3m/2 où m est le nombre de contraintes (ne dépend pas
     du nombre de variables) -> CPLEX, OSL, XPRESS, MPSX, …
   – Quelques exemples pathologiques engendrent un nombre
     d’itérations exponentiel :
       max ∑j=1,n 10n-j xj s.c.
       2∑j=1,i-1 10i-j xj + xi ≤ 100i-1 (i = 1, …,n)
                   xj ≥ 0 (j = 1, …, n)
       2n-1 itérations

                                                                19




                                                                        10

Contenu connexe

Tendances

Performances dans la segmentation d’images médicales
Performances dans la segmentation d’images médicalesPerformances dans la segmentation d’images médicales
Performances dans la segmentation d’images médicales
EL-Hachemi Guerrout
 
Problème De Sac à Dos
Problème De Sac à Dos Problème De Sac à Dos
Problème De Sac à Dos
chagra bassem
 
INF220 - Algo DUT SRC1 - Cours 1 - 2013
INF220 - Algo DUT SRC1 - Cours 1 - 2013INF220 - Algo DUT SRC1 - Cours 1 - 2013
INF220 - Algo DUT SRC1 - Cours 1 - 2013PGambette
 
Convex Multi-Task Feature Learning
Convex Multi-Task Feature LearningConvex Multi-Task Feature Learning
Convex Multi-Task Feature Learning
Sakher BELOUADAH
 
201972297 es-maths-cned-sequence-01
201972297 es-maths-cned-sequence-01201972297 es-maths-cned-sequence-01
201972297 es-maths-cned-sequence-01Ettaoufik Elayedi
 
Fórmulas elementales de derivación
Fórmulas elementales de derivaciónFórmulas elementales de derivación
Fórmulas elementales de derivaciónLuis Castañeda
 
Chapitre v algorithmes gloutons
Chapitre v algorithmes gloutonsChapitre v algorithmes gloutons
Chapitre v algorithmes gloutonsSana Aroussi
 
Rappel mathématique pour étudiant d'économie gestion
Rappel mathématique pour étudiant d'économie gestionRappel mathématique pour étudiant d'économie gestion
Rappel mathématique pour étudiant d'économie gestion
Ali Hachimi Kamali
 
Cours developpements limites
Cours   developpements limitesCours   developpements limites
Cours developpements limiteshassan1488
 
202010514 es-maths-cned-sequence-02-derivation
202010514 es-maths-cned-sequence-02-derivation202010514 es-maths-cned-sequence-02-derivation
202010514 es-maths-cned-sequence-02-derivationEttaoufik Elayedi
 
Projet d'Analyse Numérique
Projet d'Analyse NumériqueProjet d'Analyse Numérique
Projet d'Analyse Numérique
YassineElaroui2
 
INF220 - Algo DUT SRC1 - Cours 1
INF220 - Algo DUT SRC1 - Cours 1INF220 - Algo DUT SRC1 - Cours 1
INF220 - Algo DUT SRC1 - Cours 1PGambette
 
analyse numerique
analyse numeriqueanalyse numerique
analyse numeriquehomme00
 
165380609 livre-professeur-maths-1ere-s
165380609 livre-professeur-maths-1ere-s165380609 livre-professeur-maths-1ere-s
165380609 livre-professeur-maths-1ere-sEttaoufik Elayedi
 
Etude de la convergence du modèle binomial vers le modèle de Black Scholes
Etude de la convergence du modèle  binomial vers le modèle de Black ScholesEtude de la convergence du modèle  binomial vers le modèle de Black Scholes
Etude de la convergence du modèle binomial vers le modèle de Black Scholes
Ali SIDIBE
 
202017370 es-maths-cned-sequence-03-limites-et-asymptotes
202017370 es-maths-cned-sequence-03-limites-et-asymptotes202017370 es-maths-cned-sequence-03-limites-et-asymptotes
202017370 es-maths-cned-sequence-03-limites-et-asymptotesEttaoufik Elayedi
 

Tendances (20)

Performances dans la segmentation d’images médicales
Performances dans la segmentation d’images médicalesPerformances dans la segmentation d’images médicales
Performances dans la segmentation d’images médicales
 
Problème De Sac à Dos
Problème De Sac à Dos Problème De Sac à Dos
Problème De Sac à Dos
 
INF220 - Algo DUT SRC1 - Cours 1 - 2013
INF220 - Algo DUT SRC1 - Cours 1 - 2013INF220 - Algo DUT SRC1 - Cours 1 - 2013
INF220 - Algo DUT SRC1 - Cours 1 - 2013
 
Convex Multi-Task Feature Learning
Convex Multi-Task Feature LearningConvex Multi-Task Feature Learning
Convex Multi-Task Feature Learning
 
201972297 es-maths-cned-sequence-01
201972297 es-maths-cned-sequence-01201972297 es-maths-cned-sequence-01
201972297 es-maths-cned-sequence-01
 
Fórmulas elementales de derivación
Fórmulas elementales de derivaciónFórmulas elementales de derivación
Fórmulas elementales de derivación
 
Chapitre v algorithmes gloutons
Chapitre v algorithmes gloutonsChapitre v algorithmes gloutons
Chapitre v algorithmes gloutons
 
Rappel mathématique pour étudiant d'économie gestion
Rappel mathématique pour étudiant d'économie gestionRappel mathématique pour étudiant d'économie gestion
Rappel mathématique pour étudiant d'économie gestion
 
Formation traitement d_images
Formation traitement d_imagesFormation traitement d_images
Formation traitement d_images
 
Cours developpements limites
Cours   developpements limitesCours   developpements limites
Cours developpements limites
 
202010514 es-maths-cned-sequence-02-derivation
202010514 es-maths-cned-sequence-02-derivation202010514 es-maths-cned-sequence-02-derivation
202010514 es-maths-cned-sequence-02-derivation
 
Fonctions logarithmes
Fonctions logarithmesFonctions logarithmes
Fonctions logarithmes
 
Cours cluster si2e
Cours cluster si2eCours cluster si2e
Cours cluster si2e
 
Clustering
ClusteringClustering
Clustering
 
Projet d'Analyse Numérique
Projet d'Analyse NumériqueProjet d'Analyse Numérique
Projet d'Analyse Numérique
 
INF220 - Algo DUT SRC1 - Cours 1
INF220 - Algo DUT SRC1 - Cours 1INF220 - Algo DUT SRC1 - Cours 1
INF220 - Algo DUT SRC1 - Cours 1
 
analyse numerique
analyse numeriqueanalyse numerique
analyse numerique
 
165380609 livre-professeur-maths-1ere-s
165380609 livre-professeur-maths-1ere-s165380609 livre-professeur-maths-1ere-s
165380609 livre-professeur-maths-1ere-s
 
Etude de la convergence du modèle binomial vers le modèle de Black Scholes
Etude de la convergence du modèle  binomial vers le modèle de Black ScholesEtude de la convergence du modèle  binomial vers le modèle de Black Scholes
Etude de la convergence du modèle binomial vers le modèle de Black Scholes
 
202017370 es-maths-cned-sequence-03-limites-et-asymptotes
202017370 es-maths-cned-sequence-03-limites-et-asymptotes202017370 es-maths-cned-sequence-03-limites-et-asymptotes
202017370 es-maths-cned-sequence-03-limites-et-asymptotes
 

Similaire à Cours9 programmation linéaire

3-Cm24 2011-2012
3-Cm24 2011-20123-Cm24 2011-2012
3-Cm24 2011-2012mathome79
 
sol_TD4.pdf
sol_TD4.pdfsol_TD4.pdf
sol_TD4.pdf
ImaneAitSalem2
 
Exercice continuité et limites
Exercice continuité et limitesExercice continuité et limites
Exercice continuité et limitesYessin Abdelhedi
 
SYStèmes d'équations linéaires
SYStèmes d'équations linéairesSYStèmes d'équations linéaires
SYStèmes d'équations linéaires
sarah Benmerzouk
 
Les Fonctions de référence.pptx
Les Fonctions de référence.pptxLes Fonctions de référence.pptx
Les Fonctions de référence.pptx
rezgui10
 
Corrigées TD 9 de Module Analyse 3 pour les étudiants de la filière Mathémati...
Corrigées TD 9 de Module Analyse 3 pour les étudiants de la filière Mathémati...Corrigées TD 9 de Module Analyse 3 pour les étudiants de la filière Mathémati...
Corrigées TD 9 de Module Analyse 3 pour les étudiants de la filière Mathémati...
AbdoFreedom
 
10677467.ppt
10677467.ppt10677467.ppt
10677467.ppt
Ghazouani Jaber
 
S1 mqi-analysesmathmatiquesi-exercices
S1 mqi-analysesmathmatiquesi-exercicesS1 mqi-analysesmathmatiquesi-exercices
S1 mqi-analysesmathmatiquesi-exercicesYÂssîné Géntléman
 
Maths Annexes
Maths AnnexesMaths Annexes
Maths Annexes
Walid Chamour
 
Hasard09 artificiel
Hasard09 artificielHasard09 artificiel
Hasard09 artificiel
nahdiste
 
T. Masrour - cours dynamique des systèmes - vibrations -chapitre2-n ddl (1)
T. Masrour - cours dynamique des systèmes - vibrations -chapitre2-n ddl (1)T. Masrour - cours dynamique des systèmes - vibrations -chapitre2-n ddl (1)
T. Masrour - cours dynamique des systèmes - vibrations -chapitre2-n ddl (1)
tawfik-masrour
 

Similaire à Cours9 programmation linéaire (18)

Ch07 22
Ch07 22Ch07 22
Ch07 22
 
Ch09 35
Ch09 35Ch09 35
Ch09 35
 
Ch06 17
Ch06 17Ch06 17
Ch06 17
 
3-Cm24 2011-2012
3-Cm24 2011-20123-Cm24 2011-2012
3-Cm24 2011-2012
 
sol_TD4.pdf
sol_TD4.pdfsol_TD4.pdf
sol_TD4.pdf
 
Ch06 12
Ch06 12Ch06 12
Ch06 12
 
Exercice continuité et limites
Exercice continuité et limitesExercice continuité et limites
Exercice continuité et limites
 
Bất đẳng thức tích phân
Bất đẳng thức tích phânBất đẳng thức tích phân
Bất đẳng thức tích phân
 
SYStèmes d'équations linéaires
SYStèmes d'équations linéairesSYStèmes d'équations linéaires
SYStèmes d'équations linéaires
 
Ch07 19
Ch07 19Ch07 19
Ch07 19
 
Les Fonctions de référence.pptx
Les Fonctions de référence.pptxLes Fonctions de référence.pptx
Les Fonctions de référence.pptx
 
Corrigées TD 9 de Module Analyse 3 pour les étudiants de la filière Mathémati...
Corrigées TD 9 de Module Analyse 3 pour les étudiants de la filière Mathémati...Corrigées TD 9 de Module Analyse 3 pour les étudiants de la filière Mathémati...
Corrigées TD 9 de Module Analyse 3 pour les étudiants de la filière Mathémati...
 
10677467.ppt
10677467.ppt10677467.ppt
10677467.ppt
 
S1 mqi-analysesmathmatiquesi-exercices
S1 mqi-analysesmathmatiquesi-exercicesS1 mqi-analysesmathmatiquesi-exercices
S1 mqi-analysesmathmatiquesi-exercices
 
Maths Annexes
Maths AnnexesMaths Annexes
Maths Annexes
 
Cm18 noté
Cm18 notéCm18 noté
Cm18 noté
 
Hasard09 artificiel
Hasard09 artificielHasard09 artificiel
Hasard09 artificiel
 
T. Masrour - cours dynamique des systèmes - vibrations -chapitre2-n ddl (1)
T. Masrour - cours dynamique des systèmes - vibrations -chapitre2-n ddl (1)T. Masrour - cours dynamique des systèmes - vibrations -chapitre2-n ddl (1)
T. Masrour - cours dynamique des systèmes - vibrations -chapitre2-n ddl (1)
 

Cours9 programmation linéaire

  • 1. Cours 9 : programmation linéaire (recherche opérationnelle) C. JARD Cours ALGO1 MMI+MIT 2007-2008 • 1. Exemple introductif • 2. La méthode du simplexe • 3. Dictionnaires • 4. Algorithme 1 1. Introduction : la raffinerie • Production optimale d’une raffinerie produisant 4 produits finis (essence, kérosène, mazout et résidu) à partir de deux types de pétrole brut (brut1 et brut2), avec les paramètres suivants : Rendement(%) Production Produit $/baril Brut1, Brut2 maximale (baril/jour) Essence 80, 44 24000 Achat Brut1 24 Kérosène 5, 10 2000 Brut2 15 Mazout 10, 36 6000 Résidu 5, 10 Vente Essence 36 Kérosène 24 Mazout 21 Cout de 0.5, 1 Résidu 10 production ($/baril) 2 1
  • 2. Le modèle mathématique • Les variables de décision (l’information recherchée) : p1, p2 : nombre de barils/jour de Brut1 et 2 raffinés x1, …, x4 : nombre de barils/jour obtenus pour chaque produit • Les contraintes sur ces variables : 0.80p1+0.44p2=x1 0.05p1+0.10p2=x2 0.10p1+0.36p2=x3 0.05p1+0.10p2=x4 x1 ≤ 24000, x2 ≤ 2000, x3 ≤ 6000, p1,p2 ≥ 0 • L’objectif (maximisation sous contraintes du profit = vente - achat - coût de production) : max (36x1+24x2+21x3+10x4-24p1-15p2-0.5p1-1p2) 3 Simplification par élimination de variables • max (8.1p1 + 10.8p2) sous contraintes : 0.80p1 + 0.44p2 ≤ 24000 0.05p1 + 0.10p2 ≤ 2000 0.10p1 + 0.36p2 ≤ 6000 p1,p2 ≥ 0 • Forme standard (on peut toujours s’y ramener) : max ∑j=1,n cjxj sous contraintes ∑j=1,n aijxj ≤ bi (1≤i≤m) xj ≥ 0 (1≤j≤n) 4 2
  • 3. Une solution (x1,…,xn) est réalisable si elle satisfait à toutes les contraintes • Elle est optimale si elle est réalisable et si elle maximise l’objectif (pas nécessairement unique) • Il n’existe pas forcément de solution optimale (soit il n’existe pas de solution réalisable, soit il n’existe pas de valeur optimale finie) : max x1-x2 sous contraintes : -2x1 + x2 ≤ -1 -x1 -2x2 ≤ -2 x1, x2 ≥ 0 (il existe des solutions réalisables : 1,1 ; 5,0 mais on peut toujours trouver une solution meilleure) 5 2. La méthode du simplexe (Dantzig 1955) -> points intérieurs • Idée 1 : rajouter des variables d’écarts pour se ramener à des équations linéaires. • Exemple : max z = 5x1 + 4x2 + 3x3 s.c. 2x1 + 3x2 + x3 ≤ 5 4x1 + x2 + 2x3 ≤ 11 3x1 + 4x2 + 2x3 ≤ 8 x1, x2, x3 ≥ 0 • max z = 5x1 + 4x2 + 3x3 s.c. x4 = 5 - 2x1 - 3x2 - x3 x5 = 11 - 4x1 - x2 - 2x3 x6 = 8 - 3x1 - 4x2 - 2x3 x1, x2, x3, x4, x5, x6 ≥ 0 6 3
  • 4. Itération • Idée 2 : d’une solution réalisable (x1, …, x6) trouver une autre réalisable (x’1, … x’6) meilleure, i.e. 5x1 + 4x2 + 3x3 < 5x’1 + 4x’2 + 3x’3 • Première solution réalisable : x1 = x2 = x3 = 0, x4 = 5, x5 = 11, x6 = 8, objectif z = 0 • Amélioration par augmentation de l’objectif (d’une variable de décision x1, x2 ou x3). Choisissons x1 par exemple (z = 5x1) : – x1 = 1 => x4 = 3, x5 = 7, x6 = 5, z = 5 – x1 = 2 => x4 = 1, x5 = 3, x6 = 2, z = 10 – x1 = 3 => x4 = -1, x5 = -1, x6 = -1 non réalisable • Jusqu’où augmenter ? – x4 ≥ 0 => x1 ≤ 5/2, x5 ≥ 0 => x1 ≤ 11/4, x6 ≥ 0 => x1 ≤ 8/3 – On prend la plus contraignante (x1 = 5/2) 7 • x1 = 5/2, x2 = 0, x3 = 0 => x4 = 0, x5 = 1, x6 = 1/2, z = 25/2 • On exprime les variables positives (x1, x5, x6) en fonction des variables nulles (x2, x3, x4) : x1 = 5/2 - 3/2 x2 - 1/2 x3 -1/2 x4 x5 = 1 + 5x2 + 2x4 x6 = 1/2 + 1/2 x2 -1/2 x3 + 3/2 x4 z = 25/2 - 7/2 x2 + 1/2 x3 - 5/2 x4 • Solution courante z = 25/2. De l’expression de z, on voit que l’amélioration ne peut être obtenue que par l’augmentation de x3. x1, x6 ≥ 0 => (x3 ≤ 5) & (x3 ≤ 1). On prend donc x3 = 1 (x6 prend la valeur 0). 8 4
  • 5. • Les nouvelles variables non nulles sont x1, x5 et x3. On obtient le nouveau système : x1 = 2 - 2x2 - 2x4 + x6 x5 = 1 + 5x2 + 2x4 x3 = 1 + x2 + 3x4 - 2x6 z = 13 - 3x2 - x4 - x6 • Solution courante : x1 = 2, x3 = 1, x5 = 1, x2 = 0, x4 = 0, x6 = 0, z = 13 • Quelle variable peut-on augmenter ? Aucune car une augmentation de x2, x4 ou x6 fait diminuer z. Cette solution est optimale. 9 3. Dictionnaires • Soit un PL sous forme standard : max z = ∑j=1,n cjxj s.c. ∑j=1,n aijxj ≤ bi (1≤i≤m) xj ≥ 0 (1≤j≤n) • On introduit les variables d’écarts xn+1, …, xn+m : xn+i = bi - ∑j=1,n aijxj (1≤i≤m) xj ≥ 0 (1≤j≤n+m) • Chaque itération de l’algorithme du simplexe produit un système d’équations linéaires, appelé dictionnaire ; les équations expriment m variables et la variable z en fonction des n autres variables. • Un dictionnaire est réalisable si en posant à 0 les variables droites, on obtient une solution réalisable 10 5
  • 6. Attention, il existe des solutions réalisables qui ne correspondent pas à un dictionnaire. Exemple : x1 = 1, x2 = 0, x3 = 1, x4 = 2, x5 = 5, x6 = 3 ; le simplexe ignore toutes les autres • Les variables gauches d’un dictionnaire sont les variables de base • Les variables droites sont les variables hors-base • A chaque itération, une variable entre dans la base et une variable sort de la base • Le choix de la variable à entrer est dicté par l’amélioration de l’objectif z • Le choix de la variable à sortir est dicté par le désir de conserver toutes les variables non négatives • On appelle pivotage le processus permettant de passer d’une dictionnaire à un autre (ou encore de passer d’une base à une autre) 11 Exemple • max z = 5x1 + 5x2 + 3x3 s.c. x1 + 3x2 + x3 ≤ 3 -x1 + 3x3 ≤ 2 2x1 - x2 + 2x3 ≤ 4 2x1 + 3x2 - x3 ≤ 2 x1, x2, x3 ≥ 0 • Dictionnaire initial : x4 = 3 - x1 - 3x2 - x3 x5 = 2 + x1 - 3x3 x6 = 4 - 2x1 + x2 - 2x3 x7 = 2 - 2x1 - 3x2 + x3 z = 5x1 + 5x2 + 3x3 • Choix entrée x1 12 6
  • 7. Choix entrée x1 (x2 et x3 sont considérés à 0) x4 = 3 - x1 ≥ 0 => x1 ≤ 3 x5 = 2 + x1 => x1 ≥ -2 x6 = 4 - 2x1 => x1 ≤ 2 x7 = 2 - 2x1 => x1 ≤ 1 • Choix sortie x7 (pivot : utiliser sa ligne) : x1 = 1 - 3/2 x2 + 1/2 x3 -1/2 x7 • Nouveau dictionnaire : x4 = 2 - 3/2 x2 - 3/2 x3 + 1/2 x7 x5 = 3 - 3/2 x2 - 5/2 x3 - 1/2 x7 x6 = 2 + 4x2 - 3x3 +x7 x1 = 1 - 3/2 x2 + 1/2 x3 -1/2 x7 z = 5 - 5/2 x2 + 11/2 x3 - 5/2 x7 • Choix entrée x3 etc… • Lorsqu’il n’y a plus avantage à entrer une variable dans la base, on obtient une solution optimale : x1 = 32/29, x2 = 8/29, x3 = 30/29, pour z = 10 13 4. Algorithme du simplexe • Résumé : – 1. Initialisation : former le dictionnaire (partir d’une base admissible) – 2. Chercher à effectuer un pivotage (itération) : • Si tous les coefficients des variables de la fonction objectif sont positifs alors il n’y a pas d’optimum fini, STOP • Si tous les coefficients des variables de la fonction objectif sont négatifs, l’optimum est atteint, STOP • Sinon, choix de la variable d’entrée, choix de la variable de sortie, pivotage • Correction : – Le problème est la terminaison qui n’est pas garantie a priori. – Règle de Bland : lors d’un pivotage, la variable qui entre est celle d’indice minimal parmi celles qui peuvent rentrer, et la variable qui sort est celle d’indice minimal parmi celles qui peuvent sortir. – Proposition : le simplexe termine avec la règle de Bland 14 7
  • 8. Problème de l’initialisation • Dictionnaire initial : xn+i = bi - ∑j=1,n aijxj (1≤i≤m) z = ∑j=1,n cjx j • Il n’est réalisable que si les bi sont non négatifs (le vecteur 0 est une solution initiale) • Sinon, on construit le programme auxilliaire suivant : min x0 s.c. ∑j=1,n aijxj - x0 ≤ bi (1≤i≤m) xj ≥ 0 (0≤j≤n) • Une solution réalisable est facile à obtenir pour ce problème • Le programme initial a une solution réalisable ssi ce problème a pour valeur optimale 0 15 Exemple • Problème initial : max z = x1 - x2 + x3 s.c. 2x1 - x2 + 2x3 ≤ 4 2x1 - 3x2 + x3 ≤ -5 -x1 + x2 - 2x3 ≤ -1 x 1 , x2 , x 3 ≥ 0 • Dictionnaire initial non réalisable -> Problème auxilliaire : max z = - x0 s.c. 2x1 - x2 + 2x3 - x0 ≤ 4 2x1 - 3x2 + x3 - x0 ≤ -5 -x1 + x2 - 2x3 - x0 ≤ -1 x0, x1, x2, x3 ≥ 0 • Son dictionnaire initial : x4 = 4 - 2x1 + x2 - 2x3 + x0 x5 = -5 - 2x1 + 3x2 - x3 + x0 x6 = -1 + x1 - x2 + 2x3 + x0 z = - x0 • On rentre x0 dans la base et sort la variable la plus négative x5 16 8
  • 9. On obtient alors le dictionnaire : x0 = 5 + 2x1 - 3x2 + x3 + x5 x4 = 9 - 2x2 - x3 + x5 x6 = 4 + 3x1 - 4x2 + 3x3 + x5 z = -5 - 2x1 + 3x2 - x3 - x5 • En 2 itérations du simplexe, on obtient : x3 = 8/5 - 1/5x1 + 1/5x5 + 3/5x6 - 4/5x0 x2 = 11/5 + 3/5x1 + 2/5x5 +1/5x6 - 3/5x0 x4 = 3 - x1 - x6 + 2x0 z = - x0 • Valeur optimale 0 => il existe une solution réalisable au problème initial => on obtient un dictionnaire réalisable au problème initial en éliminant la colonne de x0 et en écrivant l’objectif en fonction des variables hors- base : x3 = 8/5 - 1/5x1 + 1/5x5 + 3/5x6 x2 = 11/5 + 3/5x1 + 2/5x5 + 1/5x6 x4 = 3 - x1 - x6 z = -3/5 + 1/5x1 - 1/5x5 + 2/5x6 (z = x1 - x2 + x3) 17 Itération • La variable d’entrée est une variable hors-base dont le coefficient dans la dernière ligne du dictionnaire courant est positif • La variable de sortie est une variable de base dont la non-négativité impose la contrainte la plus forte sur la borne supérieure de la variable d’entrée choisie. Si on ne trouve pas de variable de sortie, l’objectif peut prendre une valeur aussi grande que l’on veut et le problème est donc non borné • Peut-on générer un nombre infini de dictionnaires ? Oui • Exemple (on choisit en entrée la variable dont le coefficient est le plus grand dans la ligne z, et en sortie, celle dont l’indice est le plus petit) : max 10x1 -57x2 -9x3 -24x4 s.c. 0.5x1 - 5.5x2 -2.5x3 +9x4 ≤ 0 0.5x1 - 1.5x2 -0.5x3 - x4 ≤ 0 x1 ≤ 1 • Ce cyclage apparaît lorsque l’on retombe sur un même dictionnaire 18 9
  • 10. Théorèmes • La seule façon de ne pas terminer est le cyclage. Il existe des méthodes pour lever le cyclage • Preuve : il y a un nombre fini de façons de choisir m variables de base parmi les n+m variables. Il suffit de montrer que deux dictionnaires ayant la même base sont identiques • Vitesse : – En pratique, on observe que le nombre d’itérations requis est de l’ordre de 3m/2 où m est le nombre de contraintes (ne dépend pas du nombre de variables) -> CPLEX, OSL, XPRESS, MPSX, … – Quelques exemples pathologiques engendrent un nombre d’itérations exponentiel : max ∑j=1,n 10n-j xj s.c. 2∑j=1,i-1 10i-j xj + xi ≤ 100i-1 (i = 1, …,n) xj ≥ 0 (j = 1, …, n) 2n-1 itérations 19 10