Commit 49767ae8 authored by Aliaume Lopez's avatar Aliaume Lopez

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

parents fb91aeea c425bb7d
......@@ -96,16 +96,20 @@
\frametitle{TSPLIB}
\begin{block}{TSPLIB95}
TSPLIB une librairie d'instances de TSP avec entre $10$ et $10000$ sommets.
TSPLIB une librairie d'instances de TSP de valeurs optimales connues (ou tight encadrement).
\end{block}
\begin{exampleblock}{Parsing}
Données sous forme de :
\begin{itemize}
\item matrice explicite des coûts,
\item coordonnées des sommets dans le plan (distance euclidienne)
\item distance géodésique (lat, lon).
\end{itemize}
\begin{exampleblock}{Différentes instances}
\begin{itemize}
\item taille variable, entre 10 et 10000 sommets
\item différentes fonctions de coût (distance euclidienne, géodésique\dots).
\item parfois empruntés à la vie réélle (circuits électroniques, cartes\dots)
\end{itemize}
\end{exampleblock}
\end{frame}
......@@ -390,14 +394,32 @@
\section{Outils associés}
\begin{frame}
\frametitle{Parsing de TSPLIB}
\es
\begin{exampleblock}{Différentes données à parser}
\begin{itemize}
\item matrice explicite des coûts
\item coordonnées des sommets dans le plan (distance euclidienne)
\item distance géodésique
\end{itemize}
\end{exampleblock}
\ds
\begin{alertblock}{Représentation}
Distance euclidienne dans le plan : dessin sur Pygame.
\end{alertblock}
\end{frame}
\begin{frame}
\frametitle{Algèbre linéaire}
Ne pas utiliser de bibliothèque préexistante ?
\es
\begin{block}{Inversion de matrice}
Implémentation du pivot de Gauss.
......@@ -405,7 +427,17 @@ Ne pas utiliser de bibliothèque préexistante ?
\ds
Sans surprise, de très mauvaises performances.
Sans surprise, de très mauvaises performances : $140$s pour inverser 100 matrices aléatoires (dimension $100 \times 100$).
\es
\begin{block}{Numpy}
\texttt{numpy.linalg.inv}
\end{block}
\ds
$0.9$s pour inverser les 100 matrices\dots
\end{frame}
......@@ -424,6 +456,12 @@ Ne pas utiliser de bibliothèque préexistante ?
\begin{block}{\texttt{scipy.optimize.linopt}}
Implémentation en Python de l'algorithme du simplexe.
\end{block}
\ds
Ce n'est pas très efficace. Ni très précis.
\ds
\begin{block}{\texttt{CVXPy}}
Interface élégante de \texttt{CVXopt} associée à Python. Très efficace.
......@@ -432,7 +470,7 @@ Ne pas utiliser de bibliothèque préexistante ?
\begin{frame}
\frametitle{Stoer-Wagner}
\frametitle{Coupe minimale}
In the MinimumCutPhase, the subset A of the graphs vertices grows starting with an arbitrary single vertex until
A is equal to V. In each step, the vertex which is outside of A, but most tightly connected with A
is added to the set A.
......@@ -472,11 +510,7 @@ Ne pas utiliser de bibliothèque préexistante ?
\end{figure}
\end{exampleblock}
Note pour la comparaison:
Glouton = 60110
Glouton + 2OPT = 50826
Approx2 = 66343
Approx2 + 2OPT = 54428
\end{frame}
......@@ -529,8 +563,12 @@ Avec $D_{E'}$ la matirce d'incidence du graphe restreint à $E'$, et $G_{E'}$ la
\section*{Bibliographie}
\begin{frame}[allowframebreaks]
\frametitle{Bibliographie}
\bibliographystyle{apalike}
\bibliography{presentation}
......
from lineartools import invert
import numpy as np
import random
import time
def testinv():
sumnp = 0
sumlin = 0
for i in range(100):
n = 100
M = np.random.rand(n,n)
print("Iteration",i)
if(np.linalg.det(M) != 0):
a =time.clock()
np.linalg.inv(M)
b = time.clock()
sumnp += b-a
print("numpy done")
a =time.clock()
invert(M)
b = time.clock()
sumlin += b-a
print("=============")
print("Numpy :"sumnp)
print("Gauss :",sumlin)
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