From eb688272884c5ee7f61cf281eddfe9799d80733d Mon Sep 17 00:00:00 2001 From: SERNY Sacha Date: Thu, 12 May 2022 09:35:07 +0200 Subject: [PATCH] Update 'py_main.py' --- py_main.py | 50 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/py_main.py b/py_main.py index 6b8e3f9..98dea54 100644 --- a/py_main.py +++ b/py_main.py @@ -14,30 +14,60 @@ def lecture(name): lst_t_moy.append(float(t_moy)) lst_t_ref.append(float(t_ref)) return(np.array(lst_date), np.array(lst_conso), np.array(lst_t_moy), np.array(lst_t_ref)) - -def numero_jour (date): - """NON FAIT""" - return int(date.split("-")[2]) + +def estBissextile(a): + """regarde si l'année correspond à une année bissextile""" + return (a%4==0 and a%100!=0) or a%400==0 def distance (pos1, pos2): + """Fonction distance qui prend en paramètre 2 tuples (Numéro du jour, Température moyenne, température de référence) et qui renvoie un nombre réel représentant la distance euclidienne""" x1, y1, z1 = pos1 x2, y2, z2 = pos2 - return np.sqrt((x1-x2)**2)+((y1-y2)**2)+((z1-z2)**2) + diff_njour1, diff_njour2 = x1-x2, x2-x1 + if (x1-x2) <= (x2-x1): + diff = x1-x2 + else: + diff = x2-x1 + return ((diff)**2)+((y1-y2)**2)+((z1-z2)**2) def kPlusProches(echantillon, donnees, k): + """ à reprendre : CHAOS """ voisins = [] for i in range(len(donnees)): date, conso, t_moy = donnees[i] d = distance(echantillon, (date, conso, t_moy)) - print (d) voisins.append((d, i)) + voisins = sorted(voisins) return [voisins[i][1] for i in range(k)] -num_jour = [] +def numeroJour(date): + """Donne le numéro du jour dans l'année de la date "2442-04-24" """ + date = date.split('-') + a, m, j = date + a, m, j = int(a), int(m), int(j) + if (estBissextile(int(a))): + mois = (0,31,60,91,121,152,182,213,244,274,305,335,366) + else: + mois = (0,31,59,90,120,151,181,212,243,273,304,334,365) + return mois[m-1] + j + +def PuissanceMoyenne(lst): + """renvoie la puissance moyenne, prend en entrée une liste triée en fonction de la distance""" + + +def triAvecIndices(lst): + tab_i= [] + tab = [] + for i in range(len(lst)): + tab_i.append(i) + tab = list(zip(lst, tab_i)) + return tab +num_jour = [] + dates, consos, t_moys, t_refs = lecture("pic-journalier-consommation.csv") for date in dates: - num_jour.append(numero_jour(date)) + num_jour.append(numeroJour(date)) coords = list(zip(num_jour, t_moys, t_refs)) -print(kPlusProches((31, 0, 0), coords, 4)) - +print(coords) +print(kPlusProches((80, 14, 9), coords, 4)) \ No newline at end of file