<div class="wims_chemin">\reload{<img src="gifs/doc/etoile.gif" alt="rechargez" width="20" height="20" border=0>}\link{main}{Optimisation linaire} <img src="gifs/arrows/right3.32.gif" alt=" ---> " width="25" height="15" border=0 valign="bottom"> \link{mainS5}{V  Algorithme du simplexe standard} <img src="gifs/arrows/right3.32.gif" alt=" ---> " width="25" height="15" border=0 valign="bottom"> V-5  Algorithme du simplexe standard</div><table width=100%><tr><td valign=top><div class="left_toc"><p>
\link{mainS1}{I  Programmation linaire}

\link{mainS2}{II  Mthode graphique}

\link{mainS3}{III  Mthode des sommets}

\link{mainS4}{IV  Mthode du simplexe}

<div class="left_selection">\link{mainS5}{V  Algorithme du simplexe standard}</div>

\link{mainS6}{VI  Dualit en programmation linaire}


\link{index}{Index}</div></td><td valign=top align=left width=100%><div class="wimsdoc">


En ce qui concerne le vecteur \( {B'}^{-1}b \), il a t indiqu d'avance
qu'il peut tre dtermin par les relations
<p class="math">\( ({B'}^{-1}b)_i = \left\{ \begin{matrix} 
(B^{-1}b)_i -\lambda \beta_{is} & \mbox{pour }i\neq r\\ 
\lambda & \mbox{pour }i = r.\end{matrix} \right. \)</p>
Si on remplace \( \lambda \) par sa valeur 
\( (B^{-1}b)_r/ \beta_{rs} \), on obtient les mmes formules qui
rgissent une colonne de \( \beta \) en dehors de la colonne du
pivot. Maintenant, l'lment en bas  droite du tableau simplexe, 
savoir \( Z \), se calcule itrativement via la relation \( Z\leftarrow
Z+\lambda w_s \) ou \( Z\leftarrow Z-\lambda w_s \) selon que le problme
tudi soit de type maximisation ou minimisation. En tenant
compte de l'expression de \( \lambda \), il est facile de constater que
la formule \( Z\leftarrow Z-\lambda w_s \) s'identifie  la formule
relative  un lment de symbole "\( \diamond \)". Afin de garder les
mmes formules, il est souhaitable de remplacer \( Z \) par \( -Z \) 
lorsqu'il s'agit d'un problme de type maximisation. Au niveau de 
l'implmentation sur machine, il est commode de dfinir une
matrice, que l'on note \( H \), qui contient les lments \( \beta \),
\( B^{-1}b \), \( w_N^* \) et \( Z \) :
<p class="math">\( \left\{ \begin{matrix} 
H(1:m,1:p) = \beta = B^{-1}N, \mbox{ avec }p = n-m\\
H(1:m,p+1) = B^{-1}b\\
H(m+1,1:p) = w_N^* = \pm \lbrack c_N^*-c_B^*B^{-1}N \rbrack \\
H(m+1,p+1) = \pm Z(y^{(0)})
\end{matrix}  \right. \)</p>
La matrice \( H \) est de taille \( (m+1,p+1) \). D'une itration  une
autre, elle est calcule itrativement de la mme faon que
l'on dtermine les lments symboliss par "\( \diamond \)",
"\( \triangleleft \)" et "\( \circ \)". Afin de balayer tous les paramtres
du tableau simplexe, on ajoute  \( H \) deux vecteurs entiers, nots \( base \) et
\( hbase \) et de taille respective \( m \) et \( p \). Pour chaque coordonne \( i \),
\( base(i) \) fournit l'indice de la \( i\ieme \) variable de base
du tableau simplexe en cours. De mme, \( hbase(j) \) correspond 
l'indice de la \( j\ieme \) variable hors base. La mise en oeuvre des
rsultats de ce paragraphe dans l'algorithme du simplexe aboutit 
une formulation plus simplifie au niveau de l'implmentation sur
machine. Ici, on suppose que l'on prend systmatiquement 
l'lment \( w_s>0 \) le plus lev. Naturellement, le plus
grand parmi les composantes strictement positives est le maximum sur
toutes les composantes de \( w_N^* \).

<div class="algorithm"><br><h4 class="algo_titre"> Algorithme du simplexe standard </h4><br><b>Require</b> base ralisable<br> Initialiser \( H \), \( base \) et \( hbase \)<br> Calculer \( ws = \max \lbrack H(m+1,1:p)\rbrack \)<br><b>while</b>\( ws>0 \) <b>do</b><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dterminer l'indice \( s \) pour lequel le maximum \( ws \) est atteint<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>if</b>\( H(1:m,s) <= 0_{\mathbb R^m} \) <b>then</b><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; optimum infini /* \( \sup = +\infty \) ou \( \inf = -\infty \) */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>else</b> <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; calculer \( \lambda = \min \{ \frac{H(i,p+1)}{H(i,s)}, \mbox{ pour }i = 1,\ldots,m\; \slash \; H(i,s)>0\} \)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dterminer l'indice \( r \) pour lequel \( \lambda \) est atteint<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><b>end</b> <b>if</b></b> <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \( base(r) \leftrightarrow hbase(s) \)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \( piv = H(r,s) \)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \( H(r,s)\leftarrow \frac{1}{piv} \)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \( H(r,j)\leftarrow \frac{H(r,j)}{piv},\mbox{ pour }j = 1,\ldots,p+1\mbox{ et }j\neq s \)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \( H(i,j)\leftarrow H(i,j)-H(r,j)*H(i,s),\mbox{ pour }i\neq r\mbox{ et }j\neq s \)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \( H(i,s)\leftarrow -\frac{H(i,s)}{piv},\mbox{ pour }i = 1,\ldots,m+1\mbox{ et }i\neq r \)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Calculer \( ws = \max \lbrack H(m+1,1:p)\rbrack  \)<br><b><b>end</b> <b>while</b></b> <br> Optimum vaut \( Z = \pm H(m+1,p+1) \)<br> Une solution optimale, que l'on note \( opty \), est donne par :<br><p class="math">\( \left\{ \begin{matrix} opty(base(1:m)) = H(1:m,p+1)\\ opty(hbase(1:p)) = 0.\end{matrix}  \right. \)</p></div>

<h2 class="exo">Exercice</h2><div class="exo">
\exercise{module=U1/opresearch/oefoptimisation.fr&exo=gensimp&cmd=new&worksheet=}{Rsolution par les tableaux simplexe}  

\exercise{module=U1/opresearch/oefoptimisation.fr&exo=gensimp2&cmd=new&worksheet=}{Mthode du simplexe}  
</div>

</div></td><td valign=top align=right> <div class="right_toc">
\link{mainS5S1}{V-1  Tableau simplexe}

\link{mainS5S2}{V-2  Application}

\link{mainS5S3}{V-3  Sommets et solutions de base}

\link{mainS5S4}{V-4  Formules itratives}

<div class="right_selection">\link{mainS5S5}{V-5  Algorithme du simplexe standard}</div>
</div><center>\reload{<img src="gifs/doc/etoile.gif" alt="rechargez" width="20" height="20" border=0>}</center></td></tr></table>