Commit 262f6767 authored by Bachir Lachguel's avatar Bachir Lachguel 🍣
Browse files

Merge branch 'max' into 'master'

Max

See merge request !1
parents d20f3777 d15b4e79
......@@ -5,22 +5,21 @@ class Car:
self.id = id
self.arrival = uniform(420,540)
self.load = uniform(5000,10000)
self.load_time = (self.load/7400)*60 #À MODIFIER POUR PRENDRE EN COMPTE LA VITESSE DE RECHARGE DE LA BORNE
# PLUS PRENDRE EN COMPTE LA PUISSANCE DE CHARGE
self.load_time = (self.load/7400)*60 #temps de recharge en minutes
self.departure = uniform(1080,1200)
car1 = Car(0)
#print(car1.load)
print(car1.load_time)
print(car1.id)
#print(car1.arrival,car1.departure)
step = 30
step = 1
def dis_arrival(car):
dis_arrival = (car.arrival//step)*step
return int(dis_arrival)
def dis_departure(car):
dis_departure = (car.departure//step)*step
return int(dis_departure)
def deltaE(car):
deltaE = car.load/(car.load_time//step + 1)
return deltaE
......@@ -29,4 +28,3 @@ def nbValues(car):
nbValues = car.load_time//step + 1
return int(nbValues)
print(nbValues(car1),deltaE(car1),dis_arrival(car1))
\ No newline at end of file
......@@ -2,11 +2,13 @@ import csv
from matplotlib import pyplot as plt
from car import *
import copy
import numpy as np
def avg(liste):
return sum(liste)/len(liste)
path = "/home/sobornost/Desktop/parsable_profil.csv"
with open(path, "r", encoding='utf-8-sig') as conso:
path1 = "/Users/Max/mobelec/profil_conso_1.csv"
with open(path1, "r", encoding='utf-8-sig') as conso:
reader = csv.reader(conso)
header = next(reader)
dateIndex = 0
......@@ -16,32 +18,42 @@ with open(path, "r", encoding='utf-8-sig') as conso:
date = []
total = []
temps = [t for t in range(0,1440,30)]
cars = []
for i in range(0,50):
cars.append(Car(i))
for row in reader:
date.append(row[dateIndex])
total.append(int(row[totalIndex]))
total_with_cars = copy.deepcopy(total)
for car in cars:
for i in range(dis_arrival(car), dis_arrival(car) + nbValues(car)*step):
total_with_cars[i] = total[i] + deltaE(car)
print("Voiture n°" + str(car.id))
for i in range(len(total_with_cars)):
if total[i] != total_with_cars[i]:
print(total[i] - total_with_cars[i])
moy = avg(total)
pu = []
for value in total:
pu.append(value/moy)
print(len(temps))
print(len(total_with_cars))
plt.plot(temps,total_with_cars[:48])
plt.show()
\ No newline at end of file
path2 = "/Users/Max/mobelec/prod_solaire.csv"
with open(path2, "r", encoding='utf-8-sig') as conso:
reader = csv.reader(conso)
header = next(reader)
dateIndex = 0
totalIndex = 2
date_prod = []
total_prod = []
temps = []
for t in range(48):
temps.append(t/2)
for row in reader:
date_prod.append(row[dateIndex])
total_prod.append(int(row[totalIndex]))
from main import *
from car import *
import numpy as np
from matplotlib import pyplot as plt
avg_conso = 5*10**4
avg_puissance = 160*(10**3)
puiss_charge_1 = 7400 #Bornes à 7,4kVA
puiss_charge_2 = 22000 #Bornes à 22kVA
avg_prod_solaire = 3*10**4
p_min = 1242
array_temps = np.zeros(len(temps))
for i in range(len(temps)):
array_temps[i]=temps[i]
array_total = np.zeros(len(total))
for i in range(len(total)):
array_total[i] = total[i]*avg_conso/avg(total)
array_puissance_batiment = np.zeros(len(total))
for i in range(len(total)):
array_puissance_batiment[i] = 2*total[i]*avg_puissance/avg(total)
prod_solaire = np.zeros(len(total_prod))
for i in range(len(prod_solaire)):
prod_solaire[i] = avg_prod_solaire * total_prod[i] * 2 / avg(total_prod)
def divise_pas(A,k): #Prend un tableau/liste et divise le pas par k en augmentant le nombre de valeurs du tableau
n = len(A)
res = np.zeros(k*(n-1)+1)
for i in range(n-1):
for j in range(1,k):
res[k*i] = A[i]
res[k*i+j] = A[i]+ j*(A[i+1] - A[i])/k
res[k*(n-1)] = A[n-1]
return res
array_total = divise_pas(array_total[:48],30) #valeurs sur 1 jour au pas 1 min
array_temps = divise_pas(array_temps[:48],30) #temps sur 1 jour au pas 1 min
array_puissance_batiment = divise_pas(array_puissance_batiment[:48],30) #puissance sur 1 jour au pas 1 min
array_prod_solaire = divise_pas(prod_solaire[:48],30)
array_voitures = np.zeros(len(array_total))
array_puiss_voitures = np.zeros(len(array_total))
array_voitures_étalé = np.zeros(len(array_total))
array_puiss_voitures_étalé = np.zeros(len(array_total))
for car in cars:
for i in range(dis_arrival(car), dis_arrival(car) + nbValues(car)*step): #Crée un tableau de consommation des véhicules électriques
array_voitures[i] += deltaE(car)
array_puiss_voitures[i] += puiss_charge_1
for car in cars:
puiss_charge_étalé = 60 * car.load /(dis_departure(car)-60-dis_arrival(car))
if puiss_charge_étalé > p_min:
for i in range(dis_arrival(car), dis_departure(car)-60): #Crée un tableau de consommation des véhicules électriques étalé au maximum (on rend la voiture disponible 1h avant l'heure de départ)
array_voitures_étalé[i] += car.load/(car.load//puiss_charge_étalé + 1)/60
array_puiss_voitures_étalé[i] += puiss_charge_étalé
else:
for i in range(dis_arrival(car), dis_arrival(car) + int((car.load//p_min+1))*60):
array_voitures_étalé[i] += car.load/(car.load//p_min + 1)/60
array_puiss_voitures_étalé[i] += p_min
"""
plt.subplot(211)
plt.plot(array_temps,array_total, label='Consommation du bâtiment')
plt.plot(array_temps,array_voitures,'--',label='Consommation des véhicules')
plt.plot(array_temps,array_voitures_étalé,'--',label='Consommation des véhicules étalé')
total_conso = array_voitures+array_total
plt.plot(array_temps,total_conso,label='Consommation Totale')
plt.xlabel("Temps (min)")
plt.ylabel("Consommation énergétique (Wh)")
plt.legend()
"""
array_conso_totale_1 = array_puissance_batiment + array_puiss_voitures
array_conso_totale_étalée = array_puissance_batiment + array_puiss_voitures_étalé
array_puissance_soutirée_1 = array_conso_totale_1 - array_prod_solaire
array_puissance_soutirée_étalée = array_conso_totale_étalée - array_prod_solaire
plt.subplot(211)
plt.plot(array_temps,array_puissance_batiment,'--',label='Consommation du bâtiment')
plt.plot(array_temps,array_prod_solaire,'--',label='Production panneau solaires')
plt.plot(array_temps,array_puiss_voitures,'--',label='Consommation des véhicules')
plt.plot(array_temps,array_conso_totale_1,'--',label='Consommation totale')
plt.plot(array_temps,array_puissance_soutirée_1,label='Puissance soutirée au fournisseur')
plt.xlabel("Temps (h)")
plt.ylabel("Consommation énergétique (W)")
plt.legend()
plt.subplot(212)
plt.plot(array_temps,array_puissance_batiment,'--',label='Consommation du bâtiment')
plt.plot(array_temps,array_prod_solaire,'--',label='Production panneau solaires')
plt.plot(array_temps,array_puiss_voitures_étalé,'--',label='Consommation des véhicules étalée')
plt.plot(array_temps,array_conso_totale_étalée,'--',label='Consommation totale étalée')
plt.plot(array_temps,array_puissance_soutirée_étalée,label='Puissance soutirée au fournisseur')
plt.xlabel("Temps (h)")
plt.ylabel("Consommation énergétique (W)")
plt.legend()
plt.show()
def delta_puiss(A):
return (max(A)-min(A))
def delta_peak(A,B):
return(abs( max(A) - max(B) ))
print("Delta puissance 1 : " + str(int(delta_puiss(array_puissance_soutirée_1))) + " W")
print("Delta puissance 2 : " + str(int(delta_puiss(array_puissance_soutirée_étalée))) + " W")
print("Delta peak 1 : " + str(int(delta_peak(array_puissance_batiment,array_puissance_soutirée_1))) + " W")
print("Delta peak 2 : " + str(int(delta_peak(array_puissance_batiment,array_puissance_soutirée_étalée))) + " W")
Horodate,Filière de production,Total énergie injectée (Wh)
2020-06-17 00:00:00+02:00,F5 : Solaire,0
2020-06-17 00:30:00+02:00,F5 : Solaire,0
2020-06-17 01:00:00+02:00,F5 : Solaire,0
2020-06-17 01:30:00+02:00,F5 : Solaire,0
2020-06-17 02:00:00+02:00,F5 : Solaire,0
2020-06-17 02:30:00+02:00,F5 : Solaire,0
2020-06-17 03:00:00+02:00,F5 : Solaire,0
2020-06-17 03:30:00+02:00,F5 : Solaire,0
2020-06-17 04:00:00+02:00,F5 : Solaire,0
2020-06-17 04:30:00+02:00,F5 : Solaire,0
2020-06-17 05:00:00+02:00,F5 : Solaire,162333
2020-06-17 05:30:00+02:00,F5 : Solaire,4251181
2020-06-17 06:00:00+02:00,F5 : Solaire,15782895
2020-06-17 06:30:00+02:00,F5 : Solaire,64948636
2020-06-17 07:00:00+02:00,F5 : Solaire,171845811
2020-06-17 07:30:00+02:00,F5 : Solaire,340144657
2020-06-17 08:00:00+02:00,F5 : Solaire,542310220
2020-06-17 08:30:00+02:00,F5 : Solaire,774122793
2020-06-17 09:00:00+02:00,F5 : Solaire,1039092414
2020-06-17 09:30:00+02:00,F5 : Solaire,1312796537
2020-06-17 10:00:00+02:00,F5 : Solaire,1544814117
2020-06-17 10:30:00+02:00,F5 : Solaire,1790418047
2020-06-17 11:00:00+02:00,F5 : Solaire,1979266946
2020-06-17 11:30:00+02:00,F5 : Solaire,2111178948
2020-06-17 12:00:00+02:00,F5 : Solaire,2175003959
2020-06-17 12:30:00+02:00,F5 : Solaire,2232818961
2020-06-17 13:00:00+02:00,F5 : Solaire,2231845441
2020-06-17 13:30:00+02:00,F5 : Solaire,2221735860
2020-06-17 14:00:00+02:00,F5 : Solaire,2189836707
2020-06-17 14:30:00+02:00,F5 : Solaire,2171130987
2020-06-17 15:00:00+02:00,F5 : Solaire,2118345751
2020-06-17 15:30:00+02:00,F5 : Solaire,2071710149
2020-06-17 16:00:00+02:00,F5 : Solaire,1926610288
2020-06-17 16:30:00+02:00,F5 : Solaire,1800033946
2020-06-17 17:00:00+02:00,F5 : Solaire,1628151253
2020-06-17 17:30:00+02:00,F5 : Solaire,1476846670
2020-06-17 18:00:00+02:00,F5 : Solaire,1243167422
2020-06-17 18:30:00+02:00,F5 : Solaire,1011216184
2020-06-17 19:00:00+02:00,F5 : Solaire,736525366
2020-06-17 19:30:00+02:00,F5 : Solaire,500396322
2020-06-17 20:00:00+02:00,F5 : Solaire,279773946
2020-06-17 20:30:00+02:00,F5 : Solaire,136402534
2020-06-17 21:00:00+02:00,F5 : Solaire,47173706
2020-06-17 21:30:00+02:00,F5 : Solaire,12024433
2020-06-17 22:00:00+02:00,F5 : Solaire,9853059
2020-06-17 22:30:00+02:00,F5 : Solaire,9908419
2020-06-17 23:00:00+02:00,F5 : Solaire,0
2020-06-17 23:30:00+02:00,F5 : Solaire,0
\ No newline at end of file
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment