ajout fin du chapitre 8
This commit is contained in:
parent
2d58b8610d
commit
8d4e6cf285
2 changed files with 164 additions and 1 deletions
163
chapitre8.tex
163
chapitre8.tex
|
@ -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}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
%----------------------------------------------------------------
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue