villeDepart = C.Ret_Coord_csv() villeArrivee = villeDepart # seulement pour avoir le même type de données while(villeDepart == villeArrivee or not(memeZone(villeDepart[0], villeDepart[1], villeArrivee[0], villeArrivee[1]))): villeArrivee = C.Ret_Coord_csv() else: # sinon on choisit la dernière ville d'arrivée villeDepart = villeArrivee while(villeDepart == villeArrivee or not(memeZone(villeDepart[0], villeDepart[1], villeArrivee[0], villeArrivee[1]))): villeArrivee = C.Ret_Coord_csv() # 2 - on génère le parcours parcours = generationParcours(villeDepart[0], villeDepart[1], villeArrivee[0], villeArrivee[1], api_key, False) # 3 - on génère le trajet trajet = generationConduite(parcours, T, V, tempsMax, vitesseMax, fact, d_arret, limites) tableauRegime = fonctionRegimemoteurRapport(alpha, vitessesInput, regimesInput, regimeChangementrapport, vitesseMax) trajet['regimeMoteur'] = tableauRegime.iloc[trajet ['vitesse'].apply(int)]['regime'].values trajet['distance'] = (trajet['x'].diff()**2 + trajet['y'].diff()**2).apply(math.sqrt).cumsum() trajet['distance'].fillna(0, inplace = True) # 5 - on génère les brulages FAP # 1ere condition: rester au-dessus d'un régime moteur donné pendant un temps minimum conditionBrulage1 = pd.stats.moments.rolling_sum(trajet['regimeMoteur'] >= regimeMin_brulage, window = tempsMin_brulage) conditionBrulage1.fillna(0, inplace = True) conditionBrulage1 = (conditionBrulage1 == tempsMin_brulage) # quand Vrai, signifie que la condition 1 est remplie # 2eme condition: être au-dessus d'une vitesse minimum au moment du brulage conditionBrulage2 = trajet['vitesse'] >= vitesseMin_brulage # 3eme condition: être dans la fenêtre [distance avant brûlage ; distance avant brûlage + distance avant panne] conditionBrulage3 = trajet['distance'] % (distance_avant_brulage + distance_avant_panne)
''' main ''' # charge tous les chemins pour un conducteur donné conducteur = '178' trajets = chargeTrajets('/home/roms/Kaggle/AXA/Data/drivers/' + conducteur) # définit les paramètres pour le calcul du rapport/régime moteur alpha = np.array([-0.020, -0.018, -0.016, -0.014, -0.012, -0.010]) vitessesInput = np.array([20.0,35.0,55.0,75.0,90.0,110.0]) regimesInput = np.array([2000.0,2500.0,2500.0,2500.0,2500.0,2500.0]) regimeChangementrapport = [3000,3000,3000,3000,3000,9000] vitesseMax = 200 valeursMoteur = fonctionRegimemoteurRapport(alpha, vitessesInput, regimesInput, regimeChangementrapport, vitesseMax) # calcule le régime/rapport moteur trajets['regime'] = valeursMoteur['regime'][trajets['vitesse'].apply(round)].values trajets['rapport'] = valeursMoteur['rapport'][trajets['vitesse'].apply(round)].values # quelques statistiques plt.title('Temps pour chaque rapport de boite') plt.xlabel('rapport') plt.ylabel('heures') val = trajets['rapport'].value_counts()/3600 plt.bar(val.index , val.values, align = 'center') bins_ = range(0, 4500, 500) plt.title('Temps pour chaque régime') plt.xlabel('régime')
''' main ''' # charge tous les chemins pour un conducteur donné conducteur = '178' trajets = chargeTrajets('/home/roms/Kaggle/AXA/Data/drivers/' + conducteur) # définit les paramètres pour le calcul du rapport/régime moteur alpha = np.array([-0.020, -0.018, -0.016, -0.014, -0.012, -0.010]) vitessesInput = np.array([20.0, 35.0, 55.0, 75.0, 90.0, 110.0]) regimesInput = np.array([2000.0, 2500.0, 2500.0, 2500.0, 2500.0, 2500.0]) regimeChangementrapport = [3000, 3000, 3000, 3000, 3000, 9000] vitesseMax = 200 valeursMoteur = fonctionRegimemoteurRapport(alpha, vitessesInput, regimesInput, regimeChangementrapport, vitesseMax) # calcule le régime/rapport moteur trajets['regime'] = valeursMoteur['regime'][trajets['vitesse'].apply( round)].values trajets['rapport'] = valeursMoteur['rapport'][trajets['vitesse'].apply( round)].values # quelques statistiques plt.title('Temps pour chaque rapport de boite') plt.xlabel('rapport') plt.ylabel('heures') val = trajets['rapport'].value_counts() / 3600 plt.bar(val.index, val.values, align='center')