From: Sylvain Papa Date: Fri, 9 Nov 2018 11:24:52 +0000 (+0100) Subject: Current work on the example X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=4b8b7ee75247ed180ef58718d9566587ca3f9a7b;p=Projet_Recherche_Operationnelle.git Current work on the example --- 4b8b7ee75247ed180ef58718d9566587ca3f9a7b diff --cc rapport/ProjetOptimRO.tex index b6fcdc7,e66ed41..2879660 --- a/rapport/ProjetOptimRO.tex +++ b/rapport/ProjetOptimRO.tex @@@ -21,8 -21,6 +21,8 @@@ \usepackage{tocbibind} \usepackage{lmodern} \usepackage{enumitem} - \usepackage{algorithm} ++\usepackage{algorithm2e} +\usepackage{algorithmic} %%%%%Marges & en-t\^etes @@@ -810,102 -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$ - \newline - \newline ++ ++ + \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{algorithmic} +\end{algorithm} + + +\hrulefill + \bibliographystyle{plain} \bibliography{stdlib_sbphilo}