Rework du cours GRF

This commit is contained in:
Némunaire 2012-06-04 20:42:19 +02:00
parent 55f4854dca
commit 033dc24696
1 changed files with 190 additions and 158 deletions

View File

@ -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