Merge branch 'master' of git.piment-noir.org:Projet_Recherche_Operationnelle
authorSylvain Papa <sylvain.papa@yahoo.fr>
Fri, 9 Nov 2018 11:25:59 +0000 (12:25 +0100)
committerSylvain Papa <sylvain.papa@yahoo.fr>
Fri, 9 Nov 2018 11:25:59 +0000 (12:25 +0100)
1  2 
rapport/ProjetOptimRO.tex

index 28796600115e84e852d5d435f0870eda0a58a257,372670f6167b036fa74ce7f8913ff20c2a746fdd..ed31ff249015f820453db2fdb3bbe16db3b1ba3a
@@@ -21,8 -21,6 +21,8 @@@
  \usepackage{tocbibind}
  \usepackage{lmodern}
  \usepackage{enumitem}
 +\usepackage{algorithm2e}
 +\usepackage{algorithmic}
  
  
  %%%%%Marges & en-t\^etes
@@@ -516,7 -514,7 +516,7 @@@ En supposant $ J $ de classe $ \mathcal
  $$ x_{k+1} = x_k - H[J](x_k)^{-1} \nabla J(x_k), $$
  où $ d_k = -H[J](x_k)^{-1} \nabla J(x_k) $ est appelée direction de Newton. La direction $ d_k $ est également l’unique solution du problème :
  $$ \underset{d \in \mathbb{R}^n}{\mathrm{argmin}} \ J(x_k) + \langle \nabla J(x_k),d \rangle + \frac{1}{2}\langle H[J](x_k)d,d \rangle $$
- Autrement dit, $ d_k $ est le point de minimum global de l’approximation de second ordre de $ J $ au voisinage du point courant $ x_k $.
+ Autrement dit, $ d_k $ est le point de minimum global de l’approximation quadratique de $ J $ au voisinage du point courant $ x_k $.
  À condition que la matrice $ H[J](x_k) $ soit définie positive à chaque itération, la méthode de Newton est bien une méthode de descente à pas fixe égal à $ 1 $.
  \newline
  Les propriétés remarquables de cet algorithme sont :
@@@ -722,7 -720,7 +722,7 @@@ En posant $ d = x - x_k $ et $ H_k = H[
  
  \hrulefill
  \newline
 -ALGORITHME PQS AVEC CONSTRAINTES D'ÉGALITÉ ET D'INÉGALITÉ.
 +ALGORITHME PQS AVEC CONSTRAINTES D'ÉGALITÉ ET D'INEGALITÉ.
  \newline
  \textit{Entrées}: $ J : \mathbb{R}^n \longrightarrow \mathbb{R} $, $g: \mathbb{R}^n \longrightarrow \mathbb{R}^p$, $ h : \mathbb{R}^n \longrightarrow \mathbb{R}^q $ différentiables, $ x_0 \in \mathbb{R}^n $ point initial arbitraire, $ \lambda_0 \in \mathbb{R}_+^p $ et $ \mu_0 \in \mathbb{R}_+^q $ multiplicateurs initiaux, $ \varepsilon > 0 $ précision demandée.
  \newline
                 \mathcal{PQ}_k \left \{
                 \begin{array}{l}
                  \displaystyle\min_{d \in \mathbb{R}^n} \nabla J(x_k)^\top d + \frac{1}{2}d^\top H_k d \\
 -                g_j(x_k) + \nabla g_j(x_k)^\top d \leq 0, \ \forall j \in \{1,\ldots,p\}              \\
 +                g_j(x_k) + \nabla g_j(x_k)^\top d \leq 0 \\, \ \forall j \in \{1,\ldots,p\}                 \\
                  h_i(x_k) + \nabla h_i(x_k)^\top d = 0, \ \forall i \in \{1,\ldots,q\}
                 \end{array}
                 \right .
   \end{array}
   \right .
  $$
 -où $$ (r,r_1,r_2) \in \mathbb{R}_+^{*^3} \land r < r_1 \land r < r_2. $$
 +où $$ (r,r_1,r_2) \in \mathbb{R}_+^3. $$
  \textit{Entrées} : $ J $ et $ g $ de classe $ \mathcal{C}^2 $, $ \varepsilon = 0.01 $ la précision, $ (x_0,y_0,z_0) = $ point initial et $ (\lambda_{0_1},\lambda_{0_2}) = $ multiplicateur initial.
  \newline
  Le Lagrangien $ L $ de $ \mathcal{P} $ : $$ L((x,y,z),(\lambda_1,\lambda_2)) = x^2 + y^2 + z^2 -r^2 + \lambda_1(x^2 + y^2 - r_1^2) + \lambda_2(x^2 + z^2 -r_2^2). $$
  \newline
  Le gradient de $ J $ : $$ \nabla J(x,y,z) = (\frac{\partial J}{\partial x}(x,y,z),\frac{\partial J}{\partial y}(x,y,z),\frac{\partial J}{\partial z}(x,y,z)) = (2x,2y,2z). $$
  \newline
 -Le gradient de $ g $ : $$ \nabla g(x,y,z) = (\nabla g_1(x,y,z),\nabla g_2(x,z,z)) $$
 +Le gradient de $ g $ : $$ \nabla g(x,y,z) = (\nabla g_1(x,y,z),\nabla g_2(x,y,z)) $$
  $$ = ((\frac{\partial g_1}{\partial x}(x,y,z),\frac{\partial g_1}{\partial y}(x,y,z),\frac{\partial g_1}{\partial z}(x,y,z)),(\frac{\partial g_2}{\partial x}(x,y,z),\frac{\partial g_2}{\partial y}(x,y,z),\frac{\partial g_2}{\partial z}(x,y,z)) $$
  $$ = ((2x,2y,0),(2x,0,2z)). $$
  \newline
@@@ -810,103 -808,6 +810,103 @@@ La matrice hessienne de $ J $ : $$ H[J]
   \end{pmatrix} = 2Id_{\mathbb{R}^3} $$
  On en déduit que $ H[J](x,y,z) $ est inversible et que $ H[J](x,y,z)^{-1} = \frac{1}{2}Id_{\mathbb{R}^3} $.
  
 +\hrulefill
 +
 +\subsection{Trace d'éxécution de PQS}
 +
 +Utilisons le problème $ \mathcal{P} $ précédent :
 +
 +$$
 + \mathcal{P} \left \{
 + \begin{array}{l}
 +  \displaystyle\min_{(x,y,z) \in \mathbb{R}^3} J(x,y,z) = x^2 + y^2 + z^2 -r^2       \\
 +  g(x,y,z) = (g_1(x,y,z), g_2(x,y,z)) = (x^2 + y^2 - r_1^2, x^2 + z^2 -r_2^2) \leq 0 \\
 + \end{array}
 + \right .
 +$$
 +où $$ (r,r_1,r_2) \in \mathbb{R}_+^3. $$
 +\textit{Entrées} : $ J $ et $ g $ de classe $ \mathcal{C}^2 $, $ \varepsilon = (0.01,0.01,0.01) $, $ (x_0,y_0,z_0) = (80, 20 ,60)$  et $ (\lambda_{0_1},\lambda_{0_2}) = (1 , 1)$, les rayons : $r= 40$  et $r1= r2= 10$.
 +\newline
 +Le Lagrangien $ L $ de $ \mathcal{P} $ : $$ L((x,y,z),(\lambda_1,\lambda_2)) = x^2 + y^2 + z^2 -r^2 + \lambda_1(x^2 + y^2 - r_1^2) + \lambda_2(x^2 + z^2 -r_2^2). $$
 +\newline
 +Le Lagrangien $ L $ de $ \mathcal{P} $ avec les valeurs :
 + $ L((80,20,60),(1,1)) = 80^2 + 20^2 + 60^2 -60^2 + 1 * (80^2 +20y^2 - 30^2) + \lambda_2(80^2 + 60^2 -30^2). $
 + $ L((80,20,60),(1,1)) = 6400 + 400 + 3600 - 3600 + (6400 + 400 - 900) + (6400 + 3600 -900). $
 + $ L((80,20,60),(1,1)) = 21800. $
 +
 + \begin{algorithm}
 + \caption {PQS du problème $ \mathcal{P} $}
 + \begin{algorithmic}
 + \REQUIRE $g(x,y,z)\leq 0$, $(x_0,y_0,z_0) = (80, 20 ,60)$
 + \ENSURE $\min_{(x,y,z) \in \mathbb{R}^3} J(x,y,z) = x^2 + y^2 + z^2 -r^2$ and \newline $g(x,y,z) = (g_1(x,y,z), g_2(x,y,z)) = (x^2 + y^2 - r_1^2, x^2 + z^2 -r_2^2) \leq 0 $
 + \STATE \textbf{Data :}
 + \STATE $k \leftarrow 0$
 + \STATE $x_k \leftarrow 80$
 + \STATE $y_k \leftarrow 20$
 + \STATE $z_k \leftarrow 60$
 + \STATE $x_a \leftarrow 30$
 + \STATE $y_a \leftarrow 10$
 + \STATE $z_a \leftarrow 40$
 + \STATE $r \leftarrow 40$
 + \STATE $r_1 \leftarrow 10$
 + \STATE $r_2 \leftarrow 10$
 + \STATE $\varepsilon \leftarrow 0.01$
 + \STATE $\lambda_1 = \lambda_2 = 1$
 + \STATE $ H[J](x,y,z)^{-1}\leftarrow  \begin{pmatrix}
 +  0.5 & 0 & 0 \\
 +  0 & 0.5 & 0 \\
 +  0 & 0 & 0.5 \\ \end{pmatrix} $
 +\newline
 +
 + \STATE{//Calcule du gradient de $ J $ :}
 + \STATE $ \nabla J(x,y,z) = (2x_k,2y_k,2z_k)$  \hfill $  // résultat : (160,40,120) $
 +\newline
 + \STATE {//calcule des deux sous partie de du gradient de $ g $: }
 + \STATE $ // \nabla g(x_k,y_k,z_k) = (\nabla g_1(x_k,y_k,z_k), \nabla g_2(x_k,y_k,z_k))$
 + \STATE $ \nabla g_1(x_a,y_a,z_a) = ((2x_a,2y_a,0)$  \hfill $ //résultat : (60, 20, 0)$
 + \STATE $ \nabla g_2(x_a,y_a,z_a) = (2x_a,0,2z_a))$  \hfill $ //résultat : (60, 0, 80)$
 +\newline
 + \WHILE{$ (\norme{\nabla L(x_k,\lambda_k,\mu_k)} > \varepsilon $ or k $ < 10)$}
 +
 + \STATE { //première itération :}
 +
 +\STATE {//Calcule du gradient de $ L $ : }
 +\STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_a,y_a,z_a) + \lambda_2 \nabla g_2(x_a,y_a,z_a)) $ \hfill $// résultat : (280, 60, 200)$
 + \STATE $ (\varepsilon ,\varepsilon ,\varepsilon ) = \nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) $
 +\newline
 + \STATE {//Calcule de la direction de la pente dk (méthode de Newton) : }
 + \STATE $ d_k = -H[J](x,y,z)^{-1}*\nabla J(x,y,z)$ \hfill $ //résultat : (-(80,20,60))$
 + \newline
 + \STATE {//Calcul nouvelles valeurs des coordonnées}
 + \STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k)+ d_k $ \hfill $ //résultat : (0,0,0)$
 + \newline
 + \STATE {//Incrémentation de k}
 + \STATE $ k \leftarrow k+1$
 +
 +
 + \STATE {//Deuxième itération :}
 + \STATE{//Calcule du gradient de $ J $ :}
 + \STATE $ \nabla J(x,y,z) = (2x_k,2y_k,2z_k)$  \hfill $  // résultat : (0,0,0) $
 +
 +\STATE {//Calcule du gradient de $ L $ : }
 +\STATE $\nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) = \nabla J(x_k,y_k,z_k) + \lambda_1 \nabla g_1(x_a,y_a,z_a) + \lambda_2 \nabla g_2(x_a,y_a,z_a)) $ \hfill $// résultat : (160, 20, 30)$
 + \STATE $ (\varepsilon ,\varepsilon ,\varepsilon ) = \nabla L((x_k,y_k,z_k),(\lambda_1,\lambda_2)) $
 +
 + \STATE {//Calcule de la direction de la pente dk (méthode de Newton) : }
 + \STATE $ d_k = -H[J](x,y,z)^{-1}*\nabla J(x,y,z)$ \hfill $ //résultat : (-(0,0,0))$
 + \STATE {//Calcul nouvelles valeurs des coordonnées}
 + \STATE $ (x_{k+1},y_{k+1},z_{k+1}) = (x_k,y_k,z_k)+ d_k $ \hfill $ //résultat : (0,0,0)$
 + \STATE {//Incrémentation de k}
 + \STATE $ k \leftarrow k+1$\hfill $ //k = 1$
 +
 + \ENDWHILE
 +
 +\end{algorithmic}
 +\end{algorithm}
 +
 +
 +\hrulefill
 +
  \bibliographystyle{plain}
  \bibliography{stdlib_sbphilo}