Skip to content
Snippets Groups Projects
Commit a40028ae authored by orestis.malaspin's avatar orestis.malaspin
Browse files

corrected conflict

parents c80f3b2b 886a0623
No related branches found
No related tags found
No related merge requests found
Pipeline #
...@@ -277,6 +277,7 @@ Sur la @fig:sin_noise, on voit un signal échantillonné (en noir) et sa dériv ...@@ -277,6 +277,7 @@ Sur la @fig:sin_noise, on voit un signal échantillonné (en noir) et sa dériv
numériquement. Nous étudieront également l'erreur effectuée lors de ces approximations. numériquement. Nous étudieront également l'erreur effectuée lors de ces approximations.
Afin de créer la @fig:sin_noise nous avons utilisé le listing suivant Afin de créer la @fig:sin_noise nous avons utilisé le listing suivant
```{.python} ```{.python}
import numpy as np import numpy as np
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
...@@ -342,6 +343,7 @@ de la précision de l'approximation. Dans la section suivante nous allons justem ...@@ -342,6 +343,7 @@ de la précision de l'approximation. Dans la section suivante nous allons justem
![Comparaison entre les différences finies en avant (en croix rouges) et en arrière (ronds verts) d'ordre un et centrées d'ordre deux (carré cyan) avec la dérivée exacte $f'(x)=3x^2$ (en trait plein bleu) de la fonction $f(x)=x^3$ (en trait plein noir).](figs/finite_diff.svg){#fig:finite_diff width=70%} ![Comparaison entre les différences finies en avant (en croix rouges) et en arrière (ronds verts) d'ordre un et centrées d'ordre deux (carré cyan) avec la dérivée exacte $f'(x)=3x^2$ (en trait plein bleu) de la fonction $f(x)=x^3$ (en trait plein noir).](figs/finite_diff.svg){#fig:finite_diff width=70%}
La @fig:finite_diff est obtenue avec le listing suivant La @fig:finite_diff est obtenue avec le listing suivant
```python ```python
import numpy as np import numpy as np
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
...@@ -385,7 +387,6 @@ pour un $h$ donné. En revanche, on peut connaître l'ordre de l'erreur, c'est- ...@@ -385,7 +387,6 @@ pour un $h$ donné. En revanche, on peut connaître l'ordre de l'erreur, c'est-
comment l'erreur va dépendre de $h$. Pour ce faire nous allons utiliser le développement comment l'erreur va dépendre de $h$. Pour ce faire nous allons utiliser le développement
de Taylor et ce que nous connaissons de l'erreur de l'approximation en série de Taylor. de Taylor et ce que nous connaissons de l'erreur de l'approximation en série de Taylor.
### Méthode de différences finies vers l'avant d'ordre 1 ### Méthode de différences finies vers l'avant d'ordre 1
Dans cette sous section nous essayons de déterminer l'erreur que nous commettons lorsque Dans cette sous section nous essayons de déterminer l'erreur que nous commettons lorsque
...@@ -423,6 +424,7 @@ que l'erreur est bornée par une droite donc la pente est donnée par le maximum ...@@ -423,6 +424,7 @@ que l'erreur est bornée par une droite donc la pente est donnée par le maximum
de $f(x)$ sur l'intervalle $[0,0.5]$.](figs/deriv_avant_1.svg){#fig:deriv_avant_1 width=70%} de $f(x)$ sur l'intervalle $[0,0.5]$.](figs/deriv_avant_1.svg){#fig:deriv_avant_1 width=70%}
La @fig:deriv_avant_1 est obtenue à l'aide du listing suivant La @fig:deriv_avant_1 est obtenue à l'aide du listing suivant
```python ```python
import numpy as np import numpy as np
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
...@@ -807,8 +809,6 @@ Déterminer la formule pour $f''(x_0)$ en utilisant la formule de la dérivée e ...@@ -807,8 +809,6 @@ Déterminer la formule pour $f''(x_0)$ en utilisant la formule de la dérivée e
--- ---
## Résumé ## Résumé
Dans ce chapitre, nous avons vu comment approximer le calcul de dérivées numériquement et prédire l'ordre de l'erreur de ces approximations. Dans ce chapitre, nous avons vu comment approximer le calcul de dérivées numériquement et prédire l'ordre de l'erreur de ces approximations.
...@@ -1001,7 +1001,7 @@ On a donc que $p_1(x)$ peut se mettre sous la forme ...@@ -1001,7 +1001,7 @@ On a donc que $p_1(x)$ peut se mettre sous la forme
$$ $$
p_1(x)=y_0+(x-x_0)f'(x_0). p_1(x)=y_0+(x-x_0)f'(x_0).
$$ $$
Ce polynôme ressemble terriblement au développement de Taylor de $f(x)$ proche de $x_0$ Ce polynôme ressemble terriblement au développement de Taylor de $f(x)$ proche de $x_0$.
Si à présent, nous avons $3$ points à disposition, soit Si à présent, nous avons $3$ points à disposition, soit
$(x_0,y_0)$, $(x_1,y_1)$, et $(x_2,y_2)$, nous pouvons faire passer un polynôme de degré deux par ces points. Comme nous connaissons déjà le polynôme de degré un passant par $(x_0,y_0)$ et $(x_1,y_1)$, nous $(x_0,y_0)$, $(x_1,y_1)$, et $(x_2,y_2)$, nous pouvons faire passer un polynôme de degré deux par ces points. Comme nous connaissons déjà le polynôme de degré un passant par $(x_0,y_0)$ et $(x_1,y_1)$, nous
...@@ -1098,7 +1098,6 @@ Bonne nouvelle donc! ...@@ -1098,7 +1098,6 @@ Bonne nouvelle donc!
![Le polynôme d'interpolation (en rouge) passant par les points noirs, qui échantillonnent la fonction $f(x)=\sin(x)$ pour $n=5$ points (à gauche) ![Le polynôme d'interpolation (en rouge) passant par les points noirs, qui échantillonnent la fonction $f(x)=\sin(x)$ pour $n=5$ points (à gauche)
et $n=20$ à droite.](figs/sin_interp_n.svg){#fig:sin_interp_n width=100%} et $n=20$ à droite.](figs/sin_interp_n.svg){#fig:sin_interp_n width=100%}
En revanche pour la fonction $g(x)$, on voit sur la @fig:one_over_one_x2 qu'en augmentant $n=5$ à $n=20$, le polynôme d'interpolation En revanche pour la fonction $g(x)$, on voit sur la @fig:one_over_one_x2 qu'en augmentant $n=5$ à $n=20$, le polynôme d'interpolation
s'approche de plus en plus de $g(x)$ proche du centre du domaine ($x\cong0$), mais que sur les bords, s'approche de plus en plus de $g(x)$ proche du centre du domaine ($x\cong0$), mais que sur les bords,
l'interpolation devient de plus en plus mauvaise. Ceci est donc une mauvaise nouvelle! l'interpolation devient de plus en plus mauvaise. Ceci est donc une mauvaise nouvelle!
...@@ -1206,7 +1205,6 @@ De façon générale cette fonction sera continue, mais pas dérivable (comme on ...@@ -1206,7 +1205,6 @@ De façon générale cette fonction sera continue, mais pas dérivable (comme on
--- ---
Nous voulons à présent savoir si notre fonction $f_h(x)\rightarrow f(x)$, pour $h\rightarrow 0$ (ce qui est équivalent à $N\rightarrow \infty$). Nous voulons à présent savoir si notre fonction $f_h(x)\rightarrow f(x)$, pour $h\rightarrow 0$ (ce qui est équivalent à $N\rightarrow \infty$).
En fait un théorème que nous ne démontrerons pas, nous dit que En fait un théorème que nous ne démontrerons pas, nous dit que
...@@ -1348,7 +1346,7 @@ s_i(x)&=y_i+\delta y[x_{i+1},x_i](x-x_i)+c(x-x_i)(x-x_{i+1})\nonumber\\ ...@@ -1348,7 +1346,7 @@ s_i(x)&=y_i+\delta y[x_{i+1},x_i](x-x_i)+c(x-x_i)(x-x_{i+1})\nonumber\\
\end{align} \end{align}
où $c$ et $d$ sont deux coefficients à déterminer. Le deuxième terme (proportionnel à $(x-x_i)(x-x_{i+1})$) est la forme standard des différences divisées de Newton, et le troisième est le terme s'annulant en $x_i$ et $x_{i+1}$ mais étant symétrique où $c$ et $d$ sont deux coefficients à déterminer. Le deuxième terme (proportionnel à $(x-x_i)(x-x_{i+1})$) est la forme standard des différences divisées de Newton, et le troisième est le terme s'annulant en $x_i$ et $x_{i+1}$ mais étant symétrique
(on ne veut pas de terme du type $(x-x_i)^2(x-x_{i+1})$ car cela romprait la symétrie). Avec les conditions $s_i'(x_i)=p_i$ et $s'_i(x_{i+1})=p_{i+1}$, on peut trouver (on ne veut pas de terme du type $(x-x_i)^2(x-x_{i+1})$ car cela romprait la symétrie). Avec les conditions $s_i'(x_i)=p_i$ et $s'_i(x_{i+1})=p_{i+1}$, on peut trouver
les coefficients $b$ et $c$ en résolvant les coefficients $c$ et $d$ en résolvant
\begin{align} \begin{align}
\delta y[x_{i+1},x_i]-c \left( x_{{i+1}}-x_{{i}} \right) +d \left( x_{{i+1}}-x_{{i}} \delta y[x_{i+1},x_i]-c \left( x_{{i+1}}-x_{{i}} \right) +d \left( x_{{i+1}}-x_{{i}}
\right) ^{2}=p_{{i}},\\ \right) ^{2}=p_{{i}},\\
...@@ -1357,11 +1355,11 @@ les coefficients $b$ et $c$ en résolvant ...@@ -1357,11 +1355,11 @@ les coefficients $b$ et $c$ en résolvant
\end{align} \end{align}
On trouve aisément que On trouve aisément que
\begin{align} \begin{align}
b&=\frac{1}{2}\left(\frac{p_{i+1}-p_i}{x_{i+1}-x_i}\right),\\ c&=\frac{1}{2}\left(\frac{p_{i+1}-p_i}{x_{i+1}-x_i}\right),\\
c&=\frac{1}{2}\frac{1}{(x_{i+1}-x_i)^2}\left(p_{i+1}+p_i-2\delta y[x_{i+1},x_i]\right). d&=\frac{1}{2}\frac{1}{(x_{i+1}-x_i)^2}\left(p_{i+1}+p_i-2\delta y[x_{i+1},x_i]\right).
\end{align} \end{align}
On constate donc que $b$ est proportionnel à la deuxième dérivée d'une fonction ayant pour dérivée $p_{i}$ et $p_{i+1}$ en $x_i$ et $x_{i+1}$ et que On constate donc que $c$ est proportionnel à la deuxième dérivée d'une fonction ayant pour dérivée $p_{i}$ et $p_{i+1}$ en $x_i$ et $x_{i+1}$ et que
$c$ est proportionnel à la deuxième dérivée d'une fonction ayant pour dérivée $p_{i}$, $p_{i+1}$, et $\delta y[x_{i+1},x_i]$ en $x_i$, $x_{i+1}$, et $x_{i+1/2}$. $d$ est proportionnel à la deuxième dérivée d'une fonction ayant pour dérivée $p_{i}$, $p_{i+1}$, et $\delta y[x_{i+1},x_i]$ en $x_i$, $x_{i+1}$, et $x_{i+1/2}$.
On a que $s_i(x)$ est donné par On a que $s_i(x)$ est donné par
\begin{align} \begin{align}
s_i(x)&=y_i+\delta y[x_{i+1},x_i](x-x_i)+\frac{1}{2(x_{i+1}-x_i)}\left(p_{i+1}-p_i\right)(x-x_i)(x-x_{i+1})\nonumber\\ s_i(x)&=y_i+\delta y[x_{i+1},x_i](x-x_i)+\frac{1}{2(x_{i+1}-x_i)}\left(p_{i+1}-p_i\right)(x-x_i)(x-x_{i+1})\nonumber\\
...@@ -1394,6 +1392,214 @@ $p_0$ et $p_N$ qui doivent être fixés de façon ad-hoc (et on restera donc ave ...@@ -1394,6 +1392,214 @@ $p_0$ et $p_N$ qui doivent être fixés de façon ad-hoc (et on restera donc ave
Pour chacune de ces conditions cela va imposer une valeur pour $p_0$ et $p_N$ (dans le cas 2 elles sont imposées explicitement, dans les deux autres cas elles sont déduites). Pour chacune de ces conditions cela va imposer une valeur pour $p_0$ et $p_N$ (dans le cas 2 elles sont imposées explicitement, dans les deux autres cas elles sont déduites).
# Optimisation
## Le voyageur de commerce
Le problème du voyageur du commerce est assez simple à formuler. Soit une liste de villes et les distances entre chaque paire connue. Quelle est
le parcours passant par toutes les villes une seule fois et arrivant dans la ville de départ minimisant la distance totale parcourue?
---
Exemple +.#
Soient les villes $A$, $B$, et $C$ comme sur la @fig:voyage_commerce. On peut comparer tous les chemins possibles
![Illustration des chemins entre les villes $A$, $B$, et $C$, ainsi que les distance les séparant.](figs/voyage_commerce.svg){#fig:voyage_commerce width=70%}
+------+------+------+------+------+------+
| ABC | ACB | BAC | BCA | CAB | CBA |
+------+------+------+------+------+------+
| 6 km | 6 km | 6 km | 6 km | 6 km | 6 km |
+------+------+------+------+------+------+
On constate d'abord que tous les trajets donnent le même résultat.
Essayons de comprendre pourquoi. La ville de départ ne change pas la longueur du chemin. On a donc que les chemins
"cycliques" ABC, BCA, CAB sont les mêmes chemins. De plus, comme les chemins peuvent être parcourus dans les deux sens,
on a également CBA, ACB et BAC sont les mêmes chemins. Il nous reste qu'un seul chemin possible.
---
---
Exercice +.#
![Illustration des chemins entre les villes $A$, $B$, $C$, et $D$ ainsi que les distance les séparant.](figs/voyage_commerce_4.svg){#fig:voyage_commerce_4 width=70%}
1. Combien de chemins possibles différents existe-t-il pour quatre villes $A$, $B$, $C$, et $D$?
2. Quel est le chemin le plus cours, si les distances entre les villes sont comme celles représentées sur la @fig:voyage_commerce_4?
3. Pouvez-vous généraliser le nomre de chemin à $N$ villes?
---
Le nombre total de chemin entre $n$ villes est de $n!$. Comme la ville de départ ne change pas le chemin à emprunter, on peut l'enlever du compte total,
il nous en reste donc $(n-1)!$. Finalement comme la direction dans laquelle nous parcourons le chemin ne change pas la distance,
nous pouvons encore diviser ce résultat par deux. Le nombre total de chemins existants est de $(n-1)!/2$. En supposant que le
calcul pour 5 villes prend $10\mu$s à calculer sur un ordinateur, on peut voir sur le tableau ci-dessous le temps que cela prendrait pour
10-25 villes. On constante le phénomène *d'explosion combinatoire* rendant le problème incalculable dans un temps raisonnable.
+--------------+-----------------+---------------------+
| Nb de villes | Nb possibilités | Temps (est.) |
+:============:+:===============:+:===================:+
| 5 | 12 | $10\mu$s |
+--------------+-----------------+---------------------+
| 10 | 181440 | 0.15s |
+--------------+-----------------+---------------------+
| 15 | $4.4\cdot10^{10}$ | 10h |
+--------------+-----------------+---------------------+
| 20 | $6\cdot10^{16}$ | 1600 ans |
+--------------+-----------------+---------------------+
| 25 | $3\cdot10^{23}$ | 8 milliard d'années |
+--------------+-----------------+---------------------+
La force brute est donc totalement hors de question pour résoudre ce type de problème. En fait il n'existe aucun algorithme **exact**
calculant la solution en temps polynomial. Les meilleurs algorithmes de ce types sont limités à 200'000 villes jusqu'à aujourd'hui. Néanmoins, il existe différentes heuristiques qui nous donnent une solution approchée (qui se trouve à 2-3% de la solution optimale avecune très grande probabilité)
et qui fonctionnent avec des millions de villes.
Le problème du voyageur du commerce est un problème **d'optimisation dicrète**, et en particulier **d'optimisation combinatoire**.
Ce genre de problème est en général beaucoup plus difficile à résoudre que les
problèmes d'optimisation continue bien que beaucoup plus simples à énoncer.
Une des difficulté est le cadre théorique (la formulation mathématique générale d'un problème d'optimisation discret) qui est
assez difficile à appréhender et qui peut être très différent entre les différents problèmes
d'optimisations.
Le voyageur du commerce peut s'écrire mathématiquement sous la formue suivante.
Supposons qu'il y ait $N$ villes qui sont numérotées de $1$ à $N$.
Soit $d_{ij}$ la distance entre la ville $i$ et la ville $j$ (on a que $d_{ij}d_{ji}$) pour $i,j\in 1,..,N$.
Soit $x_{ij}$ définiti comme
$$x_{ij}=
\left\{\begin{array}{ll}
$1,$&$\mbox{ si le chemin va de la ville } i { à la ville }j$\\
$0,$&$\mbox{ sinon.}$
\end{array}\right.$$
On cherche donc
\begin{align}
&\min \sum_{i=1}^N\sum_{j=1, j\neq i}^N x_{ij}d_{ij}, \mbox{ tel que},\\
&\sum_{i=1,i\neq j}^N x_{ij}=1,\ \forall i=1,..,N,\\
&\sum_{j=1,neq i}^N x_{ij}=1,\ \forall j=1,..,N.
\end{align}
La première contrainte nous dit qu'on ne peut arriver sur une ville $j$ que depuis une seule ville $i$ (impossible d'y arriver de deux façons différentes). La deuxième contrainte
nous dit que depuis chaque ville on ne peut partir qu'en direction d'une seule autre ville. Ces conditions (déjà assez complexes à formuler) ne suffisent pas pour définir le problème du voyageur de commerce. Il faut y ajouter deux contraintes supplémentaires
afin de garantir qu'il n'y a qu'un parcours qui couvre toutes les villes en y passant qu'une fois et que le parcours n'est pas une combinaison d'au moins deux parcours disjoints parcourant ensemble toutes les villes. Cette contrainte supplémentaire peut s'écrire (cette contrainte n'est pas exprimable de façon unique)
\begin{align}
&u_1=1,\\
2\leq u_i\leq n,\ \forall i\neq 1,\\
&u_i-u_j+N\cdot x_{ij}\leq N-1,\quad i\neq 1,\ \j\neq 1,
\end{align}
où $u_i$ est une variable supplémentaire associée à chaque ville dont le seul but est
d'empêcher des cycles à l'intérieur du parcours (imposer qu'on passe qu'une seule fois par chaque ville).
Il est possible de s'en convaincre de la façon suivante. Cette contrainte supplémentaire nous impose que pour chaque
$x_{ij}=1$, on a que $u_j\geq u_i+1$. Par conséquent si on rentre dans une partie du parcours où on
rentre dans des sous-tours, les $u_i$ vont s'incrémenter à l'infini. Bien que les $u_i$ rajoutent des variables au problèmes (et pourraient le complexifier à première vue), on constate que les $u_i$ numérotent
les villes dans le parcours et peuvent aider à formuler un ordre ou la proximité d'une ville dans la suite.
## La régression linéaire
Lors d'une régression linéaire, le but est de trouver la droite, $y(x)=a\cdot x + b$, qui passe au mieux au travers d'un nuage de $N$ points $(x_i, y_i)$,
$i=1,...,N$ (voir @fig:reg).
![Nous recherchons l'équation de la droite, en rouge, $y(x)=ax+b$ passant au plus proche des points $(x_i,y_i)$ et bleu. Source: Wikipedia
<https://bit.ly/2SfiLzb>](figs/Linear_regression.svg){#fig:reg width=70%}
Pour déterminer l'équation de cette droite, nous devons donc trouver les coefficients $a$ et $b$ tels que la droite
passe au plus proche des points. Nous devons d'abord définir ce que signifie mathématiquement "passe au mieux par au travaers du nuage de points".
Une façon de mesurer la "qualité" d'une droite est de mesurer la somme des distances au carré entre les points $(x_i,y_i)$ et
la droite $y(x)=a\cdot x + b$ pour des valeurs de $a$ et $b$ données, soit
$$
E(a,b)=\sum_{i=1}^N (y(x_i)-y_i)^2.
$$
Nous cherchons par conséquent à minimiser $E(a,b)$ sous la contrainte que $y(x)$ est une droite. Pour simplifier encore plus le problème mathématique,
nous pouvons rajouter comme contrainte que la droite $y(x)$ passe par le point $(0,0)$, on a donc que $y(x)=a\cdot x$ (l'ordonnée à l'origine est nulle, $b=0$) et que
$$
E(a)=\sum_{i=1}^N (y(x_i)-y_i)^2,
$$
est indépendant de $b$. En résumé nous cherchons à résoudre le problème mathématique
\begin{align}
&\min_{a\in\real} E(a) = \min_{a \in\real} \sum_{i=1}^N (y(x_i)-y_i)^2,\\
&\mbox{où }y(x)=a\cdot x, \quad \mbox{(contrainte)}.
\end{align}
On peut réécrire la fonction $E(a)$ comme
\begin{align}
E(a)&=\sum_{i=1}^N \left(y^2(x_i)-2\cdot y_i\cdot y(x_i)+y_i^2\right)=\sum_{i=1}^N \left(a^2\cdot x_i^2-2\cdot a\cdot x_i\cdot y_i+y_i^2\right),\nonumber\\
&=a^2\sum_{i=1}^Nx_i^2 + 2a\sum_{i=1}^Nx_iy_i+\sum_{i=1}^Ny_i^2.
\end{align}
Les $x_i$ et $y_i$ étant connus, nous cherchons $a$, tel que $E(a)$ soit minimal. $E(a)$ est en fait l'équation d'une parabole: elle a la forme
$$
E(a)=B\cdot a^2-2C\cdot a + D,
$$
avec $B=\sum_{i=1}^Nx_i^2$, $C=\sum_{i=1}^Nx_iy_i$, et $D=\sum_{i=1}^N y_i^2$. $B$ étant forcément positif cette parabole sera **convexe** et donc
nous sommes assurés qu'il existe un minimum pour $E(a)$. Une façon de déterminer $a$, tel que $E(a)$ est minimal est d'utiliser la dérivée.
On a l'équation $E'(a)=0$ à résoudre:
\begin{align}
E'(a)&=0,\nonumber\\
2\cdot B\cdot a-2\cdot C&=0,\nonumber\\
a &= \frac{C}{B}=\frac{\sum_{i=1}^Nx_iy_i}{\sum_{i=1}^Nx_i^2}.
\end{align}
---
Exemple +.#
Soient les 4 points $(0, 0.1)$, $(1, 0.3)$, $(2, 0.3)$ et $(3, 0.4)$. La fonction d'erreur $E(a)$ s'écrit
$$
E(a)=14\cdot a^2-4.2\cdot a + 0.35.
$$
On peut la représenter comme sur la @fig:e_a et on constate qu'elle possède un minimum proche de $a=0$.
![La fonction $E(a)=14a^2-4.2a+0.35$ pour $a\in[-1,1]$. On voit bien qu'elle possède un minimum proche de $a=0$.](figs/e_a.svg){#fig:e_a width=70%}
En résolvant $E'(a)=0$, on obtient $a=4.2/24=0.15$. On a que l'équation de la droite passant par $(0,0)$ et au plus proche de nos 4 points est
$$
y(x)=0.15\cdot x.
$$
On peut observer le résultat de la régression sur la @fig:regression_ex, où on voit les 4 points (en noir), ainsi que la droite obtenue (en trait bleu).
![Les 4 points $(0, 0.1)$, $(1, 0.3)$, $(2, 0.3)$ et $(3, 0.4)$ (en noir) et la droite obtenue par régression linéaire
(en bleu).](figs/regression_ex.svg){#fig:regression_ex width=70%}
---
La régression linéaire est un problème **d'optimisation continu**. On voit que contrairement au problème du voyageur du commerce,
l'ensemble des solutions est $a\in\real$ et non une suite discrète de villes. Ce genre de problème, bien que possédant un espace de recherche infini,
est bien souvent plus simple à résoudre, car il possède un cadre théorique mieux défini.
Pour le résoudre, nous avons commencé, comme pour le problème du voyageur du commerce par faire un modèle mathématique.
Nous avons construit une fonction à minimiser, $E(a)$, et ajouté une contraite, la forme de $y(x)$. Puis, il a suffit de trouver le minimum de $E(a)$
sous la contrainte et le tour était joué.
## L'optimisation mathématique
Suite à ces deux exemples, nous allons essayer de définir de façon assez théorique comment formuler mathématiquement un probélème d'optimisation.
Il existe comme on vient de le voir deux types disctincts de problèmes d'optimisation:
1. L'optimisation continue.
2. L'optimisation discrète (ou optimisation combinatoire).
### L'optimisation continue
Soit $f:\real^n\rightarrow\real$ une fonction objectif (ou fontion de coût), on cherche $\vec x_0\in\real^n$, tel que $f(\vec x_0)\leq f(\vec x)$ pour $\vec x$ certaines conditions: les contraintes qui sont en général des égalités strictes ou des inégalités qui peuvent s'exprimer de la façon suivante.
Soient $m$ fonctions $g_i:\real^n\rightarrow\real$
\begin{align}
&g_i(\vec x)\leq 0,\quad i=1,...,m.
\end{align}
Si $m=0$ on a à faire à un problème d'optimisation sans contraintes. On peut résumer tout cela comme
\begin{align*}
&\min_{\vec x\in\real^n}f(\vec x),\\
&g_i(\vec x)\leq 0,\quad i=1,...,m,\\
&\mbox{pour }m\geq 0.
\end{align*}
Les contraintes limites l'espace des solutions et forment un sous-ensemble, noté $A$, de $\real^n$ ($A\subseteq\real^n$).
Une des difficultés pour déterminer le minimum d'une fonction coût est l'existence de plusieurs minima locaux.
Un **minimum local**, $\vec x^\ast\in A$, est tel que pour une région proche de $\vec x^\ast$, on a que $f(\vec x)\geq f(\vec x^\ast)$. Une fonction particulièrement problématique où il est
très difficile de trouver le minimum global est une fonction de Ackley. En une dimension, elle est de la forme (voir la @fig:ackley)
$$
f(x)=-20e^{-0.2*\sqrt{0.5x^2}}-e^{0.5(\cos(2\pi x))}+e+20.
$$
![La fonction d'Ackley en une dimension. Il est particulièrement compliqué de trouver le minimum global en raison de l'existence d'une multitude de minima locaux.](figs/ackley.svg){#fig:ackley width=70%}
[^1]: On pourrait, de façon similaire, utiliser la formule de différences finies en avant ou en arrière (ou un mélange des deux). [^1]: On pourrait, de façon similaire, utiliser la formule de différences finies en avant ou en arrière (ou un mélange des deux).
[^2]: Comme ce polynôme passe par les points $(x_0,y_0)$, $(x_1,y_1)$, ..., $(x_m,y_m)$, il est unique, c'est donc exactement le même que celui exprimé avec les $\{a_i\}_{i=0}^m$. [^2]: Comme ce polynôme passe par les points $(x_0,y_0)$, $(x_1,y_1)$, ..., $(x_m,y_m)$, il est unique, c'est donc exactement le même que celui exprimé avec les $\{a_i\}_{i=0}^m$.
[^3]: En fait $\frac{f^{(n+1)}(\xi)}{(n+1)!}=\delta^{n+1}[x_0,\dots,n_n]$. [^3]: En fait $\frac{f^{(n+1)}(\xi)}{(n+1)!}=\delta^{n+1}[x_0,\dots,n_n]$.
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
import numpy as np
import matplotlib.pyplot as plt
N=30
x = np.arange(-30,30+1/N,1/N)
y = -20*np.exp(-0.2*np.sqrt(0.5*x**2))-np.exp(0.5*(np.cos(2*np.pi*x)))+np.exp(1)+20
plt.plot(x,y)
plt.show()
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment