Chapitre 3. Les modèles de réseau
Transcription
Chapitre 3. Les modèles de réseau
Chapitre 3. Les modèles de réseau 1. Structure d'un fichier : Un exemple On utilisera un exemple tiré de La recherche opérationnelle, 3e édition de Nobert, Ouellet et Parent. Le problème de transbordement retenu est décrit dans la section 7.1.1, « L’énoncé du problème de Nitrobec ». Le problème de Nitrobec peut être modélisé graphiquement comme un réseau où les restrictions imposées à l'écoulement du flot sont indiquées sur les arcs. La figure 3-1 ci-dessous présente le réseau qui se trouve à la page 320 du livre. (350; 350) A (0; 170) 14 (450; 450) F 17 T (0; 180) 3 3 9 10 6 (0; 190) 5 (0; 200) (495; 495) G 8 11 U (200; 200) B (0; 150) 6 2 (0; 250) 5 2 C (395; 395) Figure 3-1 Réseau associé au problème de Nitrobec Résoudre le problème de Nitrobec consiste à trouver un flot passant par chacun des arcs qui respecte les bornes inférieure et supérieure reportées sur certains arcs et qui minimise le coût total z de transport. Convenons qu’existe déjà un fichier EXCEL nommé Nitrobec.xls décrivant le modèle. On indiquera en section 3.3 comment créer un tel fichier. Indiquons pour l'instant comment résoudre le problème de Nitrobec à l’aide du solveur d'EXCEL. Éléments de la feuille de calcul La figure 3-2 présente les éléments de la feuille de calcul décrivant le réseau de Nitrobec. La feuille de calcul se divise en 2 sections : la 1re décrit les arcs du réseau associé au problème tandis que la 2e décrit les sommets du réseau. Août 2002 Chapitre 3. Les modèles de réseau Figure 3-2 La feuille de calcul décrivant le réseau de Nitrobec Page 3.2 Août 2002 Chapitre 3. Les modèles de réseau Page 3.3 ♦ La ligne 1 donne le titre du problème. ♦ La ligne 4 contient la valeur courante de la fonction-objectif z. ♦ La ligne 7 donne les titres des colonnes de la première section de la feuille de calcul. ♦ Les lignes 9 à 27 décrivent les arcs du réseau associé au problème étudié : à chacun des arcs du réseau correspond une ligne donnant le numéro de l'arc, ses sommets initial et terminal, son coût unitaire, les bornes inférieure et supérieure reportées sur cet arc ainsi que la valeur du flot sur cet arc lorsqu'on a résolu le modèle à l'aide du solveur. Un point dans les colonnes i ou j indique qu’il s’agit d’un arc virtuel. Par exemple, l’arc 1 du fichier de Nitrobec est un arc virtuel et le sommet F émet nécessairement 450 unités de flot ; de même, l’arc 19 est virtuel et le sommet C reçoit nécessairement 395 unités de flot. Dans le fichier Nitrobec.xls, toutes les cellules de la plage H9:I27 contiennent une borne. Certaines semblent vides dans la figure 3-2, mais c’est que dans ces cellules le texte est affiché dans la même couleur que la trame. Les bornes inférieures fantômes sont posées égales à zéro : par exemple, aucune borne n’est reportée sur l’arc F → U dans la figure 3-1, mais si on se positionne sur la cellule H12, la barre de formule indique que la valeur 0 a été entrée comme borne inférieure. De même, les bornes supérieures fantômes sont posées égales à la constante M spécifiée à la ligne 29 : ainsi, lorsqu’on se positionne sur la cellule I12, la barre de formule indique que la formule =M a été entrée comme capacité « infinie », pour signifier que le flot sur cet arc est limité supérieurement à une valeur très élevée. ♦ La ligne 36 donne les titres des colonnes de la deuxième section de la feuille de calcul. ♦ Les lignes 38 à 45 décrivent les sommets du réseau associé au réseau de Nitrobec : à chacun des sommets du réseau correspond une ligne donnant le numéro et le nom du sommet, le flot total émergeant du sommet ainsi que le flot total incident au sommet dans la solution calculée par le solveur. Nous conviendrons d'entrer le sommet virtuel (noté .) en premier et de lui attribuer le numéro 0. 2. Résolution d'un fichier pré-existant La résolution par EXCEL d'un modèle linéaire comprend deux étapes. La première consiste à créer un fichier EXCEL qui traduise le modèle : il s’agit d’entrer toutes les données numériques pertinentes, puis de relier ces données à l'aide de formules de calcul (qui seront décrites en section 3.3). La 2e étape consiste à utiliser l'outil «solveur» pour obtenir une solution optimale. Considérons à titre d’exemple le fichier Nitrobec.xls illustré à la figure 3-2. Toutes les données et formules pertinentes ont déjà été entrées dans le fichier. La 1re des 2 étapes mentionnées ci-dessus est donc automatiquement complétée. Pour la 2e étape, il faut lancer le solveur : cliquer sur le menu Outils, puis sur la commande Solveur… de ce menu. La boîte « Paramètres du solveur » affichée devrait ressembler à celle de la figure 3-3 et fournir 4 types d’informations : la cellule à optimiser, le sens de l’optimisation, la plage des variables de décision, les contraintes associées aux arcs et aux sommets. Août 2002 Chapitre 3. Les modèles de réseau Page 3.4 Figure 3-3 La boîte de dialogue « Paramètres du solveur » Les paramètres du solveur L'adresse de la cellule contenant la valeur à optimiser doit apparaître dans la zone de texte Cellule cible à définir. Dans le fichier Nitrobec.xls utilisé ici à titre d’exemple, nous avons choisi d’entrer un nom1 de cellule, plutôt qu’une adresse : le nom z réfère ici à la cellule J4, qui contient la valeur de la fonction-objectif z. Nous avons coché l'option Min, car dans un modèle de réseau il s’agit toujours de minimiser le coût total z. Le 3e élément d'information exigé par le solveur est la liste des cellules où seront conservées les valeurs des variables de décision. Cette liste sera placée dans la zone Cellules variables. Cette fois encore, nous avons choisi d’entrer un nom x, qui correspond à la plage K9:K27. Le 4e et dernier élément d'information exigé par le solveur est une description des contraintes technologiques du modèle linéaire associé au modèle de réseau. Il y aura toujours trois groupes de contraintes spécifiées dans la zone de texte Contraintes : les contraintes de conservation du flot pour tous les sommets du réseau ainsi que les contraintes de bornes supérieure et inférieure associées aux arcs. Les adresses des noms utilisés seront précisées à la section 3.3. Noter que la contrainte de conservation de flot associée au sommet virtuel est redondante et sert tout simplement à indiquer que le flot total qui circule dans le réseau est conservé. Note. Dans tous les fichiers du site qui sont associés à des problèmes de réseau, certaines des options par défaut du solveur d’EXCEL ont été modifiées. La liste de ces changements est donnée dans la section suivante, à la sous-section « Les options du solveur ». 1 La procédure pour attribuer un nom à une cellule ou à une plage de cellules est décrite à la section 4 du chapitre 1. Août 2002 Chapitre 3. Les modèles de réseau Page 3.5 Calcul d’une solution optimale Pour résoudre le modèle linéaire associé au problème de réseau, cliquer sur le bouton Résoudre de la boîte de dialogue « Paramètres du solveur ». Lorsque le solveur a trouvé une solution optimale, la boîte « Résultat du solveur » apparaît telle qu’illustrée à la figure 3-4. L'option Garder la solution du solveur étant cochée par défaut, on obtient en cliquant sur OK la feuille de calcul présentée à la figure 3-5. Figure 3-4 La boîte de dialogue « Résultat du solveur » Août 2002 Chapitre 3. Les modèles de réseau Figure 3-5 La feuille de calcul avec une solution optimale Page 3.6 Août 2002 3. Chapitre 3. Les modèles de réseau Page 3.7 Saisie des données Nous indiquons maintenant comment créer une feuille de calcul EXCEL pour les modèles de réseau. Convenons d’utiliser à nouveau le réseau de Nitrobec décrit à la figure 3-1. Nous considérerons que la feuille de calcul comporte deux parties : une première partie pour les arcs du réseau et une seconde pour les sommets. Entrer les éléments de la feuille de calcul selon l'ordre suivant : ♦ les entrées de texte : les titres et les noms des diverses colonnes, les noms des sommets initial et terminal de chaque arc et les noms des sommets; ♦ les données numériques du modèle : les coûts unitaires des arcs, ainsi que les bornes inférieure et supérieure reportées sur les arcs; ♦ les noms des paramètres : le tableau 3-1 donne la liste des paramètres auxquels doit être attribué un nom (la procédure pour attribuer un nom à une cellule ou à une plage de cellules est décrite à la section 4 du chapitre 1) ; Paramètre Nom Cellule ou plage Sommets initiaux des arcs i C9:C27 Sommets terminaux des arcs j D9:D27 Coûts unitaires des arcs coût F9:F27 Bornes inférieures du flot sur les arcs B.inf H9:H27 Bornes supérieures du flot sur les arcs B.sup I9:I27 Valeurs du flot sur les arcs du réseau x K9:K27 Valeur de la fonction-objectif z J4 Capacité « infinie » du flot sur un arc M F29 Noms des sommets Valeurs du flot total émergeant des sommets Valeurs du flot total incident aux sommets sommet C38:C45 out H38:H45 in I38:I45 Tableau 3-1 Noms des paramètres pour un modèle de réseau ♦ les formules : avant d'activer le solveur, il faut calculer la valeur de la fonction-objectif z, ce qu’on réalise en inscrivant la formule =SOMMEPROD(coût,x) dans la cellule J4 ; il faut également calculer, pour chaque sommet, le flot total émergeant de ce sommet ainsi que le flot total incident à ce sommet : à cette fin, nous inscrivons la formule =SOMME.SI(i;sommet;x) dans chacune des cellules de la colonne out et la formule =SOMME.SI(j;sommet;x) dans celles de la colonne in. Finalement, on peut ajouter une bordure à une cellule ou à une plage de cellules et modifier sa couleur pour fin de présentation. Août 2002 Chapitre 3. Les modèles de réseau Page 3.8 Les paramètres du solveur Une fois la feuille de calcul complétée, sélectionner l'option Solveur… du menu Outils pour entrer les paramètres du solveur. La boîte de dialogue affichée devrait ressembler à celle de la figure 3-6. Figure 3-6 La boîte de dialogue « Paramètres du solveur » Dans la boîte de dialogue « Paramètres du solveur », entrer les éléments d'information suivants: ♦ L’objectif : dans la zone de texte Cellule cible à définir:, entrer le nom z qui réfère à la cellule où se trouve la formule de la fonction-objectif ; comme il s’agit ici de minimiser le coût total z, cocher la case Min. ♦ La plage de variables de décision : dans la zone Cellules variables:, entrer le nom x correspondant à l'adresse de la plage K9:K27 contenant les valeurs des variables de décision. ♦ Les contraintes technologiques du modèle linéaire associé : il faut spécifier chacune de ces contraintes dans la zone Contraintes:. Indiquons comment compléter la zone Contraintes:. Cliquer d’abord sur le bouton Ajouter à droite de cette zone. La boîte de dialogue affichée devrait ressembler à celle de la figure 3-7. Figure 3-7 La boîte de dialogue « Ajouter une contrainte » Août 2002 Chapitre 3. Les modèles de réseau Page 3.9 Pour les modèles linéaires associés à des problèmes de réseau, il y a 3 catégories de contraintes technologiques à spécifier au solveur : les contraintes de conservation du flot associées aux sommets ainsi que les contraintes de bornes inférieure et supérieure associées aux arcs. Convenons d’entrer d'abord2 les contraintes associées aux sommets : ♦ dans la zone de texte Cellule:, entrer out, le nom de plage qui réfère au flot total émergeant des différents sommets ; ♦ choisir ensuite le signe = des contraintes en ouvrant le menu déroulant du bouton ; ♦ dans la zone de texte Contrainte, entrer in, le nom de plage qui réfère au flot total incident aux différents sommets. Cliquer ensuite sur le bouton Ajouter. Pour ajouter les contraintes de bornes inférieures, on procède de façon similaire : ♦ dans la zone de texte Cellule:, entrer x, le nom de la plage des cellules qui contiennent les valeurs des variables de décision du modèle linéaire ; ♦ choisir ensuite le signe >= des contraintes en ouvrant le menu déroulant du bouton ; ♦ dans la zone de texte Contrainte, entrer B.inf, le nom de la plage des cellules qui contiennent les bornes inférieures des différents arcs du réseau. Cliquer ensuite sur le bouton Ajouter. On procédera de même pour ajouter les contraintes de bornes supérieures associées aux arcs. Cliquer sur OK lorsque toutes les contraintes technologiques ont été entrées. La boîte de dialogue « Paramètres du solveur » devrait ressembler à celle de la figure 3-8. Figure 3-8 La boîte de dialogue « Paramètres du solveur » une fois complétée 2 On peut entrer les contraintes technologiques dans n'importe quel ordre dans la zone de texte Contraintes:. Cependant, le solveur les affichera selon l'ordre alphabétique des références ou des noms de cellules ou de plage. Août 2002 Chapitre 3. Les modèles de réseau Page 3.10 Les options du solveur Certaines options doivent être spécifiées au solveur avant de résoudre le modèle. Cliquer sur le bouton Options de la boîte de dialogue « Paramètres du solveur ». La boîte de dialogue « Options du solveur » s'affiche à l'écran (avec les valeurs par défaut illustrées à la figure 1-12). Nous recommandons d’apporter les modifications suivantes aux valeurs par défaut. ♦ Modèle supposé linéaire : cocher la case « Modèle supposé linéaire ». ♦ Supposé non-négatif: cocher la case « Supposé non-négatif » pour spécifier que toutes les variables de décision sont soumises à des contraintes de non-négativité. La boîte de dialogue « Options du solveur » alors affichée devrait être identique à celle illustrée à la figure 3-9. . Figure 3-9 La boîte de dialogue « Options du solveur » dans sa version finale Résolution du modèle Après avoir modifié les valeurs par défaut de la boîte « Options du solveur », cliquer sur OK pour revenir à la boîte « Paramètres du solveur », puis sur le bouton Résoudre situé dans le coin supérieur droit de cette boîte. EXCEL tente alors de calculer une solution optimale du modèle linéaire associé. Dans le présent exemple, il affichera la boîte « Résultats du solveur » de la figure 3-4 ; puis, l'option Garder la solution du solveur étant cochée par défaut, cliquer sur OK pour obtenir la feuille de calcul présentée à la figure 3-5. Il est recommandé de sauvegarder le fichier avant de le fermer. Août 2002 Chapitre 3. Les modèles de réseau Page 3.11 Les ratés du solveur Les fichiers du sous-répertoire s / 7e, sauf Nitrobec.xls, affichent une solution optimale du modèle représenté. La présentation particulière adoptée pour Nitrobec.xls découle de son rôle d’exemple de base dans la section 3.2 : afin d’illustrer le rôle du solveur, on fournit le fichier tel qu’il doit être avant l’intervention du solveur (voir figure 3-2) ; l’usager, en appliquant la procédure qualifiée de 2e étape en section 3.2 et en observant les différences entre les figures 3-2 et 3-5, peut constater concrètement l’effet du solveur. En particulier, il voit quelles plages de cellules sont affectées. Il est possible de vérifier l’optimalité des solutions affichées. Dans tous les cas, sauf Nitrob-M.xls et Toques.xls, il suffit d’appliquer la procédure décrite en section 3.2 : cliquer sur le menu Outils, puis sur la commande Solveur… de ce menu et enfin sur le bouton Résoudre de la boîte de dialogue « Paramètres du solveur ». La boîte « Résultat du solveur » apparaît telle qu’illustrée à la figure 3-10. En cliquant sur OK, on obtient la solution initialement affichée, ce qui indique que cette solution était bien optimale. Figure 3-10 La boîte de dialogue « Résultat du solveur » Le solveur d’EXCEL présente quelquefois des ratés. Les modèles associés à Nitrob-M.xls et Toques.xls, illustrent les problèmes que rencontre parfois EXCEL. Supposons donc qu’on applique la procédure décrite au paragraphe précédent à l’un ou l’autre de ces exemples. La boîte « Résultat du solveur » prend alors la forme représentée à la figue 3-11. Figure 3-11 Un message inexact d’EXCEL Août 2002 Chapitre 3. Les modèles de réseau Page 3.12 Ne tenons pas compte du message et cliquons sur OK, tout en conservant cochée l’option Garder la solution du solveur. On constate alors que, contrairement à toute attente, la solution finale calculée par le solveur est admissible… Cependant, elle n’est pas optimale. En effet, la valeur correspondante zf de la fonction-objectif est supérieure à la valeur optimale z* : ♦ pour Nitrob-M.xls, zf = - 23 950 et z* = - 74 080 ; ♦ pour Toques.xls, zf = 9 475 et z* = 4 135 ; L’optimalité de la solution initiale de ces deux fichiers se vérifie cependant de façon indirecte : ♦ on supprime d’abord cette solution : sélectionner la plage x à l’aide du curseur, puis appuyer sur la touche Suppr d’effacement ; ♦ on applique ensuite le solveur au fichier modifié. La solution résultante coïncide avec la solution initiale. Ainsi, le solveur, lorsqu’on lui fournit a priori une solution optimale, ne peut en détecter l’optimalité et s’engage dans des calculs qui l’amènent à un cul-de-sac. Mais, en l’absence de toute solution, il est capable de trouver une solution optimale. Les voies d’EXCEL sont impénétrables…