Probléme de La Tension Maximum
Probléme de La Tension Maximum
Probléme de La Tension Maximum
Faculté de Mathématiques
Mémoire
En vue de l’obtention du Diplôme de Licence
En Recherche Opérationnelle
Thème :
Juin 2020
Table des matières :
Introduction 6
1. Chapitre 1: la programmation linéaire 7
1.1 Introduction ...………………………………………………………………………... 8
1.2 Aperçu historique ……..……………………………………………………………. 8
1.3 Définition ……………………………………………………………………………. 8
1.4 La formulation d’un programme linéaire ……………………………………………. 8
1.4.1 La modèlisation d’un programme linéaire …………………………………… 8
1.4.2 Les différentes formes d’écriture d’un programme linéaire …………………. 8
1.4.2.1 Forme standard…………………………………………………………… 8
1.4.2.2 Forme canonique…………………………………………………………. 9
1.5 La résolution d’un programme linéaire ……………………………………………… 9
1.5.1 La résolution graphique……………………………………………………… 9
1.5.2 La résolution avec la méthode de simplexe ………………………………….. 9
1.5.2.1 Notion de base …………………………………………..……………… 9
1.5.2.1.1 Rappelle de la définition d’une base …………………………….. 10
1.5.2.1.2 Changement de base dans un programme linéaire ………………. 10
1.5.2.1.3 Variable de base et variable hors base …………………………… 10
1.5.2.1.4 Base optimale ……………………..……………………………. 10
1.5.2.1.5 Base réalisable ……..…………………………………………… 10
1.5.2.1.6 Notion de pivotage ………………………………………………. 10
1.5.3 Les étapes de l’algorithme de simplexe ………………………………………10
1.5.4 Algorithme de simplexe de deux phases …………………………………….. 12
1.6 Conclusion ………………………………………………………………………… 12
2. Chapitre 2 : Problème de la tension maximum 13
2.1. Introduction ………………………………………...……………………………… 14
2.2. La théorie des graphes ……………………………………………………………… 14
2.2.1. Définitions et notions de base ……………………………………………….. 14
2.3. Présentation de problème de la tension maximum …………………………………. 15
2.3.1.1. Définition de problème ……………………………………………… 15
2.3.1.2. La modélisation de problème sous forme d’un PL ………………..... 16
2.3.1.2.1. La formulation du dual de problème ………………………… 16
2.3.1.3. La résolution de PL associé au problème …………………………… 17
2.3.1.3.1. Exemple …………………………………………………….. 18
2.4. Conclusion ………………………………………………………………………. 19
3. Chapitre 3 : implémentation de problème de la tension maximum. 20
3.1. Introduction ………………………………………………………………………… 21
3.2. Le code source de programme ……………………………………………………... 21
Conclusion générale 24
Bibliographie 25
2
Remerciement :
Au terme de cette étude, nous tenons à remercier le bon dieu qui nous
a donné le courage et la volonté d’aller jusqu’au bout.
Au terme du présent travail, nous tenons à remercier tout d’abord et
exprimer nos sincères remerciements à l’égard de : Mme Hissoum
qui nous a encadrer et diriger par ses conseils et ses orientations.
Merci pour tous les professeurs, intervenants et toutes les personnes
qui par leurs paroles, leurs écrits, leurs conseils et leurs critiques ont
guidé nos réflexions et ont accepté à répondre à tous nos questions
durant notre recherche.
Enfin, à celle et ceux qui ont apporté leur aide pour la réalisation de
ce travail trouvent ici notre profonde sympathie.
3
Dédicace :
Imen.
4
Dédicace :
Aux deux personnes que j’aime le plus au monde, mes chers parents
pour tous leurs sacrifices, leur amour, leur tendresse, leur soutien et
leurs prières tout au long de mes études.
À mes deux chers frères pour leurs encouragements permanents et
leur soutien morale.
À tous les membre de ma famille qui m’ont soutenu tout au long de
mon parcours universitaire.
À ma meilleur amie Selma qui a toujours été là pour moi, à mon
binôme Imen pour tous ses efforts et sa patience.
Que ce modeste travail soit l’accomplissement de vos vœux tant
allégués et le fruit de votre soutien infaillible.
Chaïma.
5
Introduction :
La recherche Opérationnelle doit son nom à son application aux opérations militaires au
seconde guerre mondiale, et même si l’appellation est plus au moins nouvelle la démarche
est ancienne. Ce n’est pas qu’aujourd’hui que l’homme cherche à optimiser les résultats
qu’il peut obtenir, dans des conditions déterminées et pour peu qu’il appelle l’esprit
scientifique à son secoure, il fait de la recherche opérationnelle sans le savoir. Mais c’était
qu’en 1938 que Sir Blackett a constitué le premier groupe de la recherche opérationnelle
défini à la fois la déontologie et la structure générale d’une équipe consacrée à cette
discipline.
La recherche opérationnelle c’est la mise en œuvre des méthodes scientifiques
essentiellement mathématiques, en vue d’analyser des situation complexes pour permettre
aux décideurs de faire des choix efficaces et robustes. Elle fournit des outils pour
rationaliser, simuler et optimiser le fonctionnement des systèmes industrielles et
économiques. Cette science s’attaque essentiellement aux problèmes qui constituent un défi
pour le sens commun qui se résument en trois types principaux : combinatoires, aléatoires
ou concurrentiels.
L’utilité et les champs d’exploitation de cette discipline n’ont fait que croitre au fils des
décennies : de l’organisation des lignes de production d’automobiles à la planification des
missions spatiales, de l’optimisation des portefeuilles bancaires à l’aide au séquençage de
l’ADN, de la gestion des stocks au plans d’acheminement pour des marchandises ou des
personnes… mais aussi dans la vie quotidienne de tous les jours pour le recyclage des
déchets, l’organisation de ramassages scolaire, les emplois du temps des infermières ou la
couverture satellite des lignes téléphoniques…
L’expert en RO exploite des connaissances provenant des sources très variées,
particulièrement mathématiques, il s’agit des méthodes qui constituent la boite à outils de
notre expert, à savoir la programmation linéaire qui a une relation directe avec la recherche
opérationnelle.
Le premier chapitre de ce mémoire est consacré à la définition de la programmation
linéaire, ses éléments de base et ses méthodes des résolutions.
À côté de la programmation linéaire figure la théorie des graphes qui est fréquemment
utilisée pour représenter des réseaux ou des schémas mais son utilisation dépasse largement
ce cadre, en effet, la théorie des graphes offre également des possibilités de modélisation
très riches (flux de transport, les problèmes d’ordonnancement, les problèmes de tension...).
Le deuxième chapitre de ce mémoire est consacré à la modélisation de l’un des problèmes
importants de la théorie des graphes `le problème de la tension maximum`.
Au fils des années, avec l’évolution de la technologie et l’insertion de l’informatique
dans de nombreux domaines, plusieurs solveurs de résolution des programmes linéaires sont
apparus. Dans le troisième chapitre de ce mémoire une l’implémentation de problème de la
tension maximum est abordée à travers un de ses solveurs, et à la fin de ce travail une petite
conclusion est insérée pour résumer ce qui a été présenté dans les chapitre précédents.
6
Chapitre 01 :
La programmation linéaire
7
Chapitre 01 : la programmation linéaire
Introduction :
Produire les meilleures décisions par une approche quantitative de la recherche
opérationnelle nécessite la variété des connaissances de l’expert en RO. En effet, les
acquisitions exploitées proviennent de différents domaines : mathématiques appliqués,
informatique.…
Sous le terme de mathématiques appliqués, on trouve en particulier La programmation
linéaire, en variables réelles ou entières, qui est intimement liées à l’histoire de la
recherche opérationnelle puisque c’est la suite de la création de la 1ere méthode de
résolution efficace de la programmation linéaire.
Aperçu historique : L’histoire de la programmation linéaire a commencé avec les
premiers mathématiciens qui se sont occupés de problèmes, que l’on ne nommait pas
encore à l’époque `programmes linéaires` sont : Laplace et le baron Fourier. En 1939 le
russe Kantorovitch a imaginé une méthode inspirée des multiplicateurs de Lagrange,
classiques en mécanique pour résoudre des programmes de transport. La contribution
décisive a été l’invention de l’algorithme de simplexe, développé à partir de 1947
notamment par G.B. Dantzig et le mathématicien Von Neumann et c’est au milieu des
années 80 que l’indien Karmarkar a proposé une nouvelle méthode crée aux Bell
Laboratoires qui permettait de résoudre de très gros problèmes linéaires, par une démarche
intérieure au polyèdre des solutions admissibles.
Définition : La Programmation Linéaire est un cadre mathématique général permettant de
modéliser et de résoudre certains problèmes d'optimisation. Mathématiquement le
problème consiste à Optimiser (maximiser ou minimiser) une Fonction Linéaire sous des
Contraintes également Linéaires ayant la forme d'inéquations liant des variables, elle vise
à sélectionner parmi différentes actions celle qui atteindra le plus probablement l'objectif
visé.
La formulation d’un PL:
1. La modélisation d’un problème linéaire : La modélisation d’un problème linéaire
consiste à identifier :
Les variables de décisions : Ce sont des symboles mathématiques qui représentent une
quantité physique pour le but de résoudre le problème.
Les contraintes : Ce sont des combinaisons linéaires qui représentent les limitations et les
restrictions auxquelles sont soumises les variables de décisions. Elles peuvent être de type
d’inégalité supérieur, inégalité inférieur ou égalité.
La fonction objectif : Appelée aussi critère de performance ou fonction économique,
c’est la fonction qui détermine l’optimum qu’il soit le maximum ou le minimum selon le
problème traité. Elle s’exprime sous forme de combinaison linéaire de variables de
décisions comme suite :
Max/Min (Z) = ∑Ci Xi Max/Min(Z)= C1X1 + C2X2 +…+ CnXn
Où les coefficients C1,…,Cn doivent avoir une valeur réelle bien déterminée.
2. Les différentes formes d’écritures d’un PL : La résolution d’un PL se fait avec
plusieurs méthodes nécessitant parfois le changement de la forme sous laquelle le PL est
8
écrit, en effet, un PL peut être mis sous différentes formes équivalentes par des
manipulations appropriées :
• la forme standard :un PL est sous forme Standard si :
- Toutes les variables sont positives (Xi≥0, i=1, …, n).
- Toutes les contraintes sont de type d’égalité (ne contient pas des contrainte sous forme
d’inégalité).
- Le problème est de maximisation ou minimisation.
Son écriture matricielle générale est comme suite :
Max /Min (Z) = C X (produit vectorielle < 𝐶 𝑋 >)
(Ps) 𝐴𝑋=𝑏
Xi ≥ 0 , i=1, … , n .
Où : A est une 𝑚 × 𝑛 matrice (m le nombre de contrainte et n le nombre d’inconnues), b
est un vecteur à 𝑚 composantes appelé le second membre, C est un vecteur à 𝑛
composantes appelé le vecteur des coûts et X est un vecteur à 𝑛 composantes représentant
les variables ( les inconnues).
• La forme canonique : un PL est sous forme canonique si :
- Toutes les variables sont positives.
- Toutes les contraintes sont de type inégalité supérieure `≤` (resp. Inégalité inférieur `≥`)
i.e : pas de contrainte sous forme d’égalité.
- Le problème est de maximisation (resp. Minimisation).
Son écriture matricielle est comme suite :
Max (Z)= C X Min (Z)= C X
(Pc ) 𝐴𝑋≤𝑏 ou : (Pc) 𝐴𝑋≥𝑏
Xi ≥ 0, i=1,…,n Xi ≥ 0, i=1,…,n
Remarque : le passage de la forme canonique au forme standard se fait en ajoutant (ou
soustrayant) des variables qu’on les nomme ‘les variables d’écart` aux inégalités `≤` (aux
inégalités `≥`) pour les transformer en contrainte de type égalité ` = `.
3. La résolution d’un programme linéaire :
A) La résolution graphique :
Cette méthode géométrique est applicable qu’aux PL ayant un nombre de variables au
plus égale à 3.
Le principe de cette méthode consiste à formuler graphiquement les contraintes en traçant
des droites sur un plan, la région d’intersection représente le domaine réalisable `D`qui
contient toutes les valeurs qui vérifient le programme linéaire, et ensuite tracer le vecteur
de la fonction objectif pour enfin déterminer le point optimum qui appartient bien
évidement au domaine réalisable D formé par les droites des contrainte.
B) La résolution avec la méthode de simplexe :
Dite aussi l’algorithme de simplexe, il a été développé par le mathématicien américain
Georges Dantzig (1914-2005) et le mathématicien physicien américano-hangrois John
Neuman (1903-1957) à partir de 1947, puis été perfectionné au fil des années pour
accroitre la précision des résultats.
Notions de base :
9
Avant que l’algorithme de simplexe puisse être appliqué pour résoudre le programme
linéaire, ce dernier doit être converti en un Ps (i.e doit être transformé au forme standard).
Rappelle de la définition d’une base : soit A une 𝑚 × 𝑛 matrice associée à un system
d’équation, une base J est un sous ensemble de colonnes de A linéairement indépendantes.
On note AJ la matrice associée au système dans la base J (la matrice A écrite dans la base
J).
Changement de base dans un programme linéaire : un PL est dit ``écrit sous forme
canonique par rapport à une base J`` si les deux conditions sont vérifiées :
a) AJ est une permutation près des colonnes de la matrice unité.
b) CJ=0.
Après l’effectuation du changement de base, le PL devient :
(PL)~(Pc) 𝐴̃X = 𝑏̃ avec : 𝐴̃ = (AJ)-1 A ; 𝑐̃ = c - cJ (AJ)-1 A ;
𝑐̃ X = Z(max) -𝜶 𝑏̃ = (AJ)-1 b ; 𝜶 = cj (AJ)-1 b =𝜋b ;
Variable de base et variable hors base : considérons un système d’équation a n
variables et m équations où n≥ 𝑚, une solution de base pour ce système est obtenue de
maniérer suivante :
- On pose n-m variables égale à 0, Ces variables sont appelées variable hors base.
- On résout le système pour les m variables restantes, ces variables sont appelées les
variables de base.
- Le vecteur de variable obtenue est appelé solution de base (il contient les variables de base
et hors base).
Base réalisable : soit J une base, si la solution XJ de PL associée à la base J est ≥ 0 alors
J est dite base réalisable et XJ est une solution réalisable de base du PL
Base optimale : soit J une base réalisable d’un PL. Si le vecteur coût relatif à J est négatif
ou nul pour un problème de maximisation (resp. Positif ou nul pour un problème de
minimisation), alors la base J est optimale et la solution de base associée à J est une
solution optimale de base du PL.
Notion de pivotage : le principe de pivotage est de changer une variable de base X k par
une variable hors base Xs dans 𝐴̃X = 𝑏̃ de sorte que XS devienne une variable de base et
Xk quittera la base sans que les autres variables de base quitte la base. X S est appelée
variable entrante, tandis que Xk est la variable sortante. Pour que cet échange soit
possible il faudrait que dans le système l’équation r contenant la variable X k où 𝐴̃rK =1 (la
ligne r, colonne k dans 𝐴̃) contienne aussi la variable XS avec un coefficient 𝐴̃rS ≠ 0 (dans
le cas contraire J’=J ∪ {𝑠}\{k} n’est pas une base !). L’élément 𝐴̃rS est le pivot par rapport
auquel le pivotage s’effectue en suivant les ces opérations :
1- On divise la ligne du pivot (i.e : la ligne r de 𝐴̃) par le pivot,
2- On élimine la variable Xk de toutes les autres équations (sauf l’équation r) en remplaçant
Li par Li – ( 𝐴̃iS ÷ 𝐴̃rS )Lr , pour tout i∈{i….m}\{r}.
10
Tableau initial
Solution oui
Optimale Stop
Pivotage Non
Choix de la variable entrante
X1 X2 ………. XN bi
2- Étape 2 (le choix de la variable entrante) : le choix se fait en cherchant le Max ( resp.
Min) des Cj-Zj pour un problème de maximisation (resp. Minimisation) la variable
entrante c’est la colonne correspondante à la valeur max (resp. Min) trouvée.
3- Étape 3 (Le choix de la variable sortante) : il s’agit de trouver le minimum entre les Li
où : Li= {| bi/ai,k | } , ai,k le coefficient de la i ème ligne k ème colonne (la colonne k est
supposée celle de la variable entrante trouvée dans l’étape 2), la variable sortante c’est la
ligne correspondante à la valeur min trouvée.
4- Étape 4 le pivotage.
5- Critère d’arrêt : les itérations de l’algorithme s’arrêtent lorsque l’optimum est atteint i.e
lorsque :
→ Cj-Zj ≤ 0 pour un problème de maximisation.
→ Cj-Zj≥ 0 pour un problème de minimisation.
Remarque : dans certains cas le system linéaire Ax=b n’est pas nécessairement de plein
rang, la redondance peut avoir lieu, l’ensemble des solutions peut être vide… Dans ce
11
genre de situation on n’aura pas une solution réalisable de base pour commencer
l’algorithme de simplexe donc c’est la méthode de 2 phase qui sera appliquée.
12
Chapitre 02 :
13
Chapitre 2 : Problème de la tension maximum
Introduction :
La représentation graphique par un dessin, un plan, une esquisse contribue souvent à la
compréhension, c’est sur ce principe que la discipline théorie des graphes est construite.
En effet La théorie des graphes est l’une des branches des mathématiques discrètes et
d’informatique, elle représente un instrument très utile et efficace pour modéliser et
résoudre beaucoup de problèmes pratique dans plusieurs domaines tel que les problèmes
posés en Recherche opérationnelle. En générale cette discipline constitue donc une
méthode de pensée qui permet de formaliser une variété des problèmes (des problèmes de
réseau de communication, réseau de transport, arbre généalogique, diagramme de
succession de tâches en gestion de projet…) en se ramenant à l’études d’un graphe.
- Un graphe orienté noté G est un couple formé de deux ensembles non vides X et U liés
par une application mathématique, cette relation est notée `G= (X, U) `, tel que :
a) X= {x1, x2, ..., xn} dont les éléments sont appelés `sommet`, son cardinale |X|= n
représente le nombre de sommets de G, n est appelé` l’ordre` du graphe.
b) U= {u1, u2, ..., um} dont les éléments sont appelés `arcs’, son cardinale |U| = représente
le nombre d’arcs de G, m est appelé `la taille’ du graphe.
G est habituellement représenté par une figure dans le plan, où les sommets sont représentés
par des points et les arcs par des flèches entre les sommets.
- Un graphe G est dit simple, si G ne contient pas d’arcs multiples et pas de boucle (un arc
d’un somment xi vers lui-même).
- On appelle une matrice incidence sommets – arcs dans un graphe G orienté avec |X| = n
et |U| = m, la matrice notée M(G) ou E, dont les lignes et les colonnes sont indicés
respectivement par les sommets et les arcs définie par :
+1 si xi=I(u) Avec :
-I(u) représente l’extrémité initiale de l’arc u.
E = (ei,j) = -1 si xi=T(u) -T(u) représente l’extrémité terminale de u.
1≤ i≤ n, 1≤j≤ m
0 si u est une boucle
Un arc u est dit incident à un sommet xi, si xi est l’une de ses extrémités et xi est dit
incident à u.
- Soit G= (X, U) un graphe orienté, d : U →R est une application qui associe à chaque arc ui
∈ U une longueur noté d(u) et appelée distance, poids d’arc… , dans ce cas on détermine
le réseau R et on le note R = (X, U, d), autrement dit : R= (G, d).
- Soit R= (X, U, d) réseau, 𝜋 : X → R est une application qui associe à chaque sommet xi ∈
X une valeur qui représente la distance entre un sommets donnée s et le sommet x i, cette
fonction est appelée fonction potentiel de x noté 𝜋(x).
- Soit R= (X, U) un réseau avec |U|=m et |X|=n, et soit E la matrice d’incidence sommet-arc
associée à R, on définit l’application t qui attribue à chaque arc ui de R (reliant xi à yi tel
que I(u)=xi et T(u)=yi) une valeur de manière suivante :
tui = 𝜋(yi) - 𝜋(xi) , t est appelée une tension.
14
- Un chemin P reliant un sommet x0 à un sommet xp dans un graphe G = (X, U), est une
suite alternée de sommets et d’arcs : P = x0u1x1u2x2 …xp-1upxp tel que pour tout 1 ≤ i≤ p,
ui = (xi-1,xp). Si de plus le chemin P est fermé i.e : P`=Pup+1x0 , P` est appelé donc un
circuit noté C .
- La longueur d’un chemin P dans un réseau R = (X, U, d) est égale à la somme des
longueurs des arcs qui constituent le chemin P : L(P) =∑𝑢∈ P 𝑑(𝑢).
- On dit un plus court chemin d’un sommet x à un sommet y la longueur de plus court
chemin reliant x à y, ça représente aussi la plus courte distance de x à y.
Remarque : La plus courte distance d’un sommet à lui-même est nulle.
- Un circuit C est dit circuit absorbant dans un réseau R = (X, U, d) si sa longueur est
négative (resp. Positive) i.e :∑𝑢∈𝐶 𝑑(𝑢) < 0 (resp. ∑𝑢∈𝐶 𝑑(𝑢) > 0 ) dans le cas d’un plus
court chemin (resp. Plus long chemin).
- Un sommet x est appelé racine dans R = (X, U, d) noté s si et seulement si ∀ x ∈ X\s il
existe un chemin P de s à x, autrement dit il existe un chemin P de s vers tous les sommets
restants de R.
- G’= (U`, X) est dit arborescence si :
→ G’ n’a qu’un seule sommet d’entré ‘le sommet racine s’ (i.e : un sommet n’ayant
pas de prédécesseur).
→ Il existe un chemin, et un seul de s à tout autre sommet du graphe.
15
xi∈ 𝑋 − {𝑠}) sous réserve que la différence de potentiel des extrémités de chaque arc soit
inférieure ou égale à la longueur de cet arc, autrement dit qu’il s’agit d’un problème de
maximisation de la tension entre deux sommets s et xi sous contraintes que la tension sur
chaque arc ne dépasse pas la longueur de l’arc concerné.
Ce problème peut être modélisé de maniérer suivante :
1-On définit d’abord la variable de décision 𝜋(𝑥 i) ` représente le potentiel de sommet xi avec :
i=1,…,n.
2-Pour les contraintes, en plus de la condition qui exige que le potentiel de sommet s soit nul,
on associe à chaque arc de R une tension tout en respectant les conditions imposées, donc si
on parcourt tous les arcs de R on aura le système suivant :
La matrice Aj,I qui a les arcs de R comme lignes et ses sommets comme colonnes ce n’est que
la transposée de la matrice d’incidence sommet-arc de R multipliée par `-1` (-Et), alors
l’application tension peut aussi se dèfinir comme suit:
t une tension dans R ⟺ ∃ 𝝅 ∈ 𝑹 , − 𝑬t 𝝅 = t .
3-La fonction objectif Z consiste à maximiser la somme des potentiels des sommets de R.
On aura donc un PL modélisant ce problème qui se présente comme suit :
𝜋(s)=0
(T Max) -Et 𝜋 ≤ 𝑑
∑𝑥∈𝑋 𝜋(𝑥) =Z (max)
(T Max) admet une solution optimale 𝜋* si et seulement si les conditions suivantes sont
réalisées :
i) R ne contient pas de circuit absorbant (preuve : soit 𝜋 une solution de T Max, en
sommant les inéquations 𝜋(T(u)) - 𝜋(I(u)) ≤d(u) sur tous les arcs u∈ 𝜋, on obtient : 0 ≤
∑𝑢∈𝜋, 𝑑(𝑢). Donc R ne contient pas de circuit absorbant si 𝜋 est une solution réalisable).
ii) s est une racine dans R .
iii) Si c’est le cas, alors 𝜋* représente un plus court chemin de sommet s à xi ∈ 𝑋 − {𝑠} dans
R, et G’=(X, U’) le graphe partiel, avec U’= { u∈ U / 𝜋*(T(u) ) - 𝜋*(I(u)) = d(u)
}représente une arborescence des plus court chemin de s à tous les autre sommets de R.
De façon générale, trouver une tension maximum entre deux sommets s et les autres sommets
d’un réseau revient à chercher un plus court chemin de s à eux.
La formulation du dual de T Max : le dual (D) de ce problème consiste à choisir l’ensemble
d’arcs de longueur totale minimal, pourvu que les arcs composent un chemin de s à tous les
autres sommets de R, et on peut le formuler comme suit :
16
-La variable de décision Xi,j de (D) est une variable booléenne qui représente `l’arc reliant le
sommet xi au sommet xj` Xi,j = 1 signifie que l’arc reliant xi à xj est pris , Xi,j = 0 signifie que
l’arc reliant xi à xj n’est pas pris. Avec i=1, ..., n et j=1, …, m.
-Les contraintes s’obtiennent en faisant le produit matriciel entre la matrice d’incidence
sommet-arc et le vecteur X à m-composantes (qui représentent les arcs de R) et ça vaut 1 si
i=s et ça vaut -1 sinon.
-La fonction objectif consiste à minimiser la somme de la quantité di,j×Xi,j ( di,j représente la
longueur de l’arc Xi,j), ∀Xi,j∈U.
1 si i=s
-E X= -1 sinon
(D)
𝑛
Min(Z)= ∑𝑚
𝑖=1 𝑑 i,j Xi,j
𝑗=1
NOTE : le dual D de problème de tension maximum représente en fait un problème de flot.
La résolution de programme linéaire T Max :
- On commence d’abord par déterminer la matrice d’incidence sommet-arc E de problème
traité, ensuite à partir de la transposée de E on exprime les contraintes ainsi que la fonction
objectif.
Ce genre de PL se résout avec l’algorithme de simplexe de 2 phases car on n’a pas une base
réalisable au départ pour commencer l’algorithme de simplexe, on procède alors comme suit :
- On commence par établir le PL auxiliaire associé à (T Max), pour cela il faut d’abord le
transformer sous sa forme standard en rajoutant une variable d’écart à chaque contrainte
d’inégalité `≤` et une variable artificielle à chaque contrainte de type égalité `=`.
- La fonction objectif Z va devenir une fonction de minimisation W de la somme des variables
artificielles ajoutées, on aura donc le PL auxiliaire suivant :
𝜋(s) + V=0 …(1) avec : 𝜋` un vecteur à m-composantes qui
(Ta Max) -E 𝜋 + 𝜋` = d
t représentent les variables d’écart.
∑𝑖∈𝑘 𝑉i =W(min) k : le nombre des contraintes d’égalité.
(T Max) contient une seule contraint d’égalité alors on a une seule variable artificielle V.de
(1) on a : 𝜋(s) + V=0 V= - 𝜋(s), on remplace dans la fonction objectif et on obtient :
𝜋(s) + V=0
(Ta Max) -Et 𝜋 + 𝜋` = d
-𝜋(s)= W (min)
- On applique ensuite l’algorithme de simplexe sur T a Max en commençant par la phase 1.
- Après avoir une base réalisable, on passe à la phase 2 qui sera appliquée sur le PL T Max
initial sous sa forme obtenue à la fin de la phase précédente.
- On effectue le pivotage jusqu’à atteindre l’optimalité, on aura à ce moment un vecteur 𝜋*
contenant les potentiels des sommets de R qui représentent la longueur d’un plus court
chemin issue de sommet s, et une arborescence des plus courts chemins à partir de s.
Exemple : soit le réseau R= (X, U, d), X représente les villes, U l’ensemble des arcs de R (∃u
qui relie X1 et X2 s’il existe un vol entre les deux villes) et d représente la durée du vol entre
les villes en heurs, R se présente comme suit
17
Ville 1=x1 u6 8 Ville 5=x5
u1 7
u4 2
x0 u3 3 u9 3
Ville 2=x2 u7 3
u2
4 u5 1 Ville 4 = x4
u8 2
ville 3=x3
On veut connaitre la durée minimale de vol du x0 à tous les villes ça revient à chercher un plus
court chemin de x0 à tous les sommets restants i.e il s’agit bien d’un problème de tension max.
18
𝜋(x0)=0 i=0, …,5 et j=1, …,9.
t
(T Max) -E 𝜋 ≤ d(uj)
Z(Max) = ∑5𝑖=0 𝜋(xi)
→ La résolution de T Max :
Après la transformation sous forme standard et l’ajout des variables d’écart et les variables
artificielles, et après l’application des deux phases de simplexe (1 itération en phase1 et 7
itérations en phase 2) on obtient la solution optimale suivante :
𝜋*=(𝜋(x0), 𝜋(x1), 𝜋(x2), 𝜋(x0), 𝜋(x3),𝜋(x3),𝜋(x5)) = (0, 5, 3, 4, 6, 9) heurs et 𝑧*= 27 heurs.
Les composantes de 𝜋* représentent la plus courte durée d’un vol de l’aéroport X0 vers la
ville Xi respectivement, et Z* représente la durée minimale de parcourir toutes les villes
en démarrant de X0.
Et on aura aussi une arborescence des vols des plus courtes durées G’=(X, U’) tel que
U’= { u∈U / / 𝜋*(T(u) ) - 𝜋*(I(u)) = d(u) } U’= { u2 , u3 , u4 , u8 , u9 }
19
Chapitre 03 :
20
Chapitre 03 : l’implémentation de problème de la tension maximum
21
Aeq=[1 zeros(1,n-1)];
beq=0;
x=linprog(f,-A,b,Aeq,beq);
x=x';
end
la fonction arbo :
function [c] = arbo(y,b)
n=size(y);
for i=1:n
if y(i)==b(i)
c(i)=i;
else c(i)=0;
end
le lien entre l’interface graphique et la fonction tmax :
function pushbutton1_Callback(~, ~, handles)
A=get(handles.edit1,'string');
b= get (handles.edit2,'string');
A= str2num(A);
b=str2num(b);
[x,s,m,n]=tmax(A,b);
m=m; n=n;
A=A';
y = -A * x';
z= sum(x);
c=arbo(y,b);
c(c==0)=[];
set(handles.edit12,'string',c);
set(handles.edit11,'string',z);
set(handles.edit8,'string','le nombre d`arc:');
set(handles.edit9,'string','le nombre de sommet:');
set(handles.edit6,'string',m);
set(handles.edit7,'string',n);
set(handles.edit4,'string',x);
if s<1
set(handles.edit5,'string','pas de solution ')
else
set(handles.edit5,'string','solution trouvèe')
set(handles.edit10,'string',y);
end
On a repris l’exemple qu’on a abordé dans le chapitre 2 pour le résoudre cette fois avec
l’application créé :
1- On commence d’abord par introduire la matrice d’incidence sommet-arc de R dans le
champ ``saisir la matrice d’incidence`` et introduire le vecteur b dans le champ`
`saisir les longueurs des arcs`` , ensuite appuyer sur le boutton ‘ Résoudre’ comme
suite :
22
2- On aura la solution avec les informations souhaitées sur chaque champs, présenté
comme suite :
23
Conclusion Générale :
Dans ce travail, nous nous sommes intéressés à un problème particulier de la théorie des
graphes souvent rencontré dans la vie quotidienne, il s’agit de problème de la tension
maximum qui peut se définir aussi comme le problème de la recherche de plus court chemin.
Notre modest travail nous aura montré le lien étroit entre les deux disciplines de la
recherche opérationnelle, leur importance qui figure dans leur précision et efficacité de
résoudre de nombreux problèmes dans tous les domaines et la diversité de leur application
dans le monde réel.
24
Bibliographie :
[1] Bernard Fortz ; Recherche opérationnelle et applications ; Université libre de
Bruxelles ; 2012-2013.
[3] Robert Faure, J.-P. Boss, Andrè Le Garf ; La recherche opérationnelle. Presses
universitaires de France ; 1995.
25