@ -20,7 +20,8 @@ def estBissextile(a):
return ( a % 4 == 0 and a % 100 != 0 ) or a % 400 == 0
return ( a % 4 == 0 and a % 100 != 0 ) or a % 400 == 0
def distance ( pos1 , pos2 ) :
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
x1 , y1 , z1 = pos1
x2 , y2 , z2 = pos2
x2 , y2 , z2 = pos2
diff_njour1 , diff_njour2 = x1 - x2 , x2 - x1
diff_njour1 , diff_njour2 = x1 - x2 , x2 - x1
@ -28,20 +29,22 @@ def distance (pos1, pos2):
diff = x1 - x2
diff = x1 - x2
else :
else :
diff = x2 - x1
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 ) :
def kPlusProches ( echantillon , donnees , k ) :
""" à reprendre : CHAOS """
""" à reprendre -> !! TOTAL CHAOS !! U_u 0w0 *_* """
voisins = [ ]
voisins = [ ]
for i in range ( len ( donnees ) ) :
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 ) )
d = distance ( echantillon , ( date , t_moy , t_ref ) )
voisins . append ( ( d , i ) )
voisins . append ( ( d , i ) )
voisins = sorted ( voisins )
voisins = sorted ( voisins )
return [ voisins [ i ] [ 1 ] for i in range ( k ) ]
return [ voisins [ i ] [ 1 ] for i in range ( k ) ]
def numeroJour ( date ) :
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 ( ' - ' )
date = date . split ( ' - ' )
a , m , j = date
a , m , j = date
a , m , j = int ( a ) , int ( m ) , int ( j )
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 )
mois = ( 0 , 31 , 60 , 91 , 121 , 152 , 182 , 213 , 244 , 274 , 305 , 335 , 366 )
else :
else :
mois = ( 0 , 31 , 59 , 90 , 120 , 151 , 181 , 212 , 243 , 273 , 304 , 334 , 365 )
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 ) :
def PuissanceMoyenne ( consos , i_voisins ) :
""" renvoie la puissance moyenne, prend en entrée une liste triée en fonction de la distance """
""" renvoie la puissance moyenne, prend en entrée une liste triée en fonction de la distance """
res = 0
res = 0
for el in i_voisins :
for el in i_voisins :
res + = consos [ i_voisins ]
res + = consos [ el ]
return res / ( len ( i_voisins ) )
return res / ( len ( i_voisins ) )
def triAvecIndices ( lst ) :
def triAvecIndices ( lst ) :
""" J ' sais même pas ce que je fais """
tab_i = [ ]
tab_i = [ ]
tab = [ ]
tab = [ ]
for i in range ( len ( lst ) ) :
for i in range ( len ( lst ) ) :
@ -68,10 +76,19 @@ def triAvecIndices(lst):
return tab
return tab
num_jour = [ ]
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 :
for date in dates :
num_jour . append ( numeroJour ( date ) )
num_jour . append ( numeroJour ( date ) )
coords = list ( zip ( num_jour , t_moys , t_refs ) )
coords = list ( zip ( num_jour , t_pics , t_refs , consos ) )
print ( coords )
print ( kPlusProches ( ( 80 , 14 , 9 ) , coords , 4 ) )
#print(kPlusProches((80, 14, 9), coords, 20)
print ( PuissanceMoyenne ( consos , kPlusProches ( ( 80 , 14 , 9 ) , coords , 4 ) ) )
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 )