enzo.vandepoele
3 years ago
1 changed files with 198 additions and 0 deletions
@ -0,0 +1,198 @@ |
|||||
|
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() |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
Loading…
Reference in new issue