module challenge.velib_trajectories#

Inheritance diagram of ensae_projects.challenge.velib_trajectories

Short summary#

module ensae_projects.challenge.velib_trajectories

Une solution au problème proposée : Reconstruction de trajectoire velib

source on GitHub

Classes#

class

truncated documentation

ParemetreCoutTrajet

Regroupe l’ensembles des paramètres pour le calcul de la distance associé à un appariement.

Functions#

function

truncated documentation

appariement

On veut apparier les événemens -1 aux événemens +1. On s’attend aux colonnes suivantes: “file”, “collect_date”, …

distance

Calcule une distance pour un appariement conçu ici comme la variance de la vitesse de chaque déplacement + la somme …

distance_path

Calcule la vitesse moyenne lorsque le chemin est connu.

enumerate_events

Construit la liste des événements (vélo réposé ou retiré).

get_data

Récupère les données.

vitesse

Calcule la vitesse d’un déplacement.

Properties#

property

truncated documentation

values

Retourne les valeurs dans un dictionnaire.

Methods#

method

truncated documentation

__init__

__str__

usuel

cost

Retourne un coût, plus il est bas, plus de déplacement est probable.

Documentation#

Une solution au problème proposée : Reconstruction de trajectoire velib

source on GitHub

class ensae_projects.challenge.velib_trajectories.ParemetreCoutTrajet(max_speed=50, high_speed=25, low_speed=5, high_time=0.75, low_time=0.1)#

Bases: object

Regroupe l’ensembles des paramètres pour le calcul de la distance associé à un appariement.

source on GitHub

Parameters:
  • max_speed – au-delà, c’est une vitesse impossible

  • high_speed – au-delà, c’est la vitesse d’un cycliste

  • low_speed – en-deça, il vaut mieux marcher

  • high_time – au-delà, c’est une randonnée

  • low_time – en-deça, pourquoi un vélo

source on GitHub

__init__(max_speed=50, high_speed=25, low_speed=5, high_time=0.75, low_time=0.1)#
Parameters:
  • max_speed – au-delà, c’est une vitesse impossible

  • high_speed – au-delà, c’est la vitesse d’un cycliste

  • low_speed – en-deça, il vaut mieux marcher

  • high_time – au-delà, c’est une randonnée

  • low_time – en-deça, pourquoi un vélo

source on GitHub

__str__()#

usuel

source on GitHub

cost(dh, dt, v)#

Retourne un coût, plus il est bas, plus de déplacement est probable.

Parameters:
  • dh – distance

  • dt – durée

  • v – vitesse

Returns:

coût

source on GitHub

property values#

Retourne les valeurs dans un dictionnaire.

source on GitHub

ensae_projects.challenge.velib_trajectories.appariement(events, iter=1000, params=<ensae_projects.challenge.velib_trajectories.ParemetreCoutTrajet object>, fLOG=<built-in function print>)#

On veut apparier les événemens -1 aux événemens +1. On s’attend aux colonnes suivantes: “file”, “collect_date”, “name”, “lat”, “lng”, +1 ou -1. La fonction part des deux séries d’évéments rangés par ordre croissant, puis il permute deux appariements tant que cela diminue l’erreur d’appariement.

Parameters:
  • events – list d’événements produits par la fonction enumerate_events

  • iter – nombre d’itérations

  • params – ParemetreCoutTrajet

  • fLOG – logging function

Returns:

tuple (mindist, moyenne, appariement, positif, negatif)

source on GitHub

ensae_projects.challenge.velib_trajectories.distance(positif, negatif, app, params)#

Calcule une distance pour un appariement conçu ici comme la variance de la vitesse de chaque déplacement + la somme des coûts de chaque appariement retourné par la fonction vitesse.

Parameters:
  • positif – vélos pris (ou l’inverse)

  • negatif – vélos remis (ou l’inverse)

  • app – appariement (list de tuple (i,j))

  • paramsParemetreCoutTrajet

Returns:

tuple: vitesse moyenne (sans appariements négatifs), distance, vitesse moyenne avec, nombre d’appariements négatifs

source on GitHub

ensae_projects.challenge.velib_trajectories.distance_path(dfp)#

Calcule la vitesse moyenne lorsque le chemin est connu.

Parameters:

dfp – liste des chemins

Returns:

moyenne, stddev

source on GitHub

ensae_projects.challenge.velib_trajectories.enumerate_events(df)#

Construit la liste des événements (vélo réposé ou retiré).

Parameters:

df – DataFrame

Returns:

énumère événéments (ierator) (“file”, “collect_date”, “name”, “lat”, “lng”, +1 ou -1)

source on GitHub

ensae_projects.challenge.velib_trajectories.get_data(whereto)#

Récupère les données.

Parameters:

whereto – destination

source on GitHub

ensae_projects.challenge.velib_trajectories.vitesse(c, d, params)#

Calcule la vitesse d’un déplacement.

Parameters:
  • c – tuple (“file”, “collect_date”, “name”, “lat”, “lng”, +1 ou -1)

  • d – tuple (“file”, “collect_date”, “name”, “lat”, “lng”, +1 ou -1)

  • params – ParemetreCoutTrajet

Returns:

vitesse, cout

La fonction retourne une valeur aberrante si le temps entre les deux événements est négatifs. C’est une configuration impossible : on ne peut reposer un vélo avant de l’avoir retiré. La valeur aberrante est 1e8.

Il reste un cas pour lequel, je ne sais pas encore quelle valeur donner : il s’agit des demi-appariements : un vélo rétiré mais jamais reposé et réciproquement.

source on GitHub