700 likes | 1.39k Views
Problème de transport. Formulation du problème de transport. Propriétés de la matrice des contraintes. Adaptation de la méthode du simplexe. Méthode dite du coin Nord-Ouest, méthode du coût minimal. Problèmes de dégénérescence. Généralisation du problème de transport. Introduction.
E N D
Problème de transport Formulation du problème de transport. Propriétés de la matrice des contraintes. Adaptation de la méthode du simplexe. Méthode dite du coin Nord-Ouest, méthode du coût minimal. Problèmes de dégénérescence. Généralisation du problème de transport.
Introduction Le 1e problème de flot à coût minimum à être formulé et résolu. Ce problème peut être formulé à l’aide d’un graphe simple où il n’y a pas de sommets intermédiaires, seulement un ensemble de sommets source S, et un ensemble de sommets puits P. Le mot transport provient de la considération des sommets dans S comme des usines et de ceux dans P comme des clients. Il s’agit de transporter les unités de disponibilité à partir des sources jusqu’aux clients à coût de transport total minimum. Hypothèse du modèle proposé : Le coût de transport pour acheminer des biens d’une source i à une destination j est proportionnel au # d’unités de biens acheminées.
Énoncé général du problème de transport m origines, n destinations Problème de programmation linéaire doté d’une structure particulière. où ai la quantité de biens à acheminer de la source i aux n destinations, bj la quantité de biens nécessaire pour satisfaire à la demande à la destination j, cij coût unitaire de transport entre une source i et une destination j, xij la qté transportée de l’origine i à la destination j.
Au problème de transport est associé un graphe biparti G Chaque origine est représentée par un sommet Oi, chaque destination par un sommet Dj, chaque route de l’origine i à la destination j par un arc orienté de Oi vers Dj. Note : Il n’y a pas d’autres arcs.
Exemple : Une entreprise fabrique un seul produit et possède 3 usines et 4 clients. Les trois usines produiront 3000, 5000 et 4000 unités respectivement. L'entreprise a pris l'engagement de vendre : 4000 unités au client 1, 3000 unités au client 2 et au moins 1000 unités au client 3. Les clients 3 et 4 voudraient tous les deux acheter autant que possible des unités qui restent.
Le profit net associé avec le transport d'une unité de l'usine i pour la vente au client j est donné par le tableau ci-dessous : La direction de l'entreprise veut savoir : - combien d'unités vendre aux clients 3 et 4 et - combien d'unités transporter de chacune des usines à chacun des clients afin de maximiser le profit total.
On vise à maximiser le profit et non pas de minimiser un coût comme c'est le cas au problème de transport. On n'a qu'à multiplier chaque profit par -1 et puis à minimiser. Il faut 3 sommets, numérotés 1, 2 et 3 ayant des disponibilités de 3000, 5000 et 4000 unités resp., pour représenter les 3 usines. Il faut aussi 3 sommets, numérotés 1, 2, 3 ayant des demandes de 4000, 3000 et 1000 unités resp. pour représenter les 3 premiers clients. Ces demandes assurent au moins 1000 unités pour le client 3. Maintenant, puisqu'il reste 4000 unités de disponibilité à distribuer parmi les clients 3 et 4, alors nous créons 2 autres sommets 3' et 4 avec des demandes de 4000 unités chacun, car les clients 3 et 4 peuvent recevoir jusqu'à 4000 des unités disponibles. Les sommets 3 et 3' représentent le même client physique.
Nous avons 3000 + 5000 + 4000 = 12000 unités de disponibilité et 4000 + 3000 + 1000 + 4000 + 4000 = 16000 unités de demande. Donc, il faut créer un sommet (usine) fictif 4 avec disponibilité 4000. Ce sommet ne pourra alimenter les clients 1, 2 et 3 mais fournira des unités fictives aux clients 3' et 4. Ces unités fictives représentent ce que les clients 3' et 4 ne recevront pas des 12000 unités disponibles.
Clients Usines Un coût nul car on veut utiliser ces arcs bien qu’ils n’apportent pas de profit. Un coût M très grand car aucun flot ne doit emprunter ces arcs.
Exemple : Yves Nobert et al., 95, pp. 337-341. L'entreprise Sporcau, spécialiste de la saucisse de porc, dispose de 4 laboratoires où elle élabore son produit, et de 5 centres de distribution d'où elle ravitaille sa clientèle. Le marché de la saucisse de porc est devenu fort concurrentiel et, récemment, l'entreprise a vu se resserrer ses marges. Elle a donc entrepris une étude pour abaisser ses coûts. Les coûts de transport, en particulier, sont rapidement apparus comme plus élevés que ceux des concurrents. Jusqu'ici, l'horaire quotidien d'acheminement des produits entre laboratoires et centres de distribution était dressé par un répartiteur averti armé de son bon sens et de son flair. Chez Sporcau, on pense qu'il s'agit là du maillon faible de la chaîne de contrôle des coûts de transport et on veut que le répartiteur adopte une méthode qui mènera à un horaire quotidien optimal.
Les 4 laboratoires fonctionnent 7 jours sur 7. Les viandes qu'on y conditionne sont livrées aux centres de distribution où s'approvisionnent tous les clients de Sporcau, du supermarché à la boucherie de quartier. Une carcasse de porc livrée le jour 1 dans un laboratoire réapparaît sous forme de saucisses le jour 3 sur les étals du rayon de la charcuterie des clients. Chaque centre de distribution enregistre les commandes de sa clientèle et les communique à la direction de l'entreprise, qui assure un approvisionnement adéquat. Le transport, au tarif kilométrique âprement négocié et incompressible de 2$ la tonne, est confié aux camions réfrigérés de la société Dicam.
Distances (km) entre les laboratoires et les centres de distribution. Chaque laboratoire s'approvisionne en carcasses de porc désossées auprès de coopératives d'éleveurs de son voisinage, qui lui en fournissent chaque jour une quantité convenue. Les pertes de poids subies lors de la transformation de la chair à saucisse en saucisses sont compensées par le poids des additifs alimentaires et celui des emballages.
On recherche un plan d'acheminement à coût minimal des laboratoires aux centres de distribution. Les saucisses de Sporcau sont expédiées directement des m origines (ici m = 4) aux n destinations (ici n = 5) selon des coûts de transport directement proportionnels aux qtés transportées et sans que leur soient imposées, sur les routes empruntées, des conditions quant à leur poids maximal ou minimal.
Données pertinentes présentées sous forme d’un tableau appelé « tableau de transport » Coût unitaire de transport Disponibilité i Demande j à satisfaire par le centre Cj.
Propriétés caractéristiques du problème de transport : Hypothèse non restrictive : Disponibilité totale > demande totale Ajouter une destination fictive de plus avec comme demande : Disponibilité totale < demande totale Ajouter une origine fictive de plus avec comme disponibilité :
Théorème : Moyennant la condition précédente, le problème de transport possède toujours une solution optimale (finie). Preuve : Si la condition précédente est satisfaite, l’ensemble des solutions réalisables du problème de transport n’est jamais vide : xij = ai bj est un exemple. • ai i D’autre part, on a nécessairement pour toute solution réalisable : xij min {ai, bj}. Autrement dit, l’ensemble des solutions réalisables doit être compact. Il existe donc un minimum.
Théorème : La matrice A des coefficients des contraintes est de rang (m + n - 1). Théorème : La matrice A est totalement unimodulaire, c’est-à-dire que toute sous-matrice carrée de A possède un déterminant égal à 0, +1 ou –1. Théorème de Dantzig, Heller, Tompkins et Gale : La matrice d’incidence aux arêtes d’un graphe est totalement unimodulaire les sommets du graphe peuvent être répartis en 2 ensembles disjoints tels que 2 sommets adjacents ne soient pas dans le même ensemble. Corollaire : Si les ai et bj sont entiers, les valeurs des variables sont entières dans toute solution de base réalisable et il existe donc au moins une solution optimale entière.
2 autres propriétés importantes du problème de transport : Théorème : Toutes les bases du problème de transport sont triangulaires. Note : Une matrice carrée B est dite triangulaire s’il existe au moins une ligne (ou colonne) dans B avec exactement un élément non nul et tel que la sous-matrice obtenue en supprimant la ligne et la colonne contenant l’élément non nul possède la même propriété et ainsi de suite.
Théorème : Il y a une correspondance biunivoque entre les bases du problème de transport et les arbres partiels de G : un tel arbre constitue un ensemble de « routes de base » du graphe de transport G. Preuve : Une démonstration de ce théorème est présentée dans [M. Simonnard, Programmation linéaire technique du calcul économique. Dunod, 1972, pp.186-187]. Nous verrons maintenant comment tirer profit des propriétés du problème de transport pour résoudre plus simplement ce problème à l’aide du simplexe.
Généralement, pour résoudre ce problème, celui-ci est représenté de façon compacte en un tableau rectangulaire, dit tableau de transport T :
Obtention d’une solution de base réalisable initiale Nous pouvons appliquer la méthode des 2 phases et introduire m + n variables artificielles. Lorsque celles-ci sont exclues de la base, nous avons en main une solution de base réalisable initiale. Voici une méthode plus simple : xij = ai bj est une solution réalisable. • ai i Mais ceci n’est pas une solution de base car la matrice A est de rang m + n – 1; donc, une soln de base doit comporter au plus m + n –1 valeurs strictement positives.
En éliminant la 1ière contrainte, la base correspondante qui est formée des vecteurs {P11, P12, P22, P23, P24, P34, P35} a la structure:
Note : Cette méthode ne tient pas compte du coût; la soln peut s’avérer être loin de la soln optimale.
D'autres règles de démarrage tiennent explicitement compte des coûts et peuvent ainsi économiser du temps de calcul à la méthode du simplexe - moyennant le temps supplémentaire nécessaire pour les appliquer. Jusqu'ici, aucune règle ne s'est prouvée empiriquement et uniformément meilleure que les autres.
Algorithme du problème de transport (simplexe adapté) Rechercher une solution de base réalisable initiale. 1. Appliquer un test d’optimalité. 2. Si la solution courante n’est pas optimale, rechercher une solution de base réalisable améliorée. 3.
Test d’optimalité Le problème de transport s’énonce comme suit :
La dernière équation de ce système exprime que si xij 0, on doit avoir :cij = ui + vj. Or xij ne peut être différent de zéro que si c'est une variable de base; soit I l'ensemble des couples d'indices (i, j) des variables de base. Il en résulte qu'étant donné une soln de base réalisable et un ensemble des valeurs des ui et vj vérifiant le système de (m + n - 1) équations à (m + n) inconnues suivant : cij = ui + vj (i, j) I la solution de base considérée est optimale si et seulement si: cij - (ui + vj) ≥ 0 i = 1, ..., m; j = 1, ..., n.
Remarques : L'indétermination du système résulte du fait que l'on a introduit (m + n) variables duales associées à (m + n) équations non indépendantes; l'une d'entre elles est une conséquence des (m + n - l) autres, de sorte que l'on choisira arbitrairement l'une des variables duales, disons vn = 0. Une fois que l'on a fixé, par exemple vn = 0, la résolution du système est immédiate puisqu'il est triangulaire. Après avoir calculé la valeur des variables duales, il devient facile de calculer la valeur des composantes du vecteur de coût relatif : cij - (ui + vj),i = 1, ..., m j = 1, ..., n, pour les variables hors-base. Si l'une de ces composantes est plus petite que zéro, alors nous ne sommes pas à l'optimum.
Exemple : Considérons de nouveau l’exemple précédent avec la solution de base obtenue par la méthode du coin Nord-Ouest : La soln n’est pas optimale car, par ex., c31 – u3 – v1 = 5-3-7 = -5 < 0.
Passage à une autre solution de base réalisable : Pour passer d’une soln de base réalisable à une autre et améliorer la valeur de la fonction objective, il faut appliquer la méthode du simplexe : - déterminer les variables d’entrée et de sortie, - déterminer la nouvelle solution de base réalisable. Dans l’exemple précédent, puisque c31 – u3 – v1 < 0, l’algorithme du simplexe nous dit qu’il y a avantage à introduire x31 dans la base. Posons x31 = , une valeur positive. Pour que les totaux marginaux restent satisfaits, il faut modifier la solution en conséquence.
Il faut déterminer un chemin, qui passe par des cases marquées (xij > 0), qui se ferme sur la case choisie (ici x31) et qui est obtenu en se déplaçant successivement, parallèlement aux lignes et parallèlement aux colonnes du tableau.
Un tel chemin est unique, car il traduit tout simplement le fait que P31 s’exprime comme une combinaison linéaire des vecteurs de la base : P31 = P11 – P12 + P22 – P24 + P34. La valeur maximum possible de q se détermine, comme dans l'algorithme du simplexe, en exprimant que toutes les variables restent positives ou nulles, il est clair ici que la valeur maximum de q est 1, et que pour cette valeur x22 = 0 (donc P22 sort de la base).
La nouvelle soln de base et les valeurs duales associées seront donc : Cette solution n’est pas optimale puisque ne sont pas satisfaites ni u3 + v2 c32 ni u3 + v3 c33. On poursuit jusqu’au tableau final :
Dégénérescence C’est le cas lorsqu’il y a moins de m + n – 1 valeurs xij strictement positives. Cela peut se présenter soit, lors de la recherche d’une solution de base réalisable initiale, soit, au cours d’une itération. Comment remédier aux problèmes de dégénérescence dans l’algorithme de transport ? • Conserver une trace des variables de base nulles afin de pouvoir • appliquer sans difficulté l’algorithme de transport. (ii) Perturber les constantes ai et bj pour éviter un cycle.
Dégénérescence lors du calcul de la soln de base réalisable initiale Cela survient à chaque occasion où une ligne et une colonne sont saturées simultanément par une attribution, on réduit ainsi de 1 le nombre d'attributions nécessaires à l'obtention d'une soln initiale. Le # idéal d'attributions, qui est égal à (m + n -1) ne pourra donc être atteint. Pour contourner ces difficultés, on procède ainsi : [NOBE 95, pp. 367-375] Chaque fois qu'on sera amené à effectuer une attribution qui sature à la fois une ligne et une colonne, on choisira, dans cette ligne ou dans cette colonne, une autre case que celle qui reçoit l'attribution, pour y inscrire explicitement 0. La variable associée à cette case sera considérée comme une variable de base prenant la valeur 0.
Voici une façon heuristique de choisir la case où inscrire ce 0 : Dans les 2 rangées saturées par l'attribution, on choisit la case de coût unitaire minimal pour y inscrire 0. Dans le cas où ce coût minimal se retrouve dans plus d'une case de ces rangées, on tranche au hasard. Voici une façon heuristique de choisir la variable de sortie dans le cas où plusieurs variables de base ont la valeur 0 : Parmi les variables candidates au rôle de variable sortante, on choisit celle dont le coût unitaire est maximal. En cas d'égalité, on tranche au hasard.
Optimum multiple Il est aisé de reconnaître la non unicité de l’optimum en examinant les composantes du vecteur de coût relatif : cij – ui – vj. Si l’on a en main une solution de base réalisable optimale, une condition nécessaire pour qu’il en existe une autre est : il existe une variable xij qui n’appartient pas à la base et pour laquelle l’équation duale est satisfaite en tant qu’égalité. Cette condition est suffisante si, en introduisant le vecteur Pij dans la base, la variable xij prend une valeur positive.
Généralisations du problème de transport Au lieu d’un coût unitaire fixe, nous sommes en présence d’un coût non linéaire : cij(xij) ou, de façon plus générale, cij(x). L’objectif du problème de transport s’énonce alors comme suit : cij(xij) i = 1, 2, …, m j = 1, 2, …, n cij(x) i = 1, 2, …, m j = 1, 2, …, n ou encore Les quantités demandées aux destinations et celles disponibles aux sources ne sont pas fixes. Des fonctions de coût non linéaires peuvent être introduites dans le modèle : - afin de prendre en compte les différences qui interviennent entre les quantités demandées et celles acheminées. - lesquelles dépendent des quantités produites aux sources.