Commit 14ad2ce8 authored by Aliaume Lopez's avatar Aliaume Lopez

Merge branch 'master' of gitlab.crans.org:alopez/projet-optimisation

parents dc12ed4b 38bff3f0
...@@ -3,10 +3,9 @@ ...@@ -3,10 +3,9 @@
\usecolortheme{whale} \usecolortheme{whale}
\usecolortheme{orchid} \usecolortheme{orchid}
\usepackage[french]{babel} \usepackage[french]{babel}
\usepackage[T1]{fontenc} \usepackage[utf8]{inputenc}
\usepackage[utf8x]{inputenc}
\usepackage{amsmath,amssymb}%for \mod, \bmod, .. \usepackage{amsmath,amssymb}%for \mod, \bmod, ..
\usepackage{amsthm,amsfonts,mathrsfs} \usepackage{amsthm,amsfonts,mathrsfs,bbold}
\usepackage[full,small]{complexity} \usepackage[full,small]{complexity}
\usepackage{ stmaryrd } \usepackage{ stmaryrd }
\usepackage{ marvosym } \usepackage{ marvosym }
...@@ -24,14 +23,14 @@ ...@@ -24,14 +23,14 @@
\newcommand{\Nat}{{\mathbb{N}}} \newcommand{\Nat}{{\mathbb{N}}}
\newcommand{\eqv}{\Leftrightarrow} \newcommand{\eqv}{\Leftrightarrow}
\newcommand{\ds}{\vspace{0.5\baselineskip}} \newcommand{\ds}{\vspace{0.5\baselineskip}}
\newcommand{\es}{\vspace{1\baselineskip}}
% Plan des sections et numéros des sections % Plan des sections et numéros des sections
%\AtBeginSubsection[]{ \AtBeginSection[]{
%\frame{ \frame{
%\frametitle{Plan} \frametitle{Plan}
%\tableofcontents[currentsection,currentsubsection] }} \tableofcontents[currentsection] }}
\setbeamertemplate{section in toc}[sections numbered] \setbeamertemplate{section in toc}[sections numbered]
\setbeamertemplate{subsection in toc}[subsections numbered]
% Titre % Titre
\title{\textbf{Optimisation Combinatoire \& Convexe} \\ Le problème du voyageur de commerce} \title{\textbf{Optimisation Combinatoire \& Convexe} \\ Le problème du voyageur de commerce}
...@@ -41,82 +40,71 @@ ...@@ -41,82 +40,71 @@
\maketitle \maketitle
\section{Introduction au problème}
\subsection{Le cas général}
\begin{frame} \begin{frame}
\frametitle{Introduction au problème général} \frametitle{Problème du voyageur de commerce (TSP)}
\begin{block}{Définition} \begin{block}{Définition : TSP}
Soit $G = \langle V, A, w \rangle$ un graphe complet Soit $G = \langle V, E \rangle$ un graphe (complet)
et $w$ une fonction de coût sur les arcs. et $w : V \rightarrow R_+ \cup\{+ \infty\}$ une fonction de coût des arêtes. On cherche à calculer~:
On cherche à calculer~:
\[ \[
\min \{ w(C) ~|~ C \textrm{ cycle hamiltonien de } G \} \min \{ w(C) ~|~ C \textrm{ cycle hamiltonien de } G \}
\] \]
\end{block} \end{block}
\begin{alertblock}{Symétrie}
\begin{description} \es
\item[Cas symétrique~:]
Le graphe $G$ est non-orienté, et donc $w(i,j) = w(j,i)$. On considèrera $G$ non-orienté (problème symétrique).
\item[Cas asymétrique~:]
Le graphe $G$ est non-orienté, et donc il faut faire
la distinction entre $w(i,j)$ et $w(j,i)$.
\end{description}
\end{alertblock}
\end{frame} \end{frame}
\begin{frame} \begin{frame}
\frametitle{Propriétés générales du problème} \frametitle{Propriétés générales du problème}
\begin{block}{Complexité}
Problème de décision associé \NP-complet.
\end{block}
\begin{alertblock}{Approximabilité}
Inapproximable à ratio constant, sauf si \P = \NP.
\end{alertblock}
\end{frame} \end{frame}
\subsection{Le cas euclidien}
\begin{frame} \begin{frame}
\frametitle{Dans le cas euclidien ou métrique} \frametitle{Dans le cas euclidien ou métrique}
\url{https://fr.wikipedia.org/wiki/Algorithme_de_Christofides} \begin{alertblock}{Restricition}
On ne considère que des instances où la fonction de coût vérifie l'inégalité triangulaire.
Le problème dans le cas métrique est APX-difficile, même avec des poids 1
ou 2, ce qui empêche l'existence d'un schéma d'approximation en temps \end{alertblock}
polynomial. Le facteur de 3/2 est en fait le meilleur facteur connu.
\begin{exampleblock}{Exemple}
Cas de la distance euclidienne dans le plan. Facilement représentable.
Mais le problème de décision associé reste \NP-complet.
\end{exampleblock}
\ds
Bonne nouvelle : le problème métrique est approximable, et même à ratio $123/122$ \cite{Karpinski, M., Lampis, M., & Schmied, R. (2015). New inapproximability bounds for TSP. Journal of Computer and System Sciences, 81(8), 1665-1677.}.
\end{frame} \end{frame}
\subsection{Intérêt pratique}
\begin{frame}
\frametitle{Applications}
\begin{itemize}
\item Logistique
\item Réseaux
\item Robotique \cite{brassai2012optimization}
\item Biologie (génétique)
\item Machine Learning~: prédiction des fonctions
des protéines \cite{Johnson2006}
\end{itemize}
\end{frame}
\subsection{Banque de problèmes}
\begin{frame} \begin{frame}
\frametitle{TSPLIB} \frametitle{TSPLIB}
\begin{block}{TSPLIB95} \begin{block}{TSPLIB95}
TSPLIB is a library of sample instances for the TSP (and related problems) from various sources and of various types. TSPLIB une librairie d'instances de TSP avec entre $10$ et $10000$ sommets.
\end{block} \end{block}
\begin{exampleblock}{Parsing} \begin{exampleblock}{Parsing}
Données sous forme de :
\begin{itemize} \begin{itemize}
\item Matrice \item matrice explicite des coûts,
\item Euclidien~: affichage possible (simple) \item coordonnées des sommets dans le plan (distance euclidienne)
\item Distance GÉO \item distance géodésique (lat, lon).
\end{itemize} \end{itemize}
\end{exampleblock} \end{exampleblock}
\end{frame} \end{frame}
...@@ -125,44 +113,51 @@ ...@@ -125,44 +113,51 @@
\section{Approximation} \section{Approximation}
\subsection{La 2OPT}
\begin{frame} \begin{frame}
\frametitle{L'algorithme 2OPT} \frametitle{L'algorithme 2-OPT}
\begin{block}{Algorithme} \begin{block}{Algorithme pour optimiser un tour}
Tant qu'on peut trouver deux arêtes Tant qu'on peut trouver deux arêtes
du tour $(v_1,v_2)$ et $(v_1', v_2')$ telles que du tour $(v_1,v_2)$ et $(v_1', v_2')$ telles que
le tour en les remplaçant par $(v_1, v_2')$ et $(v_1',v_2)$ le tour en les remplaçant par $(v_1, v_2')$ et $(v_1',v_2)$
a une valeur inférieure, on effectue cette opération. a une valeur inférieure, on effectue cette opération.
\end{block} \end{block}
DESSIN
\begin{block}{Description équivalente}
On recherche un segment du tour
à renverser en raisonnant sur les
sommets.
\end{block}
\begin{alertblock}{Temps} \begin{alertblock}{Temps}
Temps très long, potentiellementp pas borné !!! La complexité en temps dans le pire des cas est un problème ouvert.
Néanmoins, cas euclidien avec quelques restrictions,
on peut se ramener à un truc bien Cependant elle est raisonnable en pratique.
\end{alertblock} \end{alertblock}
\end{frame} \end{frame}
\subsection{La 2 approximation}
\begin{frame} \begin{frame}
Dans le cas de l'inégalité triangulaire. Calcul en temps $O(|G|^2)$.
\frametitle{Garantie d'approximation}
\begin{block}{2-approximation}
Basée sur un arbre couvrant de poids minimal. Complexité quadratique.
\end{block}
\begin{block}{1.5-approximation}
Algorithme de Christofides : arbre couvrant de poids min + couplage de poids minimum. Complexité cubique.
\end{block}
\ds
Et bien d'autres\dots
\end{frame} \end{frame}
\begin{frame} \begin{frame}
\frametitle{Combinaison des deux approches} \frametitle{Combinaison des deux approches}
\begin{exampleblock}{Exemple~: eil101 (629)} \begin{exampleblock}{Exemple~: eil101 (valeur optimale : 629)}
\begin{figure} \begin{figure}
\centering \centering
\subfloat[2 Approximation seule (878)]{ \subfloat[2-approximation seule (878)]{
\includegraphics[width=4cm]{../images/00_APPROX_eil101_approx2.png} \includegraphics[width=4cm]{../images/00_APPROX_eil101_approx2.png}
} }
\subfloat[Suivie de 2OPT (679)]{ \subfloat[Suivie de 2OPT (679)]{
...@@ -173,43 +168,34 @@ ...@@ -173,43 +168,34 @@
\end{exampleblock} \end{exampleblock}
\end{frame} \end{frame}
\subsubsection{La 1.5 approximation}
\begin{frame}
\url{https://fr.wikipedia.org/wiki/Algorithme_de_Christofides}
\end{frame}
\subsection{L'algorithme glouton}
\subsubsection{Description}
\begin{frame} \begin{frame}
\frametitle{Description de l'algorithme glouton} \frametitle{Un algorithme glouton générique}
\begin{block}{Def} \begin{block}{Glouton générique}
On se donne un poids $w$ sur les arêtes (une préférence) On se donne un ordre sur les arêtes, et les ajoute de manière gloutonne jusqu'à obtenir un tour.
et on va utiliser ça pour fare des choses
vachement bien.
\end{block} \end{block}
\begin{exampleblock}{Remarque} \begin{exampleblock}{Exemples}
Le choix du poids est important, et on peut \begin{itemize}
prendre la distance, ou bien le résultat \item choix naturel : trier les arêtes en fonction de leur coût
donné par un PL ... comme par hasard !
\item on verra plus loin qu'on peut les trier en fonction de la solution d'un autre problème.
\end{itemize}
\end{exampleblock} \end{exampleblock}
\end{frame} \end{frame}
\subsubsection{Avec des distances}
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Un algorithme glouton générique}
\begin{block}{coucou} \begin{block}{Exécution de l'algorithme}
\begin{figure} \begin{figure}
\centering \centering
\subfloat[Résultat partiel]{ \subfloat[Ajout d'arêtes formant des chemins]{
\includegraphics[width=5cm]{../images/00154_APPROX_kroA100_glouton.png} \includegraphics[width=5cm]{../images/00154_APPROX_kroA100_glouton.png}
} }
\subfloat[Résultat final ]{ \subfloat[Résultat final : tour ]{
\includegraphics[width=5cm]{../images/00_APPROX_kroA100_glouton.png} \includegraphics[width=5cm]{../images/00_APPROX_kroA100_glouton.png}
} }
\caption{Algorithme glouton en utilisant les distances} \caption{Algorithme glouton en utilisant les distances}
...@@ -218,51 +204,46 @@ ...@@ -218,51 +204,46 @@
\end{frame} \end{frame}
\section{Combinaison \& Comparaison}
\begin{frame}
\begin{exampleblock}{Exemple~: Berlin51, 51 points, optimum à 7542}
\begin{center}
\begin{tabular}{l|r}
\textbf{Algorithme} & \textbf{Borne Sup} \\ \hline
GLOUTON & 9951 \\
GLOUTON + 2OPT & 7657 \\
APPROX2 & 10114 \\
APPROX2 + 2OPT & 7755 \\ \hline
PL simple + GLOUTON & 7941 \\
PL full + GLOUTON & 7542
\end{tabular}
\end{center}
\end{exampleblock}
\end{frame}
\begin{frame} \begin{frame}
\begin{exampleblock}{Exemple~: Berlin51, 51 points, optimum à 7542} \frametitle{Comparaison des méthodes}
\begin{figure} \begin{exampleblock}{Exemple~: berlin52 (52 points, valeur optimale à 7542)}
\centering
\subfloat[2-Approx]{ \begin{multicols}{2}
\includegraphics[width=3cm]{../images/00_APPROX_berlin52_approx2.png}
} \raggedcolumns
\subfloat[2-Approx + 2OPT]{ \begin{center}
\includegraphics[width=3cm]{../images/00_APPROX_berlin52_approx2_2opt.png} \includegraphics[width=4cm]{../images/00_APPROX_berlin52_approx2.png}
}
2-approximation (10114)
\subfloat[Glouton\label{fig:approx:berlin:glouton}]{ \ds
\includegraphics[width=3cm]{../images/00_APPROX_berlin52_glouton.png}
}
\subfloat[Glouton + 2OPT\label{fig:approx:berlin:glouton2opt}]{ \includegraphics[width=4cm]{../images/00_APPROX_berlin52_glouton.png}
\includegraphics[width=3cm]{../images/00_APPROX_berlin52_glouton_2opt.png}
} glouton (9951)
\caption{Approximations sur Berlin51}\label{fig:approx:berlin}
\end{figure} \end{center}
\columnbreak
\begin{center}
\includegraphics[width=4cm]{../images/00_APPROX_berlin52_approx2_2opt.png}
2-approx + 2-OPT (7755)
\ds
\includegraphics[width=4cm]{../images/00_APPROX_berlin52_glouton_2opt.png}
glouton + 2-OPT(7657)
\end{center}
\end{multicols}
\end{exampleblock} \end{exampleblock}
\end{frame} \end{frame}
\subsection{Les plus proches voisins ?}
\section{Programme Linéaire} \section{Problème linéaire et bornes inférieures}
\subsection{Présentation sous forme ILP} \subsection{Présentation sous forme ILP}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment