{"cells": [{"cell_type": "markdown", "metadata": {}, "source": ["# 2A.ml - D\u00e9terminer la vitesse moyenne des v\u00e9lib\n", "\n", "Ce notebook explicite une solution pour calculer la vitesse moyenne des velib sachant qu'on ne conna\u00eet que l'\u00e9tat des stations \u00e0 intervalle r\u00e9guliers."]}, {"cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": ["%matplotlib inline"]}, {"cell_type": "markdown", "metadata": {}, "source": ["M\u00eame si je propose quelques jeux de donn\u00e9es, il est possible de cr\u00e9er le sien en s'inspirant du code suivant : [R\u00e9cup\u00e9rer les donn\u00e9es Velib et les visualiser](http://www.xavierdupre.fr/app/manydataapi/helpsphinx/notebooks/api_velib_jcdecaux.html#apivelibjcdecauxrst). Le premier lien d\u00e9crit les donn\u00e9es plus en d\u00e9tail : elles sont constitu\u00e9es des d\u00e9comptes des v\u00e9los et places disponibles pour chaque station d'une m\u00eame ville et pour chaque minute. La m\u00e9thode propos\u00e9e ici est celle des **appariements** d\u00e9crites par le premier lien. L'algorithme peut \u00eatre d\u00e9crit en deux \u00e9tapes :\n", "\n", "1. Construction d'une base d'\u00e9v\u00e9nements : v\u00e9los repos\u00e9s et retir\u00e9s.\n", "2. Appariement des v\u00e9los retir\u00e9s avec les v\u00e9los repos\u00e9s.\n", "\n", "La premi\u00e8re partie ne pose pas de difficult\u00e9 particuli\u00e8re. On peut juste penser \u00e0 retirer les premiers v\u00e9los r\u00e9pos\u00e9s qui ne pourront pas \u00eatre appari\u00e9s de toutes fa\u00e7ons. On fait de m\u00eame pour les derniers v\u00e9los retir\u00e9s.\n", "\n", "La seconde partie est constitut\u00e9e de deux \u00e9l\u00e9ments :\n", "\n", "- un co\u00fbt d'appariement\n", "- la minimisation de l'appariement\n", "\n", "Pour le co\u00fbt, on peut y mettre \u00e0 peu pr\u00e8s toutes les contraintes imaginables (vitesse trop grande, dur\u00e9e trop grande ou trop petite). Pour la seconde, le code optimise de fa\u00e7on tr\u00e8s na\u00efve : on part d'un appariement al\u00e9atoire, on tire deux appariements $a_1 \\rightarrow b_1$ et $a_2 \\rightarrow b_2$. On inverse : $a_1 \\rightarrow b_2$ et $a_2 \\rightarrow b_1$. Si l'appariement est moins co\u00fbteux, on garde. Le code complet est disponible dans le module *velib_trajectories*."]}, {"cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [{"data": {"text/html": ["
\n", " | address | \n", "available_bike_stands | \n", "available_bikes | \n", "banking | \n", "bike_stands | \n", "bonus | \n", "collect_date | \n", "contract_name | \n", "file | \n", "last_update | \n", "lat | \n", "lng | \n", "name | \n", "number | \n", "status | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "Place Jacobins | \n", "2 | \n", "8 | \n", "0 | \n", "10 | \n", "0 | \n", "2014-05-22 02:40:03.954829 | \n", "Besancon | \n", "velib_data.2014-05-22_02-40-02.681782.txt | \n", "2014-05-22 00:09:26 | \n", "47.234142 | \n", "6.033465 | \n", "14 - JACOBINS | \n", "14 | \n", "OPEN | \n", "
1 | \n", "Rue Charles NODIER Sortie du tunnel, direction... | \n", "1 | \n", "11 | \n", "0 | \n", "12 | \n", "0 | \n", "2014-05-22 02:40:03.954829 | \n", "Besancon | \n", "velib_data.2014-05-22_02-40-02.681782.txt | \n", "2014-05-22 02:38:48 | \n", "47.232098 | \n", "6.035136 | \n", "23 - RIVOTTE | \n", "23 | \n", "OPEN | \n", "
2 | \n", "Avenue de la Gare d'Eau face Conseil G\u00e9n\u00e9ral | \n", "4 | \n", "6 | \n", "0 | \n", "10 | \n", "0 | \n", "2014-05-22 02:40:03.954829 | \n", "Besancon | \n", "velib_data.2014-05-22_02-40-02.681782.txt | \n", "2014-05-21 13:24:02 | \n", "47.232140 | \n", "6.022843 | \n", "16 - GARE D'EAU | \n", "16 | \n", "OPEN | \n", "
3 | \n", "18 rue Xavier Marmier | \n", "6 | \n", "6 | \n", "0 | \n", "12 | \n", "0 | \n", "2014-05-22 02:40:03.954829 | \n", "Besancon | \n", "velib_data.2014-05-22_02-40-02.681782.txt | \n", "2014-05-22 00:00:44 | \n", "47.241256 | \n", "6.006690 | \n", "30 - XAVIER MARMIER | \n", "30 | \n", "OPEN | \n", "
4 | \n", "Rue Battant (au niveau du Square Bouchot) | \n", "1 | \n", "9 | \n", "0 | \n", "10 | \n", "0 | \n", "2014-05-22 02:40:03.954829 | \n", "Besancon | \n", "velib_data.2014-05-22_02-40-02.681782.txt | \n", "2014-05-22 02:31:01 | \n", "47.242990 | \n", "6.022070 | \n", "02 - SQUARE BOUCHOT | \n", "2 | \n", "OPEN | \n", "