def recup_stats_fichier_taille(fichier): """ Calcule les statistiques de temps d'exécution du fichier en fonction de la taille des grilles :param fichier: chemin du fichier où récupérer les instances :type fichier: str """ grilles = get_grilles(fichier) # On crée un dictionnaire qui aura pour clé la taille de la grille et pour valeur une liste de 2 éléments : # - une liste des temps de création du graphe des grilles de cette taille # - une liste des temps de calcul du chemin le plus rapide pour les grilles de cette taille donnees = {} # Récupération des données des grilles for grille in grilles: taille = grille[0][0] if taille not in donnees.keys(): donnees[taille] = [[], []] creat, calc = lancement_depuis_grille(grille) donnees[taille][0].append(creat) donnees[taille][1].append(calc) # calcul des moyennes et stockage dans des tableaux pour affichage tailles = [] tps_creation = [] tps_calcul = [] for i, j in sorted(donnees.items(), key=lambda colonnes: colonnes[0]): tailles.append(i) tps_creation.append(np.mean(j[0])) tps_calcul.append(np.mean(j[1])) return np.array(tailles), np.array(tps_creation), np.array(tps_calcul)
def temps_execution(nb_lignes, nb_obstacles): """ Génère plusieurs instances de grilles carrées de côté nb_lignes, avec nb_obstacles puis calcule le temps moyen d'exécution (création du graphe et calcul du chemin séparément) de l'algorithme avant de le retourner :param nb_lignes: nombre de lignes et de colonnes des grilles à créer :param nb_obstacles: nombre d'obstacles dans les grilles à créer :type nb_lignes: int :type nb_obstacles: int :return: temps moyen de création des graphes et temps moyen de calcul du chemin le plus rapide """ temps_creation = [] temps_calcul = [] for i in range(50): grille = generer_grille(nb_lignes, nb_lignes, nb_obstacles) # génération des grilles tps1, tps2 = lancement_depuis_grille(grille) # Récupération du temps d'exécution temps_creation += tps1 temps_calcul += tps2 return np.mean(temps_creation), np.mean(temps_calcul)