diff --git a/cours.md b/cours.md index cda45b664c3aa4d92ba569a07676746ddf027da6..673ae421d85201e590d2cca0e3794a9aa3adf134 100644 --- a/cours.md +++ b/cours.md @@ -1574,10 +1574,13 @@ Suite à ces deux exemples, nous allons essayer de définir de façon assez thé 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). +2. L'optimisation discrète (souvent appelée optimisation combinatoire). ### L'optimisation continue +L'optimisation continue ou *programme mathématique continu* est un programme d'optimisation soumis à certaines contraintes. +On peut l'exprimer de la façon suivante. + 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} @@ -1600,6 +1603,45 @@ $$ {#fig:ackley width=70%} +L'optimisation discrète est très communément utilisée en apprentissage automatique, en particulier pour +optimiser les poids des réseaux de neurones. + +### Optimisation discrète + +L'optimisation discrète, ou *programme mathématique discret*, est très similaire dans la définition mathématique à l'optimisation continue. L'ensemble $\real^n$ est remplcé par un ensemble discret, $\integer^n$. On peut le formuler de la façon suivante. Soit $f:\integer^n\rightarrow \real$ on cherche à résoudre +\begin{align*} +&\min_{\vec x\in\integer^n}f(\vec x),\\ +&g_i(\vec x)\leq 0,\quad i=1,...,m,\\ +&\mbox{pour }m\geq 0\mbox{ et }\vec x\in\integer^n. +\end{align*} +On voit donc qu'on a une "contrainte" supplémentaire qui est de supposer que les éléments sont tous discrets. + +Il existe un grand nombre d'application quotidiennes +de l'optimisation discrète: le choix du moyen optimal de livraison d'un paquet, le meilleur réseau aérien, dans la logistique, le design de microprocesseurs, ... + +L'optimisation discrète est une branche des mathématiques très intéressante. Elle permet de poser des problèmes relativements simples, dont les solutions brute force sont très "simples" conceptuellement. En revanche les solutions "réalisables" dans un temps raisonnables (polynomial) sont souvent très difficiles à obtenir comme on l'a vu avec le problème du voyageur de commerce. Le problème se formule de façon simple, il existe une soltution très simple conceptuellement au problème (l'essai de toutes les possibilités), mais qui n'est pas réalisable en pratique, car déjà à 25 villes il faudrait des milliards d'années pour le résoudre. + +Une erreur commune est de penser les problèmes d'optimisation discrète comme un cas particulier des problèmes continus. Ce n'est presque jamais une solution. On peut s'en convaincre avec le problème suivant. On cherche +\begin{align} +&\max 10x_1+11x_2,\\ +&10x_1+12x_2\leq 59,\\ +&x_1,x_2\in \real\mbox{ ou } x_1,x_2\in \natural. +\end{align} + +1. Dans le cas continu la solution de ce problème est $x_1=5.9$, $x_2=0$ + +\begin{align} +&10x_1+11x_2=59,\\ +&10x_1+12x_2=59\leq 59. +\end{align} + +2. Dans le cas réediscret la solution de ce problème est $x_1=1$, $x_2=4$ + +\begin{align} +&10x_1+11x_2=54,\\ +&10x_1+12x_2=58\leq 59. +\end{align} + # Remerciements Je voudrais remercier (par ordre alphabétique) les étudiants du cours