65
© Reproduction interdite - 3 - Chapitre I : Programmation linéaire Introduction La programmation linéaire est sans aucun doute la technique la plus connue de la recherche opérationnelle. C’est aussi un des outils les plus puissants et les plus utilisés en applications industrielles parmi les technologies d’aide à la décision pour ne citer que : - Planification de la production - Répartition des ressources - Choix de produits à fabriquer - Planification d’investissements - Etablissement de routes et d’horaires - Affectation et gestion de personnel - Gestion de projet - La renommée de la programmation linéaire remonte en effet aux années cinquante quand G.B. Dantzig découvrit l’algorithme du simplexe, principal outil de résolution des programmes linéaires. L’importance de la programmation linéaire est liée aux facteurs suivants : - De nombreux problèmes de la vie économique peuvent se formuler comme des programmes linéaires. Ceci est d’autant plus vrai que depuis la deuxième guerre mondiale, les organisations économiques et sociales en grandissant en taille ont également grandi en complexité quant à leur fonctionnement. - Une autre raison est le développement des outils de calcul. Il ne fait nul doute que le développement de la recherche opérationnelle et en particulier de la programmation linéaire est lié au développement des ordinateurs qui grâce à leurs fantastiques moyens de calcul permettent de résoudre des problèmes qu’il n’était pas possible d’étudier avant l’apparition de ces outils de calcul. De fait, résoudre un programme linéaire est un problème de mathématiques appliquées et l’algorithme du simplexe n’est pas

Chapitre I : Programmation linéaire · 2020. 3. 15. · coût variable unitaire). Pour traiter de la formulation de ces problèmes ainsi que leur résolution nous étudierons le

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

  • © Reproduction interdite - 3 -

    Chapitre I : Programmation linéaire

    Introduction

    La programmation linéaire est sans aucun doute la technique la plus

    connue de la recherche opérationnelle. C’est aussi un des outils les plus

    puissants et les plus utilisés en applications industrielles parmi les

    technologies d’aide à la décision pour ne citer que :

    - Planification de la production

    - Répartition des ressources

    - Choix de produits à fabriquer

    - Planification d’investissements

    - Etablissement de routes et d’horaires

    - Affectation et gestion de personnel

    - Gestion de projet

    - …

    La renommée de la programmation linéaire remonte en effet aux

    années cinquante quand G.B. Dantzig découvrit l’algorithme du simplexe,

    principal outil de résolution des programmes linéaires.

    L’importance de la programmation linéaire est liée aux facteurs

    suivants :

    - De nombreux problèmes de la vie économique peuvent se formuler

    comme des programmes linéaires. Ceci est d’autant plus vrai que

    depuis la deuxième guerre mondiale, les organisations

    économiques et sociales en grandissant en taille ont également

    grandi en complexité quant à leur fonctionnement.

    - Une autre raison est le développement des outils de calcul. Il ne

    fait nul doute que le développement de la recherche opérationnelle

    et en particulier de la programmation linéaire est lié au

    développement des ordinateurs qui grâce à leurs fantastiques

    moyens de calcul permettent de résoudre des problèmes qu’il

    n’était pas possible d’étudier avant l’apparition de ces outils de

    calcul. De fait, résoudre un programme linéaire est un problème de

    mathématiques appliquées et l’algorithme du simplexe n’est pas

  • © Reproduction interdite - 4 -

    autre chose qu’une méthode de calcul destinée à être programmée

    et utilisée sur un ordinateur. Notons d’ailleurs que le terme

    programmation linéaire ne provient pas de l’expression

    « programmation » telle qu’elle est conçue par les informaticiens.

    Les applications de la programmation linéaire sont nombreuses et

    relèvent de milieux divers comme la médecine, les transports, la finance,

    le marketing, la gestion des ressources humaines ainsi que l’agriculture.

    Vu la taille ainsi que la complexité des problèmes rencontrés dans ces

    diverses applications, le développement de tous les modèles de

    programmation linéaire pour approcher ces problèmes peut se faire

    selon trois étapes :

    (1) Une étape de formulation

    (2) Une étape de résolution

    (3) Une étape d’interprétation

    (1) La formulation consiste à traduire le problème sous forme

    d’expressions mathématiques (équations, inéquations)

    (2) L’étape de résolution consiste à résoudre le modèle

    mathématique en évaluant les variables de décision.

    (3) Interprétation et analyse de sensibilité : en supposant que le

    modèle mathématique est correct et qu’une solution a été trouvée

    grâce aux outils (logiciels) comment utiliser ces résultats, telle est

    la question qui se pose au décideur ou manager.

    Propriétés des programmes linéaires

    Tous les modèles de programmation linéaire possèdent les propriétés

    suivantes :

    1- Tous les problèmes ont un objectif qui consiste à maximiser ou

    minimiser une quantité, souvent un profit ou un coût. On parle de

    fonction économique ou fonction objectif pour un programme

    linéaire.

    2- Les programmes linéaires font état d’un certain nombre de

    restrictions ou contraintes qui traduisent des ressources limitées ou

  • © Reproduction interdite - 5 -

    autres. Des contraintes de non-négativité font partie de l’ensemble

    des contraintes pour traduire l’impossibilité de valeurs négatives

    pour les variables du modèle. Produire des quantités négatives de

    meubles ou d’ordinateurs n’a pas de sens.

    3- La fonction objectif et les contraintes d’un programme linéaire

    doivent être formulées en termes d’expressions mathématiques

    linéaires (équations, inéquations linéaires)

    Exemple

    Expressions linéaires : 24,177 yxyx …

    Expressions non linéaires :

    12)ln(,2²,103²5²2 yxyxyxyyx …

    Hypothèses de base d’un programme linéaire

    1- On se place dans le cadre déterministe, c’est à dire toutes les

    données numériques sont utilisées dans le programme linéaire

    (fonction objectif et contraintes) sont supposées connues et

    constantes durant la période d’étude.

    2- On suppose le principe de proportionnalité dans la fonction

    économique et les contraintes. Exemple : si la production d’une

    unité d’un produit nécessite 3 heures d’une ressource, alors

    produire 10 unités de ce produit utiliseront 30 heures de cette

    ressource.

    3- La troisième hypothèse est l’additivité. Si l’objectif est de

    maximiser un profit de 8 DH/unité du premier produit + 3DH/unité

    du second produit, et si une unité de chaque produit est fabriquée,

    les profits unitaires 8 DH et 3 DH doivent être additionnées pour

    produire un profit de 8 + 3 = 11 DH.

    4- L’hypothèse de divisibilité qui exprime que les variables du

    problème sont réelles et pas forcément des entiers naturels. Si les

    variables sont sujettes à la contrainte d’indivisibilité, on est alors en

    cas de programmation en nombres entiers (PNE) qui sort du cadre

    du présent ouvrage.

  • © Reproduction interdite - 6 -

    La production des biens est l’une des applications courantes de la

    programmation linéaire (Product mix problem).

    Dans la plupart des firmes manufacturières, deux ou plusieurs

    produits sont fabriqués utilisant des ressources limitées comme le

    personnel, les machines, la matière première, etc.

    Le profit que cherche à maximiser la firme dépend du profit unitaire

    réalisé sur chaque produit (profit unitaire = prix de vente unitaire –

    coût variable unitaire).

    Pour traiter de la formulation de ces problèmes ainsi que leur

    résolution nous étudierons le cas simple de problèmes à deux

    variables avant de discuter le cas général à plusieurs variables.

    I- Programmes linéaires à deux variables

    1-Problème de maximisation

    a) Un problème de production : cas de la menuiserie

    MOBILIA

    La menuiserie MOBILIA fabrique des tables et des chaises bon marché.

    Le procédé de fabrication est le même pour ces deux produits dans le

    sens où chacun nécessite un certain nombre d’heures de travail dans

    l’atelier « Menuiserie » et un certain nombre d’heures dans l’atelier

    « peinture ».

    Le tableau suivant résume les données du problème :

    Atelier

    « menuiserie »

    Atelier

    « peinture »

    Table 4 2

    Chaise 3 1

    Capacité horaire

    totale 240 100

    Table 1.1

    Le commercial confirme la vente de toute la production de tables.

    Cependant et pour cause d’un stock de chaises, il recommande de na

    pas dépasser la fabrication de 60 nouvelles chaises.

  • © Reproduction interdite - 7 -

    Chaque table vendue laisse une marge de 7 DH et chaque chaise vendue

    une marge de 5 DH.

    Le problème que se pose le gestionnaire de la fabrique MOBILIA est de

    déterminer un plan de production de chaises et de tables optimal.

    Pour ce faire, une modélisation sous forme d’un programme linéaire

    s’impose.

    b) Modélisation

    La construction d’un modèle est, en général, une opération en trois

    étapes :

    1- Le choix des variables de décision

    2- L’expression de l’objectif en fonction de ces variables

    3- L’expression des contraintes en fonction de ces variables

    1. Variables de décision

    Définition 1 : on appelle variable de décision toute quantité utile à la

    résolution du problème dont le modèle détermine la valeur.

    Par exemple, dans le cas de MOBILIA, ce sont les quantités de tables et

    de chaises à produire.

    Généralement, elles sont notées par des lettres de la fin de l’alphabet (x,

    y, z, etc.) ou autres symboles évocateurs. Par exemple, on peut noter T

    le nombre de tables à fabriquer et C le nombre de chaises à fabriquer.

    Ce sont les notations qu’on va retenir pour notre exemple.

    2. Fonction objectif

    Définition 2 : l’objectif est la quantité que l’on veut maximiser ou

    minimiser.

    Ici, il s’agit de la somme des contributions de chacune des productions

    au profit net de la fabrique. Elle s’exprime simplement par :

  • © Reproduction interdite - 8 -

    Profit = (7DH/table) x (Nombre de tables produites) + (5 DH/chaise) x

    (Nombre de chaises produites)

    En utilisant la notation retenue pour les variables de décision ci-dessus,

    la fonction objectif s’écrit alors :

    Maximiser 7T + 5C ou CTZMax 57][

    C’est cette dernière notation qu’on retiendra pour l’expression de la

    fonction objectif.

    3. Contraintes

    Définitions 3 : les contraintes sont toutes les relations entre les

    variables qui limitent les valeurs possibles que peuvent prendre ces

    variables.

    Ici, il y a trois contraintes :

    - la première et la deuxième concernent la ressource temps limitée

    dans les ateliers « menuiserie » et « peinture »

    - la troisième concerne la fabrication limitée des chaises imposée par

    le commercial de la fabrique.

    Les deux premières contraintes doivent assurer que le temps global

    nécessaire au plan de production est inférieur ou égal au temps

    disponible.

    Par exemple, dans le cas de l’atelier « menuiserie », le temps utilisé est :

    (4 h/table) x (Nombre de tables produites) + (3 h/chaise) x (Nombre de

    chaises produites)

    Or on dispose au maximum de 240 heures dans cet atelier.

    En utilisant les variables de décision T et C définies précédemment, cette

    contrainte peut s’écrire :

    24034 CT

    De même la deuxième contrainte portant sur l’atelier de peinture peut se

    traduire par l’inéquation :

    10012 CT

  • © Reproduction interdite - 9 -

    Enfin, la contrainte commerciale s’écrit : 60C

    Ces trois contraintes représentent les restrictions portées sur les

    quantités à fabriquer de tables et de chaises.

    Par exemple, la fabrication de 70 tables viole les deux contraintes (T=

    70)

    De même la fabrication de 50 tables et 100 chaises viole la deuxième

    contrainte.

    On note en effet certaines interactions entre les variables de décision.

    Plus on fabrique de tables moins de chaises sont produites.

    Avant de passer à l’étape de résolution, nous complétons le modèle

    mathématique par les remarques suivantes :

    - produire des quantités négatives de tables et de chaises n’ayant

    aucun sens, les contraintes de non-négativité doivent être

    spécifiées dans le modèle par les inégalités :

    0

    0

    C

    T

    - il est possible de tomber sur des quantités fractionnaires ou réelles

    pour les quantités T et C. en effet, dans la plupart des problèmes

    les variables de décision sont plutôt de type entier et on a affaire à

    des problèmes de programmation en nombres entiers (PNE)

    La programmation en nombres entiers est très délicate en termes de

    résolution et ne présente pas tous les avantages de la programmation

    linéaire.

    Aussi, nous ignorons dans la plupart des cas cette restriction sur les

    variables de décision et nous résolvons le modèle avec des variables

    réelles.

    c) Résolution graphique

    Les modèles de programmation linéaire à deux variables sont des

    problèmes très simples à résoudre moyennant une représentation

    graphique en géométrie plane. Ceci dit, les modèles relevant de cas

    concrets sont rarement à deux variables.

  • © Reproduction interdite - 10 -

    Nous rappelons quelques résultats importants de la géométrie analytique

    avant de traiter la résolution de notre cas.

    Rappels théoriques

    Nous admettons les résultats suivants.

    Théorème 1 : les valeurs de la fonction linéaire à deux variables x et y

    de type Ax + By le long de tout segment de droite sont comprises entre

    les valeurs des extrémités, sauf cas particulier où elles peuvent leur être

    égales.

    Théorème 2 : la valeur maximum de la fonction linéaire à Ax + By le

    long de tout segment est atteinte à une extrémité du segment et la

    valeur minimum à l’autre extrémité.

    Théorème 3 : la valeur maximum d’une fonction linéaire à deux

    variables ),( yxf sur un polygone convexe est atteinte en un sommet de

    ce polygone et sa valeur minimum en un autre sommet.

    Théorème 4 : la valeur maximum d’une fonction linéaire à plusieurs

    variables ),...,,( 21 nxxxf sur un polyèdre convexe est atteinte en un

    sommet de ce polyèdre et sa valeur minimum en un autre.

    La résolution graphique passe par deux étapes :

    - Une étape de représentation des contraintes qui permet d’identifier

    un ensemble ou une région de solutions dites admissibles c’est à

    dire vérifiant l’ensemble des contraintes.

    - Ensuite une étape de calcul de l’optimum, autrement dit la

    déduction de la solution optimale parmi l’ensemble des solutions

    admissibles.

    Représentation graphique des contraintes

  • © Reproduction interdite - 11 -

    Le modèle du cas MOBILIA se résume sous la forme suivante, appelée

    aussi forme canonique du programme linéaire :

    0,0

    60

    1002

    24034

    57][

    CT

    C

    CT

    CT

    sous

    CTZMAX

    La représentation graphique se fait sur le plan (XOY) avec (OX) comme

    axe des abscisses et (OY) axe des ordonnées.

    Ici, on peut utiliser comme axe des abscisses l’axe des tables T et

    comme axe des ordonnées l’axe des chaises C.

    Les contraintes de non-négativité impliquent que la résolution se fait

    principalement dans le premier quadrant du plan.

    Pour représenter la première contrainte (l’inéquation 24034 CT )

    nous convertissons l’inéquation en équation 24034 CT , équation

    cartésienne d’une droite dans le plan géométrique.

    Deux points suffisent pour la représenter. Parmi tous les points

    candidats, ceux de rencontre des axes d’abscisses et d’ordonnées sont

    les plus simples à calculer.

    Si T = 0 alors 4.0 + 3.C = 240 soit C = 80 ;

    Si C = 0 alors 4.T +0.C = 240 soit T = 60

    Pour tracer la droite 24034 CT il suffit de joindre les points (0,80)

    et (60,0) par une ligne droite.

    Nous avons représenté dans la figure 1.1 la droite ainsi que la région de

    points satisfaisant cette contrainte.

  • © Reproduction interdite - 12 -

    On procède de même pour la deuxième contrainte.

    On trace la droite d’équation 1002 CT passant par les points

    (0,100) et (50,0).

    La figure 1.2 représente la région des points satisfaisant les deux

    contraintes.

    Figure 1.1

    Figure 1.2

  • © Reproduction interdite - 13 -

    Enfin, on représente la troisième contrainte 60C en traçant la

    droite 60C , droite passant par le point (0,60) et parallèle à l’axe

    des abscisses (OT)

    Le domaine des solutions admissibles est l’ensemble des points

    satisfaisant l’ensemble des contraintes du modèle.

    La figure 1.3 représente le domaine des solutions admissibles pour la cas

    MOBILIA.

    Ce domaine est un polygone convexe. Tout point hors de ce polygone

    est une solution inadmissible ou irréalisable.

    Maintenant qu’on a délimité l’ensemble des solutions admissibles, il s’agit

    de dégager une solution optimale parmi toutes les solutions possibles.

    Deux méthodes sont envisageables :

    - Méthode des droites parallèles

    - Méthode de recensement de sommets

    Figure 1.3

  • © Reproduction interdite - 14 -

    Méthode des droites parallèles

    Une fois le polygone des solutions admissibles représenté, il s’agit de

    déterminer l’optimum qui se trouve forcément sur l’un des sommets du

    polygone. Cette méthode consiste alors à :

    - Tracer la droite représentant la fonction objectif de valeur nulle Z

    = 0, puis à repousser la parallèle à cette droite jusqu’au sommet le

    plus éloigné de l’origine. Les coordonnées de ce sommet

    fournissent la solution optimale.

    Toutefois, on peut toujours vérifier ce résultat en procédant par la

    seconde méthode qu’on traitera par la suite.

    Dans notre cas le sommet optimal tel qu’il apparaît dans la figure 1.4 est

    le sommet de rencontre des droites 24034 CT et 1002 CT . Il

    s’agit de résoudre le système linéaire simple :

    24034 CT

    1002 CT (x –2)

    200240C , soit 302

    )100(40

    CTetC

    Donc c’est le sommet de coordonnées (30,40).

    Pour maximiser le profit, l’entreprise MOBILIA doit fabriquer 30 tables et

    40 chaises, soit un profit de : 7 x 30 + 5 x 40 = 410 DH.

    Méthode de recensement des sommets

    Cette deuxième technique consiste à :

    - déterminer les coordonnées de chaque sommet du polygone des

    solutions réalisables ;

    - substituer dans la fonction objectif les valeurs des coordonnées de

    chaque sommet ;

    - la plus grande valeur obtenue est le maximum recherché.

    Ici le polygone convexe (OABCD) renferme toutes les solutions possibles.

    Pour calculer les coordonnées des sommets O, A, B, C et D, on procède

    comme ci dessus, ces sommets étant forcément la rencontre de deux

    droites. Soit :

  • © Reproduction interdite - 15 -

    Sommet O (0,0) ZO = 0

    Sommet A(0,60) ZA = 300

    Sommet B(15,60) ZB = 405

    Sommet C(30,40) ZC = 410

    Sommet D(50,0) ZD = 350

    Remarquons que le sommet C réalise le profit le plus élevé parmi les

    autres sommets et donc correspond à l’optimum recherché. Comme

    prévu, on obtient la même solution que la méthode précédente.

    2-Problème de minimisation

    a) Un problème d’alimentation : cas de la société DINDINO

    La société DINDINO spécialisée dans l’élevage de la volaille en particulier

    la dinde et le dindon. Pour les nourrir elle utilise un mélange deux types

    d’aliments A et B.

    Chaque type d’aliments contient, dans des proportions variées, une

    partie ou la totalité des trois ingrédients (protéines, vitamines, fer)

    nécessaires à l’engraissement des dindes.

    Chaque « livre1 » de type A contient 5 unités de protéines, 4 unités de

    vitamines et ½ unité de fer.

    Chaque livre de type B contient 10 unités de protéines, 3 unités de

    vitamines et pas de fer.

    Une livre de type A revient à 2 DH et une livre de type B à 3 DH.

    La table 2.1 résume l’ensemble des données de la société DINDINO.

    Ingrédient

    Composition de chaque livre de

    nourriture

    Besoin mensuel

    minimum /

    dindon Type A Type B

    Protéine 5 10 90

    Vitamine 4 3 48

    Fer ½ 0 1,5

    Coût/livre 2 DH 3 DH

    Table 2.1

    1 Unité de mesure de poids ancienne, à peu près 500 grammes

  • © Reproduction interdite - 16 -

    Le propriétaire de la société souhaite un programme d’alimentation de

    coût minimal.

    b) Modélisation

    Notons A le nombre de livres de type A achetées et B le nombre de livres

    de type B achetées. Ce sont les deux variables de décision du problème.

    Le problème DINDINO peut se formuler ainsi :

    Minimiser le coût BAZ 32 ou BAZMIN 32][

    Sous les contraintes

    )int(0,0

    )int(2

    3

    2

    1

    )minint(4834

    )int(90105

    3

    2

    1

    négativiténondeescontraBA

    DferlesurescontraA

    DesvitalessurescontraBA

    DeslesproteinsurecontraBA

    c) Résolution

    Dans un premier temps nous représentons le domaine des solutions

    réalisables en résolvant graphiquement le système d’inéquations des

    contraintes. Ce domaine est présenté dans la figure 2.1.

    Le polygone convexe des solutions admissibles est non borné. C’est le

    cas de la plupart des problèmes de minimisation.

    Méthode des parallèles

    On trace la droite correspondant au coût nul (Z = 0), soit 032 BA ou

    AB32

    Ensuite on trace la parallèle passant par le sommet le plus proche de

    l’origine O, ici c’est la parallèle passant par le point F. F est le sommet

    extrême correspondant à la solution optimale. Pour déterminer ces

    coordonnées, on résout le système linéaire suivant :

    4834

    90105

    BA

    BA

    Soit A = 8,4 et B = 4,8

  • © Reproduction interdite - 17 -

    Le coût minimal d’alimentation des dindons est : ZMIN = 2.8,4 + 3.4,8,

    soit ZMIN = 31,20 DH

    Méthode d’énumération des sommets

    Le polygone convexe non borné des solutions réalisable possède trois

    points extrêmes E, F et G.

    Sommet E(3,12) ZE = 42 DH

    Sommet F(8,4, 4,8) ZF = 31,20 DH

    Sommet G(18,0) ZG = 36 DH

    Comme calculé précédemment, le sommet F est le sommet optimal.

    La société DINDINO doit commander le plan d’approvisionnement

    optimal suivant :

    8,4 livres du type d’aliment A

    4,8 livres du type d’aliment B

    pour un coût total minimal de 31,20 DH.

    Figure 2.1

  • © Reproduction interdite - 18 -

    3-Cas particuliers

    a) Redondance

    Une contrainte est dite redondante lorsqu’elle est inutile. Les autres

    contraintes la rendent superflue.

    Exemple :

    Soit le programme linéaire suivant :

    0;0

    252

    302

    20

    32][

    YX

    YX

    YX

    YX

    sous

    yXZMAX

    On remarque que la droite D3 n’affecte pas le polygone des solutions

    réalisables (Figure 3.1) et donc la contrainte correspondante est

    redondante. On peut donc l’éliminer sans affecter la résolution du

    problème.

    Figure 3.1

  • © Reproduction interdite - 19 -

    b) Problèmes « insolubles »

    Si l’ensemble des contraintes est incohérent (intersection vide) alors le

    problème est insoluble.

    Ceci est courant dans des situations concrètes comportant des centaines

    de contraintes.

    Par exemple, suppose que le responsable marketing insiste sur la

    production de 300 tables minimum afin de satisfaire la demande (T

    300) et d’autre part, le responsable de production annonce la production

    d’au plus 250 tables pour un problème de rupture de stock en matière

    premières (T 250)

    Dans ce cas là, le domaine des solutions admissibles est forcément vide

    à cause de l’incohérence de ces deux contraintes (T 300 et T 250)

    Pour illustrer graphiquement un problème infaisable, considérons le cas

    suivant :

    0;0

    2443

    82

    62

    YX

    YX

    YX

    YX

    Figure 3.2

  • © Reproduction interdite - 20 -

    c) Problèmes non bornés

    Un problème de programmation linéaire peut avoir une solution non

    finie. C’est le cas d’un problème de maximisation quand une ou plusieurs

    variables solutions peuvent prendre des valeurs infiniment grandes sans

    violer aucune des contraintes.

    Graphiquement, on a affaire à un domaine de solutions non borné.

    Considérons le cas suivant pour illustrer cette situation :

    0;0

    102

    10

    5

    53][

    YX

    YX

    Y

    X

    sous

    yXZMAX

    Une telle situation doit ramener le modélisateur à revoir son modèle de

    départ et étudier l’origine du problème. En effet, produire une infinité

    d’unités d’articles n’a pas de sens dans la mesure où les ressources sont

    limitées d’une part, et la demande aussi d’autre part.

    Figure 3.3

  • © Reproduction interdite - 21 -

    d) Dégénérescence

    On rencontre deux types de dégénérescence :

    Premier type de dégénérescence

    En effet, un problème de programmation linéaire peut avoir plusieurs

    solutions optimales.

    Graphiquement ceci se produit quand la droite représentant la fonction

    objectif possède la même pente qu’une contrainte non redondante du

    problème.

    Les coordonnées de tous les points situés sur un côté du polygone

    convexe ou sur un côté de l’ensemble non borné des solutions

    admissibles, représentent la solution optimale. Il y a donc une infinité de

    solutions.

    Soit l’exemple illustratif suivant :

    0;0

    3

    2446

    23][

    YX

    X

    YX

    sous

    YXZMAX

    Le polygone convexe (OABC) est le domaine des solutions réalisables

    (Figure 3.4). Les droites ZO )0( Z et D1 )2446( YX sont

    parallèles. Tous les points du segment [A,B] fournissent la solution

    optimale.

    En A(0,6) ZA = 12

    En B(3,3/2) ZB = 12

    En M(2,3) ZM = 12

    Etc.

  • © Reproduction interdite - 22 -

    Deuxième type de dégénérescence

    Pour illustrer ce type, utilisons le programme linéaire simple suivant :

    0;0

    60

    120

    1602

    40042

    2050][

    YX

    X

    YX

    YX

    YX

    sous

    YXZMAX

    Figure 3.4

    Figure 3.5

  • © Reproduction interdite - 23 -

    On est en présence d’une dégénérescence de deuxième type si, par un

    des sommets du domaine des solutions réalisables au moins, passent

    plus de deux droites. C’est le cas de la droite D4 dans notre exemple

    (Figure 3.5). Seules interviennent dans la résolution du problème les

    droites qui forment la frontière de la zone des solutions admissibles.

    La droite D4 ne joue aucun rôle dans la résolution du problème et peut

    être supprimée.

    4-Analyse de sensibilité

    Un problème de programmation linéaire est défini par un certain nombre

    de paramètres. Ce sont :

    - les coefficients de la fonction objectif (cj),

    - les seconds membres des contraintes (bi),

    - les coefficients techniques (aij).

    Si ces coefficients changent, la solution du problème de programmation

    linéaire peut être modifiée. A partir du cas MOBILIA nous pouvons

    étudier l’effet de telles variations.

    a) Modification d’un coefficient de la fonction objectif

    la fonction objectif du cas MOBILIA est :

    ycxcyxZ 2157 Modifions la contribution c1 en lui ajoutant une quantité . La nouvelle

    fonction objectif devient :

    yxycxcZ 5)7()( 21

    L’équation d’une droite « iso-profit » était Z = 0, soit :

    xZ

    y5

    7

    5

    Donc la valeur absolue de la pente de cette droite était donnée par :

    5

    7p

  • © Reproduction interdite - 24 -

    La valeur absolue de la pente devient, après perturbation, 5

    7 p

    Si est négatif, la valeur absolue de la pente diminue, si est positif elle

    augmente. On voit sur la figure 4.1, que lorsque > 0 est ajouté au

    coefficient c1, la solution restera au même point extrême C tant que la

    droite iso-profit reste comprise entre le cas 1 sans perturbation le cas 3,

    qui est celui où la pente de la droite iso-profit est identique à la pente de

    la droite D1. Ce cas correspond à :

    25

    7

    C’est-à-dire aussi

    3 On en conclut que si la contribution unitaire varie entre 7 DH et 10 DH,

    la solution du programme reste inchangée. Si la contribution dépasse

    légèrement la valeur 10 DH l’optimum va se déplacer au point extrême

    D.

    Pour une contribution exactement égale à 10 DH, il y a une infinité de

    solutions qui sont tous les points de l’arête [C,D].

    Si < 0 est ajouté à la contribution unitaire, la solution reste inchangée

    tant que la droite iso-profit reste comprise entre le cas 1 et le cas 2. Ce

    dernier correspond à l’égalité des pentes de la droite iso-profit et de la

    droite D2, c’est à dire

    3

    4

    5

    7

    ce qui donne 3

    1

    Si devient légèrement inférieur à 3

    1 , c'est-à-dire si c1 devient

    inférieur à 3

    20, l’optimum se trouve au point extrême B.

    Pour une contribution exactement égale à 3

    20 DH, il y a une infinité de

    solutions qui sont tous les points du segment [B,C].

  • © Reproduction interdite - 25 -

    Nous venons de voir que si la « plage » de variation 103

    201 c

    l’optimum reste au même point extrême. Cette information est utile pour

    le gestionnaire. Une analyse similaire peut être faite pour le coefficient

    c2.

    b) Modification d’un second membre d’une contrainte

    Le second membre de la deuxième contrainte est égale à 100.

    Supposons qu’il devienne 100 . Une valeur 0 correspond à une

    augmentation de la quantité de ressource disponible, 0 correspond à une diminution. La contrainte

    1002 yx correspond à un demi-espace délimité par la droite d’équation

    1002 yx

    la droite iso-profit conserve la même pente. Lorsque 0 , le point solution reste le point extrême défini par l’intersection des droites D1 et

    Figure 4.1

  • © Reproduction interdite - 26 -

    D2 tant que la droite correspondant à D2 reste comprise entre les cas 1

    et 2 représentées sur la figure 4.2.

    Lorsque 0 , le point solution reste le point extrême défini par l’intersection des droites D1 et D2 tant que la droite D2 reste comprise

    entre les cas 1 et 3.

    La solution est donc définie par l’intersection des droites associées aux

    deux mêmes contraintes tant que reste comprise entre les deux

    valeurs min et max, où min est la valeur telle que la droite d’équation

    min1002 yx passe par le point B et max est la valeur telle que la droite d’équation

    max1002 yx passe par le point E.

    Or B est de coordonnées

    60

    15 et E de coordonnées

    0

    60

    On doit donc avoir, pour définir min

    2.15 + 60 = 100 + min soit min = -10

    et pour max

    2.60 + 0 = 100 + max soit max = 20

    Donc tant que le second membre de la contrainte D2 reste compris entre

    100 – 10 = 90 et 100 + 20 = 120

    Le point correspondant à l’optimum reste défini par l’intersection de D1

    et D2 et l’optimum se déplace sur le segment [B ,E]. Quand ce point

    optimum se déplace, la valeur de la fonction objectif est modifiée. Il sera

    utile pour le gestionnaire de savoir comment va varier son profit quand

    la disponibilité des ressources sera modifiée. Tant que l’optimum reste

    sur l’arête [B ,E] on aura un même taux de variation du profit en

    fonction de la variation de la quantité de ressource disponible. Ce taux

    de variation pourrait être calculé, à partir du cas de figure considéré. Il

    sera appelé la valeur marginale de la ressource associée à la contrainte

    D2.

    Les logiciels de Programmation Linéaire, comme le Solveur d’Excel,

    fournissent cette information. On y reviendra dans une section spéciale.

  • © Reproduction interdite - 27 -

    c) Modification d’un coefficient technique

    La modification d’un coefficient technique changera la pente d’une droite

    associée à une contrainte. Une analyse similaire aux précédentes

    pourrait être développée.

    II- Programmes linéaires à plusieurs variables

    Tout programme linéaire peut se ramener à une formulation ayant une

    interprétation économique simple et intuitive. On l’appelle formulation

    primale en opposition à une formulation duale qui sera étudiée plus tard.

    Cette formulation appelée aussi forme canonique peut s’écrire de

    plusieurs façons .

    Par exemple dans le cas d’un problème de maximisation, on a :

    Figure 4.2

  • © Reproduction interdite - 28 -

    0...,,0,0

    ...

    ...

    ...

    ...

    int

    ...][

    21

    2211

    22222112

    11212111

    2211

    n

    mnmnmm

    nn

    nn

    nn

    xxx

    bxaxaxa

    bxaxaxa

    bxaxaxa

    escontralessous

    xcxcxcZMAX

    ou bien

    njx

    mixa

    sous

    xcZMAX

    j

    n

    j

    jij

    nj

    j

    jj

    ,...,10

    ,...,1

    ][

    1

    1

    Ou bien, en utilisant une écriture matricielle :

    0

    ][

    x

    bAx

    Sous

    xcZMAX t

    mnm

    n

    aa

    aa

    A

    ...

    .....

    ...

    1

    111

    ; ),...,,( 21 nt cccc ; ),...,,( 21 n

    t xxxx et

    mb

    b

    b .

    1

    Les variables xj et les coefficients cj, aij et bi étant des réels.

    Dans la section précédente, nous avons montré comment formuler de

    cas simples à deux variables sous forme de programmes linéaires et

    comment les résoudre simplement moyennant une technique graphique.

  • © Reproduction interdite - 29 -

    Mais cette méthode est impraticable au-delà de deux variables et le

    recours à une méthode générale devient indispensable pour des cas

    concrets à plusieurs variables et plusieurs contraintes.

    Nous consacrons cette section à l’algorithme de simplexe qui permet de

    résoudre efficacement ces problèmes.

    Cette méthode fut développée par G. Dantzig en 1947. Le principe du

    simplexe consiste à poser d’abord le problème sous une forme dite

    standard et à déterminer, à partir d’une solution dite de base réalisable

    une autre solution admissible qui améliore la fonction objectif et ainsi de

    suite : la solution optimale, si elle existe, sera obtenue une fois

    l’amélioration de la fonction objectif est impossible.

    La forme standard d’un programme linéaire consiste en une

    transformation des contraintes de type inéquation en équations.

    Toutes les contraintes de la forme

    ininii bxaxaxa ...2211

    peuvent s’écrire sous la forme d’équations en introduisant des variables

    additionnelles non négatives dites variables d’écart.

    Par exemple, le système de contraintes :

    1002

    24034

    yx

    yx

    deviendra

    1002

    24034

    2

    1

    eyx

    eyx

    par l’ajout de deux variables d’écart non négatives e1 et e2.

    1- Algorithme du simplexe : méthode algébrique de résolution

    Nous utilisons le cas simple du cas MOBILIA pour illustrer cette méthode.

  • © Reproduction interdite - 30 -

    Soit le programme linéaire sous sa forme canonique :

    0,0

    60

    1002

    24034

    57][

    yx

    y

    yx

    yx

    sous

    yxZMAX

    La méthode du simplexe nécessite la mise sous forme standard du

    programme linéaire à résoudre en ajoutant autant de variables d’écart

    qu’il y a de contraintes de type inégalité.

    Ainsi pour le problème ci-dessus, la forme standard associée s’exprime

    ainsi :

    0,0,0,0,0

    60

    1002

    24034

    57][

    321

    3

    2

    1

    eeeyx

    ey

    eyx

    eyx

    sous

    yxZMAX

    ou bien

    0

    ][

    x

    bAx

    sous

    xcZMAX t

    3

    2

    1

    eeeyx

    x ; )0,0,0,5,7(

    tc ;

    10010

    01012

    00134

    A et

    60

    100

    240

    b.

  • © Reproduction interdite - 31 -

    L’algorithme du simplexe est itératif, autrement dit, il part d’une solution

    de départ admissible dite solution de base réalisable et essaie de

    l’améliorer de proche en proche, c'est-à-dire d’une solution de base

    réalisable à une autre solution de base améliorante jusqu’à l’optimum.

    De manière générale, un programme linéaire sous forme standard se

    ramène à la forme :

    0

    ),(

    ][

    x

    mnnmformatdematriceAbAx

    sous

    xcZMAX t

    faisant apparaître une matrice A qui peut se décomposer en deux sous-

    matrices

    ][ BIDA

    Les colonnes de la matrice B sont des colonnes-unités, linéairement

    indépendantes. Ces colonnes forment une base de l’espace vectoriel des

    colonnes à m éléments. On appellera B matrice de base.

    Les variables associées aux colonnes de la matrice B seront appelées les

    variables de base. Dans notre exemple les variables de base sont

    essentiellement les variables d’écart e1, e2 et e3.

    Les variables associées aux colonnes de la matrice D seront appelées

    variables hors-base ; il s’agit des variables de décision x et y dans

    l’exemple.

    D’une manière générale, la matrice A a m lignes (autant qu’il y a de

    contraintes) et n colonnes, avec n > m. Si on sélectionne m variables de

    base et si on annule les n-m variables hors-base, la matrice A se

    décompose en

    ][ BIDA

    et le système se réduit à :

    bBxB

    avec B une matrice d’ordre m.

  • © Reproduction interdite - 32 -

    La matrice B est carrée d’ordre m. Si elle définit une base, elle admet

    une matrice inverse B-1.

    Une solution du système est donc

    bBxx BD1,0

    Si l’expression B-1b est non négative (≥0), on une solution admissible qui

    vérifie les contraintes et que nous appellerons une solution de base

    réalisable ou admissible.

    0),0(),( 1 bBxxx BD Si le second membre b est positif, une solution de base réalisable

    évidente est obtenue en annulant les variables de décision et en

    affectant le second membre aux variables d’écart.

    En effet B est réduite à la matrice identité et la solution de base est

    décomposée en deux types de variables :

    Vecteur de variables de base : xB

    Vecteur de variables hors-base : xD

    Revenons à notre exemple et remarquons :

    BD

    A

    100

    010

    001

    10

    12

    34

  • © Reproduction interdite - 33 -

    60

    100

    240

    100

    010

    001

    10

    12

    34

    )57(][

    3

    2

    1

    e

    e

    e

    y

    x

    sous

    y

    xZMAX

    BD

    Soit

    bBxDx BD

    avec

    60

    100

    240

    0

    03

    1 bbIbBxety

    xx BD

    Une solution de base réalisable de départ correspond ici à l’origine.

    Nous sommes donc en présence de :

    - variables de base : 60100,240 321 eetee

    - variables hors-base : 0 yx

    et la valeur correspondante de la fonction objectif Z est nulle : Z = 0.

    Recherche d’une solution de base améliorante : première itération

    Dans la solution de base admissible initiale on a :

    00 Zetyx

    pour améliorer la valeur de l’objectif Z, il suffit de faire passer l’une de

    ces deux variables de la valeur 0 à une valeur positive.

    Or la fonction économique est : yxZ 57

    Il est donc plus intéressant de choisir x qui vaut 7 par unité alors que y

    ne vaut que 5.

  • © Reproduction interdite - 34 -

    La variable ainsi sélectionnée est appelée variable entrante ( y restant

    nulle, c'est-à-dire variable hors-base)

    Maintenant il s’agit de savoir la valeur maximale à donner à x, variable

    entrante.

    Le système de contraintes permet d’exprimer les variables de base en

    fonction de x et y

    ye

    yxe

    yxe

    60

    2100

    34240

    3

    2

    1

    or y = 0

    soit

    60

    2100

    4240

    3

    2

    1

    e

    xe

    xe

    on doit avoir

    00,0 321 eetee

    60,0424001 xsoitxsie

    50,0210002 xsoitxsie

    Pour satisfaire le système de contraintes, la valeur maximale que nous

    pouvons donner à x est 50.

    Nous obtenons la nouvelle solution de base réalisable :

    - variables de base : 6040,50 31 eetex

    - variables hors-base : 0,0 2 ey

    la valeur de la fonction objectif est : 350Z

    En fait, nous arrivons au sommet adjacent à l’origine, le sommet de

    coordonnées

    0

    50

  • © Reproduction interdite - 35 -

    La variable e2 devient variable hors-base. e2 est dite variable sortante.

    Maintenant la question qui se pose est : peut-on améliorer cette

    solution ?

    Pour ce faire, exprimons la fonction Z en fonction de la valeur de x

    valeur tirée de la contrainte qui nous a permis de déterminer la valeur

    maximale que nous pourrions lui attribuer (50), c'est-à-dire :

    1002 2 eyx

    soit

    22

    1

    2

    150 eyx

    et

    22

    7

    2

    3350 eyZ

    Z est ainsi exprimée en fonction des nouvelles variables hors-base y et

    e2.

    On peut toujours améliorer la valeur de Z puisque le coefficient de y est

    positif (2

    3).

    Deuxième itération

    22

    7

    2

    3350 eyZ

    Seule la variable y peut être retenue comme variable entrante.

    Reportons maintenant la valeur de x tirée précédemment de la deuxième

    équation contrainte ( 221

    2150 eyx ) dans les deux autres équations :

    Soit pour la première équation :

    2403)21

    2150(4 12 eyey

    soit : 2402200 12 eey

    La troisième équation ne subit aucun changement : 603ey

    soit le nouveau système :

  • © Reproduction interdite - 36 -

    601002402

    3

    2

    12

    eyeyxeey

    ye

    eyx

    eye

    6021

    2150

    240

    3

    2

    21

    02eOr

    060

    02150

    040

    3

    21

    ye

    yx

    ye

    6010040

    yyy

    donc, la valeur maximale que nous pouvons affecter à y est 40.

    20;0;3040 31 eexalorsySi

    la variable e1 devient variable hors-base : c’est la variable sortante.

    Nous obtenons ainsi la solution de base admissible suivante :

    - variables hors base : 021 ee

    - variables de base : 20;40;30 3 eyx

    - la valeur de Z : 41020021040.530.7 Z

    en fait, on se trouve au sommet adjacent de coordonnées 4030 Cette solution peut-elle être améliorée ?

    Nous avons déterminer la valeur 40 à donner à y à partir de l’équation :

    21 240 eye

    21 240 eeysoit

    La fonction objectif résultant de la première itération est :

    22

    7

    2

    3350 eyZ

    devient 221 27)240(

    23350 eeeZ

  • © Reproduction interdite - 37 -

    soit 21 21

    23410 eeZ

    Les coefficients des variables e1 et e2 sont négatifs. Faire « entrer » e1

    ou e2 réduirait la valeur de Z. Il n’est donc plus possible d’améliorer Z.

    Nous avons obtenu la solution optimale :

    410;40;30 optimalZyx

    Remarques

    - A chaque itération nous avons choisi parmi les variables hors-base

    de la solution en cours une variable qui devient positive : c’est la

    variable entrante.

    - Cette variable est portée à une valeur telle qu’une des variables de

    base devient nulle : c’est la variable sortante.

    Cette transformation correspond au passage d’un sommet à un sommet

    adjacent.

    Il y a échange de variables : l’une « sort » de la base, l’autre y « entre ».

    Critères de sélection de ces variables

    Critère de choix de la variable entrante :

    Pour déterminer la variable entrante, on exprime la fonction économique

    en fonction des seules variables hors base et on choisit la variable du

    coefficient positif le plus élevé.

    Critère de choix de la variable sortante :

    On effectue les rapports des seconds membres des contraintes aux

    coefficients correspondants de la variable entrante. La variable sortante

    correspond au plus petit rapport strictement positif.

    Critère d’arrêt :

    Lorsque les coefficients de la fonction objectif exprimée en fonction des

    seules variables hors base sont négatifs ou nuls, l’algorithme s’arrête. La

    solution optimale est trouvée.

    2- Algorithme du simplexe : méthode des tableaux

    La méthode du simplexe peut être présentée sous forme de tableaux qui

    facilitent considérablement les calculs. Reprenons le même cas traité par

    la méthode algébrique, sous sa forme standard :

  • © Reproduction interdite - 38 -

    0,0,0,0,0

    60

    1002

    24034

    57][

    321

    3

    2

    1

    eeeyx

    ey

    eyx

    eyx

    sous

    yxZMAX

    et présentons la solution algébrique sous forme d’une suite de tableaux.

    Le premier tableau correspondant à la solution de base de départ se

    présente comme suit :

    x y e1 e2 e3 R

    e1 4 3 1 0 0 240

    e2 2 1 0 1 0 100

    e3 0 1 0 0 1 60

    Z 7 5 0 0 0 0

    Détermination de la variable entrante

    Selon le premier critère de Dantzig, on sélectionne dans la fonction

    objectif Z la variable affectée du coefficient positif le plus élevé.

    Donc la variable entrante est x (coefficient 7 dans Z).

    Détermination de la variable sortante

    Selon le second critère de Dantzig, il faut établir les rapports des seconds

    membres des contraintes aux coefficients correspondants de la variable

    entrante (colonne x) et sélectionner la variable du plus petit rapport

    positif.

    On divise donc successivement 240 par 4 (60), 100 par 2 (50) et nous

    sélectionnons la variable e2 (ligne correspondant à 50, plus petit rapport

    positif).

    Variables d’écart

    Coefficients de la fonction Z

    Va

    ria

    ble

    s

    de

    ba

    se

    Variables de décision

    Seconds

    membres

    des contraintes

    Valeur de Z

    Coefficients du système

    des contraintes

  • © Reproduction interdite - 39 -

    x y e1 e2 e3 R ColonneR

    e1 4 2 1 0 0 240 604240

    e2 2 1 0 1 0 100 502100

    e3 0 1 0 0 1 60 -

    Z 7 5 0 0 0 0

    Le nombre pivot va nous permettre de transformer ce tableau en un

    deuxième tableau correspondant à une solution améliorante.

    Cette transformation se fait selon les étapes suivantes :

    - si le nombre pivot est différent de un, on divise toute la ligne par

    ce nombre ;

    - on transforme la colonne du pivot en une colonne unitaire par des

    opérations élémentaires suivant les lignes.

    D’où le deuxième tableau simplexe :

    Comme 23 nombre positif fait partie de la ligne Z, la solution est à

    améliorer par une nouvelle transformation.

    Soit le nouveau tableau simplexe :

    x Y e1 e2 e3 R

    y 0 1 1 -2 0 40

    x 1 0 21

    23 0 30

    e3 0 0 -1 2 1 20

    Z 0 0 23

    21 0 - 410

    x y e1 e2 e3 R ColonneR

    e1 0 1 1 -2 0 40 40140

    x 1 21 0 2

    1 0 50 100

    2150

    e3 0 1 0 0 1 60 60160

    Z 0 23 0 2

    7 0 -

    350

    Min positif

    Min positif

  • © Reproduction interdite - 40 -

    Tous les éléments de la ligne Z sont négatifs ou nuls. L’algorithme du

    simplexe s’arrête. La solution optimale trouvée est :

    4104030

    optimalZyx

    la variable d’écart 203e signifie que la troisième contrainte n’est

    pas saturée. 20406040 ety

    Remarques :

    - le nombre à l’intersection de la ligne Z et de la colonne R sera

    toujours négatif (ici –410) ; il ne faut tenir compte que de sa

    valeur absolue qui représente la valeur de la fonction objectif

    ( 4030,410 yetxvautZ ).

    - Le nombre pivot n’est pas nul, certains calculs peuvent être évités :

    o Lorsqu’un zéro figure sur la ligne pivot d’un tableau, la

    colonne contenant ce zéro peut être recopiée intégralement

    dans le tableau suivant ;

    o Lorsqu’un zéro figure dans la colonne du pivot, la ligne qui le

    contient peut également être transcrite sans changement

    dans le tableau suivant.

    - Pour dégager la variable sortante, il faut diviser chaque élément de

    la colonne que nous avons intitulée R par l ‘élément correspondant,

    sur la même ligne, de la colonne pivot. Un zéro peut apparaître

    dans la colonne R : dans ce cas, il faut le remplacer par un nombre

    positif infiniment petit, noté « » et continuer les calculs avec

    cette valeur que, dans la solution optima le, nous arrondirons

    à zéro.

    3- Recherche d’une solution de base réalisable de départ

    Comme toute méthode itérative, l’algorithme du simplexe nécessite la

    connaissance préalable d’une solution de base réalisable. Cette dernière

    est immédiate quand les variables principales étant nulles

  • © Reproduction interdite - 41 -

    ( Oorigineldireàestcxxx n '',0...21 ), toutes les contraintes sont

    respectées.

    Aussi, nous avons cette solution de base initiale quand toutes les

    contraintes sont du type et leur second membre positif.

    Cette solution ne convient pas :

    - si le second membre d’une contrainte de type est négatif

    - si une contrainte est du type et son second membre positif

    - si une contrainte est définie par une égalité.

    Dans ces trois cas, la solution correspondant à l’origine ne convient pas

    puisque les contraintes ne sont pas vérifiées.

    1er cas

    Si le second membre d’une contrainte de type est négatif, il faut

    multiplier les deux membres de l’inégalité par (-1) et changer le signe de

    l’inégalité. On se retrouve avec une contrainte correspondant au second

    cas.

    2ème cas

    Si une contrainte (ou plusieurs contraintes) est du type , le second

    membre étant positif, le fait d’introduire une variable d’écart ne permet

    pas de prendre l’origine comme solution de base de départ.

    Par exemple

    2525

    eyx

    yx

    Pour pallier cet inconvénient, on introduit dans l’équation un nouveau

    type de variable, variable positive affectée du coefficient +1, appelée

    variable artificielle et notée V.

    25 Veyx

    L’introduction de la variable artificielle V a pour effet d’élargir le champ

    des solutions admissibles et permet d’obtenir une solution de base

    réalisable de départ :

    - variables hors base : ;0,0,0 eyx

    - variable de base : .25V

  • © Reproduction interdite - 42 -

    La variable d’écart est traité comme les variables x et y, la variable

    artificielle V comme variable de base. En cours du déroulement de la

    méthode du simplexe, la mise hors-base de la variable artificielle

    réintroduit la contrainte initiale 25yx sans la dénaturer.

    Pour que la fonction économique ne change pas de valeur, il faut que la

    variable artificielle n’influe pas sur l’optimum de la fonction objectif. La

    variable artificielle intervient dans l’optimum avec une valeur nulle, si

    nous l’affectons dans la fonction économique à maximiser d’un coût

    négatif élevé, qu’on notera –M (méthode du « Big M »).

    Exemple

    Soit le programme linéaire sous forme canonique suivant :

    yxZMAX 4030][

    0,02

    2282

    yxy

    yxyx

    ou sous forme standard

    MVyxZMAX 4030][

    0,0,0,0,0,02

    2282

    321

    3

    2

    1

    Veeeyxey

    Veyxeyx

    or

    22 22)22( MeMyMxMeyxMMV

    d’où la forme de la fonction objectif

    2224030][ MeMyMxMyxZMAX

    ou bien

    MMeyMxMZMAX 2)40()230(][ 2

    d’où le premier tableau simplexe :

  • © Reproduction interdite - 43 -

    x y e1 e2 e3 V R

    e1 2 1 1 0 0 0 8

    V 2 -1 0 -1 0 1 2

    e3 0 1 0 0 1 0 2

    Z (30+2M) (40-M) 0 -M 0 0 2M

    Remarque : une fois que V quitte la base, plus besoin de garder la

    colonne V dans les tableaux suivants.

    x y e1 e2 e3 R

    e1 0 2 1 0 0 6

    X 1 21 0

    21 0 1

    e3 0 1 0 0 1 2

    Z 0 55 0 15 0 -30

    x y e1 e2 e3 R

    e1 0 0 1 1 -2 2

    x 1 0 0 21

    21 2

    y 0 1 0 0 1 2

    Z 0 0 0 15 -55 -140

    x y e1 e2 e3 R

    e2 0 0 1 1 -2 2

    X 1 0 21 0

    21 3

    Y 0 1 0 0 1 2

    Z 0 0 -15 0 -25 -170

    D’où la solution optimale

    17023

    optimalZyx

  • © Reproduction interdite - 44 -

    3ème cas

    Si une contrainte (ou plusieurs) est définie par une égalité, on utilisera

    également une variable artificielle V (d’un coût négatif élevé –M dans la

    fonction objectif), sans introduire une variable d’écart.

    Exemple

    yxZMAX 24][

    0,03605640058

    yxyxyx

    ou sous forme standard

    MVeyxZMAX 1024][

    0,0,0,03605640058

    1

    1

    VeyxVyxeyx

    déterminons l’expression de –MV à partir de la deuxième contrainte

    MMyMxMV 36056

    reportons ensuite cette valeur dans Z

    MMyMxeyxZ 36056024 1

    MeyMxMZSoit 3600)25()46( 1

    x y e1 V R

    e1 8 5 1 0 400

    V 6 5 0 1 360

    Z 6M+4 5M+2 0 0 360M

    x y e1 V R

    x 1 85

    81 0 50

    V 0 8

    10 86 1 60

    Z 0 8

    410 M 8

    46 M 0 60M-200

  • © Reproduction interdite - 45 -

    x y e1 R

    x 1 0 2

    1 20

    y 0 1 53 48

    Z 0 0 54 - 176

    D’où la solution optimale

    1764820

    optimalZyx

    III- Dualité

    Cette section concerne la relation que l’on peut établir entre un problème

    de programmation linéaire et son dual. La notion de dualité en

    programmation linéaire est très intéressante puisqu’elle permet de

    montrer qu’à un problème d’allocation optimale de ressources rares est

    aussi associé un problème de tarification optimale de ressources. On

    retrouve ainsi un des paradigmes de base de l’analyse économique où un

    équilibre est sous-tendu par un système de prix approprié. Cette

    tarification optimale de ressources va aussi permettre une analyse de

    sensibilité de la solution quand le second membre des contraintes est

    perturbé. Nous verrons alors que la solution du problème dual indique

    l’influence marginale des dotations en ressources sur la fonction objectif.

    1- Formes primale et duale d’un problème de programmation

    linéaire

    Nous allons définir de manière formelle les formes primale et duale d’un

    même programme linéaire. Par la suite nous donnerons les résultats

    mathématiques qui lient ces formes entre elles et nous interpréterons

    ces résultats.

    a) un problème sous forme primale et son dual

    Soit le problème de programmation linéaire défini ci-dessus :

  • © Reproduction interdite - 46 -

    0,0

    60

    1002

    24034

    57][

    yx

    y

    yx

    yx

    sous

    yxZMAX

    Qui représente une situation d’allocation optimale de ressources rares.

    Nous appelons cette forme du problème la forme primale.

    Nous définissons formellement, la forme duale de ce problème comme

    suit ;

    wvuWMIN 60100240][

    0,0,053

    724

    wvuwvuvu

    Remarquons que, dans cette forme duale, il y a autant de variables qu’il

    y a de contraintes dans la forme primale et il y a autant de contraintes

    qu’il y a de variables primales. Ces deux problèmes ont ainsi des

    formulations symétriques. Cette symétrie est ainsi mise en évidence si

    nous utilisons la notation matricielle.

    Forme primale

    0

    ][

    x

    bAx

    Sous

    xcZMAX t

    Forme duale

    sousubZMIN t][

    0ucAut

  • © Reproduction interdite - 47 -

    Cette symétrie qui relève plus d’une esthétique mathématique cache en

    fait un paradigme fondamental de l’analyse économique, appelée dualité

    quantité-prix qui permet de considérer un problème d’allocation de

    ressources de deux façons équivalents, soit comme la détermination des

    niveaux optimaux des activités (détermination des quantités), soit

    comme la valorisation optimale des ressources (détermination des prix).

    b) Correspondance Dual/Primal

    Le tableau ci-dessus donne un ensemble de règles formelles permettant

    de passer d’un problème de programmation linéaire général à sa forme

    duale.

    [MAX] Z [Min] W

    Variable xj ≥ 0 Contrainte j ≥

    Variable xj ≤ 0 Contrainte j ≤

    Variable xj sans restriction de signe Contrainte j =

    Contrainte i ≤ Variable ui ≥ 0

    Contrainte i ≥ Variable ui ≤ 0

    Contrainte i = Variable ui sans restriction de signe

    Table 3.1 – Règles de dualité

    2- Propriétés fondamentales

    Nous admettons les résultats suivants sans démonstrations (pour les

    puristes, voir références)

    a) La fonction objectif du problème primal à la même valeur optimale

    que la fonction objectif du problème dual.

    b) Si, pour une solution d’un programme linéaire, une contrainte n’est

    pas saturée, alors la valeur optimale de la variable duale

    correspondante est nulle. La réciproque est fausse.

    c) Si la valeur optimale d’une variable d’un programme linéaire n’est

    pas nulle, alors la contrainte duale correspondante est saturée

    pour la solution optimale.

  • © Reproduction interdite - 48 -

    3- Résolution d’un problème de minimisation par passage au

    dual

    a) Méthode

    La résolution d’un problème de minimisation par la méthode du simplexe

    n’est pas toujours simple dans la mesure où la plupart des contraintes

    sont de type et on ne dispose pas d’une solution de base réalisable de

    départ évidente.

    Il faut introduire des variables artificielles, ce qui complique

    singulièrement la solution.

    Aussi utiliserons-nous la notion de dualité en tenant compte des

    propriétés fondamentales précédentes.

    La démarche est alors la suivante :

    1. A partir de la forme canonique du programme à minimiser, écrire le

    dual.

    2. Résoudre le programme dual par la méthode du simplexe (méthode

    des tableaux).

    3. Le maximum du dual est le minimum recherché.

    4. Rechercher par application des propriétés fondamentales b et c ci

    dessus :

    - d’une part, les contraintes du dual non saturées par la solution

    trouvée : en déduire que la variable du primal correspondant à

    chaque contrainte non saturée est nulle ;

    - d’autre part, le système à résoudre à partir des contraintes du

    primal (obligatoirement saturées) correspondant aux variables

    optimales du dual non nulles.

    La résolution de ce système donne la solution optimale.

    Une autre façon de détecter la solution optimale peut se faire à partir du

    dernier tableau simplexe de résolution du dual :

    Les solutions du primal sont, au signe près, les valeurs des variables

    d’écart du dual qui figurent sur la dernière ligne du dernier tableau

    simplexe du dual. Il est don recommandé de vérifier la solution obtenue

    précédemment par application des propriétés fondamentales b et c.

  • © Reproduction interdite - 49 -

    b) Application

    Soit le problème de la société DINDINO

    BAZMIN 32][

    )int(0,0

    )int(2

    3

    2

    1

    )minint(4834

    )int(90105

    3

    2

    1

    négativiténondeescontraBA

    DferlesurescontraA

    DesvitalessurescontraBA

    DeslesproteinsurecontraBA

    * Ecrivons d’abord le dual

    ZYXZMAX 34890'][

    0,0,03310245

    ZYXYXZYX

    Soit sous forme standard

    ZYXZMAX 34890'][

    0,2,1

    2

    1

    ,,,3310245

    eeZYXeYXeZYX

    * Résolvons ensuite ce problème par la méthode de simplexe

    X Y Z e1 e2 R

    e1 5 4 1 1 0 2

    e2 10 3 0 0 1 3

    Z’ 90 48 3 0 0 0

    X Y Z e1 e2 R

    e1 0 25 1 1 2

    1 21

    X 1 103 0 0 10

    1 103

    Z’ 0 21 3 0 -9 -27

  • © Reproduction interdite - 50 -

    X Y Z e1 e2 R

    Y 0 1 52

    52

    51

    51

    X 1 0 253

    253

    251

    256

    Z’ 0 0 527

    542

    524 -31,20

    La ligne Z’ne contient plus que des éléments nuls ou négatifs. La solution

    optimale trouvée est : le minimum cherché est : 31,20.

    e1 = e2 = 0 à la fin des calculs implique que les deux contraintes duales

    sont saturées.

    Les deux variables optimales du dual X et Y sont non nulles. D’après la

    propriété fondamentale (c) les contraintes primales correspondantes sont

    obligatoirement saturées.

    Soit

    483490105

    BABA

    Système dont la solution est :

    8,44,8

    BA

    Solution conforme à celle obtenue par la méthode graphique.

    Rappelons que les solutions sont, au signe près, les valeurs des variables

    d’écart du dual, figurant sur la ligne Z’ du dernier tableau du dual.

    Sur la ligne Z’ du dernier tableau calculé, on lit :

    e1 = 542 et e2 = 5

    24

    Donc A = 542 = 8,4 et B = 5

    24 = 4,8

    D’autre part, on lit aussi : Z = 527 ce qui correspond à l’excédent de la

    troisième contrainte du primal. En effet, A = 8,4, soit un excédent de

    8,4 – 3 = 5,4

    4- Interprétation économique de la dualité

    Pour cela, nous reprenons l’exemple de la société MOBILIA.

  • © Reproduction interdite - 51 -

    Il s’agit d’un problème où deux activités se partagent trois ressources

    rares.

    On cherche les niveaux qui maximisent la contribution totale aux profits

    et frais fixes.

    0,0

    60

    1002

    24034

    57][

    yx

    y

    yx

    yx

    sous

    yxZMAX

    a) Tarification optimale des ressources

    Imaginons que le choix des niveaux d’activités soit confié à un gérant. Le

    propriétaire de l’entreprise détient les ressources mais il n’a aucun

    contrôle direct sur les niveaux d’activité.

    Le propriétaire cherche à établir un système de prix pour les ressources

    qui force le gérant à choisir les niveaux d’activité optimaux. Soit :

    - u le prix de la ressource #1

    - v le prix de la ressource #2

    - w le prix de la ressource #3

    Pour le propriétaire des ressources, une façon, de s’assurer que la valeur

    totale des ressources soit toujours supérieure ou égale à la contribution

    des activités, consiste à définir les prix de telle sorte que, pour chaque

    activité, la contribution unitaire soit inférieure ou égale à la valeur des

    ressources utilisées, valeur calculée à partir des coefficients techniques

    (taux d’utilisation) et des prix définis ci-dessus. Nous avons donc deux

    inégalités :

    53

    724

    wvu

    vu

    Nous imposons en outre à ces prix d’être non négatifs (≥0).

    Si nous envisageons de facturer le gérant, pour l’utilisation des

    ressources, à partir du système de prix (u,v,w) satisfaisant les inégalités

    ci-dessus, nous pouvons garantir au propriétaire un paiement total qui

  • © Reproduction interdite - 52 -

    soit toujours supérieur ou égal à la contribution des activités choisies par

    le gérant.

    Comme on ne peut demander au gérant de verser un loyer supérieur à

    la contribution maximale possible qu’il peut retirer des activités, nous

    devons chercher le système de prix qui rende minimal le loyer total

    versé, sous les contraintes indiquées plus haut, c'est-à-dire résoudre le

    problème dual du problème :

    wvuWMIN 60100240][

    0,0,053

    724

    wvuwvuvu

    La solution de ce problème est : u* = 1,5 ; v* = 1/2 ; w* = 0

    En fait, la solution du problème dual correspond à la valeur marginale de

    chaque ressource.

    La solution du problème primal est :

    x* = 30 ; y* = 40.

    Les deux premières contraintes sont saturées, la troisième ne l’est pas.

    En effet les variables d’écart correspondantes valent : e1 = e2 = 0 ; e3 =

    20

    La valeur marginale d’une ressource qui n’est pas complètement utilisée

    est nulle.

    Ici e3* 0 w

    * = 0

    Les ressources 1 et 2 sont complètement utilisées, leur valeur marginale

    est positive. Le système optimal de tarification de ressources est donc :

    u* = 1,5 ; v* = 0,5 ; w* = 0

    Avec ce système de prix, pour chaque activité de production, on a

    égalité entre contribution unitaire et la valeur des ressources utilisées.

    4.1,5 + 2.0,5 = 7

    3.1,5 + 0,5 + 0 = 5

    La valeur totale des ressources est :

    W* = 240.1,5 + 100.0,5 + 60.0 = 360 + 50 = 410

    Ce qui correspond bien à la valeur optimale de la fonction objectif.

  • © Reproduction interdite - 53 -

    b) Tarification optimale de la demande pour un service public

    Considérons un service public, par exemple l’ONEP fournisseur d’eau

    potable. On distingue la demande suivant m différents postes horaires.

    La demande d’eau potable est donc définie par un vecteur d=(di)i=1,…,m

    de quantités d’eau à fournir pour chaque poste. Pour satisfaire cette

    demande le service doit s’engager dans un certain nombre de n

    d’activités.

    L’activité #j a un coût cj et contribue à la satisfaction de la demande au

    taux aij. Le problème du service public est de satisfaire la demande au

    moindre coût total. Il doit donc choisir les niveaux d’activité qui satisfont

    le programme linéaire suivant

    xcZMIN t][

    0x

    dAx

    Le problème dual s’écrit

    udWMAX t][

    0u

    cAut

    Nous savons qu’à l’optimum les deux fonctions économiques seront

    égales. La solution du premier problème donne un plan de production

    optimal pour le service public. La solution du problème dual donne une

    tarification optimale du service, basée sur le coût marginal de la

    demande.

    IV- Programmation linéaire sous Excel

    Dans la première section nous avons vu que la méthode graphique

    permettait de résoudre facilement des programmes linéaires à deux

    variables.

    Cependant cette méthode se révèle impraticable pour des problèmes

    plus complexes de taille considérable tels que les problèmes rencontrés

    dans la réalité des entreprises et organisations. la version utilisée est Excel XP 2002

  • © Reproduction interdite - 54 -

    La méthode du simplexe développée en section deux apporte une

    solution au problème. C’est une méthode générale ayant fait ses preuves

    dans l’industrie et qui est implémentée dans divers packages logiciels

    pour ne citer que LINDO, X-Press, GAMS, etc., ainsi que dans divers

    tableurs sous forme d’ « add-in », c'est-à-dire un sous-programme

    incorporé permettant de résoudre des programmes linéaires.

    Nous nous intéressons ici au tableur Excel et à l’outil intégré

    « Solveur » permettant de solutionner des problèmes de

    programmation linéaire.

    Nous avons retenu cet outil, qui n’est pas, avouons-le, l’outil idéal pour

    résoudre des programmes linéaires de vraie grandeur industrielle, pour

    diverses raisons :

    - Excel est le tableur, pour ne pas faire de la pub gratuite, le plus

    utilisé et pratiquement toute organisation y a accès ;

    - D’autre part, c’est un outil utilisé dans divers cursus académiques

    (maths, statistiques,…) et la plupart des étudiants sont familiarisés

    avec cet outil ;

    Excel utilise une macro appelée Solveur permettant de résoudre des

    problèmes d’optimisation, en particulier des programmes linéaires.

    La version incluse dans Excel permet de traiter des programmes linéaires

    à la hauteur de 200 variables et 100 contraintes en dehors des

    contraintes de non négativité. Des versions plus sophistiquées du

    Solveur sont commercialisées par la société éditrice du Solveur d’Excel

    Frontline Systems inc. (www.frontsys.com ou www.solver.com) . Nous

    allons donc montrer l’utilisation du Solveur sur des cas pratiques déjà

    traités. Pour commencer, reprenons le cas MOBILIA.

    1- Cas MOBILIA sous Excel

    Le programme linéaire correspondant est :

    http://www.frontsys.com/http://www.solver.com/

  • © Reproduction interdite - 55 -

    0,0

    60

    1002

    24034

    57][

    yx

    y

    yx

    yx

    sous

    yxZMAX

    Résoudre un problème de programmation linéaire via Excel nécessite un

    certain nombre d’étapes.

    D’abord, il faut transcrire le modèle linéaire dans une feuille de calcul

    Excel. Ensuite il faut lancer le Solveur et lui transmettre un certain

    nombre d’information concernant le problème à résoudre, en particulier

    les cellules variables, la cellule cible et les contraintes. C’est ce que nous

    allons illustrer sur l’exemple MOBILIA.

    Pour la première étape, il n’y a pas de méthodes ou règles pour

    représenter un programme linéaire dans une feuille Excel. Nous disons

    plutôt que plusieurs représentations sont possibles et tout dépend de

    l’utilisateur, de son expérience et ses préférences (feeling).

    Cependant pour raison de commodité et pour ne pas dérouter le lecteur

    novice, nous utiliserons la même représentation pour les différents

    problèmes traités dans cette section.

    Ainsi comme vous pouvez le remarquer sur l’écran 1.1, nous avons

    utilisé des colonnes différents pour représenter tous les paramètres

    (valeur de la solution, contribution au profit et les coefficients des

    contraintes) associés aux variables de décision.

    La fonction objectif et chaque contrainte sont représentées dans

    différentes lignes de la feuille de calcul.

    Bien qu’elles ne soient pas nécessaires pour la résolution du problème,

    nous avons rajouté différentes étiquettes pour une bonne lisibilité du

    modèle et une meilleure compréhension des résultats fournis par le

    Solveur comme on le verra par la suite.

  • © Reproduction interdite - 56 -

    Ecran 1.1

    a) Cellules variables

    La boîte de dialogue du Solveur présente un certain nombre de zones

    correspondant aux différents éléments d’un programme linéaire, à savoir

    les variables de décision, la fonction objectif et les contraintes. Aussi la

    zone nommée Cellules variables fait références aux variables de

    décision du programme linéaire à résoudre.

    Chaque variable de décision du modèle est représentée par une cellule

    dans la feuille de calcul. Bien qu’il n’y ait pas de règles quant à la

    représentation de ces variables, il est plus pratique d’utiliser des cellules

    contiguës pour les variables de décision.

    Dans le cas MOBILIA, nous avons deux variables de décision à

    représenter par deux cellules adjacentes de la feuille Excel.

    Dans l’écran 1.1, nous avons utilisé les cellules B5 et C5 pour représenter

    respectivement le nombre de tables (T) et le nombre de chaises (C) à

    fabriquer.

    On peut aussi laisser vide ces cellules que leur affecter une valeur de

    notre choix. Le Solveur affectera automatiquement les valeurs optimales

    dans ces cellules si solution y en a.

    Il est souhaitable de formater ces cellules, par exemple le format décimal

    retenu pour la solution du problème.

    On peut également nommer ces cellules au lieu des références B5 et C5.

    Les étiquettes descriptives de ces cellules (comme celles dans les cellules

    A5, B4 et C4) sont recommandées pour une meilleure compréhension du

    modèle.

  • © Reproduction interdite - 57 -

    b) Cellule cible à définir

    La valeur de la fonction objectif se trouve dans la zone nommée Cellule

    cible à définir de la boîte de dialogue du Solveur. On choisit une

    nouvelle cellule libre de la feuille et on y saisit la formule correspondant

    à la fonction économique en fonction des cellules variables.

    Nous avons choisi la cellule D6 dans le cas MOBILIA (écran 1.1). Bien

    qu’on puisse utiliser directement les profits unitaires 7 DH et 5 DH dans

    la formule, il est préférable de saisir ces valeurs dans des cellules à part

    dans la feuille du modèle et utiliser leurs références relatives dan la

    formule de la cellule D6.

    Dans l’écran 1.1, nous avons entré les profits unitaires 7 DH et 5 DH

    dans les cellules B6 et C6 respectivement.

    La formule à entrer dans la cellule D6 peut s’écrire :

    = B6*B5 + C6*C5

    Le symbole « = » est impératif en Excel pour distinguer les formules des

    autres données. Cette formule reflète donc l’expression de la fonction

    objectif Z. On peut aussi formater la cellule D6 en format monétaire.

    En cas de problème à plusieurs variables, cette formule devient très

    longue et encombrante à la saisie. Pour pallier cet inconvénient, on peut

    utiliser la fonction intégrée d’Excel « SOMMEPROD » pour exprimer la

    fonction objectif du problème. Pour ce faire, il faut respecter la syntaxe

    de cette fonction. En effet, al fonction SOMMEPROD nécessite au moins

    deux plages de cellules de même taille comme arguments séparés par

    un point-virgule. L’une de ces plages (B5:C5) contient les cellules

    correspondant aux variables de décision et l’autre plage aux cellules des

    profits unitaires (plage B6:C6). Cette fonction calcule le produit scalaire

    de deux plages arguments.

    Dans notre cas, la formule en D6 peut s’écrire aussi :

    =SOMMEPROD(B6:C6;$B$5:$C$5)

    La plage ($B$5 :$C$5) a été saisie en références absolues (symbole $)

    pour fixer ces références lors de la recopie de la formule.

  • © Reproduction interdite - 58 -

    c) Contraintes

    Maintenant, il faut transcrire les contraintes dans la feuille Excel. Pour ce

    faire, nous convenons de la chose suivante : nous distinguons dans

    chaque contrainte trois éléments : le membre de droite (RHS) de la

    contrainte qui est un nombre en général, le membre de gauche (LHS) de

    la contrainte qui est une fonction linéaire des cellules variables et le type

    de la contrainte, c'est-à-dire une égalité ou une inégalité (=, ≤,≥).

    Pour traduire ces différents éléments d’une contrainte dans la feuille de

    calcul, nous devons réserver une cellule par membre de contrainte.

    Cellules associées aux membres gauches des contraintes (LHS)

    Nous associons une cellule de la feuille de calcul à chaque membre

    gauche de chaque contrainte du programme linéaire et nous traduisons

    en formule l’expression correspondante en fonction des variables de

    décision.

    Dans l’écran 1.1, nous avons utilisé la cellule D8 pour exprimer le

    membre gauche de la contrainte sur les heures de travail de l’atelier

    « menuiserie ». Au préalable, nous avons entré les coefficients (4 et 3)

    du membre gauche dans les cellules B8 et C8 respectivement. Ainsi on

    peut saisir indifféremment l’une ou l’autre des formules suivantes dans la

    cellule D8 :

    = B8*B5 + C8*C5

    ou bien

    = SOMMEPROD(B8:C8 ;$B$5:$C$5)

    Au passage remarquez que l’on aurait pu obtenir cette seconde formule

    par copie de la formule similaire de la cellule D6 (=

    SOMMEPROD(B6:C6 ;$B$5:$C$5)). Les formules des membres gauches

    des autres contraintes (D9 pour la peinture et D10 pour la contrainte

    commerciale) sont obtenues par copie de la formule saisie en cellule D8.

    Cellules associées aux membres droits des contraintes (RHS)

    Là aussi, on doit choisir une cellule de la feuille pour chaque membre

    droit de chaque contrainte.

  • © Reproduction interdite - 59 -

    Bien qu’on ait que des constantes dans notre exemple (240, 100 et 60),

    il est possible d’avoir des formules comme membre droit des contraintes

    comme pour les membres gauches.

    Dans l’écran 1.1 de notre exemple, nous avons reporté les membres

    droits des contraintes, à savoir 240, 100 «et 60 dans les cellules F8, F9

    et F10 respectivement.

    Type de contraintes

    Dans l’écran 1.1, nous avons aussi rajouté le type de relation (=, ≤, ≥)

    entre les deux membres de chaque contrainte (cellules E8:E10).

    A noter que ces signes ne jouent aucun rôle dans la résolution du

    problème mais ils ont été rajoutés pour une meilleure compréhension du

    modèle.

    d) Résolution via le Solveur

    Une fois les contraintes saisies dans la feuille, nous lançons la macro

    « Solveur » du menu « Outils » du tableau Excel. La boîte de dialogue

    « Paramètres du solveur » s’affiche à l’écran. Cette boîte de dialogue

    apparaît dans l’écran 1.2.

    Ecran 1.2

    Spécification de la cellule cible à définir

    On entre la référence de la cellule correspondant à la valeur de la

    fonction objectif (ici la cellule D6) dans la zone Cellule cible à définir

    de la boîte « Paramètres du Solveur ». L’option Max est retenue par

    défaut. Pour un problème de minimisation, on doit sélectionner l’option

  • © Reproduction interdite - 60 -

    Min pour spécifier que la fonction objectif est à minimiser. La troisième

    option « Valeur » nous permet de spécifier la valeur à atteindre par la

    cellule cible. Nous n’utiliserons pas cette option.

    Spécification des cellules variables

    Maintenant on passe à la zone Cellules variables. On entre dans cette

    zone les références des cellules des variables de décision du problème.

    Pour le cas MOBILIA, on entre donc la plage B5:C5. Excel affecte le

    symbole $ automatiquement aux cellules sélectionnées.

    Spécification des contraintes

    Ensuite nous utilisons le bouton Ajouter dans la zone suivante pour

    entrer les références des membres gauche (LHS) et membres droits

    (RHS) de chaque contrainte. La boîte de dialogue Ajouter une

    contrainte (voir écran 1.2) contient trois zones, une zone pour entrer la

    référence de la cellule du membre gauche Cellule (LHS) de la

    contrainte, ensuite une liste déroulante pour le type de contrainte et une

    zone pour saisir la référence de la cellule du membre droit Contrainte

    (RHS) de la contrainte. La liste déroulante propose cinq options ou

    choix : ≤, ≥, =, ent (pour entier), et bin (pour binaire).

    Nous pouvons entrer aussi bien chaque contrainte à la fois que plusieurs

    contraintes de même type (≤, ≥, =) en même temps. Pour notre cas, on

    peut ajouter la contrainte de l’atelier menuiserie en entrant D8 dans la

    zone de gauche (LHS), F8 dans la zone de droite (RHS) et en

    sélectionnant le type ≤ dans la liste du milieu. Comme il a été mentionné

    précédemment, le type ≤ de la cellule E8 n’a pas d’intérêt pour le

    Solveur et on doit plutôt entrer le type de chaque contrainte à partir de

    la boîte de dialogue « Ajouter une contrainte ». On peut maintenant

    ajouter la contrainte de l’atelier peinture en entrant D9 et F9 dans les

    zones LHS et RHS respectives de la boîte « Ajouter une contrainte ».

    Enfin, on ajoute la contrainte commerciale qui limite la fabrication des

    chaises en entrant D10 et F10 dans les zones LHS et RHS respectives.

    Du moment que les trois contraintes sont de même type (≤), on peut

    entrer la plage de cellules D8 :D10 dans la zone de gauche (LHS), et la

  • © Reproduction interdite - 61 -

    plage correspondante F8:F10 dans la zone de droite (RHS). On

    sélectionne « ≤ » comme type de contrainte dans la zone du milieu (liste

    déroulante) entre les deux entrées LHS et RHS. Le Solveur interprète

    alors ceci comme (D8≤F8, D9≤F9 et D10≤F10).

    Ainsi, il apparaît que trois entrées sont suffisantes pour saisir toutes les

    contraintes possibles, une pour les contraintes de type ≤, une pour les

    contraintes de type ≥ et une troisième pour toutes les contraintes de

    type =. Ceci suppose que les membres LHS et RHS des contraintes de

    même type sont disposées dans des cellules contiguës.

    Au cours de la saisie des contraintes, on peut utiliser les autres boutons

    Modifier et Supprimer pour modifier ou supprimer une contrainte.

    Notons qu’il n’est pas possible d’entrer les formules de la fonction

    objectif et des membres LHS et/ou RHS des contraintes dans la boite de

    dialogue Paramètres du Solveur. Les formules doivent être saisies

    dans des cellules appropriées de la feuille de calcul Excel avant d’utiliser

    le Solveur.

    Bien qu’il soit possible d’entrer directement des constantes (240, 100 et

    60 pour notre modèle) dans la zone de droite (RHS) au cours de l’ajout

    des contraintes, il est préférable d’entrer plutôt des références de

    cellules (F8, F9 et F10 dans notre modèle).

    Options du Solveur

    Une fois toutes les contraintes saisies, la résolution du modèle est enfin

    prête. Cependant, avant de cliquer le bouton Résoudre de la boîte

    Paramètres du Solveur, on doit d’abord cliquer le bouton Options

    pour afficher la boite de dialogue « Options du Solveur » (voir écran

    1.3).

    Pour résoudre la plupart des programmes linéaires, nous n’avons besoin

    de changer aucun des paramètres pris par défaut par le Solveur.

    Néanmoins, nous devons cocher les cases Modèle supposé linéaire et

    Supposé non négatif. La première case oblige le Solveur à renvoyer un

    plan détaillé de l’analyse de sensibilité de la solution trouvée et la

  • © Reproduction interdite - 62 -

    deuxième case ajoute automatiquement les conditions de non négativité

    des variables de décisions.

    Ecran 1.3

    Résolution du modèle

    Quand on clique le bouton Résoudre, le Solveur lance le programme de

    résolution d’un programme linéaire et les résultats apparaissent sur la

    feuille du modèle, comme, le montre l’écran 1.4. Avant de voir les

    résultats, il est important de jeter un coup d’œil sur le message de la

    boîte Résultats du solveur pour vérifier