From 033dc24696c0844262fc57f16c52407d706e10f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=A9munaire?= Date: Mon, 4 Jun 2012 20:42:19 +0200 Subject: [PATCH] Rework du cours GRF --- grf/cours.tex | 348 +++++++++++++++++++++++++++----------------------- 1 file changed, 190 insertions(+), 158 deletions(-) diff --git a/grf/cours.tex b/grf/cours.tex index 80b927a..969857f 100644 --- a/grf/cours.tex +++ b/grf/cours.tex @@ -826,11 +826,91 @@ $i$ tel que~: $$\lambda_i-\lambda_{i'}=v(i',i)$$ -% cours du 29/05 +% cours du 29/05 et du 04/06 \section{Programme de transport optimal} -n origines ou fournisseurs\\ -m destinataires ou client\\ +\paragraph{Définition} Soit un graphe biparti avec \verb+m+ les +origines ou dépôts et \verb+n+ les destinataires ou clients. + +On veut acheminer des marchandises depuis les dépôts jusqu'aux clients. + +\subparagraph{Hypothèses} le \emph{coût unitaire} de transport est +donné depuis chaque dépôt vers chaque client~: $C_{ij}=$ coût de +transport d'une tonne depuis \verb+i+ vers \verb+j+ $\rightarrow[C]$. + +\[ +X=\bordermatrix{~ & 1 & 2 & 3 & 4 & 5 & 6 & ~\cr + I & & & 18 & & & & {\color{yellow}18}\cr + II & 9 & 11 & 7 & & & 5 & {\color{yellow}32}\cr + III & & & 3 & 6 & 5 & & {\color{yellow}14}\cr + IV & & & & & 9 &&{\color{yellow}9}\cr + ~ & {\color{yellow}9} & {\color{yellow}11} + & {\color{yellow}28} & {\color{yellow}6} + & {\color{yellow}14} & {\color{yellow}5} & {\color{yellow}73}\cr} +\] + +\begin{itemize} + \item On connaît la disponibilité totale de chaque fournisseur~: $a_i$. + \item On connait la demande totale de chaque client~: $b_j$. + \item $ \displaystyle { \sum_{origines} } \text{disponnibilités des dépôts} += { \sum_{client} } \text{demandes des clients}$ +\end{itemize} + +\subparagraph{Remarque} On peut toujours se ramener à ce cas, quitte à +créer une origine fictive ou un client fictif pour absorber la +différence entre +${\sum_{disponibilit\acute{e}}}$ et ${\sum_{demandes}}$.\\ + +On cherche un \emph{plan de transport}, soit une matrice $[X]$ +$n\times m\rightarrow x_0=$ quantité transportée depuis $i$ vers $j$.\\ + +Matric X 4/6 ?\\ + +Un plan de transport est valide s'il respecte certaines conditions~: +\begin{enumerate} + \item \textbf{contraintes de ligne~:} la quantité livrée par chaque + dépôt est égale exactement à la disponibilité. + $${\sum_n^{j=1}}x{ij} = a_{i}\qquad\forall{i}=1,2,\ldots,m$$ + \item \textbf{contraintes de colonne~:} la quantité reçue par chaque + client est exactement égale à sa demande. + $${\sum_m^{i=1}}x_{ij} = b_{j}\qquad\forall{j}=1,2,\ldots,n$$ +\end{enumerate} + +Parmi tous les plans de transport $X=\left[x_{ij}\right]$ valides +(respectant toutes les contraintes), on cherche le plan de transport +de coût minimal. + +Le coût d'un plan de transport donné est~: +$$z = {\sum_m^{i=1}\sum_n^{j=1}}x_{ij}C_{ij}$$ + +Évaluation de la difficulté du problème. +\begin{itemize} + \item Nombre d'inconnues~: $n\times m$, ici 24 inconnues, la matrice $X$~; + \item nombre d'équations imposées (contraintes)~: $n + m = 10$ équations~; + \item nombre d'équations indépendantes~: $n + m - 1$, ici $9$~; + $$\sum\text{disponnibilités des dépôts}=\sum\text{demandes des clients}$$ +\end{itemize} + +\paragraph{Définition} Un plan de transport est dit non dégénéré (ou +solution de base) si l'excès d'inconnues par nombre d'équations +indépendantes est nul. + +On cherche un plan de transport ayant $n\times m - (m + m - 1)$ +variables nulles (15 variables nulles, 9 variables non nulles). + +Méthode de recherche du plan de transport de coût minimal (ou plan de +transport optimal) 2 phases~: +\begin{enumerate} + \item \textbf{Heuristique de la différence maximale (ou de Balas-Hammer)~:} + cette méthode fournie une solution de base de bonne qualité, de manière + constructive, servant de base pour la phase 2. + \item En partant du plan de transport procuré par la phase 1, + on cherche par itération successives le plan de transport optimal. +\end{enumerate} + +\paragraph{Phase 1} On calcule pour chaque \emph{rangée} (ligne ou colonne) la +différence entre le coût unitaire le plus petit et le coût unitaire qui lui est +immédiatement supérieur. \begin{tabular}{|c|c|c|c|c|c|c|c|c|} \hline @@ -853,89 +933,24 @@ m destinataires ou client\\ & {\color{orange}17} & {\color{orange}4} & {\color{orange}13} & {\color{orange}7} & &\\ \hline -\end{tabular}\\ -\\ -Données : *[c]=matrice \underline{des coûts unitaires} -$c_{ij}$ = coût du transport de 1 tonne depuis l'originne (i) vers le client (j)\\ -* On connait la disponibilité totale de chaque fournisseur.\\ -* On connait la demande totale de chaque client.\\ -** Hypothèse : -$ \displaystyle { \sum_{origines} } disponnibilit\acute{e}s\ des\ d\acute{e}p\hat{o}ts -= { \sum_{client} } demandes\ des\ clients$\\ +\end{tabular} +\begin{itemize} + \item On identifie la rangée (ligne ou colonne) correspondant à la + différence maximale (ici la ligne III). + \item On repère, dans cette rangée, la relation $(i,j)$ de coût + unitaire le plus faible (ici la relation (III, 4)). + \item On affecte à cette relation la quantité de marchandise la plus + élevée possible, c'est-à-dire, le minimum du couple + $\left(\text{disponibilité}, \text{demande}\right)$ associé à + cette case~: $\min(6, 16) = 6$. +\end{itemize} -Remarque: On peut tourjours se ramener à ce cas, quitte à créer une origine -fictive ou un client fictif pour absorber la différence entre -${\sum_{disponibilit\acute{e}}}$ et ${\sum_{demandes}}$.\\ -$\rightarrow$ programme de transport :\\ -on cherche la matrice [X] $\rightarrow$ -$x_{ij}$=quantité transportée depuis i vers j.\\ +Cette opération a pour effet de saturer une rangée (ici la colonne 4), +et on actualise la disponibilité ou la demande restante (ici la +disponibilité de III~: $14\rightarrow 8$). On a éliminé une rangée, et +cela a permis de fixer une variable $x_{ij}$~: -Matric X 4/6 ?\\ - -Contraintes liant les différentes inconnues $x_{ij}$ :\\ -(1) chaque origine délivre la totalité de sa disponibilité $\rightarrow$ -contraintes de ligne.\\ -${\sum_n^{j=1}}x{ij} = a_{i}$, -$\forall{i}=1,2,...,m$\\ - -(2) chaque client reçoit la totalité de la quantité -demandée $\rightarrow$ contraintes de colonnes -${\sum_m^{i=1}}x_{ij} = b_{j}$, $\forall{j}=1,2,...,n$ - -Parmi tous les plans de transport X=[$x_{ij}$] valides -(respectant toutes les contraintes), on cherche le plan de transport de coût -minimal.\\ -Le coût d'un plan de transport donné est : -$z = {\sum_m^{i=1}\sum_n^{j=1}}x_{ij}C_{ij}$ - -Evaluation de la difficulté du problème. -* nombre d'inconnues : n x m -ici 24 inconnues. -* nombre d'équations imposées -(contraintes) n + m = 10 équations. -* nombre d'équations indépendantes -n + m - 1, ici 9\\ -$ \displaystyle { \sum } disponnibilit\acute{e}s\ des\ d\acute{e}p\hat{o}ts -= { \sum } demandes\ des\ clients$\\ -\underline{Définition :} Un plan de transport est dit non dégénéré si -l'excès d'inconnues par nombre d'équations indépendantes est nul. -$\rightarrow$ on cherche un plan de transport ayant n x m - (m + m - 1) variables nulles -[15 variables nulles, 9 variables non nulles] -Méthode de recherche du plan de transport de coût minimal -(ou plan de transport optimal) -2 phases : -(1) Recherche d'un plan de transport non dégéré qui sert de solution de -base pour la phase 2 -$\rightarrow$ heuristique de Balas-Hammer -(2) En partant du plan de transport procuré par la phase 1, -on cherche par itération successives le plan de transport optimal.\\ -\underline{Phase 1} heuristique de Balas-Hammer -(ou méthode de la différence maximale) $\rightarrow$ On calcule pour chaque 'rangée' -(ligne ou colonne) la différence entre le coût unitaire le plus petit -et le coût unitaire immédiatement supérieur.\\ - -On affecte à cette case (i,j) [ici(III, 4)] la quantité de marchandise la plus -élevée possible.\\ -C'est à dire le minimun du couple {disponibilité, demande} associé à cette -case : Min{6, 16} = 6.\\ -\[ -X=\bordermatrix{~ & 1 & 2 & 3 & 4 & 5 & 6 & ~\cr - I & & & 18 & & & & {\color{yellow}18}\cr - II & 9 & 11 & 7 & & & 5 & {\color{yellow}32}\cr - III & & & 3 & 6 & 5 & & {\color{yellow}14}\cr - IV & & & & & 9 &&{\color{yellow}9}\cr - ~ & {\color{yellow}9} & {\color{yellow}11} - & {\color{yellow}28} & {\color{yellow}6} - & {\color{yellow}14} & {\color{yellow}5} & {\color{yellow}73}\cr} -\] - -On repére le $\Delta_{maximal}\ \Delta_e\approx \Delta_c$ -On s'intéresse à la case de coût unitaire minimun situé dans la rangée -correspondant au $\Delta_{maximal}$ et on actualise la disponibitlié ou -la demande restante $\rightarrow$ ici : 14 $\rightarrow$ 14 - 6 = 8\\ -Cette opération a éliminé une rangée, et elle a permis de fixer -une variable $x_{ij}$ \begin{tabular}{|c|c|c|c|c|c|c|c|} \hline & 1 & 2 & 3 & 5 & 6 & disponnibilité & $\Delta_e$ lignes\\ %Ici : n = 4; m = 6 @@ -954,61 +969,72 @@ une variable $x_{ij}$ $\Delta_c$ & {\color{orange}11} & {\color{orange}12} & {\color{orange}17} & {\color{orange}13} & {\color{orange}7} & &\\ \hline -\end{tabular}\\ -\\ +\end{tabular} + +On itère le processus jusqu'à ce que tout le tableau soit barré~; à la +dernière itération (ici là huitième), deux variables sont affectées +d'un seul coup. + +\subparagraph{Remarque} si deux différences maximales sont égales, on +a plusieurs solution. Ici à la quatrième itération, on a deux +différences maximales égales à 13~: on choisira arbitrairement la +liaison $(IV, 5)$. + $z = 3535$ solution de base, de bonne qualité, mais pas optimale.\\ -2eme phase : recherche de la solution optimale $\rightarrow$ on construit le +\paragraph{2\ieme{} phase} recherche de la solution optimale~: on construit le graphe biparti associé à la solution de base précédente. \begin{figure}[h] \centering \begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2.5cm, thick,main node/.style={circle,fill=blue!20,draw,font=\sffamily\Large\bfseries}] - \node[main node] (1) {$II$}; - \node[main node] (2) [right of=1] {$6$}; - \node[main node] (3) [below of=1]{$I$}; - \node[main node] (4) [below of=3]{$III$}; - \node[main node] (5) [below of=4]{$IV$}; - \node[main node] (6) [below of=2]{$1$}; - \node[main node] (7) [below of=6]{$2$}; - \node[main node] (8) [below of=7]{$3$}; - \node[main node] (9) [below of=8]{$4$}; - \node[main node] (10) [below of=9]{$5$}; + \node[main node] (I) {$I$}; + \node[main node] (II)[right of=I] {$II$}; + \node[main node] (III) [right of=II]{$III$}; + \node[main node] (IV) [right of=III]{$IV$}; + \node[main node] (6) [below left of=I] {$6$}; + \node[main node] (1) [right of=6]{$1$}; + \node[main node] (2) [right of=1]{$2$}; + \node[main node] (3) [right of=2]{$3$}; + \node[main node] (4) [right of=3]{$4$}; + \node[main node] (5) [right of=4]{$5$}; \path[every node/.style={font=\sffamily\small}] - (1) edge [right] node[right] {42} (2) - (1) edge [right] node[right] {78} (8) - (1) edge [right] node[right] {23} (6) - (1) edge [right] node[right] {39} (7) - (3) edge [right] node[right] {61} (8) - (4) edge [right] node[right] {92} (8) - (4) edge [right] node[right] {24} (9) - (4) edge [right] node[right] {53} (10) - (4) edge [right] node[right] {} (2) - (5) edge [right] node[right] {40} (10) + (I) edge [right] node[right] {42} (6) + (I) edge [right] node[right] {23} (1) + (I) edge [right] node[right] {39} (2) + (I) edge [right] node[right] {78} (3) + (II) edge [right] node[right] {61} (3) + (III) edge [right] node[right] {92} (3) + (III) edge [right] node[right] {24} (4) + (III) edge [right] node[right] {53} (5) + (IV) edge [right] node[right] {40} (5) ; \end{tikzpicture} \end{figure} -On value ce graphe avec les coût unitaires. -On affect aux différents sommets un potentiel. -$\rightarrow$ potentiel 0 à l'origine de l'arc de coût max, ici le sommet III. -$\rightarrow$ différence de potentiel arc(i,j) : -$v_j-v_i=C_{ij}$ -On calcule le coût marginal de chacune des liaisons (i,j) inutilisées dans -la solution de base : $S_{ij}=v_i-v_j+c_{ij}$\\ -On cherche s'il existe une liaison inutilisée de coût marginal négatif\\ -$S_{I1} = 31 - 37 + 12 = 6$\\ -$S_{I2}=31-53+27=5$\\ -$S_{III,6}=0-56+54=-2$\\ -Ici un seul coût marginal < 0\\ -$\rightarrow$ La solution analysée n'est pas optimale.\\ -$\rightarrow$ on utilise une chaine améliorante.\\ +On value ce graphe avec les coût unitaires. + +On affect aux différents sommets un potentiel~: +\begin{itemize} + \item potentiel 0 à l'origine de l'arc de coût max, ici le sommet III~; + \item différence de potentiel arc $(i, j)$~: $v_j-v_i=C_{ij}$. +\end{itemize} + +On calcule le coût marginal de chacune des liaisons $(i,j)$ +inutilisées dans la solution de base~: $S_{ij}=v_i-v_j+c_{ij}$. On +cherche s'il existe une liaison inutilisée de coût marginal négatif. +$$S_{I,1} = 31 - 37 + 12 = 6$$ +$$S_{I,2}=31-53+27=5$$ +$$S_{III,6}=0-56+54=-2$$ + +Ici un seul coût marginal est inférieur à 0~; la solution analysée n'est pas +optimale. On utilise une chaine améliorante. \begin{figure}[h] \centering -\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2.5cm, +\begin{tikzpicture}[>=stealth',shorten >=1pt,auto,node distance=2.5cm, thick,main node/.style={circle,fill=blue!20,draw,font=\sffamily\Large\bfseries}] \node[main node] (1) {$III$}; \node[main node] (2) [right of=1] {$6$}; @@ -1017,10 +1043,10 @@ $\rightarrow$ on utilise une chaine améliorante.\\ \node[main node] (5) [right of=4] {$II$}; \path[every node/.style={font=\sffamily\small}] - (2) edge [right] node[right] {3} (1) - (3) edge [right] node[right] {1} (2) - (4) edge [right] node[right] {10} (3) - (5) edge [right] node[right] {0} (4) + (2) edge [->, right] node[right] {3} (1) + (3) edge [<-, right] node[right] {2} (2) + (4) edge [->, right] node[right] {10} (3) + (5) edge [<-, right] node[right] {0} (4) ; \end{tikzpicture} \end{figure} @@ -1037,49 +1063,55 @@ X=\bordermatrix{~ & 1 & 2 & 3 & 4 & 5 & 6 & ~\cr \] -On cherche la quantité déplaçable la plus élevée possible. -$\rightarrow$ on augmente d'une même quantité $\alpha$ tous les arcs -à l'endroit et on diminue de $\alpha$ tous les arcs à l'envers : -$\alpha = 3$\\ -Le coût de cette solution est de $z = 18 * 61 + 9 * 23 + ...$\\ -$z=3235 + S_{III,6} * \alpha$\\ -$z=3529$ +On cherche la quantité déplaçable la plus élevée possible. On augmente +d'une même quantité $\alpha$ tous les arcs à l'endroit et on diminue +de $\alpha$ tous les arcs à l'envers~: +$$\alpha = 3$$ +Le coût de cette solution est de $z = 18 * 61 + 9 * 23 + \ldots$. +$$z=3235 + S_{III,6} * \alpha$$ +$$z=3529$$ + +\subparagraph{2\ieme{} itération} On construit le graphe associé au +plan de transport amélioré. \begin{figure}[h] \centering \begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2.5cm, thick,main node/.style={circle,fill=blue!20,draw,font=\sffamily\Large\bfseries}] - \node[main node] (1) {$I$}; - \node[main node] (2) [right of=1] {$3$}; - \node[main node] (3) [below of=1]{$II$}; - \node[main node] (4) [below of=3]{$III$}; - \node[main node] (5) [below of=4]{$IV$}; - \node[main node] (6) [below of=2]{$1$}; - \node[main node] (7) [below of=6]{$2$}; - \node[main node] (8) [below of=7]{$6$}; - \node[main node] (9) [below of=8]{$4$}; - \node[main node] (10) [below of=9]{$5$}; + \node[main node] (I) {$I$}; + \node[main node] (II) [right of=I]{$II$}; + \node[main node] (III) [right of=II]{$III$}; + \node[main node] (IV) [right of=III]{$IV$}; + \node[main node] (3) [below left of=I] {$3$}; + \node[main node] (1) [right of=3]{$1$}; + \node[main node] (2) [right of=1]{$2$}; + \node[main node] (6) [right of=2]{$6$}; + \node[main node] (4) [right of=6]{$4$}; + \node[main node] (5) [right of=4]{$5$}; \path[every node/.style={font=\sffamily\small}] - (1) edge [right] node[right] {61} (2) - (3) edge [right] node[right] {78} (2) - (3) edge [right] node[right] {23} (6) - (3) edge [right] node[right] {39} (7) - (3) edge [right] node[right] {42} (8) - (4) edge [right] node[right] {54} (8) - (4) edge [right] node[right] {24} (9) - (4) edge [right] node[right] {53} (10) - (5) edge [right] node[right] {40} (10) - + (I) edge [right] node[right] {61} (3) + (II) edge [right] node[right] {78} (3) + (II) edge [right] node[right] {23} (1) + (II) edge [right] node[right] {39} (2) + (II) edge [right] node[right] {42} (6) + (III) edge [right] node[right] {54} (6) + (III) edge [right] node[right] {24} (4) + (III) edge [right] node[right] {53} (5) + (IV) edge [right] node[right] {40} (5) ; \end{tikzpicture} \end{figure} -$S_{I,1}=17-23+12=6$\\ -$S_{I,2}=17-39+27=5$\\ -tous les $S_{ij}$ des liaisons inutilisées sont > 0 $\rightarrow$ arrêt -$\rightarrow$ le plan de trnasport analysé est optimal.\\ -\underline{Remarque :} Si il existe un $S_{ij}$ de liaison inutilisée -qui soit égal à 0, cela signifie qu'il existe une autre solution de même coût. + +$$S_{I,1}=17-23+12=6$$ +$$S_{I,2}=17-39+27=5$$ + +Tous les $S_{ij}$ des liaisons inutilisées sont supérieur à 0, on +s'arrête car le plan de transport analysé est optimal. + +\subparagraph{Remarque} S'il existe un $S_{ij}$ de liaison inutilisée qui +soit égal à 0, cela signifie qu'il existe une autre solution de même +coût. \[ X=\bordermatrix{~ & 1 & 2 & 3 & 4 & 5 & 6 & ~\cr