41

Modèles linéaires: étude de cas industriels et économiquesfouilhoux/documents/ExoPLetjeux.pdf · Glpk: GNU Linear Programming Kit Glpk signi e GNU Linear Programming Kit. Il s'agit

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

  • Modèles linéaires: étude de cas industrielset économiques

    Pierre Fouilhoux

    [email protected]

    March 22, 2011

  • Avant-propos

    Ce document est un support de cours et de projets pour 4 séances de 4 heures d'un cours

    intégré donné à l'école ENSTA (Ecole Nationale Supérieure de Techniques Avancées)

    dans l'Unité d'Enseignement Introduction à l'optimisation discréte. Il s'adresse à des

    étudiants ayant des connaissances en algorithmique, théorie des graphes et Program-

    mation Linéaire (des rappels sont mis en �n de recueil).

    Son objectif est de voir comment la Programmation Linéaire peut traiter des prob-

    lèmes de Recherche Opérationnelle en insistant plus particulièrement sur les problèmes

    industrielles ou économiques.

    Séances correspondantes:

    29/03/11: Exercices de base et solveur linéaire Glpk / Première partie du projet

    05/04/11: Interprétation économique / Etude de cas

    26/04/11: Seconde partie du projet

    10/05/11: Rendu du projet

    Références utilisées pour ce cours

    • Linear Programming, Freeman, de Vasek Chvátal (incontournable mais en anglais)• Exercices et problèmes résolus de recherche opérationnelle (3 tomes), Dunod, parRoseaux.

    • Programmation Lineaire, Jean Teghem, Université de Bruxelles.Il existe de très nombreux autres et bons livres sur la Programmation Linéaire dans

    les livres de Recherche Opérationelle et d'Optimisation combinatoire.

    2

  • Contents

    1 Premiers exercices de modélisation 5

    1.1 Introduction par 2 exemples . . . . . . . . . . . . . . . . . . . . . . . . 5

    1.2 Exercices de modélisation . . . . . . . . . . . . . . . . . . . . . . . . . 6

    1.2.1 Combinaison optimale en vitamines . . . . . . . . . . . . . . . . 6

    1.2.2 Alliages et pourcentages . . . . . . . . . . . . . . . . . . . . . . 6

    1.2.3 Essence sans plomb . . . . . . . . . . . . . . . . . . . . . . . . . 7

    2 Utilisation du logiciel Glpk 8

    3 Interprétation économique 14

    3.1 Interprétation du Théorème des Ecarts Complémentaires . . . . . . . . 14

    3.2 Interprétation des variables duales . . . . . . . . . . . . . . . . . . . . . 15

    3.3 Exemples d'interprétation économique . . . . . . . . . . . . . . . . . . 16

    3.3.1 Economie sans tendresse... . . . . . . . . . . . . . . . . . . . . . 16

    3.3.2 Machine-outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    3.4 Programme linéaire paramétré . . . . . . . . . . . . . . . . . . . . . . . 17

    4 Etudes de cas 18

    4.1 Aide à la décision dans une exploitation agricole . . . . . . . . . . . . . 18

    4.2 Aide à la décision dans une exploitation forestière . . . . . . . . . . . . 20

    5 Projet: Jeu de l'arbre de poids minimum 23

    5.1 Organisation du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    5.2 Première partie: une répartition stable . . . . . . . . . . . . . . . . . . 24

    5.2.1 Dé�nition du problème . . . . . . . . . . . . . . . . . . . . . . . 24

    5.2.2 Coalitions et répartitions . . . . . . . . . . . . . . . . . . . . . . 25

    5.2.3 Répartition stable . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    5.2.4 Questions théoriques . . . . . . . . . . . . . . . . . . . . . . . . 26

    5.2.5 Questions pratiques . . . . . . . . . . . . . . . . . . . . . . . . . 27

    5.3 Deuxième partie: une répartition équitable . . . . . . . . . . . . . . . . 28

    5.3.1 Répartition équitable . . . . . . . . . . . . . . . . . . . . . . . . 283

  • 5.3.2 Egalité et équité . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    5.3.3 Excès . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    5.3.4 Questions théoriques . . . . . . . . . . . . . . . . . . . . . . . . 31

    5.3.5 Questions pratiques . . . . . . . . . . . . . . . . . . . . . . . . . 33

    6 Annexe: Programmation Linéaire 34

    6.1 Dé�nitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    6.1.1 Dé�nitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    6.2 Résolution d'un Programme Linéaire . . . . . . . . . . . . . . . . . . . 35

    6.2.1 Résultats principaux . . . . . . . . . . . . . . . . . . . . . . . . 35

    6.2.2 Algorithme du simplexe: cadre général . . . . . . . . . . . . . . 35

    6.2.3 Forme standard et variables d'écart . . . . . . . . . . . . . . . . 35

    6.2.4 Base réalisable et solutions associées . . . . . . . . . . . . . . . 36

    6.3 Algorithme du simplexe: exercices calculatoires . . . . . . . . . . . . . 38

    6.3.1 Interprétation géométrique . . . . . . . . . . . . . . . . . . . . . 38

    6.3.2 Algorithme du simplexe: les di�cultés . . . . . . . . . . . . . . 38

    6.4 Dualité et interprétation économique . . . . . . . . . . . . . . . . . . . 39

    6.4.1 Dé�nitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    6.4.2 Dualité et borne supérieure . . . . . . . . . . . . . . . . . . . . 40

    6.4.3 Propriétés de la dualité . . . . . . . . . . . . . . . . . . . . . . . 40

    6.4.4 Le théorème des écarts complémentaires . . . . . . . . . . . . . 41

    4

  • Chapter 1

    Premiers exercices de modélisation

    1.1 Introduction par 2 exemples

    1er exemple Problème de production (tiré d'un livre de 1ere S)

    Un fabriquant de yaourt produit 2 types de yaourts à la fraise A et B à partir de

    Fraise, de Lait et de Sucre. Chaque yaourt doit respecter les proportions suivantes de

    matières premières.

    A B

    Fraise 2 1

    Lait 1 2

    Sucre 0 1

    Les matières premières sont en quantité limitée: 800 kilos de Fraises, 700 kilos de Lait

    et 300 kilos de sucre. La vente des yaourts A rapportent 4� par kilo et les yaourts B

    5�.

    a) Donner une formulation du problème sous la forme d'un programme linéaire.

    b) Donner la représentation graphique du problème.

    c) Donner la solution optimale.

    2ème exemple Problème de transport

    Une entreprise de construction d'automobiles possèdent 3 usines à Paris, Strasbourg

    et Lyon. Elle a besoin d'acheminer les métaux nécessaires à partir du Havre ou de

    Marseille. Chaque usine nécessite hebdomadairement 400t à Paris, 300t à Strasbourg

    et 200t à Lyon. Les ports du Havre et de Marseille peuvent fournir respectivement

    550t et 350t.

    5

  • Les coûts de transport entre ces villes sont donnés en kilo-� par tonne dans le tableau

    suivant.

    Paris Strasbourg Lyon

    le Havre 5 6 3

    Marseille 3 5 4

    Proposer une modélisation de ce problème de transport de manière à satisfaire la

    demande, à partir des quantités disponibles et en minimisant les coûts de transport.

    1.2 Exercices de modélisation

    1.2.1 Combinaison optimale en vitamines

    Une personne soucieuse de sa forme physique souhaite absorber chaque jour 36 unités

    de vitamine A, 28 unités de vitamine C et 32 unités de vitamine D. Deux marques sont

    succeptibles de forunir ces apports. La marque 1 coûte 3 euros et procure 2 unités de

    vitamine C et 8 unités de vitamine D. La marque 2 coûte 4 euros et procure 3 unité

    de vitamine A, 2 unités de vitamine C et 2 unités de vitamine D.

    Il s'agit de trouver la combinaison respectant les exigences d'absorption quotidiennes

    au moindre coût.

    - Dé�nir les variables de décision de ce problème.

    - Formuler la fonction objectif.

    - Ecrire les contraintes.

    1.2.2 Alliages et pourcentages

    Un industriel veut fabriquer un alliage dont la composition est 30% de cuivre, 30%

    de zinc et 40% de fer. Il trouve disponible sur le marché 9 sortes d'alliages dont les

    compositions et les prix sont donnés par le tableau suivant.

    Alliage 1 2 3 4 5 6 7 8 9

    Cuivre 10 10 40 60 30 30 30 50 20

    Zinc 10 30 50 30 30 40 20 40 30

    Fer 80 60 10 10 40 30 50 10 50

    Coût au kg (�) 4 5 6 6 8 8 7 6 7

    Sachant que le coût de l'opération de mélange est indépendant des alliages util-

    isés, l'industriel se demande quels alliages il doit acheter et dans quelles proportions

    pour minimiser son coût de production? Formuler ce problème comme un programme

    linéaire.6

  • 1.2.3 Essence sans plomb

    Une ra�nerie veut fabriquer dans une période donnée de l'essence sans plomb avec 3

    ingrédients: du butane, du naphta lourd et du réformat catalytique. Quatre caractéris-

    tiques de l'essence résultante et de ses composants sont importants: le coût, l'indice

    d'octane, la tension de vapeur et la volatilité. Ces caractéristiques sont résumées dans

    le tableau ci-dessous. L'indice d'octane est une mesure du pouvoir antidétonant du

    carburant dans le moteur (un faible indice donne un �cognement� caractéristique). La

    tension de vapeur et la volatilité sont très liées. La tension de vapeur est une mesure du

    risque d'explosion au stockage, notamment par temps chaud. La volatilité est plutôt

    une mesure de la facilité de démarrage du moteur par temps froid.

    Caractéristiques Butane Réformat Naphta Essence

    Coût/tonne 7.3 18.2 12.5 ?

    Indice d'octane 120 100 74 >=94

    Tension de vapeur 60 2.6 4.5 =17

    On suppose que les intéractions entre ingrédients sont linéaires: par exemple un mélange

    50-50 de butane et de réformat aura un indice d'octane 0.5*120+0.5*100=110. Cette

    simpli�cation est exacte avec l'essence sans plomb: de légères non-linéarités existent

    pour l'essence classique avec plomb.

    On dispose de 800t de butane seulement, tandis que les autres ingrédients sont en

    quantité supérieure à la capacité de production sur la période et sont donc virtuelle-

    ment illimités. La ra�nerie fabrique aussi du fuel lourd sur les mêmes installations,

    et la capacité totale de production est limitée à 12000t (essence+fuel). Le processus

    de fabrication du fuel est �xé et n'intervient pas dans le problème d'optimisation qui

    nous intéresse. On sait seulement que ce produit rapporte 2.5� par tonne, coût des

    ingrédients compris. L'essence rapporte par contre 18.4� par tonne, mais le coût des

    ingrédients n'est pas compris et doit être déduit.

    L'objectif est de calculer les quantités d'ingrédients et d'essence à fabriquer de façon

    à respecter les contraintes et à maximiser le pro�t total de la ra�nerie sur la période.

    L'originalité du problème est qu'on ne connaît pas le coût de fabrication de l'essence,

    car il va dépendre des proportions des divers ingrédients.

    a). Modéliser.

    b). Faite varier la quantité maximale de butane et le montant du béné�ce dû au fuel

    et regarder quelles sont les variables serrées. Interpréter.

    7

  • Chapter 2

    Utilisation du logiciel Glpk

    Glpk: GNU Linear Programming Kit

    Glpk signi�e GNU Linear Programming Kit. Il s'agit d'un ensemble d'algorithmes

    permettant de résoudre di�érents problèmes allant de la programmation linéaire (PL)

    à la programmation linéaire en nombres entiers (PLNE).

    Glpk est codé en langage C Ansi et on peut accéder directement aux algorithmes par

    une API C (Application Program Interface), c'est-à-dire un ensemble de fonctions C.

    Il est également possible d'accéder aux fonctionnalités de Glpk à partir d'un logiciel,

    dit solveur, appelé glpsol. Glpk peut traiter des programmes linéaires fournis sous dif-

    férents formats (lp, mps) ou décrits à partir d'un langage spécialisé, appelé modeleur,

    le GNU MathProg.

    Ce document résume les fonctionnalités principales du logiciel glpsol ainsi que les

    formats principaux de données et de description. Pour obtenir des documents sur la

    bibliothèque C API, installer le logiciel sous linux ou windows, avoir accés à une Faq,...

    vous pouvez accéder à la page dédiée à glpk sur le site général GNU:

    http://www.gnu.org/software/glpk/glpk.html.

    Glpk est une partie du GNU Project et est distribuée en logiciel libre à sources

    disponibles (free software, open source), sous la licence publique générale GNU qui

    permet de la redistribuer ou de la modi�er selon les termes publiés par la Free Soft-

    ware Foundation.

    Algorithmes utilisés

    Glpk résoud des programmes linéaires (PL) et des programmes linéaires en nombres

    8

  • entiers (PLNE). Ces deux types de problèmes sont très proche en apparence mais de-

    mandent à ce jour des traitements bien di�érents.

    Résoudre un programme linéaire peut se faire en temps polynomial. Glpk propose les

    2 plus célèbres algorithmes connus: la méthode du simplexe (qui n'est pas polynomiale

    mais qui est très e�cace) et une méthode de points intérieurs (qui est polynomiale).

    Résoudre un PLNE est un problème NP-di�cile. Glpk utilise le seul algorithme

    connu capable de résoudre e�cacement tous les PLNE: la méthode de branchement

    (Branch-and-Bound) qui est exponentielle dans le pire des cas.

    L'interface API, le logiciel glpsol ou le modeleur GNU MathProg?

    Il existe ainsi trois façons d'accéder aux algorithmes de Glpk. Tous les olveurs

    linéaires similaires à Glpk possèdent ces 3 accès.

    Si l'on désire une utilisation optimale, sécurisée, capable de fonctionner pour des

    grandes tailles de problèmes, il faut utiliser bien entendu l'interface API. Elle existe à

    l'origine en C Ansi mais on peut trouver des interfaces externes pour Java, Delphi ou

    Glpkmex Matlab.

    Pour résoudre des programmes de taille plus réduite, le logiciel glpsol est facile

    d'utilisation. Il prend un �chier d'entrée sous des formats simples et produit un �chier

    en retour contenant le résultat. Il est ainsi possible de créer un logiciel complet utilisant

    glpsol, c'est-à-dire un programmant créant le �chier d'entrée pour glpsol et lisant son

    �chier de sortie.

    Parmi les �chiers d'entrée possible, le format modeleur peut être très utile. Un

    modeleur décrit le PL ou le PLNE en utilisant une description mathématique assez

    simple. Ce format de �chier peut ainsi être lu par glpsol ou par l'interface API.

    Le logiciel glpsol

    Si votre système Unix/Linux ou Windows est bien con�guré, la commande glpsol

    (sous un terminal Unix/Linux ou sous une fenêtre Dos) vous permet d'accéder au logi-

    ciel glpsol.

    L'usage de glpsol est glpsol [options...] nomdefichier

    Avec les options principales suivantes:

    �help: permet d'accéder à la liste de toutes les options.

    -check: ne lance pas d'algorithme, sert à tester les donées d'entrées

    �cpxlp: format Cplex lp pour le �chier d'entrée PL ou PLNE nomdefichier

    �mps: idem format mps,

    �glp: idem format GNU lp

    �math: idem format modeleur GNU MathProg.

    �wcpxlp fichiersortie: écrit dans �chiersortie le PL ou le PLNE au format Cplex

    LP (idem avec �wmps, �wglp)

    9

  • -o fichiersortie: écrit dans �chiersortie l'ensemble des résultats dans un �chier �txt�

    Il existe également des options spéci�ques aux algorithmes utilisés comme par exem-

    ple le choix entre algorithme du simplexe et des points intérieurs, de la base intiale pour

    la méthode de simplexe ou la stratégie de branchement dans le Branch-and-Bound.

    Exemples:

    glpsol �check �wmps entree.mps �cpxlp entree.lp: transfert du format .lp au

    format .mps

    glpsol -o solution.txt �cpxlp entree.lp: résoud entree.lp et donne la solution

    dans sortie.txt

    Format Cplex lp

    Glpk peut donc lire di�érents formats d'entrée. Le plus simple et le plus répandu a été

    créé pour le logiciel Cplex (Ilog). Il revient à écrire un PL ou un PLNE sous le format

    habituel.Voici un petit exemple de programme linéaire sous le format Cplex lp.

    \Problem name: exemple.lp

    Maximize

    obj: 5 x1 + 7 x2

    Subject To

    c1: 3 x1 - 2 x2 = 11

    c3: 8 x1 + x2 = -6

    Bounds

    -Inf

  • Objective: obj = 21.75 (MAXimum)

    No. Row name St Activity Lower bound Upper bound Marginal

    ------ ------------ -- ------------- ------------- ------------- -------------

    1 c1 B -11.75 -9

    2 c2 B 11.5 11

    3 c3 NS -6 -6 = 0.625

    No. Column name St Activity Lower bound Upper bound Marginal

    ------ ------------ -- ------------- ------------- ------------- -------------

    1 x1 B -1.25 0

    2 x2 NU 4 1 4 6.375

    Les deux sections concernent les contraintes/lignes (Rows) et les variables/colonnes

    (Columns), pour lesquelles sont indiquées:

    No le numéro des contraintes et des variables

    Row (Column) name le nom des contraintes et de variables

    St: le statut de la ligne/colonne: B=en base (pour la variable ou la variable d'écart

    associée à la contrainte), NF NL NU NS=Hors-base libre, à borne inf, à borne sup ou

    valeur �xée.

    Activity: Valeur d'activité de la ligne/colonne dans la solution: pour les lignes, c'est

    la somme des variables fois leurs coe�cients et pour les variables, c'est leur valeur.

    Lower/Upper bound: sans commentaire.

    Marginal: pour les variables hors-base, c'est le coût réduit.

    Le modeleur GNU MathProg

    Le langage-modeleur GNU MathProg est une partie du langage AMPL. Il s'agit d'un

    langage de description d'un PL sous un format assez naturel. En fait, ce format permet

    de diviser un PL entre sa structure et ses données. Pour l'utiliser, glpsol nécessite ainsi

    plusieurs options:

    �math: pour indiquer que le �chier est dans ce format

    �data fichierdata: indique le �chier des données

    �display filename: redirige la sortie vers un �chier

    Pour comprendre ce qu'est un modeleur, prenons le célèbre exemple de Dantzig

    (1963): trouver le coût minimal de transport en respectant les demandes des clients

    et de l'approvisionnement des usines. La description du problème dans un �chier de

    format �modeleur� se comprend elle-même:

    Fichier Transport_description.math11

  • set I;

    /* I est l'ensemble des usines de production */

    set J;

    /* J est l'ensemble des clients */

    param a{i in I};

    /* a[i] est la capacité de production de l'usine i en nombre de caisses */

    param b{j in J};

    /* b[j] est la demande du client j en nombre de caisses */

    param d{i in I, j in J};

    /* d[i,j] est la distance en milliers de kilomètres entre une usine i et un client j */

    param f;

    /* f est le coût de transport en dollars par caisse et par milliers de kilomètre */

    param c{i in I, j in J} := f * d[i,j] / 1000;

    /* c[i,j] est le coût de transport en Kilo-dollars par caisse de l'usine i

    au client j */

    var x{i in I, j in J} >= 0;

    /* x[i,j] est une variable de décision égale au nombre de caisses tranportées

    de l'usine i vers le client j */

    /* Si on veut les variables x entières, on écrit: var x{i in I, j in J} >= 0, integer; */

    minimize cost: sum{i in I, j in J} c[i,j] * x[i,j];

    /* Objectif: coût total de transport minimum en kilo-dollars */

    s.t. CteCapacite{i in I}: sum{j in J} x[i,j] = b[j];

    /* Contrainte due à la demande de chaque client j */

    Dans un deuxième �chier, on place les données de l'instance du problème. Notez

    que les dimensions du problème ne sont pas données dans le �chier de description.

    Fichier Transport_pbm_numero1.data

    data;

    set I := Seattle San-Diego;

    set J := New-York Chicago Topeka;

    12

  • param a := Seattle 350

    San-Diego 600;

    param b := New-York 325

    Chicago 300

    Topeka 275;

    param d : New-York Chicago Topeka :=

    Seattle 2.5 1.7 1.8

    San-Diego 2.5 1.8 1.4 ;

    param f := 90;

    end;

    En fait un même �chier de description produira autant de PL ou PLNE qu'il y a

    de �chiers de données associés. Un �chier modeleur plus un �chier de données permet

    aisni à glpsol de générer un PL ou un PLNE. On peut visualiser le résultat par exemple

    en écrivant le PL ou PLNE au format Cplex lp avec

    glpsol �check �wcpxlp Transport_pbm_numero1.lp

    �data Transport_pbm_numero1.data.lp �math Transport_description.math

    Ce langage est très riche, pour en maîtriser les �nesses, le �chier lang.ps, qui est

    fourni avec les �chiers d'installation, contient une description complète du langage.

    Mais cette génération par �chier de description reste néanmoins une étape potentielle-

    ment coûteuse pour un problème de très grande taille et il est préférable d'utiliser

    directement l'interface API dans ce cas.

    13

  • Chapter 3

    Interprétation économique

    3.1 Interprétation du Théorème des Ecarts Complé-

    mentaires

    On utilise traditionnellement le problème de diététique suivant pour interpréter le

    Théorème des écarts complémentaires:

    Un diététicien joue un rôle de producteur en établissant quelle quantité de produit

    vitaminé il doit acheter pour sa clinique. chaque aliment j, j = 1, ..., n possède les

    aij unités de vitamine i, i = 1, ...,m. Il doit au total disposer au moins de bi unité

    de chacune des vitamines i = 1, ...,m. Il veut minimiser ses dépenses z sachant que

    chaque produit coûte ci euros, i = 1, ..., n.

    Ce qui revient bien sûr à résoudre le PL suivant:

    Minimiser z =n∑j=1

    cjxj

    n∑j=1

    aijxj ≥ bi, ∀i ∈ {1, ...,m}

    xj ≥ 0, ∀j ∈ {1, ..., n}

    Plaçons-nous du côté du fournisseur, c'est-à-dire de celui qui produit les vitamines. Le

    fournisseur veut déterminer le prix unitaire yi de chaque vitamine i, i = 1, ...,m. Il veut

    �xer le prix des vitamines de manière à ce que le diétécien ait intérêt à se fournir chez

    lui, c'est-à-dire à acheter les vitamines directement plutôt que des produits vitaminés.

    Son objectif est donc de maximiser son prix de vente w des vitamines au diététicien

    de façon à ce que, pour chaque produit vitaminée j, j = 1, ..., n, le prix∑m

    i=1 aijyi des

    vitamines contenant dans le produit j ne dépasse pas le prix cj de ses concurents.

    14

  • Ce qui revient en fait à résoudre le dual du problème précédent:

    Maximiser w =m∑i=1

    bjyj

    m∑i=1

    aijyi ≤ cj, ∀j ∈ {1, ..., n}

    yi ≤ 0, ∀i ∈ {1, ...,m}.

    Ainsi, à l'optimum, on doit avoir z∗ = w∗ avec:

    - Sin∑j=1

    aijx∗j > bi, alors y

    ∗i = 0,

    c'est-à-dire s'il y a un excès en vitamine i, le diététicien n'acceptera pas de payer un

    prix y∗i > 0 pour l'avoir.

    - Si y∗i > 0 alorsn∑j=1

    aijx∗j = bi,

    c'est-à-dire si le fournisseur �xe un prix unitaire de la vitamine i non nul, c'est que le

    diététicien n'a pas d'éxédent de celle-ci.

    - Si x∗j > 0 alorsm∑i=1

    aijy∗i = cj,

    c'est-à-dire si le diétécien achète du produit vitaminé j, c'est que le fournisseur a choisi

    des prix y∗i tel que le prix des vitaminine le constituant n'est pas inférieur au prix

    unitaire du produit.

    - Sim∑i=1

    aijy∗i < cj, alors x

    ∗j = 0,

    c'est-à-dire si le prix unitaire contenu dans une unité de produit vitaminé j est inférieur

    au prix unitaire cj du produit, le diététicien n'a pas intérêt à en acheter.

    3.2 Interprétation des variables duales

    Théorème: de post-optimisation

    Suppossons que P admette une solution optimale x∗ non dégénérée de valeur z∗ et ainsiqu'il existe y∗ la solution duale optimale associée.

    Si le second membre b varie légérement de ∆b mais insu�semment pour que la base

    optimale du problème P ne soit plus optimale, alors le problème dé�nit en remplaçantb par b+ ∆b a pour valeur optimale z∆ = z

    ∗ +∑n

    i=1 ∆biy∗i .

    Attention: Ce théorème ne s'applique que si la solution n'est pas dégénérée (i.e. véri-

    �ant à l'égalité plus de n contraintes deP).

    On considère à présent P comme un problème de production dont l'objectif est demaximiser son pro�t. On doit décider le niveau de production xj de chaque produit xj15

  • de pro�t cj, j = 1, ..., n. Mais la production de chaque objet j nécessite aij unité de

    matières premières i limitée en quantité bi, i = 1, ...,m.

    Il serait intéressant de savoir l'e�et de petites variations positives sur l'o�re de ressources

    supplémentaires de la ressource i sur le pro�t total de l'entreprise. Or pour chaque

    unité supplémentaire de la ressource i, le pro�t augmente de y∗i . Les valeurs optimales

    des variables duales correspondent alors au prix maximum que l'entreprise peut ac-

    cepter d'acheter pour chaque unité de plus en ressource i. On nomme y∗i la valeur

    marginale de la ième ressource.

    3.3 Exemples d'interprétation économique

    3.3.1 Economie sans tendresse...

    Un pays désire accroître son potentiel d'armement; il veut acquérir au moins 100 000

    fusils, 200 000 grenades défensives et o�ensives, une centaine de chars, 400 mitrailleuses

    lourdes et autant de bazookas. Il s'adresse pour ce faire à des marchands d'armes qui

    récupérent les matériels utilisés ou non sur tous les champs de bataille. Ces marchands

    proposent 3 types de lots:

    Lot1 Lot2 Lot3

    fusils 500 300 800

    grenades 1000 2000 1500

    chars 10 20 15

    mitrailleuses 100 80 150

    bazookas 80 120 200

    coûts des lots 1.5 M� 1.8 M� 2.3 M�

    Le pays en question va donc essayer de minimiser le coût de l'armement supplémen-

    taire qu'il veut acheter.

    A l'aide d'une modélisation du problème en un programme linéaire et en intérpré-

    tant les résultats fournis par un solveur, donnez les interprétations économiques pour

    le pays acheteur et, sans état d'âme, vous ferez de mêmes pour un éventuel fabriquants

    d'armes désirant s'emparer du marché.

    3.3.2 Machine-outils

    Un atelier peut fabriquer trois types d'articles:

    - l'article A à la cadence de 35 objets à l'heure

    - l'article B à la cadence de 45 objets à l'heure

    16

  • - l'article C à la cadence de 20 objets à l'heure

    Cette fabrication utilise une machine-outil unique, disponible 200 heures par mois? Le

    béné�ce unitaire pour l'article A est de 10 euros par objet, pour B de 6 euros, pour C

    de 12 euros.

    Ces objets sont vendus en totalité à des grossistes. On a observé que l'on ne pouvait

    pas écouler par mois plus de 4900 objets de type A, ni plus de 5400 objets de type B,

    ni plus de 2000 objets de type C.

    D'autre part, chaque objet doit être véri�é avant sa commercialisation: une équipe

    de trois techniciens est chargée de cette mission. Chaque technicien travaille 170 heures

    par mois. La véri�cation d'un objet du type A prend quatre minutes, du type B trois

    minutes et du type C deux minutes.

    L'atelier veut organiser sa production de telle manière que son béné�ce soit maximum.

    1) Formuler ce problème comme un programme linéaire.

    2) Ecrire le dual ce de programme

    3) Montrer que la solution optimale pour l'entreprise est de produire 4900 objets du

    type A et 2700 objets du type B.

    4) Chaque heure supplémentaire (par mois) sur la machine-outil cûte 230 euros. La

    société a-t-elle intérêt à augmenter la capacité de la machine-outil? Si oui, de combien?

    3.4 Programme linéaire paramétré

    Résoudre le problème de programmation linéaire suivant :

    max z = (6− 2p)x1 + (5 + p)x2x1 + x2 ≤ 8

    − 2x1 + 3x2 ≤ 6x1 − x2 ≤ 2

    xi ≥ 0, ∀ i ∈ {1, 2}

    Ce problème peut être économique interprété comme le fait que la fonction coût

    dépend d'un paramètre extérieur. Par exemple, on veut voir ici:

    - la variable p comme le coût du pétrole

    - le premier terme de la fonction objective comme les gains obtenus en livrant des

    marchandises: ce gain diminue en fonction de l'augmentation du pétrole

    - le deuxième terme de la fonction objective comme la facturation d'un transport réalisé

    en sous-traitance par l'entreprise: on a ici pris en compte le prix du pétrole dans la

    facturation.

    - les variables de décision x1 et x2 correspondent aux quantité transporté en livraison

    1 et 2.

    Interprétez alors le graphique obtenue lors de l'étude précédente.17

  • Chapter 4

    Etudes de cas

    4.1 Aide à la décision dans une exploitation agricole

    Les activités de notre exploitation agricole se divisent en deux grandes productions:

    culture et élevage. Nous ne voulons pas toucher à notre production agricole mais nous

    voulons pouvoir améliorer le rendement de notre activité d'élevage. La charge de travail

    (main d'oeuvre) disponible pour l'élevage varie selon les saisons de la façon suivante:

    Table 1

    Mois Heures Mois Heures

    Janvier 420 Juillet 380

    Février 415 Août 395

    Mars 355 Septembre 270

    Avril 345 Octobre 230

    Mai 160 Novembre 310

    Juin 95 Décembre 420

    On pratique 5 types d'élevage:

    i). Elevage porçin de printemps.

    ii). Elevage porçin d'automne.

    iii). Elevage de bovins en batteries.

    iv). Elevage de bovins en pâture.

    v). Engraissage de bovins.

    Dans les élevages porcins, les cochons naissent en février (printemps) ou en août (au-

    tomne) et sont vendus à peu près 6 mois plus tard. Dans les élevages bovins, les veaux

    sont achetés en octobre et sont vendus environ un an plus tard. La charge estimée de

    travail peut se résumer ainsi:

    18

  • Table 2 Temps de travail estimé

    Types d'élevage

    Mois i)∗ ii)∗ iii)+ iv)+ v)+

    Janvier 1.4 1.8 1.5 1.4 1.4

    Février 9.8 2.4 1.4 1.4 1.4

    Mars 4.0 0.4 1.4 1.4 1.4

    Avril 2.8 0.6 1.3 1.4 1.5

    Mai 2.2 0.4 1.3 1.5 1.2

    Juin 2.2 0.4 1.3 1.3 1.2

    Juillet 2.2 0.6 1.3 1.3 1.2

    Août 2.6 5.8 1.5 1.5 1.2

    Septembre 0.6 4.0 1.3 - -

    Octobre 0.6 1.2 1.3 1.3 2.6

    Novembre 0.6 1.8 1.2 1.2 1.2

    Décembre 0.6 1.8 1.5 1.4 1.4∗ heures par portée+ heures par vache

    En plus de la charge de travail, chacun de ses 5 élevages nécessite une certaine quantité

    de nourriture produite par la ferme: soit en laissant les bêtes en pâture, soit en leur

    apportant des produits récoltés et stockés que l'on appelle communément �nourriture

    stockée� (fourrage, herbe, pomme de terre,...). La pâture se mesure en unités appelées

    �jour de pâture�: c'est la quantité d'herbe mangée par jour par un cheval adulte ou

    une vache ne recevant pas d'autre nourriture. Les pâturages sont disponibles d'avril à

    septembre, durant cette période, il est aussi possible de remplacer la pâture par de la

    nourriture stockée. La disponibilité des pâturages est indiquée ici avec la demande de

    pâture pour chacun des 5 élevages.

    Table 3 Besoin en pâture

    Besoin(j.pâture/unité)

    Période i) ii) iii) iv) v) Disponilité

    Avril et Mai 16 0 0 12 35 5200

    Juin et juillet 20 0 0 36 50 5200

    Aoüt et Septembre 16 0 0 12 35 3600

    Total 52 0 0 60 120 14000

    La pâture peut être convertie en nourriture stockée avec un temps de travail de 5.5

    heures et 50 jours de pâture par tonne de nourriture stockée. A part pour l'élevage

    porçin de printemps, les élevages nécessitent l'utilisation du stock de nourriture dans

    les saisons sans pâturage disponible. La demande total en nourriture stockée est:

    0.1 tonnes par portée de porcelets,

    0.9 tonnes par bovin nourri au fourrage,

    0.8 tonnes par bovin nourri en pâture,

    2.3 tonnes par bovin engraissé.19

  • Finallement, voici les revenus estimés des cinq élevages:

    i). 139� par portée de porcelets,

    ii). 88� par portée de porcelets,

    iii). 133� par bovins,

    iv). 137� par bovins,

    v). 165� par bovins.

    L'objectif est bien entendu de plani�er l'élevage le plus rentable. Néanmoins, toutes les

    données peuvent être remises en questions car ce ne sont que des approximations que

    l'on peut diminuer ou augmenter sans trahir la réalité. Au lieu de prévoir une durée de

    95 heures de travail en juin, on peut tout à fait prévoir une durée de 97 heures ou 92

    heures. Une plani�cation demandant de travailler 92 ou 97 heures au moins de juin est

    parfaitement admissible. Cette même incertitude s'applique aussi au calcul du pro�t

    qui �uctue d'une année à l'autre en fonction du marché.

    Vous pourrez discuter avec les responsables de cette exploitation agricole en posant des

    questions précises mais vous devrez leur rendre le rapport rédigé de vos propositions.

    Attention, en cas d'insatisfaction des responsables, vous ne serez pas payés.

    4.2 Aide à la décision dans une exploitation forestière

    New Forest est un domaine composé de forêts et de plaines situé en Hampshire en

    Angleterre. Donc nous allons compter en livres et mesurer le cubage du bois en Hoppus

    feet (Un Hoppus feet (h.ft.) est un volume d'un foot carré sur un inch de haut, c'est-

    à-dire en sachant qu'un pied fait 30,48 cm, un pouce un 36ème de yard et qu'un yard

    fait trois pieds, cela fait un quart de stère). Les responsables de New Forest doivent

    décider un programme d'abattage sur une surface d'environ 30 000 acres (une acre est

    environ un demi-hectare) avec pour objectif d'optimiser les revenus sur les dix ans à

    venir. Le problème considéré ici concerne seulement une zone de 8 500 acres avec 6

    types de bois, comme montré en table 1.

    Table 1 Types de bois

    Vol. si abatt.

    Type Description Acres (h.ft/acre)

    1 Feuillus hauts 2 754 2 000

    2 Feuillus moyens 850 1 200

    3 Feuillus bas 855 700

    4 Résineux hauts 1 598 4 000

    5 Mixtes hauts 405 2 500

    6 Plaines 1 761

    Les bois de feuillus sont en plus divisés entre ceux qui ont un sous-bois complet, ceux

    qui ont un sous-bois partiel et ceux sans sous-bois. Les surfaces correspondantes sont

    inscrites dans la table 2.20

  • Table 2 Classi�cation des feuillus

    Sous-bois

    complet partiel nul total

    Feuillus hauts 357 500 1 897 2 754

    Feuillus moyens 197 130 523 850

    Feuillus bas 39 170 646 855

    Toute étendue de tous types de bois peut recevoir l'un des deux traitements basiques

    suivant: abattre et planter des résineux (traitement 1A) ou abattre et planter des

    feuillus (traitement 1B). Appliqués à une plaine, ces traitements deviennent �planter

    des résineux� et �planter des feuillus�. De plus, pour les bois de feuillus avec un sous-bois

    complet, les responsables ont l'option d'abattre et conserver le sous-bois (traitement

    2). Similairement pour les bois de feuillus avec sous-bois partiel, ils peuvent abattre

    et enrichir le sous-bois (traitement 3). Une dernière possibilité consiste à reporter sine

    die le traitement d'une surface d'un bois quelconque.

    Le revenu sur les 10 prochaines années varie selon les traitements et les types de bois.

    Ces cas de �gures en livres par acre, sont estimés en table 3.

    Table 3 Revenus estimés (£./acre)Traitement

    Type 1A 1B 2 3 Auc.

    1 287 215 228 292 204

    2 207 135 148 212 148

    3 157 85 98 162 112

    4 487 415 371

    5 337 265 264

    6 87 15 61

    Les exigences gouvernementales (dues à des raisons esthétiques) et les limitations de

    capacité de production impliquent les quatre conditions suivantes: les zones traitées ne

    doivent pas dépasser 5 000 acres, la surface totale de résineux 3 845 acres, le volume

    de feuillus abattus 2,44 millions de h.ft. et le volume de résineux et de forêts mixtes

    hautes abattues 4,16 millions de h.ft.

    Les volumes moyens estimés par acre de chacun des types de bois sont listés dans la

    première table.

    Les responsables de New Forest demandent l'intervention de spécialistes de l'aide à la

    décision pour répondre à leur problème. Ils veulent connaître une ou plusieurs solutions

    possibles à cette énoncé exacte mais attendent aussi une ré�exion sur les données qui

    peuvent être éventuellemement modi�ées (dans tous les domaines: super�cie, limitation

    o�cielle,...) dans l'esprit d'une utilisation rentable mais raisonnée de la forêt. Par

    exemple, ils s'interrogent sur l'application d'une réglementation qui obligerait à planter

    au moins 500 acres de feuillus, mais aussi ils exigent une explication économique de ce

    que vous recommendez, proposez à leur choix ou déconseillez.21

  • Vous pourrez discuter avec les responsables de New Forest en posant des questions

    précises mais vous devrez leur rendre le rapport rédigé de vos propositions. Attention,

    en cas d'insatisfaction des responsables, vous ne serez pas payés.

    22

  • Chapter 5

    Projet: Jeu de l'arbre de poids

    minimum

    5.1 Organisation du projet

    • Le travail se fait par monôme ou binôme.

    •N'hésitez pas à poser des questions lors des séances ou par mail à [email protected].

    • Le logiciel glpk est disponible dans vos salles de TP. Pour cela, utiliser les com-mandes suivantes créées par Maurice Diamantini pour les TP de RO:

    use diam

    usediam ro

    Véri�er que le solveur glpsol est accessible en tapant :

    glpsol --help

    Il est aussi facile à installer sur les distributions linux, mac ou windows.

    Il y a deux façons principales d'utiliser ce logiciel: soit avec une API, soit en utilisant

    des �chiers d'entrée et de sortie.

    • Vous rédigerez un petit rapport contenant la description de votre travail, c'est-à-dire l'analyse du problème, les formulations et les réponses aux di�érentes questions.

    Il doit clairement comporter une réponse aux questions posées dans les parties précé-

    dentes et tout particulièrement l'analyse théorique. Vous pouvez sauter les questions

    pour lesquelles vous n'avez pas de réponses.

    23

  • • Le mot rapport doit apparaître dans le nom du �chier soumis par mail en n'oubliantpas de noter en première page les participants du binôme. Il doit être dans un format

    lisible en PDF. Votre livraison doit être constituée d'une archive (�chier tgz (par tar

    cvzf nomRepertoire.tgz nomRepertoire).

    Envoyez ce �chier en pièce attachée d'un courrier électronique ayant pour sujet Projet

    MAE41 et adressé à [email protected].

    • Le 10/05/11 la matinée est consacrée au rendu de projet. Nous établirons un emploide temps de passage a�n que chaque projet soit présenté rapidement: fonctionnement,

    capacité, questions diverses. Merci de venir avec votre rapport imprimé.

    5.2 Première partie: une répartition stable

    5.2.1 Dé�nition du problème

    On considère ici un ensemble N de clients distincts caractérisés par leur coordon-

    nées (distinctes) dans un plan représentant une zone géographique (par exemple une

    campagne isolée). Cette zone géographique contient un point 0 correspondant à un bâ-

    timent passerelle relié au réseau extérieur. Les clients désirent être réliés à la passerelle

    0 par un réseau de télécommunications a�n d'être reliés au réseau extérieur.

    On note d(ij) la distance euclidienne entre deux clients i et j de N . Comme le coût

    permettant de relier les points i et j est proportionnel à d(ij), on va considérer ici que ce

    coût est directement d(ij). On peut ainsi dé�nir un graphe complet G = (N ∪ {0}, E)valués par les distances d(ij) pour tout i, j ∈ N ∪ {0}.

    On note ici ij une arête de G. On note également P = (s1s2, s2s3, ...sk−1sk) un

    chemin de G. Un cycle est un chemin tel que s1 = sk. On rappelle qu'un graphe est

    connexe s'il existe un chemin reliant toute paire de sommets. Un arbre est un sous-

    graphe connexe sans-cycle. Pour un ensemble S ⊆ N ∪ {0} de sommets, on appellearbre couvrant un arbre reliant tous les sommets de S. On rappelle qu'un arbre cou-

    vrant k sommets possèdent exactement k − 1 arêtes. Il est bien connu que l'on peutdéterminer un arbre de poids minimum en temps polynomial (algorithme de Prim ou

    de Kruskall).

    Pour un ensemble S ⊆ N de clients, le réseau le moins onéreux est l'arbre de poidsminimum de G couvrant les sommets S ∪ {0} (en e�et, il s'agit du plus petit grapheconnexe couvrant tous les sommets). Si une coalition S ⊆ N de clients décident decoopérer pour construire leur propre réseau, on note alors ΓS = (S ∪{0}, ES) un arbrede poids minimum couvrant {0}∪S et on note v(S) =

    ∑ij∈ES d(ij) le coût de cet arbre.

    Considérons un arbre ΓN = (N ∪{0}, EN) reliant tous les clients de N au sommet 0:24

  • cet arbre constitue donc le réseau de télécommunications le moins onéreux pour relier

    les clients de manière à ce qu'aucune coalition S ( N n'ait intérêt à se former pourconstruire un arbre couvrant ΓS concurrent. Pour cela, on doit répartir le coût v(N)

    sur les n clients.

    On appelle ainsi jeu de l'arbre de poids minimum le problème consistant à étudier les

    répartitions possibles du coût v(N) de ΓN sur tous les clients N .

    Ce jeu est motivé par deux interprétations complémentaires du problème:

    - interprétation coopérative: globalement les n clients ont intérêt à coopérer tous ensem-

    ble: un réseau global coûtera moins que plusieurs sous-réseaux (et l'impact écologique

    sera aussi moindre). Mais pour atteindre cette solution, il faut être certain qu'aucun

    client ne sera mécontent et préfèrera faire un autre réseau. La solution est alors de

    répartir les coûts inégalitairement de manière à ce que ceux qui auraient le plus de

    raisons de ne pas coopérer soient ceux qui payent le moins.

    - interprétation concurrentielle: une autre interprétation plus �réaliste� est le cas où

    un opérateur télécom désire construire un réseau et proposer une répartition de son

    coût à ses futurs clients. Son objectif est donc de répartir le coût de manière à ce

    qu'aucun concurrent n'ait la possibilité de construire un réseau concurrent en coalisant

    une partie des clients potentiels.

    5.2.2 Coalitions et répartitions

    Soit N l'ensemble des n joueurs. Il y a donc 2n−1 coalitions possibles dans ce jeu. Onnote v(S) la valeur obtenue par la coalition S ⊆ N et on appelle alors v la fonctioncaractéristique: on se place, pour ce projet, dans le cas où v(S) correspond à un coût

    que doit payer la coalition de tous les joueurs de S.

    On suppose souvent que v est sous-additive, c'est-à-dire que

    v(S ∪ T ) ≤ v(S) + v(T ) ∀S, T ⊂ N tels que S ∩ T = ∅.

    Ainsi, les joueurs ont intérêt globalement à coopérer. En e�et, si les joueurs se ré-

    partissaient entre S1, ..., Sk coalitions, alors le coût v(N) de la coopération de tous les

    joueurs serait inférieur à la somme v(S1) + v(S2) + ...+ v(Sk) des coûts des coalitions.

    On appelle parfois ce type de jeu, un jeu conditionnel et ici l'objectif est de �per-

    mettre� la coopération N de tous les joueurs, c'est-à-dire répartir le coût à payer par

    la coopération N de façon à ce qu'il y ait le moins de joueurs mécontents, voir aucun

    joueur mécontent si cela est possible.

    25

  • Pour cela, on doit décider d'une répartition du coût total v(N) de la coopération

    entre tous les joueurs. On note xi, i ∈ N , la répartition du coût v(N) sur le joueur i,c'est-à-dire ∑

    i∈N

    xi = V (N) et xi ≥ 0 ∀i ∈ N.

    5.2.3 Répartition stable

    Une répartition x correspond à une coopération stable si et seulement si∑i∈S

    xi ≤ v(S) ∀S ⊂ N.

    On appelle c÷ur du jeu l'ensemble des répartitions menant à des coopérations sta-

    bles. Le c÷ur de certains jeux est parfois vide. Lorsqu'il n'est pas vide, il contient en

    général un très grand nombre de répartitions possibles.

    Il a été montré que lorsque le c÷ur est non vide, alors le nucléolus est dans le c÷ur.

    Dans le cas particulier d'une répartition du c÷ur du jeu, l'excès est bien-entendu positif.

    5.2.4 Questions théoriques

    On désire dans cette partie construire une première solution stable pour le problème

    du jeu de l'arbre de poids minimum. Pour cela, montrer les résultats suivants.

    Q.1 La fonction caractéristique v associée au jeu de l'arbre couvrant est sous-additive.

    Q.2 Soit ΓN un arbre de poids minimum couvrant les sommets {0} ∪ S. On note eil'arête issue de i dans l'unique chemin reliant i à 0 dans ΓN . On considère alors le

    vecteur x̃ ∈ IRn où x̃i = d(ei). On peut montrer que x̃ est une répartition.

    Q.3 On veut prouver que x̃ appartient au c÷ur du jeu. Pour cela, prenons S ⊂ N etconsidérons l'arbre de poids minimum ΓS = (S ∪ {0}, ES). On veut donc prouver que∑

    i∈S x̃i ≤ v(S) =∑

    e∈ES d(e).

    Posons ξ = {ei/i ∈ S} et ξ = EN \ ξ.a) v(N) =

    ∑i∈S x̃i +

    ∑e∈ξ d(e).

    b) ES ∩ ξ = ∅.c) Considérons alors le graphe HS = (N ∪ {0}, ES ∪ ξ). Alors |ES ∪ ξ| = n.d) On peut montrer que Hs est connexe. (Indication, montrer qu'il existe un chemin

    de i à 0 dans HS pour tout i ∈ N).e) On rappelle qu'un graphe connexe connexe sur n+ 1 sommets possédant n arête

    26

  • est un arbre. On peut en déduire que x̃ est dans le c÷ur du jeu.

    5.2.5 Questions pratiques

    Nous allons déterminer un réseau optimal et, en nous appuyant sur les questions précé-

    dentes, une première répartition stable de son coût.

    • Choisir une structure de données pour coder le graphe (nous n'allons pas manipulerde très grandes instances). On peut remarquer que le graphe est complet et que le

    poids des arêtes se déduit des coordonnées en calculant la distance euclidienne.

    • Le site http://comopt.i�.uni-heidelberg.de/software/TSPLIB95/ contient des instancespour le problème dit du voyageur de commerce. Ces instances sont très utilisées pour

    les tests pratiques de problèmes de télécommunications. En e�et, ces instances provi-

    ennent de données réelles de plusieurs opérateurs et correspondent souvent à des zones

    géographiques précises.

    Nous allons considérer les instances �TSP data� du problème symétrique qui sont en

    fait données selon un format simple (en�n la plupart, faire attention): un nuage de

    points d'un plan dont les coordonnées sont données en liste.

    Ajouter à votre structure une fonction permettant de lire ces instances.

    • A partir de l'instance précédente, nous allons construire des instances pour notreproblème. Pour cela, pour un n donné en paramètre, nous allons choisir n + 1 points

    dont l'un d'entre eux sera notre sommet 0. Donner plusieurs fonctions de génération

    d'instances: une totalement sera totalement aléatoire, les autres ont pour but de fournir

    des instances de structures particulières.

    Pour ces instances, nous allons prendre un coût d'installation d'une liaison égal au coût

    de la distance euclidienne.

    • Ajouter à votre structure la visualisation du nuage de points correspondant auxinstances. Vous pouvez pour cela utiliser le logiciel de dessin x�g. Voir l'exemple

    ExCfig.cpp sur la page http://www-desir.lip6.fr/∼fouilhoux/documentens.php (com-mentaire dans le document pdf associé).

    • Coder l'algorithme de Prim a�n d'obtenir un arbre couvrant de poids minimum.En déduire une répartition stable du coût de l'arbre. Attention: dans l'objectif de la

    deuxième partie du projet, il est nécessaire de coder cet algorithme de manière à pouvoir

    obtenir un arbre couvrant les sommets S ∪ 0 où S est un sous-ensemble quelconque de27

  • sommets-clients.

    Algorithme de Prim

    Notons F un ensemble d'arêtes initialisé à vide.

    Notons B un ensemble de sommets initialisé à vide.

    B ← {0}Tant que B 6= S ∪ {0} Faire

    Déterminer l'arête e de plus petit poids parmi les arêtes sortantes de B

    F ← F ∪ {e}Ajouter l'extrémité sortante de e à B

    Fin Tant que

    A la �n (S ∪ {0}, F ) est un arbre de poids minimum couvrant S ∪ {0}

    • Ajouter une visualisation graphique de l'arbre obtenue.

    5.3 Deuxième partie: une répartition équitable

    Lorsqu'il existe une solution stable (i.e. coeur non vide), on peut consider que déter-

    miner une solution stable su�t à permettre la coopération en répartissant les coûts de

    manière à ne pas mécontenter les joueurs. Néanmoins, certaines solutions du c÷ur sont

    fortement inégalitaires, nous cherchons une solution du c÷ur qui soit équitable entre

    les écarts de coûts entre les clients.

    5.3.1 Répartition équitable

    En théorie des jeux, un jeu modélise les comportements d'acteurs économiques devant

    décider d'une stratégie face à un même problème (économique) alors que leurs béné�ces

    individuels dépendent des choix de tous. Les jeux permettent de modéliser et d'étudier

    di�érents modèles: modèles économiques de concurrence entre entreprises, stratégie de

    joueurs dans un jeu d'argent, évolution d'une population animale proies-prédateurs,

    etc. On nomme ainsi joueurs les acteurs d'un jeu.

    Certains choix de stratégies individuelles des joueurs permettent d'atteindre des sit-

    uations stables, c'est-à-dire des situations du jeu où aucun des joueurs n'a intérêt à

    changer de stratégie individuelle. Dans certains jeux, il a été montré que ces situations

    stables existent. Plus globalement, que des situations stables existent ou non, il est

    intéressant de rechercher des solutions où les joueurs sont le moins mécontents.

    On s'intéresse ici à un jeu coopératif où les joueurs peuvent se concerter et s'engager

    à coopérer a�n de dé�nir leurs stratégies individuelles, créant ainsi une stratégie com-

    mune. On appelle ainsi coalition le fait que plusieurs joueurs se regroupent pour28

  • coopérer ensemble. La coalition de tous les joueurs, que l'on appelle coopération, est

    ainsi stable s'il n'existe pas de sous-coalition qui aurait intérêt à se mettre à part des

    autres.

    Nous allons nous intéresser ici à déterminer une coopération qui mécontente le moins

    les joueurs pour le problème du jeu de l'arbre de poids minimum.

    5.3.2 Egalité et équité

    Une répartition égalitaire serait bien entendu xi =v(N)n

    pour tous les joueurs i ∈ N .

    Malheureusement, une solution égalitaire peut mécontenter certains joueurs. Ils peu-

    vent préférer se rassembler en une coalition partielle et ne pas participer à la coopéra-

    tion. On va plutôt rechercher des répartitions équitables, c'est-à-dire répartir de façon

    à tenir compte du cas particulier de chaque individu, ce que l'on appelle parfois le

    �mérite� de chaque joueur.

    Pour cela, dé�nissons la notion d'équité dans le cadre d'un problème d'optimisation

    combinatoire multi-agent. On considère ici un problème à q agents dont les solutions

    σ = (σ1, ..., σq) dont la qième composante représente la solution σ pour l'agent i et on

    note f(σi) le coût de cette solution. Ainsi, la comparaison des solutions se ramène à la

    comparaison de leurs coûts. Il existe plusieurs façon de dé�nir l'équité pour comparer

    si une solution σ est plus équitable qu'une solution σ′.

    Un des plus simples est de rechercher une solution minimax, c'est-à-dire une solution

    telle que:

    min{ maxj=1,...,q

    f(σj) | σ est solution}.

    Plus généralement, on peut dé�nir un ordre lexicographique minmax qui se dé�nit

    ainsi:

    Pour une solution σ, on note Θ(σ) le vecteur de IRq obtenu en classant les q valeurs

    f(σ)) dans l'ordre décroissant.

    Soient k ∈ {1, ..., q} et deux solutions σ et σ′, on dit que

    σ �k σ′ si Θi(σ) = Θi(σ′) ∀i = 1, ..., k − 1et Θk(σ) < Θk(σ

    ′).

    Soient deux répartitions σ et σ′, on dit que

    σ � σ′ s'il existe k ∈ {1, ..., q} tel que σ �k σ′.

    On peut alors considérer un élément (ou un ensemble d'éléments) qui soit minimum

    selon l'ordre lexicographique minmax. Ce minimum peut-être alors considérer comme29

  • équitable.

    Néanmoins, cette dé�nition de l'équité n'est pas unique. De plus, celle-ci est critiquée

    (car elle ne prend pas en compte qu'il ne peut y avoir de �compensation� entre les

    agents).

    5.3.3 Excès

    On désire appliquer la notion d'équité vu précédemment à notre problème où les agents

    seront en fait les coalitions. Pour cela, nous dé�nissons les notions suivantes.

    Soit x une répartition (quelconque) du coût v(N). On appelle excès1 de x, la fonction

    ex(S) =∑i∈S

    xi − v(S) ∀S ⊆ N.

    Cette fonction excès représente la di�érence de coût que la coalition S paye réellement

    dans la répartition x (i.e.∑

    i∈S xi et ce qu'elle aurait à payer si elle était seule (i.e.

    v(S)). Plus cette di�érence est faible moins les clients sont insatisfait et on la tentation

    d'aller dans la coalition.

    On peut remarquer que les excès sont souvent très inégalitaires entre les clients.

    Pour déterminer une meilleure solution, on applique le principe de l'ordre lexi-

    cographique minmax à nos coalitions. Pour cela, on introduit plusieurs relations d'ordre

    qui vont donner un ordre lexicographique � entre deux répartitions.

    Pour une répartition x, on note Θ(x) le vecteur de IR2n−1 obtenu en classant les

    2n − 1 valeurs ex(S), S ⊆ N , S 6= ∅, dans l'ordre décroissant.Soient k ∈ {1, ..., 2n − 1} et deux répartitions x et y, on dit que

    x�k y si Θi(x) = Θi(y) ∀i = 1, ..., k − 1et Θk(x) < Θk(y).

    Soient deux répartitions x et y, on dit que

    x� y s'il existe k ∈ {1, ..., 2n − 1} tel que x�k y.

    Exemple: Pour N limité à trois joueurs, on considère donc les coalitions

    {1},{2}, {3},{1, 2},{1, 3}, {2, 3} et {1, 2, 3}.Supposons que v soit la fonction:

    v({1}) = 1, v({2}) = 2, v({3}) = 2, v({1, 2}) = 3, v({1, 3}) = 3, v({2, 3}) = 4 et1Pour un jeu qui considère des coûts

    30

  • v({1, 2, 3}) = 4.Considérons les deux répartitions x = (1, 2, 1) et y = (1, 1.5, 1.5) qui sont toutes deux

    dans le c÷ur.

    On obtient l'ordonnancement suivant des partitions:

    x({1}) = 1, x({2}) = 2, x({3}) = 1, x({1, 2}) = 3, x({1, 3}) = 2, x({2, 3}) = 3 etx({1, 2, 3}) = 4et y({1}) = 1, y({2}) = 1.5, y({3}) = 1.5, y({1, 2}) = 2.5, y({1, 3}) = 2, y({2, 3}) = 3et y({1, 2, 3}) = 4.Et donc

    Θ(x) = (1, 1, 1, 0, 0, 0, 0) et Θ(y) = (1, 1, 0.5, 0.5, 0.5, 0, 0).

    On voit que y �3 x et donc y � x d'après la dé�nition.

    On s'intéresse ici aux éléments x∗ qui minimisent l'ordre lexicographique �. Onappelle l'ensemble de ces éléments le nucléolus.

    5.3.4 Questions théoriques

    Prouver les a�rmations suivantes où l'on applique les dé�nitions précédentes au cas

    du jeu de l'arbre couvrant:

    Q.1

    Θ(x)[1] représente la plus grande valeur d'excès pour une coalition S de N .

    Lemme ??.2 On considère le programme linéaire P1 suivant:

    P1

    Min r ∑i∈N

    xi = v(N), (1)∑i∈S

    xi ≤ v(S) ∀S ( N, (2)∑i∈S

    xi + r ≥ v(S) ∀S ( N, (3)

    xi ≥ 0 ∀i ∈ N,r ≥ 0.

    a) On peut montrer que les solutions du programme linéaire P1 correspondent à desrépartitions.

    b) P1 possède toujours une solution optimale (x1, r1).c) Soit y une solution et posons ry = Θ(y)[1]. Alors (y, ry) est solution de P [1].

    31

  • d) x1 minimise �1.

    Q.3 On note ζ1 l'ensemble des coalitions S pour lesquelles les inégalités (2) sont véri�ées

    à l'égalité par la solution (x1, r1). Si ζ1 6= ∅, on construit alors le programme linéairePk suivant pour k = 2

    Pk

    Min r ∑i∈N

    xi = v(N), (1)∑i∈S

    xi ≤ v(S) ∀S ( N, (2)

    ∑i∈S

    xi + r ≥ v(S) ∀S ⊂ 2N \

    (k−1⋃l=1

    ζl

    ), (3)∑

    i∈S

    xi = v(S)− rk ∀S ⊂ ζl ∀l = 1, ..., k − 1, (4)

    xi ≥ 0 ∀i ∈ N,r ≥ 0.

    En fait, on va dé�nir itérativement le programme Pk+1 à partir de la solution du pro-gramme Pk en posant (xk, rk) la solution optimale de Pk et ζk l'ensemble des coalitionspour lesqueles lles inégalités (3) sont véri�ées à l'égalité par la solution (xk, rk). En

    fait, P(k + 1) existe si P(k) admet bien une solution et si ζk 6= ∅.a) On prouve que Pk admet une solution avec rk > 0, alors ζk 6= ∅.b) On montre que si Pk admet une solution avec rk > 0, alors Pk+1 admet une

    solution optimale.

    Q.4 Soit k ≥ 1 tel que Pk existe. En fonction des ζk, on peut donner l'expression duplus grand entier i tel que xk minimise �i.

    Q.5 On considère l'algorithme (dit de Kopelowitz) où l'on construit itérativement le

    programme Pk+1 à partir du programme Pk tant qu'il existe dans Pk des contraintes

    (3). On montre qu'à la �n des itérations, on obtient x∗ qui minimise l'ordre �.

    Q.6 Donner le nombre maximal d'itérations de l'algorithme. Peut-on s'attendre à ce

    que le pire des cas soit toujours atteint?

    Q.7 Proposer des tests d'arrêt pour cet algorithme.

    32

  • 5.3.5 Questions pratiques

    Une mise en ÷uvre simple de ce projet est de concevoir un programme qui écrit

    sur le disque un �chier d'entrée au format lp (ce format reprend exactement la de-

    scription du programme linéaire dans son ecriture classique). Ensuite, on peut lire

    la solution optimale obtenue dans un �chier de sortie et réinjecter �à la main� les

    valeurs dans le programme linéaire initiale a�n d'améliorer la solution. Une telle so-

    lution est esquissée sur l'exemple �Horaire aérien� proposé sur la pagehttp://www-

    desir.lip6.fr/∼fouilhoux/documentens.php.Une mise en ÷uvre plus élaborée consiste à automatiser ce processus de manière à ce

    que ce soit votre programme qui aille lire le �chier et modi�e le �chier .lp en fonction

    de manière à réitérer le processus.

    Une mise en ÷uvre très élaborée consiste à utiliser l'API de glpk pour réaliser toutes

    ces opérations.

    Le travail demandé pour ce projet se limite aux points suivants:

    • Construction du programme linéaire P1.La di�culté essentielle de cette mise en ÷uvre repose sur la nécessité d'énumérer cor-

    rectement les coalitions possibles. Leur nombre limite d'ailleurs la taille des instances

    que l'on peut résoudre par ce biais.

    Vous devez proposez une façon de numéroter/énumérer les coalitions et construire le

    programme correspondant.

    • Itérations de l'algorithmeProposer quelques itérations de l'algorithme de Kapelowitz, faite à la main, sur des

    exemples de petites tailles.

    • Observer l'évolution des répartitions obtenus sur diverses structures d'instances.

    • Evaluer jusqu'à quelle taille vous pouvez utiliser l'algorithme.

    33

  • Chapter 6

    Annexe: Programmation Linéaire

    6.1 Dé�nitions

    6.1.1 Dé�nitions

    Dé�nition Un Programme Linéaire, noté PL, est un problème P- où l'on recherche à maximiser ou minimiser une fonction linéaire, dite fonction objec-

    tive ou objectif,

    - dont les variables prennent des valeurs réelles,

    - en respectant des égalités ou des inégalités linéaires, appelées contraintes.

    Un programme linéaire peut toujours s'écrire:

    Max cx

    Ax ≤ bx ≥ 0

    où A est une matrice m× n, b ∈ IRn, c ∈ IRm et x ∈ IRm.

    Un vecteur x̄ véri�ant les contraintes d'un PL est dit solution ou solution réalisable du

    PL.

    L'ensemble des solutions d'un PL forme sous domaine de dé�nition. Ce domaine est

    un polyèdre.

    Le domaine de dé�nition d'un PL peut être:

    - vide. Dans ce cas, le problème n'admet pas de solutions,

    - tel que la direction donnée par la fonction objective ne rencontre pas d'hyperplan

    formé par une contrainte de PL (donc le domaine est non bornée). Alors le problème

    n'admet pas de solutions.

    - dans les cas restants, le problème admet une ou plusieurs solutions de coût maximal

    par rapport à l'objectif. On dit que ces solutions sont optimales.34

  • 6.2 Résolution d'un Programme Linéaire

    6.2.1 Résultats principaux

    Un problème linéaire peut être résolu en temps polynomial (Khachiyan 1979). En e�et,

    il existe des algorithmes polynomiaux pour résoudre un programme linéaire.

    Jusqu'en 1979, on ignore justement si la Programmation Linéaire est un problème di�-

    cile ou non. On connaît simplement l'algorithme du simplexe qui n'est pas polynomial

    (Dantzig, 1947).

    L'algorithme du simplexe repose sur le fait qu'une solution optimale d'un programme

    linéaire peut être prise parmi les sommets du polyèdre formé par le domaine de dé�ni-

    tions. Ceci transforme donc la Programmation Linéaire qui est un problème continue

    en un problème discret.

    A la suite de Karmarkar (1984), de nouveaux algorithmes polynomiaux, dits de points

    intérieurs, arrivent à battre en vitesse l'algorithme du simplexe pour les problèmes de

    très grande taille. Néanmoins, l'algorithme du simplexe reste l'algorithme connu le

    plus performant pour les tailles classiques, bien qu'il ne soit pas polynomial!

    6.2.2 Algorithme du simplexe: cadre général

    6.2.3 Forme standard et variables d'écart

    Un PL peut toujours d'écrire selon sa forme standard

    Max cx

    Ax = b

    x ≥ 0

    Par exemple, à partir d'une contrainte de la forme

    n∑j=1

    aijxi ≤ bi

    on peut écriren∑j=1

    aijxi + xn+i = bi

    en ajoutant une variable supplémentaire indicée n + i où i est le numéro de la con-

    trainte. Cette variable n'apparaît pas dans la fonction objective et prend des valeurs

    positives.

    35

  • Par exemple:

    max z = 4x1 +5x22x1 +x2 ≤ 8x1 +2x2 ≤ 7

    x2 ≤ 3xi ≥ 0, i ∈ {1, 2}

    max z = 4x1 +5x22x1 +x2 +x3 = 8

    x1 +2x2 +x4 = 7

    x2 +x5 = 3

    xi ≥ 0, i ∈ {1, .., 5}

    6.2.4 Base réalisable et solutions associées

    On appelle variables de base m variables, parmi les n + m d'une forme standard, qui

    peuvent êcrites en fonctions des n autres variables. Ces variables forment alors une

    base du PL, les autres variables sont dites Hors-Base (HB).

    On associe à une base une solution du PL en �xant les variables Hors-Base à 0. Un

    base est dite réalisable si sa solution associée est réalisable pour le PL.

    On peut facilement véri�er qu'une telle solution est réalisable: il su�t de véri�er que

    toutes ses valeurs sont positives ou nulles!

    Par exemple, les variables d'écart forme toujours une base:

    x3 = 8 −2x1 −x2x4 = 7 −x1 −2x2x5 = 3 −x2

    et, dans ce cas précis, cette solution est admissible (ce n'est pas toujours le cas).

    Il est très facile de savoir si la solution associée à une base admissible est optimale

    pour le PL. Pour cela, il su�t de réécrire la fonction objective en fonction des variables

    Hors-Base:

    Cas maximisation: si les coe�cients obtenus sont tous négatifs, alors la solution asso-

    ciée est optimale.

    Cas minimisation: si les coe�cients obtenus sont tous positifs, alors la solution associée

    est optimale.

    En e�et, dans le cas maximisation par exemple, la seule façon d'avoir une meilleure

    solution serait de baisser la valeur des variables Hors-Base. Or ces variables sont déjà

    �xées à leur minimum, c'est-à-dire 0.

    Dans notre exemple, on a z = 4x1 + 5x2, ce qui n'est pas un cas d'optimalité.

    36

  • Description de l'algorithme du simplexe

    En fait, l'idée de l'algorithme du simplexe consiste à passer d'une base admissible à

    une autre jusqu'à trouver une base associée à une solution optimale.

    Pour cela, à chaque itération de l'algorithme, on fait sortir une variable de la base et

    on fait entrer en base une varialbe Hors-Base.

    Variable entrante dans la base:

    Il n'y a pas d'obligation théorique à prendre une variable plutôt qu'une autre. Il n'y a

    pas non plus de stratégie marchant dans tous les cas pour la choisir.

    On utilise fréquemment le critère de Dantzig:

    Si maximisation: faire sortir la variable de plus grand coe�cient dans z.

    Si minimisation: faire sortir la variable de plus petit coe�cient dans z.

    Variable sortante dans la base:

    Il faut pénaliser le moins possible le coût de la future solution. On va donc tenter

    d'augmenter la solution objective au maximum. Cette augmentation est conditionnée

    par les contraintes. On va rechercher la contrainte la plus bloquante et faire sortir la

    variable de base qui lui correspond.

    Posons e l'indice de la variable entrante et s celui de la variable sortante. On note b̄ et

    ā les valeurs des coe�cients du PL à l'itération courante.

    Si maximisation: s véri�e b̄sāse

    minimum parmi les b̄iāie

    où āie > 0, i ∈ {1, ...,m}.Si maximisation: s véri�e b̄s

    āseminimum parmi les b̄i

    āieoù āie < 0, i ∈ {1, ...,m}.

    L'algorithme du simplexe quand tout va bien

    L'algorithme suivant correspond au cas Maximisation.

    Soit B ⊂ {1, ..., n+m} un ensemble de m indices distincts formant une base réalisable.On écrit alors le PL en fonction de cette base.

    xi = b̄i −∑

    j /∈B āijxi,∀i ∈ B (Notez le signe −.)z = z̄ +

    ∑j /∈B c̄jxj

    1) Si c̄j ≤ 0,∀j /∈ B, alors la solution associée est optimale,

    c'est-à-dire la solution:

    x∗i = b̄i,∀i ∈ B,x∗i = O, ∀i /∈ B,z∗ = z̄.

    2) Sinon

    - Choix de la variable entrante xe, e /∈ B.37

  • - Si āie ≤ 0, ∀i ∈ B, alors le PL n'admet pas de solution(on peut augmenter xe à l'in�ni).

    - Sinon

    ◦ Choix de la variable sortante xs, s ∈ B telle queb̄sāse

    = mini ∈ B

    āie > 0

    b̄iāie

    ◦ B ← (B \ s) ∪ {e}◦ Réécriture du système en fonction de la nouvelle base B.Pour cela, on utilise la seule ligne contenant xs dans l'écriture courante.

    Cette ligne d'échange permet d'obtenir xs en fonction des variables

    Hors-Base. On remplace ensuite xs dans toutes les autres lignes et

    dans z par cette expression.

    3) Aller en 1)

    6.3 Algorithme du simplexe: exercices calculatoires

    Résoudre le problème linéaire suivant par la méthode du simplexe.

    max z = 3x1 +2x2 +4x3x1 +x2 +2x3 ≤ 42x1 +3x3 ≤ 52x1 +x2 +3x3 ≤ 7xi ≥ 0, i ∈ {1, .., 3}

    6.3.1 Interprétation géométrique

    Exercice: Dans le cas d'un programme linéaire à 2 variables et 3 contraintes, donnez

    une interprétation géométrique des solutions correspondantes aux bases réalisables,

    non réalisables, des variables d'écart, de la direction de la fonction objective et du

    déroulement de l'algorithme du simplexe.

    6.3.2 Algorithme du simplexe: les di�cultés

    Malheureusement la méthode du simplexe ne se limite pas l'algorithme vu jusqu'ici. Il

    faut préciser

    - son initialisation: dans le cas où la base formée par les variables d'écart n'est pas

    réalisable. (On applique alors une recherche préalable appelé phase I)38

  • - comment éviter le cyclage: en e�et, l'algorithme passe de base réalisable en base réal-

    isable, il peut donc �cycler� c'est-à-dire retomber sur la même base indé�niment. Ce

    sont des cas dits dégénérés. Pour éviter ce cyclage, on peut soit utiliser des pertuba-

    tions numériques du problèmes, soit utiliser des règles lexicographiques pour s'interdire

    de passer 2 fois par la même base.

    Ainsi, comme il existe un nombre �ni de bases et que l'algorithme se termine, l'algorithme

    du simplexe se termine. Néanmoins, dans le pire des cas, il peut demander 2n−1 itéra-tions.

    Heureusement, en pratique, cet algorithme est très e�cace, pouvant résoudre des PL

    de plusieurs centaines de milliers de variables et de contraintes.

    6.4 Dualité et interprétation économique

    Chaque programme linéaire est associé à un autre programme linéaire, de sens d'opitmisation

    inverse, que l'on appelle son dual. Ces 2 programmes linéaires sont liés par les pro-

    priétés suivantes:

    - Une solution réalisable de l'un constitue une borne pour la valeur optimale de l'autre.

    - Si l'un possède une solution optimale alors l'autre en a une aussi et leurs valeurs

    optimales coïncident.

    6.4.1 Dé�nitions

    Soit (P) le programme linéaire suivant:

    Maximiser z =n∑j=1

    cjxj

    n∑j=1

    aijxj ≤ bi, ∀i ∈ {1, ...,m}

    xj ≥ 0, ∀j ∈ {1, ..., n}On appelle dual de (P), le programme linéaire (D) suivant:

    Minimiser w =m∑i=1

    biyi

    m∑i=1

    aijyi ≤ cj, ∀j ∈ {1, ..., n}

    yi ≥ 0, ∀i ∈ {1, ...,m}

    On appelle alors (P) le primal par opposition à (D) son dual.

    39

  • On peut noter:

    - qu'à chaque contrainte i du primal, on associe une variable duale yi.

    - qu'à chaque variable xj du primal, on associe une contrainte j du dual.

    - le rôle des valeurs cj et bi sont inversés entre les 2 PL.

    Pour passer d'un Programme linéaire à son dual, on utilise le tableau suivant:

    Primal(Dual) Dual(Primal)

    Fct obj Max Fct obj Min

    cte ≥ var ≤cte ≤ var ≥cte = var �libre�

    var ≥ 0 cte ≥var ≤ 0 cte ≤var �libre� cte =

    6.4.2 Dualité et borne supérieure

    En combinant les inégalités du programme primal de manière à calculer la meilleure

    borne supérieure possible, montrer sur un exemple que l'on retrouve le programme

    dual.

    6.4.3 Propriétés de la dualité

    Les résultats suivants correspondent à l'écriture d'un problème (P) et de son dual (D)écrit comme dans la section précédente (forme canonique).

    Remarque: Le dual du dual est le primal.

    Propriété 1:

    Si le vecteur x̄ = (x̄1, ..., x̄n) est une solution réalisable pour (P)et le vecteur ȳ = (ȳ1, ..., ȳm) est une solution réalisable pour (D)

    alorsn∑j=1

    cjx̄j ≤m∑i=1

    biȳi.

    Ainsi une solution de (P) est une borne inférieure pour (D) et inversement.

    Propriété 2: Certi�cat d'optimalité

    Si, en plus des hypothèses de la propriété précédente, on an∑j=1

    cjx̄j =m∑i=1

    biȳi,

    40

  • alors x̄ et ȳ sont respectivement des solutions optimales de (P) et (D).

    Propriété 3:

    Si le vecteur x∗ = (x∗1, ..., x∗n) est une solution optimale de (P),

    alors il existe une solution optimale y∗ = (y∗1, ..., y∗m) de (D)

    telle quen∑j=1

    cjx∗j =

    m∑i=1

    biy∗i .

    Corollaires:

    i) (P) admet une solution optimale si et seulement si (D) en admet une.ii) Si (P) est non borné (valeur optimale non bornée), alors (D) est irréalisable.

    6.4.4 Le théorème des écarts complémentaires

    Dé�nition: On dit qu'une contrainten∑j=1

    aijxj ≤ bi est lâche pour une solution x̄ si

    elle est véri�ée avec une inégalité stricte. Dans le cas contraintre, elle est dite serrée.

    Théorème des écarts complémentaires (TEC)

    Les solutions réalisables x∗ de (P) et y∗ du (D) sont optimalessi et seulement si

    - Pour toute contrainte i non serrée de (P), alors y∗i = 0.- Pour toute variable x∗j > 0 de (P), alors la contrainte j de (D) est serrée.

    41