ajout fin du chapitre 8

This commit is contained in:
François Pelletier 2018-04-24 00:10:26 -04:00
parent 2d58b8610d
commit 8d4e6cf285
2 changed files with 164 additions and 1 deletions

View file

@ -103,15 +103,176 @@ Si toutes les valeurs de la colonne du pivot sont nulles ou négatives, la valeu
\subsection{Chemin le plus court}
\label{sec:cheminpluscourt}
Premier modèle: une variable par arête, inéquations = contraintes de conservation de flot. La première équation est linéairement dépendande, on peut l'enlever.
\begin{align*}
&\min
\begin{bmatrix}
2&4&1&5&1&2
\end{bmatrix}
\vec{x}\\
&\text{s.t.}
\begin{bmatrix}
1&0&-1&-1&1&0\\
0&1&1&0&-1&-1\\
0&0&0&1&0&1
\end{bmatrix}
\begin{bmatrix}
x_{ab}\\
x_{ac}\\
x_{bc}\\
x_{bd}\\
x_{cb}\\
x_{cd}
\end{bmatrix}
=
\begin{bmatrix}
0\\
0\\
1
\end{bmatrix}
\end{align*}
Deuxième modèle: bout de ficelle reliant les noeuds, on fixe $A$ en position 0 et on tire sur le noeud $D$. Une variable par noeud modélise la position du noeud. Une contrainte par arête pour limiter l'éloignement des noeuds.
\subsection{Dualité}
\label{sec:dualite}
\subsection{Problèmes en nombres entiers}
Ces deux programmes linéaires sont équivalents:
Programme 1 (primal)
\begin{align*}
&\min &c^Tx\\
&s.t. &Ax=b\\
&&x \geq 0
\end{align*}
Programme 2 (dual)
\begin{align*}
&\max &b^Ty\\
&s.t. &A^Ty \leq c\\
&&y \in \R
\end{align*}
Comparaison des solutions réalisables
\begin{align*}
A^Ty &\leq c & \text{Solution dual} \\
y^TA &\leq c^T & \text{Transposée} \\
y^TAx &\leq c¸Tx & \text{Mult. par}\ x\\
y^TB &\leq c^Tx & \text{Solution primal}\\
b^Ty &\leq c^Tx & \text{Propriété du produit scalaire}
\end{align*}
\paragraph{Matrice B}
\begin{itemize}
\item $B$ est la matrice formée des colonnes de la matrice $A$ associées aux variables de la base (prises dans l'ordre où les 1 apparaissent, de haut en bas).
\item $B^{-1}A$ est la matrice des coefficients du tableau dans son état final
\item $C_B$ est le coût associé aux variables de base
\item Le vecteur de coût est donnée par $c^T-c_B^TB^{-1}A \geq 0$
\item Si les deux solutions sont optimales, on a l'égalité $C^Tx = c+B^Tx_B = c_B^TB^{-1}b = y^Tb = b^Ty$
\end{itemize}
\paragraph{Généralisation}
\begin{table}[ht]
\centering
\label{tab:primaldual}
\begin{tabular}{l|l}
\textbf{Primal} & \textbf{Dual} \\
\hline
Équation & Variable libre \\
Inégalité & Variable non-négative \\
Variable libre & Équation \\
Variable non-négative & inégalité \\
minimisation & maximisation
\end{tabular}
\caption{Primal et dual}
\end{table}
\begin{itemize}
\item $E$: Contraintes d'égalité
\item $L$: Variables libres
\item $A[i]$: $i$e rangée de $A$
\end{itemize}
\begin{table}[ht]
\centering
\label{my-labeltab:primaldualeq}
\begin{tabular}{lllll}
& $\min c^Tx$ & & & $\max b^Ty$ \\
s.t. & $A[i]x=b_i$ & $i \in E$ & s.t. & $y_i \in \R$ \\
& $A[i]x \geq b_i$ & $i \notin E$ & & $y_i \geq 0$ \\
& $x_j \in \R$ & $j \in L$ & & $A^T[j]y=c_j$ \\
& $x_j \geq 0$ & $j \notin L$ & & $A^T[j]y \leq c_j$
\end{tabular}
\caption{Primal et dual en équations}
\end{table}
\subsection{Programmation en nombres entiers}
\label{sec:nombresentiers}
\begin{alignat*}{2}
& \text{maximiser} && c^Tx \\
& \text{sujet à} & \quad &
\begin{aligned}[t]
Ax& \leq b & \\
x& \in \N^{n} &
\end{aligned}
\end{alignat*}
Deux techniques à utiliser après le simplexe:
\begin{itemize}
\item Fouille dans un arbre de recherche
\begin{itemize}
\item Ajout de deux branches pour les valeurs $x_i=v$ non entières
\item $x_i \leq \floor{v}$, $x_i \geq \ceil{v}$
\item La meilleure valeur objective $v^\star$ devient une borne minimale
\end{itemize}
\item Coupes de Gomory
\begin{itemize}
\item Coupe: contrainte ajoutée à un programme linéaire
\item Depuis le tableau du simplexe, on extrait une équation de la forme $x_i+\sum_{j \notin B}a_{i,j}x_j=b_i$.
\item La coupe de Gomory prend la forme
\begin{align}
\sum_{j \notin B}(a_{i,j}-\floor{a_{i,j}})x_j-s=b_i-\floor{b_i}
\end{align}
\item Exemple:
\begin{align}
y+0.5s_1-0.5s_3&=2.5\\
0.5s_1+0.5s_3-s_4&=0.5
\end{align}
\end{itemize}
\end{itemize}
\subsection{Matrices totalement unimodulaires}
\label{sec:matricestotalementunimod}
\begin{itemize}
\item Matrices totalement unimodulaires: chaque sous-matrice a un déterminant de -1,0 ou 1. Son adjointe a donc aussi seulement des -1,0 et 1.
\item Si $A$ est inversible, alors sont inverse ne contient que des -1,0,1. Son inverse est donc une matrice entière.
\item $x_B=B^{-1}b$, $x$ sera entier.
\item Si $A$ est totalement unimodulaire et $b$ est un vecteur d'entier, alors la solution du simplexe sera entière
\item Si une sous-matrice d'un problème est unimodulaire, on peut résoudre les autres variables par Branch and Bound et ensuite utiliser le simplexe pour réduire la taille du problème
\end{itemize}
\paragraph{Matrice d'incidence d'un graphe}
\begin{align}
A_{i,j} &= \begin{cases}
1 &\text{si la destination de l'arete}\ j\ \text{est le noeud}\ i\\
-1&\text{si l'origine de l'arete}\ j\ \text{est le noeud}\ i\\
0 &sinon
\end{cases}
\end{align}

View file

@ -61,6 +61,8 @@
\newcommand{\R}{\mathbb{R}} % Commande personnelle, plus rapide pour tapper les ensembles
\DeclareMathOperator*{\argmax}{arg\,max}
\DeclareMathOperator*{\argmin}{arg\,min}
\DeclarePairedDelimiter\ceil{\lceil}{\rceil}
\DeclarePairedDelimiter\floor{\lfloor}{\rfloor}
\usepackage{cprotect} % Pour pouvoir personaliser la légende des figures
%----------------------------------------------------------------