You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
198 lines
5.5 KiB
198 lines
5.5 KiB
from tkinter import *
|
|
|
|
def lecture(fichier):
|
|
temp_jour = []
|
|
with open(fichier, "r") as menu:
|
|
menu.readline()
|
|
for ligne in menu:
|
|
ligne_net = ligne.strip()
|
|
lst_ligne = list(ligne_net.split(";"))
|
|
temp_jour.append(lst_ligne)
|
|
for i in range(len(temp_jour)):
|
|
temp_jour[i][1] = float(temp_jour[i][1])
|
|
temp_jour[i][2] = float(temp_jour[i][2])
|
|
temp_jour[i][3] = float(temp_jour[i][3])
|
|
return temp_jour
|
|
|
|
def estBissextile(an):
|
|
"""Fonction estBissextile qui prend en paramètre l’année à vérifier et qui renvoie True si elle est bissextile, False sinon"""
|
|
an_base = an
|
|
an = an//4
|
|
|
|
if an*4 == an_base:
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
def estBissextile(an):
|
|
"""Fonction estBissextile qui prend en paramètre l’année à vérifier et qui renvoie True si elle est bissextile, False sinon"""
|
|
an_base = an
|
|
an = an//4
|
|
if an*4 == an_base:
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
def kPlusProches(k,donnees_point,temp_jour):
|
|
"""Fonction qui prend en paramètre un tuple correspondant au point à vérifier,
|
|
une liste du jeu de données et la conso électrique. Renvoie une liste triée
|
|
en fonction de la distance dont les éléments sont des tuples."""
|
|
voisins = []
|
|
if k > len(temp_jour[0]):
|
|
k = len(temp_jour[0])
|
|
energy = temp_jour.pop()
|
|
energy.sort
|
|
for i in range(len(temp_jour[0])):
|
|
d = distance(temp_jour[i],donnees_point)
|
|
voisins.append((d, i))
|
|
voisins.sort()
|
|
return [voisins[i][1] for i in range(k)]
|
|
|
|
def numeroJour(date):
|
|
an_mois_jour = list(date.split("-"))
|
|
|
|
an = int(an_mois_jour[0])
|
|
mois = int(an_mois_jour[1])
|
|
jour = int(an_mois_jour[2])
|
|
|
|
if mois == 1:
|
|
j_en_plus = 0
|
|
elif mois == 2:
|
|
j_en_plus = 31
|
|
elif mois == 3:
|
|
j_en_plus = 59
|
|
elif mois == 4:
|
|
j_en_plus = 90
|
|
elif mois == 5:
|
|
j_en_plus = 120
|
|
elif mois == 6:
|
|
j_en_plus = 151
|
|
elif mois == 7:
|
|
j_en_plus = 181
|
|
elif mois == 8:
|
|
j_en_plus = 212
|
|
elif mois == 9:
|
|
j_en_plus = 243
|
|
elif mois == 10:
|
|
j_en_plus = 273
|
|
elif mois == 11:
|
|
j_en_plus = 304
|
|
elif mois == 12:
|
|
j_en_plus = 334
|
|
|
|
if estBissextile(an) and mois > 2:
|
|
j_en_plus += 1
|
|
|
|
num_jour = j_en_plus + jour
|
|
if num_jour > 365:
|
|
num_jour = 365
|
|
return num_jour
|
|
|
|
def moyenne_liste():
|
|
temp_jour, = lecture("pic-journalier-consommation.csv")
|
|
temp_num_jour = []
|
|
for i in range(365):
|
|
temp_jour[i][0] = numeroJour(temp_jour[i][0])
|
|
for l in range(len(temp_jour)):
|
|
lst_conso = []
|
|
lst_temp_moy = []
|
|
lst_temp_ref = []
|
|
moy_conso = 0
|
|
moy_temp_moy = 0
|
|
moy_temp_ref = 0
|
|
for m in range(len(temp_jour)):
|
|
if temp_jour[l][0] == i+1:
|
|
lst_conso.append(temp_jour[l][1])
|
|
lst_temp_moy.append(temp_jour[l][2])
|
|
lst_temp_ref.append(temp_jour[l][3])
|
|
for n in range(len(lst_conso)):
|
|
moy_conso += lst_conso[n]
|
|
moy_temp_moy += lst_temp_moy[n]
|
|
moy_temp_ref += lst_temp_ref[n]
|
|
moy_conso = moy_conso / len(lst_conso)
|
|
moy_temp_moy = moy_temp_moy / len(lst_temp_moy)
|
|
moy_temp_ref = moy_temp_ref / len(lst_temp_ref)
|
|
temp_num_jour.append([i, moy_conso, moy_temp_moy, moy_temp_ref])
|
|
|
|
def distance(temp_jour,donneespoint):
|
|
"""Fonction qui dit qu'en prenant des points et ben on peut trouver une distance entre 2 point"""
|
|
x1=temp_jour[0]
|
|
x2=donneespoint[0]
|
|
y1=temp_jour[1]
|
|
y2=donneespoint[1]
|
|
z1=temp_jour[2]
|
|
z2=donneespoint[2]
|
|
dist=((x1-x2)**2)+((y1-y2)**2)+((z1-z2)**2)
|
|
return print(dist)
|
|
|
|
def PuissanceMoyenne(lstdistance):
|
|
"""Fonction qui calcule la moyenne de distances entre les points """
|
|
lecture()
|
|
moy = sum() / len()
|
|
|
|
def recup1():
|
|
voisins = value1.get()
|
|
label5.configure(text=voisins)
|
|
|
|
def recup2():
|
|
date = value2.get()
|
|
label6.configure(text=date)
|
|
|
|
def recup3():
|
|
temp_moy = value3.get()
|
|
label6.configure(text=temp_moy)
|
|
|
|
def recup4():
|
|
temp_ref = value4.get()
|
|
label6.configure(text=temp_ref)
|
|
|
|
def calc_conso():
|
|
Conso = ("Calcul pour valeur à afficher")
|
|
label8.configure(text=Conso)
|
|
|
|
fenetre = Tk()
|
|
|
|
canvas1 = Canvas(fenetre)
|
|
|
|
label1 = Label(fenetre, text="Choisissez le nombre de voisins (k) :")
|
|
value1 = IntVar()
|
|
entree1 = Entry(fenetre, textvariable=value1, width=45)
|
|
|
|
label2 = Label(fenetre, text="Veuillez entrez la date (format 'aaaa-mm-jj'):", width=45)
|
|
value2 = IntVar()
|
|
entree2 = Entry(fenetre, textvariable=value2, width=45)
|
|
|
|
label3 = Label(fenetre, text="Veuillez entrez la température moyenne (en °C):", width=45)
|
|
value3 = IntVar()
|
|
entree3 = Entry(fenetre, textvariable=value3, width=45)
|
|
|
|
label4 = Label(fenetre, text="Veuillez entrez la température de référence (en °C) :", width=45)
|
|
value4 = IntVar()
|
|
entree4 = Entry(fenetre, textvariable=value4, width=45)
|
|
|
|
label1.grid(pady=10)
|
|
entree1.grid()
|
|
|
|
label2.grid(pady=10)
|
|
entree2.grid()
|
|
|
|
label3.grid(pady=10)
|
|
entree3.grid()
|
|
|
|
label4.grid(pady=10)
|
|
entree4.grid()
|
|
|
|
label8 = Label(fenetre, text="Conso", bg="yellow")
|
|
|
|
bouton1 = Button(canvas1, text="Tester", command=calc_conso, width=15, height=2, bg="cyan").grid(pady=10)
|
|
|
|
canvas1.grid()
|
|
label8.grid(pady=10)
|
|
|
|
fenetre.title("IHM KNN")
|
|
fenetre.iconbitmap('icon.ico')
|
|
fenetre.mainloop()
|
|
|
|
|
|
|
|
|
|
|