@ -20,7 +20,8 @@ def estBissextile(a):
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 """
""" 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
diff_njour1 , diff_njour2 = x1 - x2 , x2 - x1
@ -28,20 +29,22 @@ def distance (pos1, pos2):
diff = x1 - x2
else :
diff = x2 - x1
return ( ( diff ) * * 2 ) + ( ( y1 - y2 ) * * 2 ) + ( ( z1 - z2 ) * * 2 )
return np . sqrt ( ( diff ) * * 2 ) + ( ( y1 - y2 ) * * 2 ) + ( ( z1 - z2 ) * * 2 )
def kPlusProches ( echantillon , donnees , k ) :
""" à reprendre : CHAOS """
""" à reprendre -> !! TOTAL CHAOS !! U_u 0w0 *_* """
voisins = [ ]
for i in range ( len ( donnees ) ) :
date , t_moy , t_ref = donnees [ i ]
date , t_moy , t_ref , conso = donnees [ i ]
d = distance ( echantillon , ( date , t_moy , t_ref ) )
voisins . append ( ( d , i ) )
voisins = sorted ( voisins )
return [ voisins [ i ] [ 1 ] for i in range ( k ) ]
def numeroJour ( date ) :
""" Donne le numéro du jour dans l ' année de la date " 2442-04-24 " """
""" renvoie 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 )
@ -49,17 +52,22 @@ def numeroJour(date):
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
return int ( mois [ m - 1 ] + j )
def PuissanceMoyenne ( consos , i_voisins ) :
""" renvoie la puissance moyenne, prend en entrée une liste triée en fonction de la distance """
res = 0
for el in i_voisins :
res + = consos [ i_voisins ]
res + = consos [ el ]
return res / ( len ( i_voisins ) )
def triAvecIndices ( lst ) :
""" J ' sais même pas ce que je fais """
tab_i = [ ]
tab = [ ]
for i in range ( len ( lst ) ) :
@ -68,10 +76,19 @@ def triAvecIndices(lst):
return tab
num_jour = [ ]
dates , consos , t_moys , t_refs = lecture ( " pic-journalier-consommation.csv " )
dates , consos , t_pics , t_refs = lecture ( " pic-journalier-consommation.csv " )
for date in dates :
num_jour . append ( numeroJour ( date ) )
coords = list ( zip ( num_jour , t_moys , t_refs ) )
print ( coords )
print ( kPlusProches ( ( 80 , 14 , 9 ) , coords , 4 ) )
print ( PuissanceMoyenne ( consos , kPlusProches ( ( 80 , 14 , 9 ) , coords , 4 ) ) )
coords = list ( zip ( num_jour , t_pics , t_refs , consos ) )
#print(kPlusProches((80, 14, 9), coords, 20)
print ( PuissanceMoyenne ( consos , kPlusProches ( ( numeroJour ( " 2011-06-24 " ) , 15 , 20 ) , coords , 20 ) ) )
#application du jeu de test
tab = [ ]
test_dates , test_consos , test_pic , test_ref = lecture ( " jeuTests.csv " )
for i in range ( len ( test_dates ) ) :
tab . append ( PuissanceMoyenne ( consos , kPlusProches ( ( numeroJour ( test_dates [ i ] ) , test_pic [ i ] , test_ref [ i ] ) , coords , 20 ) ) )
print ( tab )