Skip to content
Snippets Groups Projects
Commit 6555ac53 authored by Olivier Cots's avatar Olivier Cots
Browse files

ajout debut doc

parent 4638ffaf
Branches
No related tags found
1 merge request!5Refonte ok
Showing
with 0 additions and 24784 deletions
# Documentation pour le projet d'optimisation numérique
La première partie de ce TP-projet concerne les problèmes d’optimisation sans
contraintes. On étudie la méthode de Newton et sa globalisation par l’algorithme des
régions de confiance. La résolution du sous-problème des régions de confiance sera
réalisée de deux façons, soit à l’aide du point de Cauchy, soit par l’algorithme du Gra-
dient Conjugué Tronqué.
La seconde partie du projet exploite la partie précédente pour résoudre des problèmes
d’optimisation avec contraintes par l’algorithme du Lagrangien augmenté.
## Optimisation sans contraintes
Dans cette partie, on s’intéresse à la résolution du problème
``\min _{x \in \mathbb{R}^{n}} f(x)``
où la fonction ``f`` est de classe ``C^{2}`` sur ``R^{n}`` . On cherche donc à exploiter l’information fournie
par ses dérivées première et seconde, que l’on représente en tout point x par le vecteur
gradient ``\nabla f (x) \in R^{n}`` et la matrice Hessienne ``\nabla^{2} f (x) \in R^{n\times n}``.
[1) Algorithme de Newton local](docs/newton.md)
[2) La méthode des régions de confiance](docs/regions-de-confiance.md)
## Optimisation avec contraintes
Dans cette partie, nous nous intéressons à la résolution des problèmes sous contraintes. Le problème se présente donc sous la forme suivante :
``\min _{x \in \mathbb{R}^{n}} f(x)`` sous la contrainte ``x \in C``
où C est un sous-ensemble non vide de ``\mathbb{R}^{n}``.
[3) Lagrangien Augmenté](docs/lagrangien-augmente.md)
File added
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>L&#39;algorithme de Newton local · Optinum.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Optinum.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">Optinum.jl</span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Accueil</a></li><li><a class="tocitem" href="Sujet.html">Sujet</a></li><li><span class="tocitem">Algorithmes</span><ul><li class="is-active"><a class="tocitem" href="Algorithme_de_newton.html">L&#39;algorithme de Newton local</a><ul class="internal"><li><a class="tocitem" href="#Principe-1"><span>Principe</span></a></li><li><a class="tocitem" href="#Algorithme-1"><span>Algorithme</span></a></li><li><a class="tocitem" href="#Tests-de-convergence-1"><span>Tests de convergence</span></a></li></ul></li><li><a class="tocitem" href="Regions_de_confiance.html">La méthode des régions de confiance</a></li><li><a class="tocitem" href="Lagrangien_augmente.html">La méthode du Lagrangien augmenté</a></li></ul></li><li><a class="tocitem" href="fct_index.html">Index des fonctions</a></li><li><a class="tocitem" href="Annexes.html">Annexes</a></li><li><a class="tocitem" href="mise_en_place.html">Installation de Julia et tests unitaires</a></li><li><a class="tocitem" href="FAQ.html">Foire aux Questions</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Algorithmes</a></li><li class="is-active"><a href="Algorithme_de_newton.html">L&#39;algorithme de Newton local</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="Algorithme_de_newton.html">L&#39;algorithme de Newton local</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com//blob/master/docs/src/Algorithme_de_newton.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Algorithme-de-Newton-local-1"><a class="docs-heading-anchor" href="#Algorithme-de-Newton-local-1">Algorithme de Newton local</a><a class="docs-heading-anchor-permalink" href="#Algorithme-de-Newton-local-1" title="Permalink"></a></h1><h2 id="Principe-1"><a class="docs-heading-anchor" href="#Principe-1">Principe</a><a class="docs-heading-anchor-permalink" href="#Principe-1" title="Permalink"></a></h2><p>La fonction <span>$f$</span> étant <span>$C^{2}$</span> , on peut remplacer <span>$f$</span> au voisinage de l’itéré courant <span>$x_{k}$</span> par son développement de Taylor au second ordre, soit :</p><p><span>$f(y) \sim q(y)=f\left(x_{k}\right)+\nabla f\left(x_{k}\right)^{T}\left(y-x_{k}\right)+\frac{1}{2}\left(y-x_{k}\right)^{T} \nabla^{2} f\left(x_{k}\right)\left(y-x_{k}\right)$</span></p><p>On choisit alors comme point <span>$x_{k+1}$</span> le minimum de la quadratique q lorsqu’il existe et est unique, ce qui n’est le cas que si <span>$\nabla^{2} f (x)$</span> est définie positive. Or le minimum de q est réalisé par <span>$x_{k+1}$</span> solution de : <span>$\nabla q (x_{k+1}) = 0$</span> , soit : <span>$\nabla f\left(x_{k}\right)+\nabla^{2} f\left(x_{k}\right)\left(x_{k+1}-x_{k}\right)=0,$</span></p><p>ou encore, en supposant que <span>$\nabla^{2} f (x_{k})$</span> est définie positive :</p><p><span>$x_{k+1}=x_{k}-\nabla^{2} f\left(x_{k}\right)^{-1} \nabla f\left(x_{k}\right).$</span></p><p>La méthode ne doit cependant jamais être appliquée en utilisant une inversion de la matrice Hessienne (qui peut être de très grande taille et mal conditionnée), mais plutôt en utilisant :</p><p><span>$x_{k+1}=x_{k}+d_{k}$</span><span>$d_{k}$</span> est l’unique solution du système linéaire :</p><p><span>$\nabla^{2} f\left(x_{k}\right) d_{k}=-\nabla f\left(x_{k}\right)$</span> , <span>$d_{k}$</span> étant appelée direction de Newton.</p><p>Cette méthode est bien définie si à chaque itération, la matrice hessienne <span>$\nabla^{2} f (x_{k})$</span> est définie positive : ceci est vrai en particulier au voisinage de la solution <span>$x^{*}_{k}$</span> cherchée si on suppose que <span>$\nabla^{2} f (x^{*})$</span> est définie positive (par continuité de <span>$\nabla^{2} f$</span>).</p><h2 id="Algorithme-1"><a class="docs-heading-anchor" href="#Algorithme-1">Algorithme</a><a class="docs-heading-anchor-permalink" href="#Algorithme-1" title="Permalink"></a></h2><h4 id="Données:-1"><a class="docs-heading-anchor" href="#Données:-1">Données:</a><a class="docs-heading-anchor-permalink" href="#Données:-1" title="Permalink"></a></h4><p><span>$f , x_{0}$</span> première approximation de la solution cherchée, <span>$\epsilon &gt; 0$</span> précision demandée.</p><h4 id="Sorties-1"><a class="docs-heading-anchor" href="#Sorties-1">Sorties</a><a class="docs-heading-anchor-permalink" href="#Sorties-1" title="Permalink"></a></h4><p>une approximation de la solution du problème <span>$\min _{x \in \mathbb{R}^{n}} f(x)$</span> .</p><h4 id=".Tant-que-le-test-de-convergence-est-non-satisfait-1"><a class="docs-heading-anchor" href="#.Tant-que-le-test-de-convergence-est-non-satisfait-1">1.Tant que le test de convergence est non satisfait</a><a class="docs-heading-anchor-permalink" href="#.Tant-que-le-test-de-convergence-est-non-satisfait-1" title="Permalink"></a></h4><p>a. Calculer <span>$d_k$</span> solution du système : <span>$\nabla^{2} f (x_{k}) d_{k} = - \nabla f (x_{k})$</span></p><p>b. Mise à jour : <span>$x_{k+1} = x_{k}+ d_{k} , k = k + 1$</span></p><h4 id=".Retourner-:-x_{k}.-1"><a class="docs-heading-anchor" href="#.Retourner-:-x_{k}.-1">2.Retourner : <span>$x_{k}$</span>.</a><a class="docs-heading-anchor-permalink" href="#.Retourner-:-x_{k}.-1" title="Permalink"></a></h4><h2 id="Tests-de-convergence-1"><a class="docs-heading-anchor" href="#Tests-de-convergence-1">Tests de convergence</a><a class="docs-heading-anchor-permalink" href="#Tests-de-convergence-1" title="Permalink"></a></h2><ol><li>Convergence, <span>$\|\nabla f(x^{(k+1)})\|$ petit : $\|\nabla f(x^{(k+1)})\| \leq \max(\texttt{Tol\_rel}\|\nabla f(x^{(0)})\|,\texttt{Tol\_abs})$</span></li><li>Stagnation de <span>$x_k$</span>, <span>$d^{(k)}=x^{(k+1)}-x^{(k)}$</span> petit : <span>$\|x^{(k+1)}-x^{(k)}\| \leq \max(\texttt{Tol\_rel}\|x^{(k)}\|,\texttt{Tol\_abs})$</span></li><li>Stagnation de <span>$f$</span> : <span>$|f(x^{(k+1)}) - f(x^{(k)})| \leq \max(\texttt{Tol\_rel}|f(x^{(k)})|,\texttt{Tol\_abs})$</span></li><li>Le nombre d&#39;itération maximal est atteint.</li></ol></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="Sujet.html">« Sujet</a><a class="docs-footer-nextpage" href="Regions_de_confiance.html">La méthode des régions de confiance »</a></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Monday 8 November 2021 11:31">Monday 8 November 2021</span>. Using Julia version 1.4.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Annexes · Optinum.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Optinum.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">Optinum.jl</span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Accueil</a></li><li><a class="tocitem" href="Sujet.html">Sujet</a></li><li><span class="tocitem">Algorithmes</span><ul><li><a class="tocitem" href="Algorithme_de_newton.html">L&#39;algorithme de Newton local</a></li><li><a class="tocitem" href="Regions_de_confiance.html">La méthode des régions de confiance</a></li><li><a class="tocitem" href="Lagrangien_augmente.html">La méthode du Lagrangien augmenté</a></li></ul></li><li><a class="tocitem" href="fct_index.html">Index des fonctions</a></li><li class="is-active"><a class="tocitem" href="Annexes.html">Annexes</a><ul class="internal"><li><a class="tocitem" href="#A.-Problèmes-sans-contraintes-1"><span>A. Problèmes sans contraintes</span></a></li><li><a class="tocitem" href="#B.-Cas-tests-pour-le-calcul-du-pas-de-Cauchy-1"><span>B. Cas tests pour le calcul du pas de Cauchy</span></a></li><li><a class="tocitem" href="#C.-Cas-tests-pour-la-résolution-du-sous-problème-par-l’algorithme-du-Gradient-Conjugué-Tronqué-1"><span>C. Cas tests pour la résolution du sous-problème par l’algorithme du Gradient Conjugué Tronqué</span></a></li><li><a class="tocitem" href="#D.-Problèmes-avec-contraintes-1"><span>D. Problèmes avec contraintes</span></a></li></ul></li><li><a class="tocitem" href="mise_en_place.html">Installation de Julia et tests unitaires</a></li><li><a class="tocitem" href="FAQ.html">Foire aux Questions</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href="Annexes.html">Annexes</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="Annexes.html">Annexes</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com//blob/master/docs/src/Annexes.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h2 id="A.-Problèmes-sans-contraintes-1"><a class="docs-heading-anchor" href="#A.-Problèmes-sans-contraintes-1">A. Problèmes sans contraintes</a><a class="docs-heading-anchor-permalink" href="#A.-Problèmes-sans-contraintes-1" title="Permalink"></a></h2><p>Les problèmes de minimisation sans contraintes à résoudre sont les suivants :</p><h4 id="Problème-1-1"><a class="docs-heading-anchor" href="#Problème-1-1">Problème 1</a><a class="docs-heading-anchor-permalink" href="#Problème-1-1" title="Permalink"></a></h4><p><span>$\hspace*{1.5cm}$</span> <span>$\begin{aligned} f_{1}: \mathbb{R}^{3} &amp; \rightarrow \mathbb{R} \\ \left(x_{1}, x_{2}, x_{3}\right) &amp; \mapsto 2\left(x_{1}+x_{2}+x_{3}-3\right)^{2}+\left(x_{1}-x_{2}\right)^{2}+\left(x_{2}-x_{3}\right)^{2} \end{aligned}$</span></p><p>On cherchera à minimiser <span>$f_{1}$</span> sur <span>$\mathbb{R}^{3}$</span> , en partant des points suivants : <span>$\\$</span></p><p><span>$\hspace*{2cm}$</span> <span>$x_{011}=\left[\begin{array}{c} 1 \\ 0 \\ 0 \end{array}\right], \quad x_{012}=\left[\begin{array}{c} 10 \\ 3 \\ -2.2 \end{array}\right]$</span></p><h4 id="Problème-2-1"><a class="docs-heading-anchor" href="#Problème-2-1">Problème 2</a><a class="docs-heading-anchor-permalink" href="#Problème-2-1" title="Permalink"></a></h4><p><span>$\hspace*{1.5cm}$</span> <span>$\begin{aligned} f_{2}: \mathbb{R}^{2} &amp; \rightarrow \mathbb{R} \\ \left(x_{1}, x_{2}\right) &amp; \mapsto 100\left(x_{2}-x_{1}^{2}\right)^{2}+\left(1-x_{1}\right)^{2} \end{aligned}$</span></p><p>On cherchera à minimiser <span>$f_{2}$</span> sur <span>$\mathbb{R}^{2}$</span> , en partant des points suivants :<span>$\\$</span> </p><p><span>$x_{0 2 1}=\left[\begin{array}{c} -1.2 \\ 1 \end{array}\right]\\$</span></p><p><span>$x_{0 2 2}=\left[\begin{array}{c} 10 \\ 0 \end{array}\right]\\$</span></p><p><span>$x_{023}=\left[\begin{array}{c} 0 \\ \frac{1}{200}+\frac{1}{10^{12}} \end{array}\right]\\$</span></p><h2 id="B.-Cas-tests-pour-le-calcul-du-pas-de-Cauchy-1"><a class="docs-heading-anchor" href="#B.-Cas-tests-pour-le-calcul-du-pas-de-Cauchy-1">B. Cas tests pour le calcul du pas de Cauchy</a><a class="docs-heading-anchor-permalink" href="#B.-Cas-tests-pour-le-calcul-du-pas-de-Cauchy-1" title="Permalink"></a></h2><p>On considère des fonctions quadratiques de la forme <span>$q(s)=s^{\top} g+\frac{1}{2} s^{\top} H s$</span></p><h4 id="Quadratique-1-1"><a class="docs-heading-anchor" href="#Quadratique-1-1">Quadratique 1</a><a class="docs-heading-anchor-permalink" href="#Quadratique-1-1" title="Permalink"></a></h4><p><span>$g=\left[\begin{array}{l} 0 \\ 0 \end{array}\right]$</span>,<span>$H=\left[\begin{array}{ll} 7 &amp; 0 \\ 0 &amp; 2 \end{array}\right]\\$</span></p><h4 id="Quadratique-2-1"><a class="docs-heading-anchor" href="#Quadratique-2-1">Quadratique 2</a><a class="docs-heading-anchor-permalink" href="#Quadratique-2-1" title="Permalink"></a></h4><p><span>$g=\left[\begin{array}{l} 6 \\ 2 \end{array}\right]$</span>,<span>$H=\left[\begin{array}{ll} 7 &amp; 0 \\ 0 &amp; 2 \end{array}\right]\\$</span></p><h4 id="Quadratique-3-1"><a class="docs-heading-anchor" href="#Quadratique-3-1">Quadratique 3</a><a class="docs-heading-anchor-permalink" href="#Quadratique-3-1" title="Permalink"></a></h4><p><span>$g=\left[\begin{array}{l} -2 \\ 1 \end{array}\right]$</span>,<span>$H=\left[\begin{array}{ll} -2 &amp; 0 \\ 0 &amp; 10 \end{array}\right]\\$</span></p><h2 id="C.-Cas-tests-pour-la-résolution-du-sous-problème-par-l’algorithme-du-Gradient-Conjugué-Tronqué-1"><a class="docs-heading-anchor" href="#C.-Cas-tests-pour-la-résolution-du-sous-problème-par-l’algorithme-du-Gradient-Conjugué-Tronqué-1">C. Cas tests pour la résolution du sous-problème par l’algorithme du Gradient Conjugué Tronqué</a><a class="docs-heading-anchor-permalink" href="#C.-Cas-tests-pour-la-résolution-du-sous-problème-par-l’algorithme-du-Gradient-Conjugué-Tronqué-1" title="Permalink"></a></h2><p>On reprendra les 3 quadratiques testées avec le pas de Cauchy, auxquelles on ajoutera :</p><h4 id="Quadratique-4-1"><a class="docs-heading-anchor" href="#Quadratique-4-1">Quadratique 4</a><a class="docs-heading-anchor-permalink" href="#Quadratique-4-1" title="Permalink"></a></h4><p><span>$g=\left[\begin{array}{l} 0 \\ 0 \end{array}\right]$</span>, <span>$H=\left[\begin{array}{ll} -2 &amp; 0 \\ 0 &amp; 10 \end{array}\right]\\$</span></p><h4 id="Quadratique-5-1"><a class="docs-heading-anchor" href="#Quadratique-5-1">Quadratique 5</a><a class="docs-heading-anchor-permalink" href="#Quadratique-5-1" title="Permalink"></a></h4><p><span>$g=\left[\begin{array}{l} 2 \\ 3 \end{array}\right]$</span>,<span>$H=\left[\begin{array}{ll} 4 &amp; 6 \\ 6 &amp; 5 \end{array}\right]\\$</span></p><h4 id="Quadratique-6-1"><a class="docs-heading-anchor" href="#Quadratique-6-1">Quadratique 6</a><a class="docs-heading-anchor-permalink" href="#Quadratique-6-1" title="Permalink"></a></h4><p><span>$g=\left[\begin{array}{l} 2 \\ 0 \end{array}\right]$</span>, <span>$H=\left[\begin{array}{ll} 4 &amp; 0 \\ 0 &amp; -15 \end{array}\right]\\$</span></p><h2 id="D.-Problèmes-avec-contraintes-1"><a class="docs-heading-anchor" href="#D.-Problèmes-avec-contraintes-1">D. Problèmes avec contraintes</a><a class="docs-heading-anchor-permalink" href="#D.-Problèmes-avec-contraintes-1" title="Permalink"></a></h2><h3 id="Retour-sur-f_1-1"><a class="docs-heading-anchor" href="#Retour-sur-f_1-1">Retour sur <span>$f_1$</span></a><a class="docs-heading-anchor-permalink" href="#Retour-sur-f_1-1" title="Permalink"></a></h3><p>On s&#39;intéresse à la valeur minimale de <span>$f_1$</span> sur un ensemble défini par une contrainte linéaire. La formulation du problème sera alors </p><p><span>$\min _{x_{1}+x_{3}=1; x \in \mathbb{R}^{3}} f_{1}(x)$</span></p><p>On choisira comme point initial</p><p><span>$x_{c 11}=\left[\begin{array}{l} 0 \\ 1 \\ 1 \end{array}\right]$</span> (réalisable) </p><p>ou </p><p><span>$x_{c 12}=\left[\begin{array}{l} 0.5 \\ 1.25 \\ 1 \end{array}\right]$</span> (non réalisable) .</p><h4 id="Retour-sur-f_2-1"><a class="docs-heading-anchor" href="#Retour-sur-f_2-1">Retour sur <span>$f_2$</span></a><a class="docs-heading-anchor-permalink" href="#Retour-sur-f_2-1" title="Permalink"></a></h4><p>On cherche à minimiser la fonction <span>$f_2$</span> décrite dans la partie précédente, en se restreignant maintenant à une sphère. Le problème s&#39;écrit :</p><p><span>$\min _{x_{1}^{2}+x_{2}^{2}=1.5; x \in \mathbb{R}^{2}} f_{2}(x)$</span></p><p>On choisira comme point initial</p><p><span>$x_{c 21}=\left[\begin{array}{c} 1 \\ 0 \end{array}\right]$</span> (non réalisable) </p><p>ou </p><p><span>$x_{c 22}=\left[\begin{array}{c} \sqrt{3} / 2 \\ \sqrt{3} / 2 \end{array}\right]$</span> (réalisable).</p><h3 id="Un-problème-avec-contraintes-d&#39;inégalité-(supplément)-1"><a class="docs-heading-anchor" href="#Un-problème-avec-contraintes-d&#39;inégalité-(supplément)-1">Un problème avec contraintes d&#39;inégalité (supplément)</a><a class="docs-heading-anchor-permalink" href="#Un-problème-avec-contraintes-d&#39;inégalité-(supplément)-1" title="Permalink"></a></h3><p><span>$\left\{\begin{array}{lll} \min _{(x, y) \in \mathbb{R}^{2}} f_{3}(x, y) &amp; = &amp; (x-1)^{2}+(y-2.5)^{2} \\ x-2 y+2 &amp; \geq &amp; 0 \\ -x-2 y+6 &amp; \geq &amp; 0 \\ -x+2 y+2 &amp; \geq &amp; 0 \\ x &amp; \geq &amp; 0 \\ y &amp; \geq &amp; 0 \end{array}\right.$</span></p><p>L&#39;origine pourra être prise comme point initial.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="fct_index.html">« Index des fonctions</a><a class="docs-footer-nextpage" href="mise_en_place.html">Installation de Julia et tests unitaires »</a></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Monday 8 November 2021 11:31">Monday 8 November 2021</span>. Using Julia version 1.4.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
This diff is collapsed.
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Foire aux Questions · Optinum.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Optinum.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">Optinum.jl</span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Accueil</a></li><li><a class="tocitem" href="Sujet.html">Sujet</a></li><li><span class="tocitem">Algorithmes</span><ul><li><a class="tocitem" href="Algorithme_de_newton.html">L&#39;algorithme de Newton local</a></li><li><a class="tocitem" href="Regions_de_confiance.html">La méthode des régions de confiance</a></li><li><a class="tocitem" href="Lagrangien_augmente.html">La méthode du Lagrangien augmenté</a></li></ul></li><li><a class="tocitem" href="fct_index.html">Index des fonctions</a></li><li><a class="tocitem" href="Annexes.html">Annexes</a></li><li><a class="tocitem" href="mise_en_place.html">Installation de Julia et tests unitaires</a></li><li class="is-active"><a class="tocitem" href="FAQ.html">Foire aux Questions</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href="FAQ.html">Foire aux Questions</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="FAQ.html">Foire aux Questions</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com//blob/master/docs/src/FAQ.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Foire-Aux-Questions-1"><a class="docs-heading-anchor" href="#Foire-Aux-Questions-1">Foire Aux Questions</a><a class="docs-heading-anchor-permalink" href="#Foire-Aux-Questions-1" title="Permalink"></a></h1></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="mise_en_place.html">« Installation de Julia et tests unitaires</a></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Monday 8 November 2021 11:31">Monday 8 November 2021</span>. Using Julia version 1.4.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Intégration continue avec Travis CI · Optinum.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Optinum.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">Optinum.jl</span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Accueil</a></li><li><a class="tocitem" href="Sujet.html">Sujet</a></li><li><span class="tocitem">Algorithmes</span><ul><li><a class="tocitem" href="Algorithme_de_newton.html">L&#39;algorithme de Newton local</a></li><li><a class="tocitem" href="Regions_de_confiance.html">La méthode des régions de confiance</a></li><li><a class="tocitem" href="Lagrangien_augmente.html">La méthode du Lagrangien augmenté</a></li></ul></li><li><a class="tocitem" href="fct_index.html">Index des fonctions</a></li><li><a class="tocitem" href="Annexes.html">Annexes</a></li><li><a class="tocitem" href="mise_en_place.html">Installation de Julia et tests unitaires</a></li><li><a class="tocitem" href="FAQ.html">Foire aux Questions</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href="Integration_continue.html">Intégration continue avec Travis CI</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="Integration_continue.html">Intégration continue avec Travis CI</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com//blob/master/docs/src/Integration_continue.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Intégration-continue-avec-Travis-CI-1"><a class="docs-heading-anchor" href="#Intégration-continue-avec-Travis-CI-1">Intégration continue avec Travis CI</a><a class="docs-heading-anchor-permalink" href="#Intégration-continue-avec-Travis-CI-1" title="Permalink"></a></h1><h3 id="L&#39;Intégration-continue-1"><a class="docs-heading-anchor" href="#L&#39;Intégration-continue-1">L&#39;Intégration continue</a><a class="docs-heading-anchor-permalink" href="#L&#39;Intégration-continue-1" title="Permalink"></a></h3><p><a href="https://en.wikipedia.org/wiki/Continuous_integration">L&#39;intégration continue</a> est un ensemble de pratiques utilisées en génie logiciel consistant à vérifier à chaque modification de code source que le résultat des modifications ne produit pas de régression dans l&#39;application développée, Le principal but de cette pratique est de détecter les problèmes d&#39;intégration au plus tôt lors du développement. De plus, elle permet d&#39;automatiser l&#39;exécution des suites de tests et de voir l&#39;évolution du développement du logiciel.</p><ul><li><p>Les principaux avantages d&#39;une telle technique de développement sont :</p><ul><li>le test immédiat des modifications </li><li>la notification rapide en cas de code incompatible ou manquant </li><li>les problèmes d&#39;intégration sont détectés et réparés de façon continue, évitant les problèmes de dernière minute </li><li>une version est toujours disponible pour un test, une démonstration ou une distribution.</li></ul></li></ul><h3 id="Travis-CI-1"><a class="docs-heading-anchor" href="#Travis-CI-1">Travis CI</a><a class="docs-heading-anchor-permalink" href="#Travis-CI-1" title="Permalink"></a></h3><p><a href="http://travis-ci.com"><strong>Travis CI</strong></a> est un logiciel libre d&#39;intégration continue. Il fournit un service en ligne utilisé pour compiler, tester et déployer le code source des logiciels développés, notamment en lien avec le service d&#39;hébergement du code source GitHub. Le logiciel est publié sous <a href="https://fr.wikipedia.org/wiki/Licence_MIT">licence MIT</a>. Sa configuration s&#39;effectue en <a href="https://fr.wikipedia.org/wiki/YAML">YAML</a>.</p><h3 id="Lancement-des-jobs-sur-Travis-CI-1"><a class="docs-heading-anchor" href="#Lancement-des-jobs-sur-Travis-CI-1">Lancement des jobs sur Travis CI</a><a class="docs-heading-anchor-permalink" href="#Lancement-des-jobs-sur-Travis-CI-1" title="Permalink"></a></h3><p>Pour lancer des jobs sur Travis : </p><ol><li>Allez sur <a href="travis-ci.com">Travis CI</a> ensuite <em>Sign up with GitHub</em>.</li><li>Acceptez l&#39;autorisation de Travis CI. Vous serez redirigé vers GitHub.</li><li>Cliquez sur votre photo de profil en haut à droite de votre tableau de bord Travis, cliquez sur Paramètres puis sur le bouton vert <em>Activate button</em> et sélectionnez les dépôts que vous souhaitez utiliser avec Travis CI.</li><li>Maintenant , il ne reste que d&#39;ajouter un fichier <code>.travis.yml</code> dans la racine de votre dépôt. ce fichier doit contenir les informations suivantes : le langage utilisé et les versions sur lequels vous voulez lancer les tests. par exemple : </li></ol><pre><code class="language-yml">language: julia
os:
- osx
- linux
- windows
julia:
- 1.0.5
- 1.4
- 1.5 </code></pre><p>le job des tests est configuré par défaut, mais il faudra avoir un fichier <code>runtests.jl</code> dans le dossier <code>test</code> sinon vous devrez personnaliser votre test, par exemple :</p><pre><code class="language-yml">language: julia
os:
- osx
- linux
- windows
julia:
- 1.0.5
- 1.4
- 1.5
script:
- julia -e &#39;using Pkg; Pkg.instantiate(); Pkg.develop(PackageSpec(path=pwd()))&#39;
- julia test/test1.jl
- julia test/test2.jl</code></pre><p>Travis CI peut être utilisé pour deployer votre documentation dans les <a href="https://docs.travis-ci.com/user/deployment/pages/">Github pages</a>. pour se faire, créez un job spécifique pour la documentation : </p><pre><code class="language-yml">jobs:
include:
- stage: Documentation
julia: 1.4
os: linux
script:
- julia --project=docs -e &#39;using Pkg; Pkg.instantiate(); Pkg.develop(PackageSpec(path=pwd()))&#39;
- julia --project=docs docs/make.jl
after_success: skip</code></pre><ul><li>Dans ce script on utilise un <code>stage</code> (&quot;Documentation&quot; n&#39;est qu&#39;un nom), pour en savoir plus <a href="https://docs.travis-ci.com/user/build-stages/">consultez cette page</a>.</li><li>Pour personnaliser les notifications de Travis, <a href="https://docs.travis-ci.com/user/notifications/">consultez cette page</a>.</li><li>Pour lancer des applications sur Heroku, <a href="https://docs.travis-ci.com/user/deployment/heroku/">consultez cette page</a>.</li><li>Pour personnaliser votre build, <a href="https://docs.travis-ci.com/user/customizing-the-build">consultez cette page</a></li></ul><h3 id="Déploiement-de-la-documentation-1"><a class="docs-heading-anchor" href="#Déploiement-de-la-documentation-1">Déploiement de la documentation</a><a class="docs-heading-anchor-permalink" href="#Déploiement-de-la-documentation-1" title="Permalink"></a></h3><p>Si vous voulez déployer votre doc sur <em>Github pages</em>, vous devez avoir dans votre fichier <code>docs/make.jl</code>, dans le cas de Julia, un appel à la fonction <a href="https://juliadocs.github.io/Documenter.jl/stable/lib/public/#Documenter.deploydocs"><code>deploydocs()</code></a> du package <a href="https://juliadocs.github.io/Documenter.jl/stable/lib/public/#Documenter"><code>Documenter</code></a> en donnant comme paramètre le dépôt surlequel vous voulez déployer, exemple :</p><pre><code class="language-julia">deploydocs(repo = &quot;github.com/username/myrepo.git&quot;)</code></pre><p>la branche de déploiement est par défaut <code>branch = &quot;gh-pages&quot;</code>, et celle du développement est <code>devbranch=&quot;master&quot;</code>,consultez la documentation de la fonction <a href="https://juliadocs.github.io/Documenter.jl/stable/lib/public/#Documenter.deploydocs"><code>deploydocs()</code></a> pour en savoir plus.</p><p>À chaque <code>push</code> ou <code>pull request</code> Travis-CI va exécuter ce fichier, et pour lui donner les droits à faire des modifications dans votre branche du dépoiement (<code>gh-pages</code> par défaut) suivez les étapes suivantes : </p><ul><li>Dans le dossier contenant votre module Julia, dans la console julia utilisez la fonction <a href="https://juliadocs.github.io/Documenter.jl/stable/lib/public/#DocumenterTools.genkeys"><code>genkeys(MonModule)</code></a> du package <code>DocumenterTools</code> pour récuperer la clé ssh et la clé de sécurité: </li></ul><pre><code class="language-julia">julia&gt; using MonModule # s&#39;il ne trouve pas le module, faites activate ./ dans la racine de votre module
julia&gt; using DocumenterTools
julia&gt; DocumenterTools.genkeys(MonModule)</code></pre><p>Ensuite,</p><ul><li><p>Allez sur <code>https://github.com/username/myrepo/settings/keys</code> et àjoutez la clé ssh (&quot;ssh-rsa ...&quot;) à votre dépôt,mettez comme nom <code>documenter</code> et <strong>cochez</strong> <em>read/write access</em>.</p></li><li><p>Allez sur <code>https://travis-ci.com/github/username/myrepo/settings</code> ajoutez une <em>secure environment variable</em> avec le nom <code>DOCUMENTER_KEY</code> en donnant comme valeur la deuxième clé ().</p></li></ul><div class="admonition is-warning"><header class="admonition-header">Note</header><div class="admonition-body"><ul><li>Vous devez avoir suffisamment de droits pour pouvoir effectuer ces modifications. </li><li>Evitez de copier un espace de plus en récupérant les deux clés.</li></ul></div></div></article></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Monday 8 November 2021 11:31">Monday 8 November 2021</span>. Using Julia version 1.4.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>La méthode du Lagrangien augmenté · Optinum.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Optinum.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">Optinum.jl</span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Accueil</a></li><li><a class="tocitem" href="Sujet.html">Sujet</a></li><li><span class="tocitem">Algorithmes</span><ul><li><a class="tocitem" href="Algorithme_de_newton.html">L&#39;algorithme de Newton local</a></li><li><a class="tocitem" href="Regions_de_confiance.html">La méthode des régions de confiance</a></li><li class="is-active"><a class="tocitem" href="Lagrangien_augmente.html">La méthode du Lagrangien augmenté</a><ul class="internal"><li class="toplevel"><a class="tocitem" href="#Algorithme-du-Lagrangien-augmenté-pour-contraintes-d&#39;égalité-1"><span>Algorithme du Lagrangien augmenté pour contraintes d&#39;égalité</span></a></li></ul></li></ul></li><li><a class="tocitem" href="fct_index.html">Index des fonctions</a></li><li><a class="tocitem" href="Annexes.html">Annexes</a></li><li><a class="tocitem" href="mise_en_place.html">Installation de Julia et tests unitaires</a></li><li><a class="tocitem" href="FAQ.html">Foire aux Questions</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Algorithmes</a></li><li class="is-active"><a href="Lagrangien_augmente.html">La méthode du Lagrangien augmenté</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="Lagrangien_augmente.html">La méthode du Lagrangien augmenté</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com//blob/master/docs/src/Lagrangien_augmente.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Principe-1"><a class="docs-heading-anchor" href="#Principe-1">Principe</a><a class="docs-heading-anchor-permalink" href="#Principe-1" title="Permalink"></a></h1><p>La méthode du lagrangien augmenté appartient à une classe d&#39;algorithme qui permettent la résolution des problèmes avec contraintes. Elle s&#39;apparente aux méthodes de pénalisation, dans lesquelles on résout le problème avec contraintes à travers une suite de problèmes sans contraintes.</p><h1 id="Algorithme-du-Lagrangien-augmenté-pour-contraintes-d&#39;égalité-1"><a class="docs-heading-anchor" href="#Algorithme-du-Lagrangien-augmenté-pour-contraintes-d&#39;égalité-1">Algorithme du Lagrangien augmenté pour contraintes d&#39;égalité</a><a class="docs-heading-anchor-permalink" href="#Algorithme-du-Lagrangien-augmenté-pour-contraintes-d&#39;égalité-1" title="Permalink"></a></h1><p>On s&#39;intéresse ici au cas où l&#39;ensemble <span>$C$</span> est défini par un ensemble des contraintes d&#39;égalités. Le problème se met ainsi sous la forme :</p><p><span>$\min _{c(x) = 0; x \in \mathbb{R}^{n}} f(x)$</span></p><p><span>$c : \mathbb{R}^{n} \rightarrow \mathbb{R}^{m}$</span>. L&#39;algorithme suivant est obtenu de Bierlaire, <em>Introduction à l&#39;optimisation différentiable</em>.</p><h3 id="Données-:-1"><a class="docs-heading-anchor" href="#Données-:-1">Données :</a><a class="docs-heading-anchor-permalink" href="#Données-:-1" title="Permalink"></a></h3><p><span>$\mu_{0} &gt; 0, \tau &gt; 0, \hat{\eta}_{0}=0.1258925[^1] , \alpha=0.1, \beta=0.9, \epsilon_{0}=1/\mu_{0}, \eta_{0}=\hat{\eta}_{0} / \mu_{0}^{\alpha}$</span> , et un point de départ du Lagrangien <span>$(x_{0},\lambda_{0})$</span>. On pose <span>$k = 0$</span></p><h3 id="Sorties-:-1"><a class="docs-heading-anchor" href="#Sorties-:-1">Sorties :</a><a class="docs-heading-anchor-permalink" href="#Sorties-:-1" title="Permalink"></a></h3><p>une approximation de la solution du problème avec contraintes.</p><h3 id=".-Tant-qu&#39;il-n&#39;y-a-pas-convergence,-répéter-1"><a class="docs-heading-anchor" href="#.-Tant-qu&#39;il-n&#39;y-a-pas-convergence,-répéter-1">1. Tant qu&#39;il n&#39;y a pas convergence, répéter</a><a class="docs-heading-anchor-permalink" href="#.-Tant-qu&#39;il-n&#39;y-a-pas-convergence,-répéter-1" title="Permalink"></a></h3><p>a. Calculer approximation un minimiseur <span>$x_{k+1}$</span> du problème sans contraintes suivant :</p><p><span>$\min _{x \in \mathbb{R}^{n}} L_{A}\left(x, \lambda_{k}, \mu_{k}\right)=f(x)+\lambda_{k}^{T} c(x)+\frac{\mu_{k}}{2}\|c(x)\|^{2},$</span></p><p>avec <span>$x_{k}$</span> comme point de départ, en terminant lorsque <span>$\| \nabla_{x} L_{A}\left(x, \lambda_{k}, \mu_{k}\right) \| \leq \epsilon_{k}$</span>. Si convergence de l&#39;algorithme global, s&#39;arrêter , sinon aller en b</p><p>b. Si <span>$\|c(x_{k+1})\| \leq \eta_{k}$</span>, mettre à jour (entre autres) les multiplicateurs :</p><p><span>$\left\{\begin{array}{l}\lambda_{k+1}=\lambda_{k}+\mu_{k} c\left(x_{k+1}\right) \\ \mu_{k+1}=\mu_{k} \\\epsilon_{k+1}=\epsilon_{k} / \mu_{k} \\\eta_{k+1}=\eta_{k} / \mu_{k}^{\beta} \\k=k+1\end{array}\right.$</span></p><p>c. Autrement, mettre à jour (entre autres) le paramétre de pénalité :</p><p><span>$\left\{\begin{array}{l}\lambda_{k+1} =\lambda_{k} \\\mu_{k+1} =\tau \mu_{k} \\\epsilon_{k+1} =\epsilon_{0} / \mu_{k+1} \\\eta_{k+1} =\hat{\eta}_{0} / \mu_{k+1}^{\alpha} \\k=k+1\end{array}\right.$</span></p><h3 id=".-Retourner-x_{k},\\lambda_{k},\\mu_{k}-.-1"><a class="docs-heading-anchor" href="#.-Retourner-x_{k},\\lambda_{k},\\mu_{k}-.-1">2. Retourner <span>$x_{k},\lambda_{k},\mu_{k}$</span> .</a><a class="docs-heading-anchor-permalink" href="#.-Retourner-x_{k},\\lambda_{k},\\mu_{k}-.-1" title="Permalink"></a></h3><h3 id="Critère-de-convergence-global-1"><a class="docs-heading-anchor" href="#Critère-de-convergence-global-1">3 Critère de convergence global</a><a class="docs-heading-anchor-permalink" href="#Critère-de-convergence-global-1" title="Permalink"></a></h3><p><span>$(\| \nabla_{x} L_{A}\left(x_x, \lambda_{k}, 0 \right) \|\leq max(Tol\_rel\| \nabla_{x} L_{A}\left(x_0, \lambda_{0}, 0\right) \|,Tol\_abs))$</span> et <span>$(\|c(x_k)\|\leq max(Tol\_rel\|c(x_0)\|,Tol\_abs))$</span></p><p><sup class="footnote-reference"><a id="citeref-1" href="#footnote-1">[1]</a></sup> : Pour que <span>$\eta_0=0.1$</span>.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="Regions_de_confiance.html">« La méthode des régions de confiance</a><a class="docs-footer-nextpage" href="fct_index.html">Index des fonctions »</a></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Monday 8 November 2021 11:31">Monday 8 November 2021</span>. Using Julia version 1.4.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · Optinum.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Optinum.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">Optinum.jl</span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Accueil</a></li><li><a class="tocitem" href="Sujet.html">Sujet</a></li><li><span class="tocitem">Algorithmes</span><ul><li><a class="tocitem" href="Algorithme_de_newton.html">L&#39;algorithme de Newton local</a></li><li><a class="tocitem" href="Regions_de_confiance.html">La méthode des régions de confiance</a></li><li><a class="tocitem" href="Lagrangien_augmente.html">La méthode du Lagrangien augmenté</a></li></ul></li><li><a class="tocitem" href="fct_index.html">Index des fonctions</a></li><li><a class="tocitem" href="Annexes.html">Annexes</a></li><li><a class="tocitem" href="mise_en_place.html">Installation de Julia et tests unitaires</a></li><li><a class="tocitem" href="FAQ.html">Foire aux Questions</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href="Precompilation.html">-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="Precompilation.html">-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com//blob/master/docs/src/Precompilation.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h2 id="Intérêt-1"><a class="docs-heading-anchor" href="#Intérêt-1">Intérêt</a><a class="docs-heading-anchor-permalink" href="#Intérêt-1" title="Permalink"></a></h2><p>L&#39;utilisation des fonctions des modules, sans avoir accès aux modules ni faire des <code>using</code>, à partir d&#39;un fichier binaire qui contient des versions précompilées de ces modules.</p><h2 id="Génération-du-fichier-binaire-1"><a class="docs-heading-anchor" href="#Génération-du-fichier-binaire-1">Génération du fichier binaire</a><a class="docs-heading-anchor-permalink" href="#Génération-du-fichier-binaire-1" title="Permalink"></a></h2><h5 id="Ajout-du-PackageCompiler-en-local-1"><a class="docs-heading-anchor" href="#Ajout-du-PackageCompiler-en-local-1">Ajout du PackageCompiler en local</a><a class="docs-heading-anchor-permalink" href="#Ajout-du-PackageCompiler-en-local-1" title="Permalink"></a></h5><pre><code class="language-linux">~$ julia</code></pre><pre><code class="language-julia">julia &gt; ]
(v1.4) pkg&gt; add PackageCompiler</code></pre><h5 id="Création-d&#39;un-nouvel-environnement-et-ajout-des-modules-à-compiler-1"><a class="docs-heading-anchor" href="#Création-d&#39;un-nouvel-environnement-et-ajout-des-modules-à-compiler-1">Création d&#39;un nouvel environnement et ajout des modules à compiler</a><a class="docs-heading-anchor-permalink" href="#Création-d&#39;un-nouvel-environnement-et-ajout-des-modules-à-compiler-1" title="Permalink"></a></h5><p>Dans un dossier <code>NouveauEnv</code> je crée un nouvel environnement julia</p><pre><code class="language-linux">~$ mkdir NouveauEnv
~$ cd NouveauEnv
~$ julia</code></pre><pre><code class="language-julia">julia&gt; ]
pkg&gt; activate .
(NouveauEnv) pkg&gt; add https://github.com/mathn7/TestOptinum.git
(NouveauEnv) pkg&gt; add https://github.com/mathn7/optinum.git
(NouveauEnv) pkg&gt; add LinearAlgebra #je rajoute autant que je veux des modules</code></pre><h5 id="Génération-du-fichier-binaire-2"><a class="docs-heading-anchor" href="#Génération-du-fichier-binaire-2">Génération du fichier binaire</a><a class="docs-heading-anchor-permalink" href="#Génération-du-fichier-binaire-2" title="Permalink"></a></h5><p>Avant de procéder à la génération du fichier binaire il faut créer un fichier julia (dans le dossier NouveauEnv) qui utilise les modules pour pouvoir exporter les fonctions. Le contenu de (NouveauEnv/Exemple.jl) sera : </p><pre><code class="language-linux">~/NouveauEnv
❯ cat Exemple.jl
using LinearAlgebra ;using TestOptinum;using Optinum;</code></pre><pre><code class="language-linux">~$julia</code></pre><pre><code class="language-julia">julia&gt; ]
pkg&gt; activate .
(NouveauEnv) pkg&gt;
julia&gt; using PackageCompiler
julia&gt; PackageCompiler.create_sysimage([:LinearAlgebra , :TestOptinum ,:Optinum]; sysimage_path=&quot;ExamplePrecompile.so&quot;,
precompile_execution_file=&quot;Exemple.jl&quot;)</code></pre><p>les paramètres de la fonction <code>create_sysimage</code>, utilisés sont :</p><p>premier paramètre : liste des modules à compiler (dans notre exemple : LinearAlgebra,TestOptinum,Optinum)</p><p>deuxième paramètre (sysimage_path) : nom du fichier binaire à générer (on peut spécifier le chemin également)</p><p>troisième paramètre (precompile_execution_file) : nom du fichier à compiler</p><h2 id="Utilisation-du-fichier-binaire-1"><a class="docs-heading-anchor" href="#Utilisation-du-fichier-binaire-1">Utilisation du fichier binaire</a><a class="docs-heading-anchor-permalink" href="#Utilisation-du-fichier-binaire-1" title="Permalink"></a></h2><p>Après la génération du fichier binaire <code>ExamplePrecompile.so</code> on peut utiliser les fonctions précompilées (qui se trouvaient dans Exemple.jl) sans faire des <code>using</code></p><pre><code class="language-linux">~$julia -q -JExamplePrecompile.so</code></pre><pre><code class="language-julia">julia&gt; LinearAlgebra.norm([4 5],2)
6.4031242374328485
julia&gt;TestOptinum.tester_algo_newton(true,Optinum.Algorithme_De_Newton)
Test Summary: | Pass Total
L&#39;algo de Newton | 4 4
</code></pre></article></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Monday 8 November 2021 11:31">Monday 8 November 2021</span>. Using Julia version 1.4.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Travail à réaliser pour l&#39;algorithme des régions de confiance avec gradient conjugué tronqué · Optinum.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Optinum.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">Optinum.jl</span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Accueil</a></li><li><a class="tocitem" href="Sujet.html">Sujet</a></li><li><span class="tocitem">Algorithmes</span><ul><li><a class="tocitem" href="Algorithme_de_newton.html">L&#39;algorithme de Newton local</a></li><li><a class="tocitem" href="Regions_de_confiance.html">La méthode des régions de confiance</a></li><li><a class="tocitem" href="Lagrangien_augmente.html">La méthode du Lagrangien augmenté</a></li></ul></li><li><a class="tocitem" href="fct_index.html">Index des fonctions</a></li><li><a class="tocitem" href="Annexes.html">Annexes</a></li><li><a class="tocitem" href="mise_en_place.html">Installation de Julia et tests unitaires</a></li><li><a class="tocitem" href="FAQ.html">Foire aux Questions</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href="Questions_GCT.html">Travail à réaliser pour l&#39;algorithme des régions de confiance avec gradient conjugué tronqué</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="Questions_GCT.html">Travail à réaliser pour l&#39;algorithme des régions de confiance avec gradient conjugué tronqué</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com//blob/master/docs/src/Questions_GCT.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Travail-à-réaliser-pour-l&#39;algorithme-des-régions-de-confiance-avec-gradient-conjugué-tronqué-1"><a class="docs-heading-anchor" href="#Travail-à-réaliser-pour-l&#39;algorithme-des-régions-de-confiance-avec-gradient-conjugué-tronqué-1">Travail à réaliser pour l&#39;algorithme des régions de confiance avec gradient conjugué tronqué</a><a class="docs-heading-anchor-permalink" href="#Travail-à-réaliser-pour-l&#39;algorithme-des-régions-de-confiance-avec-gradient-conjugué-tronqué-1" title="Permalink"></a></h1><h6 id="Implémentation-1"><a class="docs-heading-anchor" href="#Implémentation-1">Implémentation</a><a class="docs-heading-anchor-permalink" href="#Implémentation-1" title="Permalink"></a></h6><ol><li>Implémenter l’algorithme du Gradient Conjugué Tronqué, en se basant sur le cours.</li></ol><p>On validera les résultats sur les fonctions de l’Annexe C.</p><ol><li>Intégrer finalement l’algorithme du Gradient Conjugué Tronqué dans un code de</li></ol><p>régions de confiance, et appliquer ce code pour résoudre les exemples proposés en Annexe A.</p><h6 id="Interprétation-1"><a class="docs-heading-anchor" href="#Interprétation-1">Interprétation</a><a class="docs-heading-anchor-permalink" href="#Interprétation-1" title="Permalink"></a></h6><ol><li>Comparer la décroissance obtenue avec celle du pas de Cauchy, en retournant, dans</li></ol><p>un premier temps le dernier itéré admissible à courbure positive (c’est à dire, que si l’une ou l’autre des deux conditions (b) ou (d) sont rencontrées dans l’algorithme 3, alors on ne calcule pas <span>$σ_{j}$</span> et on retourne le dernier itéré <span>$s_{j}$</span> directement).</p><ol><li>Comparer la décroissance obtenue avec celle du pas de Cauchy, en imposant la sortie</li></ol><p>dans l’algorithme 3 au bout d’une itération seulement. Que remarquez vous ?</p><ol><li><p>Comparer la décroissance obtenue avec celle du pas de Cauchy dans le cas général.</p></li><li><p>Quels sont les avantages et inconvénients des deux approches ?</p></li></ol></article></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Monday 8 November 2021 11:31">Monday 8 November 2021</span>. Using Julia version 1.4.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Travail à réaliser : · Optinum.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Optinum.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">Optinum.jl</span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Accueil</a></li><li><a class="tocitem" href="Sujet.html">Sujet</a></li><li><span class="tocitem">Algorithmes</span><ul><li><a class="tocitem" href="Algorithme_de_newton.html">L&#39;algorithme de Newton local</a></li><li><a class="tocitem" href="Regions_de_confiance.html">La méthode des régions de confiance</a></li><li><a class="tocitem" href="Lagrangien_augmente.html">La méthode du Lagrangien augmenté</a></li></ul></li><li><a class="tocitem" href="fct_index.html">Index des fonctions</a></li><li><a class="tocitem" href="Annexes.html">Annexes</a></li><li><a class="tocitem" href="mise_en_place.html">Installation de Julia et tests unitaires</a></li><li><a class="tocitem" href="FAQ.html">Foire aux Questions</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href="Questions_Lagrangien_Augmente.html">Travail à réaliser :</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="Questions_Lagrangien_Augmente.html">Travail à réaliser :</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com//blob/master/docs/src/Questions_Lagrangien_Augmente.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Travail-à-réaliser-:-1"><a class="docs-heading-anchor" href="#Travail-à-réaliser-:-1">Travail à réaliser :</a><a class="docs-heading-anchor-permalink" href="#Travail-à-réaliser-:-1" title="Permalink"></a></h1><h3 id="Implémentation-1"><a class="docs-heading-anchor" href="#Implémentation-1">Implémentation</a><a class="docs-heading-anchor-permalink" href="#Implémentation-1" title="Permalink"></a></h3><p>1.Choisir des critères d’arrêt pour la convergence de l&#39;algorithme.</p><p>2.Implémenter l&#39;algorithme du lagrangien augmenté, en utilisant les différentes méthodes qui ont été vues en première partie pour la résolution de la suite de problémes sans contraintes.</p><p>3.Tester les différentes variantes sur les problèmes en Annexe D.</p><h3 id="Interprétation-1"><a class="docs-heading-anchor" href="#Interprétation-1">Interprétation</a><a class="docs-heading-anchor-permalink" href="#Interprétation-1" title="Permalink"></a></h3><p>1.Commenter les résultats obtenus, en étudiant notamment les valeurs de <span>$λ_{k}$</span> et <span>$μ_{k}$</span>.</p><p>2.Étudier l&#39;influence du paramètre <span>$τ$</span> dans la performance de l&#39;algorithme.</p><p>3.<strong>Supplémentaire</strong> : Que proposez-vous comme méthode pour la résolution des problèmes avec des contraintes à la fois d&#39;égalité et d&#39;inégalité ? Implémenter (si le temps le permet) ce nouvel algorithme</p></article></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Monday 8 November 2021 11:31">Monday 8 November 2021</span>. Using Julia version 1.4.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · Optinum.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Optinum.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">Optinum.jl</span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Accueil</a></li><li><a class="tocitem" href="Sujet.html">Sujet</a></li><li><span class="tocitem">Algorithmes</span><ul><li><a class="tocitem" href="Algorithme_de_newton.html">L&#39;algorithme de Newton local</a></li><li><a class="tocitem" href="Regions_de_confiance.html">La méthode des régions de confiance</a></li><li><a class="tocitem" href="Lagrangien_augmente.html">La méthode du Lagrangien augmenté</a></li></ul></li><li><a class="tocitem" href="fct_index.html">Index des fonctions</a></li><li><a class="tocitem" href="Annexes.html">Annexes</a></li><li><a class="tocitem" href="mise_en_place.html">Installation de Julia et tests unitaires</a></li><li><a class="tocitem" href="FAQ.html">Foire aux Questions</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href="Questions_Newton.html">-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="Questions_Newton.html">-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com//blob/master/docs/src/Questions_Newton.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h2 id="Travail-à-réaliser-Pour-l&#39;algorithme-de-Newton-1"><a class="docs-heading-anchor" href="#Travail-à-réaliser-Pour-l&#39;algorithme-de-Newton-1">Travail à réaliser Pour l&#39;algorithme de Newton</a><a class="docs-heading-anchor-permalink" href="#Travail-à-réaliser-Pour-l&#39;algorithme-de-Newton-1" title="Permalink"></a></h2><h6 id="Implémentation-1"><a class="docs-heading-anchor" href="#Implémentation-1">Implémentation</a><a class="docs-heading-anchor-permalink" href="#Implémentation-1" title="Permalink"></a></h6><ol><li><p>Coder l’algorithme de Newton local tel que décrit dans la section <em>Algorithme de Newton</em></p></li><li><p>Tester l’algorithme sur les fonctions <span>$f_{1}$</span> , <span>$f_{2}$</span> avec les points initiaux <span>$x_{011}$</span> , <span>$x_{012}$</span> (pour <span>$f_{1}$</span> ) et <span>$x_{021}$</span> , <span>$x_{022}$</span> , <span>$x_{023}$</span> (pour <span>$f_{2}$</span> ) donnés en Annexe A.</p></li></ol><h6 id="Interprétation-1"><a class="docs-heading-anchor" href="#Interprétation-1">Interprétation</a><a class="docs-heading-anchor-permalink" href="#Interprétation-1" title="Permalink"></a></h6><p>justifier que</p><ol><li><p>l’algorithme implémenté converge en une itération pour <span>$f_{1}$</span>;</p></li><li><p>l’algorithme puisse ne pas converger pour <span>$f_{2}$</span> avec certains points initiaux.</p></li></ol></article></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Monday 8 November 2021 11:31">Monday 8 November 2021</span>. Using Julia version 1.4.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>- · Optinum.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Optinum.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">Optinum.jl</span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Accueil</a></li><li><a class="tocitem" href="Sujet.html">Sujet</a></li><li><span class="tocitem">Algorithmes</span><ul><li><a class="tocitem" href="Algorithme_de_newton.html">L&#39;algorithme de Newton local</a></li><li><a class="tocitem" href="Regions_de_confiance.html">La méthode des régions de confiance</a></li><li><a class="tocitem" href="Lagrangien_augmente.html">La méthode du Lagrangien augmenté</a></li></ul></li><li><a class="tocitem" href="fct_index.html">Index des fonctions</a></li><li><a class="tocitem" href="Annexes.html">Annexes</a></li><li><a class="tocitem" href="mise_en_place.html">Installation de Julia et tests unitaires</a></li><li><a class="tocitem" href="FAQ.html">Foire aux Questions</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href="Questions_Pas_De_Cauchy.html">-</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="Questions_Pas_De_Cauchy.html">-</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com//blob/master/docs/src/Questions_Pas_De_Cauchy.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h2 id="Travail-à-réaliser-pour-l&#39;algorithme-des-régions-de-confiance-avec-pas-de-cauchy-1"><a class="docs-heading-anchor" href="#Travail-à-réaliser-pour-l&#39;algorithme-des-régions-de-confiance-avec-pas-de-cauchy-1">Travail à réaliser pour l&#39;algorithme des régions de confiance avec pas de cauchy</a><a class="docs-heading-anchor-permalink" href="#Travail-à-réaliser-pour-l&#39;algorithme-des-régions-de-confiance-avec-pas-de-cauchy-1" title="Permalink"></a></h2><h6 id="Implémentation-1"><a class="docs-heading-anchor" href="#Implémentation-1">Implémentation</a><a class="docs-heading-anchor-permalink" href="#Implémentation-1" title="Permalink"></a></h6><ol><li>Implémenter une fonction calculant <strong>à part</strong> le pas de Cauchy d’un sous-problème de</li></ol><p>régions de confiance. La tester sur les quadratiques proposées en Annexe B.</p><ol><li>Inclure en suivant ce calcul dans un algorithme de régions de confiance ; le tester sur les problèmes de l’Annexe A.</li></ol><h6 id="Interprétation-1"><a class="docs-heading-anchor" href="#Interprétation-1">Interprétation</a><a class="docs-heading-anchor-permalink" href="#Interprétation-1" title="Permalink"></a></h6><ol><li><p>Quelle relation lie la fonction test f 1 et son modèle de Taylor à l’ordre 2 ? Comparer alors les performances de Newton et RC-Pas de Cauchy sur cette fonction.</p></li><li><p>Le rayon initial de la région de confiance est un paramètre important dans l’analyse</p></li></ol><p>de la performance de l’algorithme. Sur quel(s) autre(s) paramètre(s) peut-on jouer pour essayer d’améliorer cette performance ? Étudier l’influence d’au moins deux de ces paramètres.</p></article></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Monday 8 November 2021 11:31">Monday 8 November 2021</span>. Using Julia version 1.4.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>La méthode des régions de confiance · Optinum.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Optinum.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">Optinum.jl</span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Accueil</a></li><li><a class="tocitem" href="Sujet.html">Sujet</a></li><li><span class="tocitem">Algorithmes</span><ul><li><a class="tocitem" href="Algorithme_de_newton.html">L&#39;algorithme de Newton local</a></li><li class="is-active"><a class="tocitem" href="Regions_de_confiance.html">La méthode des régions de confiance</a><ul class="internal"><li><a class="tocitem" href="#Principe-1"><span>Principe</span></a></li><li><a class="tocitem" href="#Algorithme-1"><span>Algorithme</span></a></li><li><a class="tocitem" href="#Le-pas-de-cauchy-1"><span>Le pas de cauchy</span></a></li><li><a class="tocitem" href="#Algorithme-du-Gradient-Conjugué-Tronqué-1"><span>Algorithme du Gradient Conjugué Tronqué</span></a></li></ul></li><li><a class="tocitem" href="Lagrangien_augmente.html">La méthode du Lagrangien augmenté</a></li></ul></li><li><a class="tocitem" href="fct_index.html">Index des fonctions</a></li><li><a class="tocitem" href="Annexes.html">Annexes</a></li><li><a class="tocitem" href="mise_en_place.html">Installation de Julia et tests unitaires</a></li><li><a class="tocitem" href="FAQ.html">Foire aux Questions</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Algorithmes</a></li><li class="is-active"><a href="Regions_de_confiance.html">La méthode des régions de confiance</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="Regions_de_confiance.html">La méthode des régions de confiance</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com//blob/master/docs/src/Regions_de_confiance.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Régions-de-confiance-partie-1-1"><a class="docs-heading-anchor" href="#Régions-de-confiance-partie-1-1">Régions de confiance partie 1</a><a class="docs-heading-anchor-permalink" href="#Régions-de-confiance-partie-1-1" title="Permalink"></a></h1><p>L’introduction d’une <em>région de confiance</em> dans la méthode de Newton permet de garantir la convergence globale de celle-ci, i.e. la convergence vers un optimum local quel que soit le point de départ. Cela suppose certaines conditions sur la résolution locale des sous- problèmes issus de la méthode, qui sont aisément imposables.</p><h2 id="Principe-1"><a class="docs-heading-anchor" href="#Principe-1">Principe</a><a class="docs-heading-anchor-permalink" href="#Principe-1" title="Permalink"></a></h2><p>L’idée de la méthode des régions de confiance est d’approcher <span>$f$</span> par une fonction modèle plus simple <span>$m_{k}$</span> dans une région <span>$R_{k}=\left\{x_{k}+s ;\|s\| \leq \Delta_{k}\right\}$</span> pour un <span>$\Delta_{k}$</span> fixé. Cette région dite “de confiance” doit être suffisament petite pour que</p><p><span>$\hspace*{2.5cm}$</span> <span>$m_{k}\left(x_{k}+s\right) \sim f\left(x_{k}+s\right).$</span></p><p>Le principe est que, au lieu de résoudre : <span>$f\left(x_{k+1}\right)=\min _{\|x\| \leq \Delta_{k}} f\left(x_{k}+s\right)$</span> on résout :</p><p><span>$\hspace*{2.5cm}$</span> <span>$m_{k}\left(x_{k+1}\right)=\min _{\|x\| \leq \Delta_{k}} m_{k}\left(x_{k}+s\right)$</span> <span>$\hspace*{2.5cm}.$</span>(2.1)</p><p>Si la différence entre <span>$f(x_{k+1})$</span> et <span>$m_{k} (x_{k+1} )$</span> est trop grande, on diminue le <span>$∆_{k}$</span> (et donc la région de confiance) et on résout le modèle (2.1) à nouveau. Un avantage de cette méthode est que toutes les directions sont prises en compte. Par contre, il faut faire attention à ne pas trop s’éloigner de <span>$x_{k}$</span> ; en général, la fonction <span>$m_{k}$</span> n’approche proprement <span>$f$</span> que sur une région proche de <span>$x_{k}$</span> .</p><p>Exemple de modèle : l’approximation de Taylor à l’ordre 2 (modèle quadratique) :</p><p><span>$\hspace*{1.5cm}$</span> <span>$m_{k}\left(x_{k}+s\right)=q_{k}(s)=f\left(x_{k}\right)+g_{k}^{\top} s+\frac{1}{2} s^{\top} H_{k} s$</span> <span>$\hspace*{1.5cm},$</span>(2.2)</p><p>avec <span>$g_{k}=\nabla f\left(x_{k}\right) \text { et } H_{k}=\nabla^{2} f\left(x_{k}\right).$</span></p><h2 id="Algorithme-1"><a class="docs-heading-anchor" href="#Algorithme-1">Algorithme</a><a class="docs-heading-anchor-permalink" href="#Algorithme-1" title="Permalink"></a></h2><h4 id="Algorithme-2-1"><a class="docs-heading-anchor" href="#Algorithme-2-1">Algorithme 2</a><a class="docs-heading-anchor-permalink" href="#Algorithme-2-1" title="Permalink"></a></h4><p><em>Méthode des régions de confiance (algo général)</em> </p><h5 id="Données:-1"><a class="docs-heading-anchor" href="#Données:-1">Données:</a><a class="docs-heading-anchor-permalink" href="#Données:-1" title="Permalink"></a></h5><p><span>$\Delta_{\max } &gt; 0, \Delta_{0} \in(0, \Delta_{\max}), 0 &lt; \gamma_{1} &lt; 1 &lt; \gamma_{2} , 0 &lt; \eta_{1} &lt; \eta_{2} &lt; 1.$</span></p><h5 id="Sorties:-1"><a class="docs-heading-anchor" href="#Sorties:-1">Sorties:</a><a class="docs-heading-anchor-permalink" href="#Sorties:-1" title="Permalink"></a></h5><p>une approximation de la solution du problème : <span>$\min _{x \in \mathbb{R}^{n}} f(x).$</span></p><h5 id=".Tant-que-le-test-de-convergence-est-non-satisfait-:-1"><a class="docs-heading-anchor" href="#.Tant-que-le-test-de-convergence-est-non-satisfait-:-1">1.Tant que le test de convergence est non satisfait :</a><a class="docs-heading-anchor-permalink" href="#.Tant-que-le-test-de-convergence-est-non-satisfait-:-1" title="Permalink"></a></h5><p><span>$\hspace*{1.5cm}$</span> a.Calculer approximativement <span>$s_{k}$</span> solution du sous-problème (2.1).</p><p><span>$\hspace*{1.5cm}$</span> b.Evaluer <span>$f\left(x_{k}+s_{k}\right)$</span> et <span>$\rho_{k}=\frac{f\left(x_{k}\right)-f\left(x_{k}+s_{k}\right)}{m_{k}\left(x_{k}\right)-m_{k}\left(x_{k}+s_{k}\right)}.$</span></p><p><span>$\hspace*{1.5cm}$</span> c. Mettre à jour l’itéré courant :</p><p><span>$\hspace*{2.5cm}$</span> <span>$x_{k+1}=\left\{\begin{array}{ll} x_{k}+s_{k} &amp; \text { si } \rho_{k} \geq \eta_{1} \\ x_{k} &amp; \text { sinon. } \end{array}\right.$</span></p><p><span>$\hspace*{1.5cm}$</span> d. Mettre à jour la région de confiance : </p><p><span>$\hspace*{2.5cm}$</span> <span>$\Delta_{k+1}=\left\{\begin{array}{cc}\min \{\gamma_{2} \Delta_{k}, \Delta_{\max }\} &amp; \operatorname{si} \rho_{k} \geq \eta_{2} \\ \Delta_{k} &amp; \text{ si } \rho_{k} \in [\eta_{1}, \eta_{2}]. \\\gamma_{1} \Delta_{k} &amp; \text { sinon. } \end{array}\right.$</span></p><h5 id=".Retourner-x_{k}.-1"><a class="docs-heading-anchor" href="#.Retourner-x_{k}.-1">2.Retourner <span>$x_{k}$</span>.</a><a class="docs-heading-anchor-permalink" href="#.Retourner-x_{k}.-1" title="Permalink"></a></h5><p>Cet algorithme est un cadre générique. On va s’intéresser à deux raffinages possibles de l’étape a.</p><h2 id="Le-pas-de-cauchy-1"><a class="docs-heading-anchor" href="#Le-pas-de-cauchy-1">Le pas de cauchy</a><a class="docs-heading-anchor-permalink" href="#Le-pas-de-cauchy-1" title="Permalink"></a></h2><p><span>$\hspace*{0.5cm}$</span>On considère ici le modèle quadratique <span>$q_{k}(s)$</span>. Le sous-problème de régions de confiance correspondant peut se révéler difficile à résoudre (parfois autant que le problème de départ).</p><p>Il est donc intéressant de se restreindre à une résolution approchée de ce problème.</p><p><span>$\hspace*{0.5cm}$</span>Le pas de Cauchy appartient à la catégorie des solutions approchées. Il s’agit de se restreindre au sous-espace engendré par le vecteur <span>$g_{k}$</span> ; le sous-problème s’écrit alors</p><p><span>$\hspace*{2.5cm}$</span> <span>$\left\{\begin{array}{cl} \min &amp; q_{k}(s) \\ s . t . &amp; s=-t g_{k} \\ &amp; t&gt;0 \\ &amp; \|s\| \leq \Delta_{k} \end{array}\right.$</span> <span>$\hspace*{1.5cm}$</span> (2.3)</p><h2 id="Algorithme-du-Gradient-Conjugué-Tronqué-1"><a class="docs-heading-anchor" href="#Algorithme-du-Gradient-Conjugué-Tronqué-1">Algorithme du Gradient Conjugué Tronqué</a><a class="docs-heading-anchor-permalink" href="#Algorithme-du-Gradient-Conjugué-Tronqué-1" title="Permalink"></a></h2><p>On s’intéresse maintenant à la résolution approchée du problème (2.1) à l’itération k de l’algorithme 2 des Régions de Confiance. On considère pour cela l’algorithme du Gradient Conjugué Tronqué (vu en cours), rappelé ci-après :</p><h6 id="Algorithme-3-1"><a class="docs-heading-anchor" href="#Algorithme-3-1">Algorithme 3</a><a class="docs-heading-anchor-permalink" href="#Algorithme-3-1" title="Permalink"></a></h6><p><em>Algorithme du gradient conjugué tronqué</em></p><h6 id="Données:-2"><a class="docs-heading-anchor" href="#Données:-2">Données:</a><a class="docs-heading-anchor-permalink" href="#Données:-2" title="Permalink"></a></h6><p><span>$\Delta_{k} &gt; 0, x_{k}, g=\nabla f\left(x_{k}\right), H=\nabla^{2} f\left(x_{k}\right)$</span></p><h6 id="Sorties:-2"><a class="docs-heading-anchor" href="#Sorties:-2">Sorties:</a><a class="docs-heading-anchor-permalink" href="#Sorties:-2" title="Permalink"></a></h6><p>le pas <span>$s$</span> qui approche la solution du problème : <span>$\min_{\|s \| \leq \Delta_{k}} q(s)$</span></p><p><span>$q(s)=g^{\top} s+\frac{1}{2} s^{\top} H_{k} s$</span></p><h6 id="Initialisations-:-1"><a class="docs-heading-anchor" href="#Initialisations-:-1">Initialisations :</a><a class="docs-heading-anchor-permalink" href="#Initialisations-:-1" title="Permalink"></a></h6><p><span>$s_{0}=0, g_{0}=g, p_{0}=-g$</span></p><p><strong>1. Pour</strong> j = 0, 1, 2, . . . , <strong>faire</strong> :</p><p><span>$\hspace*{1.5cm}$</span> a. <span>$\hspace*{0.4cm}$</span> <span>$\kappa_{j}=p_{j}^{T} H p_{j}$</span></p><p><span>$\hspace*{1.5cm}$</span> b.<span>$\hspace*{0.4cm}$</span> Si <span>$\kappa_{j} \leq 0$</span> alors <span>$\\$</span> <span>$\hspace*{2.5cm}$</span> déterminer <span>$\sigma_{j}$</span> la racine de l’équation <span>$\left\|s_{j}+\sigma p_{j}\right\|_{2}=\Delta_{k}\\$</span> <span>$\hspace*{2.7cm}$</span> pour laquelle la valeur de <span>$q\left(s_{j}+\sigma p_{j}\right)$</span> est la plus petite.</p><p><span>$\hspace*{2.5cm}$</span> Poser <span>$s=s_{j}+\sigma_{j} p_{j}$</span> et sortir de la boucle.<span>$\\$</span> <span>$\hspace*{1.5cm}$</span> Fin Si</p><p><span>$\hspace*{1.5cm}$</span> c. <span>$\hspace*{0.4cm}$</span> <span>$\alpha_{j}=g_{j}^{T} g_{j} / \kappa_{j}\\$</span></p><p><span>$\hspace*{1.5cm}$</span> d.<span>$\hspace*{0.4cm}$</span> Si <span>$\left\|s_{j}+\alpha_{j} p_{j}\right\|_{2} \geq \Delta_{k}$</span> alors</p><p><span>$\hspace*{2.5cm}$</span> déterminer <span>$\sigma_{j}$</span> la racine positive de l’équation <span>$\left\|s_{j}+\sigma p_{j}\right\|_{2}=\Delta_{k}\\$</span></p><p><span>$\hspace*{2.5cm}$</span> Poser <span>$s=s_{j}+\sigma_{j} p_{j}$</span> et sortir de la boucle.<span>$\\$</span> <span>$\hspace*{1.5cm}$</span> Fin Si</p><p><span>$\hspace*{1.5cm}$</span> e. <span>$\hspace*{0.4cm}$</span> <span>$s_{j+1}=s_{j}+\alpha_{j} p_{j}\\$</span> <span>$\hspace*{1.5cm}$</span> f. <span>$\hspace*{0.4cm}$</span> <span>$g_{j+1}=g_{j}+\alpha_{j} H p_{j}\\$</span> <span>$\hspace*{1.5cm}$</span> g. <span>$\hspace*{0.4cm}$</span> <span>$\beta_{j}=g_{j+1}^{T} g_{j+1} / g_{j}^{T} g_{j}\\$</span> <span>$\hspace*{1.5cm}$</span> h. <span>$\hspace*{0.4cm}$</span> <span>$p_{j+1}=-g_{j+1}+\beta_{j} p_{j}\\$</span> <span>$\hspace*{1.5cm}$</span> i. <span>$\hspace*{0.4cm}$</span> Si la convergence est suffisante (<span>$\|g_{j+1}\|\leq Tol\_rel\|g_0\|$</span>), poser <span>$s=s_{j+1}$</span> et sortir de la boucle.</p><h6 id="Retourner-s.-1"><a class="docs-heading-anchor" href="#Retourner-s.-1">Retourner <span>$s$</span>.</a><a class="docs-heading-anchor-permalink" href="#Retourner-s.-1" title="Permalink"></a></h6></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="Algorithme_de_newton.html">« L&#39;algorithme de Newton local</a><a class="docs-footer-nextpage" href="Lagrangien_augmente.html">La méthode du Lagrangien augmenté »</a></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Monday 8 November 2021 11:31">Monday 8 November 2021</span>. Using Julia version 1.4.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Sujet · Optinum.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Optinum.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">Optinum.jl</span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Accueil</a></li><li class="is-active"><a class="tocitem" href="Sujet.html">Sujet</a><ul class="internal"><li><a class="tocitem" href="#Optimisation-sans-contraintes-1"><span>Optimisation sans contraintes</span></a></li><li><a class="tocitem" href="#Optimisation-avec-contraintes-1"><span>Optimisation avec contraintes</span></a></li></ul></li><li><span class="tocitem">Algorithmes</span><ul><li><a class="tocitem" href="Algorithme_de_newton.html">L&#39;algorithme de Newton local</a></li><li><a class="tocitem" href="Regions_de_confiance.html">La méthode des régions de confiance</a></li><li><a class="tocitem" href="Lagrangien_augmente.html">La méthode du Lagrangien augmenté</a></li></ul></li><li><a class="tocitem" href="fct_index.html">Index des fonctions</a></li><li><a class="tocitem" href="Annexes.html">Annexes</a></li><li><a class="tocitem" href="mise_en_place.html">Installation de Julia et tests unitaires</a></li><li><a class="tocitem" href="FAQ.html">Foire aux Questions</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href="Sujet.html">Sujet</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="Sujet.html">Sujet</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com//blob/master/docs/src/Sujet.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Sujet-TP-Projet-Optimisation-numérique-2A-ENSEEIHT-1"><a class="docs-heading-anchor" href="#Sujet-TP-Projet-Optimisation-numérique-2A-ENSEEIHT-1">Sujet TP-Projet Optimisation numérique 2A-ENSEEIHT</a><a class="docs-heading-anchor-permalink" href="#Sujet-TP-Projet-Optimisation-numérique-2A-ENSEEIHT-1" title="Permalink"></a></h1><p>La première partie de ce TP-projet concerne les problèmes d’optimisation sans contraintes. On étudie la méthode de Newton et sa globalisation par l’algorithme des régions de confiance. La résolution du sous-problème des régions de confiance sera réalisée de deux façons, soit à l’aide du point de Cauchy, soit par l’algorithme du Gra- dient Conjugué Tronqué. La seconde partie du projet exploite la partie précédente pour résoudre des problèmes d’optimisation avec contraintes par l’algorithme du Lagrangien augmenté. </p><h2 id="Optimisation-sans-contraintes-1"><a class="docs-heading-anchor" href="#Optimisation-sans-contraintes-1">Optimisation sans contraintes</a><a class="docs-heading-anchor-permalink" href="#Optimisation-sans-contraintes-1" title="Permalink"></a></h2><p>Dans cette partie, on s’intéresse à la résolution du problème</p><p><span>$\min _{x \in \mathbb{R}^{n}} f(x)$</span></p><p>où la fonction <span>$f$</span> est de classe <span>$C^{2}$</span> sur <span>$R^{n}$</span> . On cherche donc à exploiter l’information fournie par ses dérivées première et seconde, que l’on représente en tout point x par le vecteur gradient <span>$\nabla f (x) \in R^{n}$</span> et la matrice Hessienne <span>$\nabla^{2} f (x) \in R^{n\times n}$</span>.</p><p><a href="Algorithme_de_newton.html">1) Algorithme de Newton local</a></p><p><a href="Regions_de_confiance.html">2) La méthode des régions de confiance</a></p><h2 id="Optimisation-avec-contraintes-1"><a class="docs-heading-anchor" href="#Optimisation-avec-contraintes-1">Optimisation avec contraintes</a><a class="docs-heading-anchor-permalink" href="#Optimisation-avec-contraintes-1" title="Permalink"></a></h2><p>Dans cette partie, nous nous intéressons à la résolution des problèmes sous contraintes. Le problème se présente donc sous la forme suivante :</p><p><span>$\min _{x \in \mathbb{R}^{n}} f(x)$</span> sous la contrainte <span>$x \in C$</span></p><p>où C est un sous-ensemble non vide de <span>$\mathbb{R}^{n}$</span>.</p><p><a href="Lagrangien_augmente.html">3) Lagrangien Augmenté</a></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="index.html">« Accueil</a><a class="docs-footer-nextpage" href="Algorithme_de_newton.html">L&#39;algorithme de Newton local »</a></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Monday 8 November 2021 11:31">Monday 8 November 2021</span>. Using Julia version 1.4.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
// Generated by Documenter.jl
requirejs.config({
paths: {
'highlight-julia': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.10/languages/julia.min',
'headroom': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.10.3/headroom.min',
'jqueryui': 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min',
'katex-auto-render': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/contrib/auto-render.min',
'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min',
'headroom-jquery': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.10.3/jQuery.headroom.min',
'katex': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min',
'highlight': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.10/highlight.min',
'highlight-julia-repl': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.10/languages/julia-repl.min',
},
shim: {
"highlight-julia": {
"deps": [
"highlight"
]
},
"katex-auto-render": {
"deps": [
"katex"
]
},
"headroom-jquery": {
"deps": [
"jquery",
"headroom"
]
},
"highlight-julia-repl": {
"deps": [
"highlight"
]
}
}
});
////////////////////////////////////////////////////////////////////////////////
require(['jquery', 'katex', 'katex-auto-render'], function($, katex, renderMathInElement) {
$(document).ready(function() {
renderMathInElement(
document.body,
{
"delimiters": [
{
"left": "$",
"right": "$",
"display": false
},
{
"left": "$$",
"right": "$$",
"display": true
},
{
"left": "\\[",
"right": "\\]",
"display": true
}
]
}
);
})
})
////////////////////////////////////////////////////////////////////////////////
require(['jquery', 'highlight', 'highlight-julia', 'highlight-julia-repl'], function($, hljs) {
$(document).ready(function() {
hljs.initHighlighting();
})
})
////////////////////////////////////////////////////////////////////////////////
require(['jquery', 'headroom', 'headroom-jquery'], function($, Headroom) {
// Manages the top navigation bar (hides it when the user starts scrolling down on the
// mobile).
window.Headroom = Headroom; // work around buggy module loading?
$(document).ready(function() {
$('#documenter .docs-navbar').headroom({
"tolerance": {"up": 10, "down": 10},
});
})
})
////////////////////////////////////////////////////////////////////////////////
require(['jquery'], function($) {
// Modal settings dialog
$(document).ready(function() {
var settings = $('#documenter-settings');
$('#documenter-settings-button').click(function(){
settings.toggleClass('is-active');
});
// Close the dialog if X is clicked
$('#documenter-settings button.delete').click(function(){
settings.removeClass('is-active');
});
// Close dialog if ESC is pressed
$(document).keyup(function(e) {
if (e.keyCode == 27) settings.removeClass('is-active');
});
});
})
////////////////////////////////////////////////////////////////////////////////
require(['jquery'], function($) {
// Manages the showing and hiding of the sidebar.
$(document).ready(function() {
var sidebar = $("#documenter > .docs-sidebar");
var sidebar_button = $("#documenter-sidebar-button")
sidebar_button.click(function(ev) {
ev.preventDefault();
sidebar.toggleClass('visible');
if (sidebar.hasClass('visible')) {
// Makes sure that the current menu item is visible in the sidebar.
$("#documenter .docs-menu a.is-active").focus();
}
});
$("#documenter > .docs-main").bind('click', function(ev) {
if ($(ev.target).is(sidebar_button)) {
return;
}
if (sidebar.hasClass('visible')) {
sidebar.removeClass('visible');
}
});
})
// Resizes the package name / sitename in the sidebar if it is too wide.
// Inspired by: https://github.com/davatron5000/FitText.js
$(document).ready(function() {
e = $("#documenter .docs-autofit");
function resize() {
var L = parseInt(e.css('max-width'), 10);
var L0 = e.width();
if(L0 > L) {
var h0 = parseInt(e.css('font-size'), 10);
e.css('font-size', L * h0 / L0);
// TODO: make sure it survives resizes?
}
}
// call once and then register events
resize();
$(window).resize(resize);
$(window).on('orientationchange', resize);
});
// Scroll the navigation bar to the currently selected menu item
$(document).ready(function() {
var sidebar = $("#documenter .docs-menu").get(0);
var active = $("#documenter .docs-menu .is-active").get(0);
if(typeof active !== 'undefined') {
sidebar.scrollTop = active.offsetTop - sidebar.offsetTop - 15;
}
})
})
////////////////////////////////////////////////////////////////////////////////
require(['jquery'], function($) {
function set_theme(theme) {
var active = null;
var disabled = [];
for (var i = 0; i < document.styleSheets.length; i++) {
var ss = document.styleSheets[i];
var themename = ss.ownerNode.getAttribute("data-theme-name");
if(themename === null) continue; // ignore non-theme stylesheets
// Find the active theme
if(themename === theme) active = ss;
else disabled.push(ss);
}
if(active !== null) {
active.disabled = false;
if(active.ownerNode.getAttribute("data-theme-primary") === null) {
document.getElementsByTagName('html')[0].className = "theme--" + theme;
} else {
document.getElementsByTagName('html')[0].className = "";
}
disabled.forEach(function(ss){
ss.disabled = true;
});
}
// Store the theme in localStorage
if(typeof(window.localStorage) !== "undefined") {
window.localStorage.setItem("documenter-theme", theme);
} else {
console.error("Browser does not support window.localStorage");
}
}
// Theme picker setup
$(document).ready(function() {
// onchange callback
$('#documenter-themepicker').change(function themepick_callback(ev){
var themename = $('#documenter-themepicker option:selected').attr('value');
set_theme(themename);
});
// Make sure that the themepicker displays the correct theme when the theme is retrieved
// from localStorage
if(typeof(window.localStorage) !== "undefined") {
var theme = window.localStorage.getItem("documenter-theme");
if(theme !== null) {
$('#documenter-themepicker option').each(function(i,e) {
e.selected = (e.value === theme);
})
}
}
})
})
////////////////////////////////////////////////////////////////////////////////
require(['jquery'], function($) {
// update the version selector with info from the siteinfo.js and ../versions.js files
$(document).ready(function() {
var version_selector = $("#documenter .docs-version-selector");
var version_selector_select = $("#documenter .docs-version-selector select");
version_selector_select.change(function(x) {
target_href = version_selector_select.children("option:selected").get(0).value;
window.location.href = target_href;
});
// add the current version to the selector based on siteinfo.js, but only if the selector is empty
if (typeof DOCUMENTER_CURRENT_VERSION !== 'undefined' && $('#version-selector > option').length == 0) {
var option = $("<option value='#' selected='selected'>" + DOCUMENTER_CURRENT_VERSION + "</option>");
version_selector_select.append(option);
}
if (typeof DOC_VERSIONS !== 'undefined') {
var existing_versions = version_selector_select.children("option");
var existing_versions_texts = existing_versions.map(function(i,x){return x.text});
DOC_VERSIONS.forEach(function(each) {
var version_url = documenterBaseURL + "/../" + each;
var existing_id = $.inArray(each, existing_versions_texts);
// if not already in the version selector, add it as a new option,
// otherwise update the old option with the URL and enable it
if (existing_id == -1) {
var option = $("<option value='" + version_url + "'>" + each + "</option>");
version_selector_select.append(option);
} else {
var option = existing_versions[existing_id];
option.value = version_url;
option.disabled = false;
}
});
}
// only show the version selector if the selector has been populated
if (version_selector_select.children("option").length > 0) {
version_selector.toggleClass("visible");
}
})
})
docs/build/assets/logo.png

44.1 KiB

// Generated by Documenter.jl
requirejs.config({
paths: {
'lunr': 'https://cdnjs.cloudflare.com/ajax/libs/lunr.js/2.3.6/lunr.min',
'lodash': 'https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min',
'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min',
}
});
////////////////////////////////////////////////////////////////////////////////
require(['jquery', 'lunr', 'lodash'], function($, lunr, _) {
$(document).ready(function() {
// parseUri 1.2.2
// (c) Steven Levithan <stevenlevithan.com>
// MIT License
function parseUri (str) {
var o = parseUri.options,
m = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
uri = {},
i = 14;
while (i--) uri[o.key[i]] = m[i] || "";
uri[o.q.name] = {};
uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
if ($1) uri[o.q.name][$1] = $2;
});
return uri;
};
parseUri.options = {
strictMode: false,
key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
q: {
name: "queryKey",
parser: /(?:^|&)([^&=]*)=?([^&]*)/g
},
parser: {
strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
}
};
$("#search-form").submit(function(e) {
e.preventDefault()
})
// list below is the lunr 2.1.3 list minus the intersect with names(Base)
// (all, any, get, in, is, only, which) and (do, else, for, let, where, while, with)
// ideally we'd just filter the original list but it's not available as a variable
lunr.stopWordFilter = lunr.generateStopWordFilter([
'a',
'able',
'about',
'across',
'after',
'almost',
'also',
'am',
'among',
'an',
'and',
'are',
'as',
'at',
'be',
'because',
'been',
'but',
'by',
'can',
'cannot',
'could',
'dear',
'did',
'does',
'either',
'ever',
'every',
'from',
'got',
'had',
'has',
'have',
'he',
'her',
'hers',
'him',
'his',
'how',
'however',
'i',
'if',
'into',
'it',
'its',
'just',
'least',
'like',
'likely',
'may',
'me',
'might',
'most',
'must',
'my',
'neither',
'no',
'nor',
'not',
'of',
'off',
'often',
'on',
'or',
'other',
'our',
'own',
'rather',
'said',
'say',
'says',
'she',
'should',
'since',
'so',
'some',
'than',
'that',
'the',
'their',
'them',
'then',
'there',
'these',
'they',
'this',
'tis',
'to',
'too',
'twas',
'us',
'wants',
'was',
'we',
'were',
'what',
'when',
'who',
'whom',
'why',
'will',
'would',
'yet',
'you',
'your'
])
// add . as a separator, because otherwise "title": "Documenter.Anchors.add!"
// would not find anything if searching for "add!", only for the entire qualification
lunr.tokenizer.separator = /[\s\-\.]+/
// custom trimmer that doesn't strip @ and !, which are used in julia macro and function names
lunr.trimmer = function (token) {
return token.update(function (s) {
return s.replace(/^[^a-zA-Z0-9@!]+/, '').replace(/[^a-zA-Z0-9@!]+$/, '')
})
}
lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'juliaStopWordFilter')
lunr.Pipeline.registerFunction(lunr.trimmer, 'juliaTrimmer')
var index = lunr(function () {
this.ref('location')
this.field('title',{boost: 100})
this.field('text')
documenterSearchIndex['docs'].forEach(function(e) {
this.add(e)
}, this)
})
var store = {}
documenterSearchIndex['docs'].forEach(function(e) {
store[e.location] = {title: e.title, category: e.category}
})
$(function(){
searchresults = $('#documenter-search-results');
searchinfo = $('#documenter-search-info');
searchbox = $('#documenter-search-query');
function update_search(querystring) {
tokens = lunr.tokenizer(querystring)
results = index.query(function (q) {
tokens.forEach(function (t) {
q.term(t.toString(), {
fields: ["title"],
boost: 100,
usePipeline: true,
editDistance: 0,
wildcard: lunr.Query.wildcard.NONE
})
q.term(t.toString(), {
fields: ["title"],
boost: 10,
usePipeline: true,
editDistance: 2,
wildcard: lunr.Query.wildcard.NONE
})
q.term(t.toString(), {
fields: ["text"],
boost: 1,
usePipeline: true,
editDistance: 0,
wildcard: lunr.Query.wildcard.NONE
})
})
})
searchinfo.text("Number of results: " + results.length)
searchresults.empty()
results.forEach(function(result) {
data = store[result.ref]
link = $('<a class="docs-label">'+data.title+'</a>')
link.attr('href', documenterBaseURL+'/'+result.ref)
cat = $('<span class="docs-category">('+data.category+')</span>')
li = $('<li>').append(link).append(" ").append(cat)
searchresults.append(li)
})
}
function update_search_box() {
querystring = searchbox.val()
update_search(querystring)
}
searchbox.keyup(_.debounce(update_search_box, 250))
searchbox.change(update_search_box)
search_query_uri = parseUri(window.location).queryKey["q"]
if(search_query_uri !== undefined) {
search_query = decodeURIComponent(search_query_uri.replace(/\+/g, '%20'))
searchbox.val(search_query)
}
update_search_box();
})
})
})
This diff is collapsed.
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment