diff --git a/cours.md b/cours.md index ff53cfc457905b582184bf0d953a4e828d710745..b9993d85226f0c1ef1a807eab0e4dab3c3dab919 100644 --- a/cours.md +++ b/cours.md @@ -1009,7 +1009,7 @@ allons écrire $p_2(x)$ comme $p_1(x)$ auquel nous allons ajouter une correction $$ p_2(x)=p_1(x)+b_2(x-x_0)(x-x_1), $$ -où $b_2$ est un coefficient à déterminer. La forme du terme de droite de l'équation ci-dessus impose que $p_2(x_0)=p_1(x_0)$ et $p_2(x_1)=p_1(x_1)$. On a donc trivialement que +où $b_2$ est un coefficient à déterminer. La forme du terme de droite de l'équation ci-dessus impose que $p_2(x_0)=p_1(x_0)$ et $p_2(x_1)=p_1(x_1)$. On a donc trivialement que \begin{align} &p_2(x_0)=y_0,\\ &p_2(x_1)=y_1. @@ -1458,7 +1458,7 @@ 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. +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. @@ -1642,6 +1642,7 @@ Dans le cas discret la solution de ce problème est $x_1=1$, $x_2=4$ \end{align} 1. L'heuristique de la relaxation au cas continu, nous donne $x_1^\ast=5.9$, $x_2^\ast=0$ + \begin{align} &10x_1+11x_2=59,\\ &10x_1+12x_2=59\leq 59. @@ -1717,15 +1718,73 @@ peuvent se représenter graphiquement par un polygone (nous sommes en deux dimen --- -On peut montrer que si toutes les conditions ci-dessus sont satisfaites, alors la solution optimale se trouve sur un des +On peut montrer que si toutes les conditions ci-dessus sont satisfaites, alors la solution optimale se trouve sur un des sommets du polyèdre. +On résout ce genre de problème en parcourant donc tous les sommets en suivants les arrêtes du polyèdre. +Comme vous avez déjà vu cet algorithme dans le cours d'algorithmique avancée, on ne va pas s'attarder dessus, +mais plutôt parler de modélisation d'un problème d'optimisation. En d'autres termes, comment en partant +d'un problème d'optimisation formulé en phrases on écrit un problème mathématique. + +## Modélisation + +### Exemple: Le problème du sac à dos + +Le problème du sac à dos est un problème classique en optimisation combinatoire. Il n'existe pas de méthode exacte qui +permette de résoudre ce problème en temps polynomial (pour ceux que ça intéresse, je pense que résdoudre ce problème de façon générale +vaut beaucoup de gloire et d'argent). +Il s'énonce de la façon suivante. Soit un ensemble de $n$ objets de poids $p_i$ et de valeur $v_i$. Combien de chaque objet +pouvons nous mettre dans le sac à dos, tel que la valeur totale des objets dans le sac à dos soit maximisée, +et que le poids total n'excède pas un poids maximal $P$. Nous simplifions encore le problème en spécifiant +qu'il peut y avoir au plus un objet de chaque dans le sac. + +Nous essayons de maximiser la valeur du sac. Nous représentons la présence ou non de l'objet $i$, par une variable $x_i$: +$x_i=1$ si l'objet est présent $x_i=0$ si l'objet est absent. On cherche donc un vecteur $\vec x=(x_1,x_2,...,x_n)^T$, avec $x_i\in\{0,1\}$. +La fonction objectif à maximiser est par conséquent +$$ +f(\vec x)=\sum_{i=1}^n x_i\cdot v_i. +$$ +Le poids du sac s'exprime lui avec $p(\vec x)$ comme +$$ +p(\vec x)=\sum_{i=1}^n x_i\cdot p_i. +$$ +On formule donc mathématiquement notre problème d'optimisation comme +\begin{align} +&\max \sum_{i=1}^n x_i\cdot v_i,\\ +&\sum_{i=1}^n x_i\cdot p_i\leq P,\\ +&x_i\in\{0,1\}. +\end{align} + +### Généralités + +L'exercice de transposer un problème d'optimisation en formulation mathématique est appelée **modélisation**. L'exercice en lui même est intéressant, et nous allons en voir quelques exemples que vous devrez proposer et résoudre par vous mêmes. Mais avant d'en arriver là, on peut écrire un certain nombre de règles. -### Le problème du sac à dos +Soient deux événement, $A$ et $B$, et les variables de décision +binaires, $x_A,\ x_B\in\{0,1\}$ -Le problème du sac à dos est un problème classique en optimisation combinatoire. +- Si les deux événements ne peuvent pas se produire en même temps, on peut écrire +$$ +x_A+x_B\leq 1. +$$ +On a 4 possibilités: + 1. $A$ se produit, $x_A=1$, et $B$ se produit $x_B=1$. On a $x_A+x_B=2$ (c'est plus grand que $1$ nous sommes sauvés). + 2. $A$ se produit, $x_A=1$, et $B$ ne se produit pas $x_B=0$. On a $x_A+x_B=1$ (c'est égal à $1$ nous sommes satisfaisons la contrainte). + 3. $A$ ne se se produit pas, $x_A=0$, et $B$ se produit $x_B=1$. On a $x_A+x_B=1$ (c'est égal à $1$ nous sommes satisfaisons la contrainte). + 4. $A$ ne se se produit pas, $x_A=0$, et $B$ ne se produit pas $x_B=0$. On a $x_A+x_B=0$ (c'est égal à $0$ nous sommes satisfaisons la contrainte). -### Modélisation: apprentissage par problème +- Si au moins un des deux événements doit se produit +$$ +x_A+x_B\geq 1. +$$ +On a 4 possibilités: + 1. $A$ se produit, $x_A=1$, et $B$ se produit $x_B=1$. On a $x_A+x_B=2$ (c'est plus grand que $1$ satisfaisons la contrainte). + 2. $A$ se produit, $x_A=1$, et $B$ ne se produit pas $x_B=0$. On a $x_A+x_B=1$ (c'est égal à $1$ nous satisfaisons la contrainte). + 3. $A$ ne se se produit pas, $x_A=0$, et $B$ se produit $x_B=1$. On a $x_A+x_B=1$ (c'est égal à $1$ nous satisfaisons la contrainte). + 4. $A$ ne se se produit pas, $x_A=0$, et $B$ ne se produit pas $x_B=0$. On a $x_A+x_B=0$ (c'est plus petit que $1$, nous sommes sauvés). -L'exercice de transposer un problème d'optimisation en formulation mathématique est appelée **modélisation**. L'exercice en lui même est intéressant, et nous allons en voir quelques exemples que vous devrez proposer et résoudre par vous mêmes. +- Si $A$ se produit, alors $B$ doit se produire +$$ +x_A\leq x_B. +$$ +Si $A$ s'est produit, nous avons $x_A=1$, cela signifie que $x_B$ doit se produire également et donc $1\leq x_B$, $x_B$ doit forcément valoir $x_B=1$ sinon la contrainte n'est pas satisfaite. De façon similaire, si $B$ ne se produit pas ($x_B=0$), alors $A$ ne doit pas se produire, car $x_A\leq 0$. On a donc que $x_A=0$ obligatoirement. --- @@ -1747,7 +1806,6 @@ de francs par tonnes. --- - # Remerciements Je voudrais remercier (par ordre alphabétique) les étudiants du cours