Commit 70a357e0 authored by Simon de Givry's avatar Simon de Givry
Browse files

update tpgraph2 with CFN format

parent f3e489dc
No preview for this file type
......@@ -34,7 +34,7 @@ Sous Linux (ubuntu), ouvrez le fichier \texttt{tpgraph1.zip} à l'adresse
Décompactez le dossier \texttt{tpgraph1} dans \texttt{/tmp} puis ouvrez un terminal de commandes {\sc xterm} et aller dans le dossier du TP en faisant \texttt{cd /tmp/tpgraph1}.
Les différents solvers utiles à ce TP ainsi que leur documentation dont celle de la librairie python {\sc networkx} d'algorithmes sur les graphes se trouvent dans le dossier \texttt{solvers}. Lancer les 4 commandes suivantes pour avoir accès à ces solvers~:\\
Les différents solvers utiles à ce TP ainsi que leur documentation dont celle de la librairie python {\sc networkx} d'algorithmes sur les graphes se trouvent dans le dossier \texttt{solvers}. Lancer les commandes suivantes pour avoir accès à ces solvers~:\\
\texttt{chmod -R 755 solvers}\\
\texttt{PATH=\$PATH:/tmp/tpgraph1/solvers:/tmp/tpgraph1/solvers/gecode:.}\\
\texttt{LD\_LIBRARY\_PATH=/tmp/tpgraph1/solvers/gecode:.}\\
......
No preview for this file type
......@@ -38,7 +38,7 @@ Sous Linux (ubuntu), ouvrez le fichier \texttt{tpgraph2.zip} à l'adresse
Décompactez le dossier \texttt{tpgraph2} dans \texttt{/tmp} puis ouvrez un terminal de commandes {\sc xterm} et aller dans le dossier du TP en faisant \texttt{cd /tmp/tpgraph2}.
Les différents solvers utiles à ce TP ainsi que leur documentation dont celle de la librairie python {\sc networkx} d'algorithmes sur les graphes se trouvent dans le dossier \texttt{solvers}. Lancer les deux commandes suivantes pour avoir accès à ces solvers~:\\
Les différents solvers utiles à ce TP ainsi que leur documentation dont celle de la librairie python {\sc networkx} d'algorithmes sur les graphes se trouvent dans le dossier \texttt{solvers}. Lancer les commandes suivantes pour avoir accès à ces solvers~:\\
\texttt{chmod -R 755 solvers}\\
\texttt{PATH=\$PATH:/tmp/tpgraph2/solvers:.}\\
......@@ -51,7 +51,7 @@ Envoyez vos réponses et vos codes à \texttt{simon.de-givry@inra.fr}.
\caption{Couverture non-rigide d'un ensemble de points source (ronds verts à gauche) vers un autre ensemble de points destination ayant subits une translation et une légère déformation (carrés rouges à droite).\label{matchingR}}
\end{figure}
En analyse d'images, le problème de reconnaissance de formes peut s'exprimer comme un problème de couverture de points entre deux ensembles avec une fonction d'optimisation quadratique. La figure \ref{matchingR} (\url{hciweb2.iwr.uni-heidelberg.de/opengm/index.php?l0=benchmark}) donne un exemple.
En analyse d'images, le problème de reconnaissance de formes peut s'exprimer comme un problème de couverture de points entre deux ensembles avec une fonction d'optimisation quadratique. La figure \ref{matchingR} (\url{hciweb2.iwr.uni-heidelberg.de/opengm/index.php?l0=benchmark}) donne un exemple.
Le problème prend en entrée une liste de points 2D source et une liste de points 2D destination. On cherche à trouver un couplage maximum de coût minimum entre ces deux ensembles de points. Une modélisation par un modèle graphique consiste à avoir une variable par point source ayant chacune un domaine de valeurs correspondant à l'ensemble des points destination. La fonction objectif s'écrit alors
$$ \min_{\bf x} \sum_i \sum_{j, i<j} f(x_i, x_j)$$
......@@ -69,9 +69,10 @@ Ce modèle graphique peut également s'écrire comme un programme linéaire en
&& x_{ik}, y_{ikjl} \in \{0,1\} \quad \forall i,j,k,l, i<j
\end{eqnarray}
Résoudre l'instance \texttt{matching0} du dossier \texttt{tpgraph2} avec les solvers {\sc toulbar2} et {\sc glpk}. Donner vos résultats.\\
\texttt{toulbar2 -m=2 -s matching0.wcsp}\\
%%Optimum: 1936235 in 874 backtracks and 2053 nodes ( 46 removals by DEE) and 1.18223 seconds.
Résoudre l'instance \texttt{matching0} du dossier \texttt{tpgraph2} avec les solvers {\sc toulbar2} et {\sc glpk}. Donner vos résultats. Comparer les minorants produits par les deux approches en pré-traitement avant de faire le Branch-and-Bound.\\
\texttt{./solvers/toulbar2 -m=2 -s=3 matching0.cfn}\\
%%%%%Optimum: 1936235 in 874 backtracks and 2053 nodes ( 46 removals by DEE) and 1.18223 seconds.
%%Optimum: 1936293 in 328 backtracks and 808 nodes ( 146 removals by DEE) and 0.462 seconds.
\texttt{glpsol --cpxlp matching0\_support.lp}\\
%%mip = not found yet >= 1.156277422e+06
......@@ -79,22 +80,23 @@ Sachant que le problème de couverture quadratique décrit ci-dessus peut inclur
\section{Détection de trajectoires d'avions}
A partir du site \url{opensky-network.org}, nous avons collecté une liste de coordonnées longitude/latitude d'avions survolant la Bretagne ($\pm 2\degree$ depuis l'aéroport de Rennes $-1.43\degree$ lat./$48.04\degree$ lon.) à différents instants temporels. On se propose de chercher un couplage optimal (comme décrit en section \ref{qap}) entre instants successifs. Allez dans le dossier \texttt{/tmp/tpgraph2/opensky} et tapez la commande suivante pour voir la position des avions aux temps $t=0$, $t=60$ et $t=180$ secondes~:\\
A partir du site \url{opensky-network.org}, nous avons collecté une liste de coordonnées longitude/latitude d'avions survolant la Bretagne ($\pm 2\degree$ depuis l'aéroport de Rennes $-1.43\degree$ lat./$48.04\degree$ lon.) à différents instants temporels. On se propose de chercher un couplage optimal (comme décrit en section \ref{qap}) entre instants successifs. Allez dans le dossier \texttt{/tmp/tpgraph2/opensky} et tapez la commande suivante pour voir la position des avions aux temps $t=0$, $t=1$ et $t=3$ minutes~:\\
\texttt{gnuplot opensky.plot}\\
Construire le problème de couplage correspondant à la transition de $t=0$ à $t=60$ à l'aide du script \texttt{opensky.py}. Donner son optimum et analyser le résultat.\\
\texttt{python opensky.py 0.dat 1.dat 0to1.wcsp}\\
\texttt{toulbar2 0to1.wcsp -m=2 -s -w=0to1.sol}\\
\texttt{awk -f sol2plot.awk 0.dat 1.dat 0to1.sol > 0to1.plot}\\
Construire le problème de couplage correspondant à la transition de $t=0$ à $t=1$ à l'aide du script \texttt{opensky.py}. Donner son optimum et analyser le résultat.\\
\texttt{python opensky.py 0.dat 1.dat 0to1.cfn}\\
\texttt{../solvers/toulbar2 0to1.cfn -m=2 -s=3 -w=0to1.sol}\\
\texttt{awk -f ./sol2plot.awk 0.dat 1.dat 0to1.sol > 0to1.plot}\\
\texttt{gnuplot opensky0to1.plot}\\
%%Optimum: 27883 in 23 backtracks and 74 nodes ( 0 removals by DEE) and 0.334858 seconds.
Construire le problème de couplage correspondant à la transition de $t=60$ à $t=180$. Quel problème rencontrez vous ? Modifiez le script python pour le résoudre. Analyser vos résultats. Note~: voir la contrainte \texttt{wamong} dans la documentation de {\sc toulbar2}.\\
\texttt{python opensky.py 1.dat 3.dat 1to3.wcsp}\\
\texttt{toulbar2 1to3.wcsp -m=2 -s -w=1to3.sol}\\
\texttt{awk -f sol2plot.awk 1.dat 3.dat 1to3.sol > 1to3.plot}\\
Construire le problème de couplage correspondant à la transition de $t=1$ à $t=3$. Quel problème rencontrez vous ? Modifiez le script python pour le résoudre en ajoutant une valeur spéciale dans les domaines traduisant l'absence de couplage. Analyser vos résultats. Note~: voir la contrainte \texttt{wamong} dans la documentation CFNformat.pdf de {\sc toulbar2}.\\
\texttt{python opensky.py 1.dat 3.dat 1to3.cfn}\\
\texttt{../solvers/toulbar2 1to3.cfn -m=2 -s=3 -w=1to3.sol}\\
\texttt{awk -f ./sol2plot.awk 1.dat 3.dat 1to3.sol > 1to3.plot}\\
\texttt{gnuplot opensky0to1to3.plot}\\
%%Optimum: 50615 in 10649 backtracks and 32150 nodes ( 3948 removals by DEE) and 120.939 seconds.
%%%%%Optimum: 50615 in 10649 backtracks and 32150 nodes ( 3948 removals by DEE) and 120.939 seconds.
%%Optimum: 50.769 in 32524 backtracks and 79564 nodes ( 64586 removals by DEE) and 312.759 seconds.
Comparer les résultats avec une approche utilisant un programme linéaire (comme décrit en section \ref{qap}) en le résolvant avec le solver {\sc glpk}.
\end{document}
No preview for this file type
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