pq / main.py
Daniel Varga
removing demand charge
fc67e21
raw
history blame contribute delete
No virus
3.03 kB
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import matplotlib.cm
from simulation import *
from data_processing import *
from visualization import *
from supplier import Supplier
matplotlib.rcParams['figure.figsize'] = [12, 8]
def main():
parameters = Parameters()
met_2021_data, cons_2021_data = read_datasets()
add_production_field(met_2021_data, parameters)
all_2021_data = interpolate_and_join(met_2021_data, cons_2021_data)
results = simulator_with_solar(all_2021_data, parameters)
supplier = Supplier(price=70) # HUF/kWh
supplier.set_price_for_daily_interval_on_workdays(start=6, end=22, price=100)
for month in range(1, 13):
start = f"2021-{month:02}-01"
end = f"2021-{month+1:02}-01"
if month == 12:
end = "2022-01-01"
results_in_month = results[(results.index >= start) & (results.index < end)]
consumption_from_network = results_in_month["consumption_from_network"]
print("Energy supplier charges", int(supplier.fee(consumption_from_network)), "HUF in", start[:-3])
consumption_from_network = results["consumption_from_network"]
print("Energy supplier charges", int(supplier.fee(consumption_from_network)), "HUF between", results.index[0], "and", results.index[-1])
return
fig = visualize_simulation(results, date_range=("2021-02-01", "2021-03-01"))
plt.show()
consumptions_in_mwh = monthly_analysis(results)
monthly_visualization(consumptions_in_mwh)
main() ; exit()
def main_gridsearch():
fixed_consumption = False
parameters = Parameters()
met_2021_data, cons_2021_data = read_datasets()
if fixed_consumption:
cons_2021_data['Consumption'] = 10
N = 20
solar_cell_num_max = 4000
bess_nominal_capacity_max = 4000
solar_cell_nums = np.linspace(0, solar_cell_num_max, N)
bess_nominal_capacities = np.linspace(1e-6, bess_nominal_capacity_max, N)
mg_x, mg_y = np.meshgrid(solar_cell_nums, bess_nominal_capacities)
values = np.zeros((N, N))
for i, solar_cell_num in enumerate(solar_cell_nums):
print(f"{solar_cell_num} / {solar_cell_nums[-1]}")
for j, bess_nominal_capacity in enumerate(bess_nominal_capacities):
parameters.solar_cell_num = solar_cell_num
parameters.bess_nominal_capacity = bess_nominal_capacity
network, solar, bess = evaluate_parameters(parameters, met_2021_data, cons_2021_data)
satisfied = 1 - network / (network + solar + bess)
values[i, j] = satisfied
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
surf = ax.plot_surface(mg_x, mg_y, values * 100, cmap=matplotlib.cm.coolwarm,
linewidth=0, antialiased=False)
ax.set_xlabel("BESS nominal capacity [Ah]")
ax.set_ylabel("Solar cell number")
ax.set_zlabel("Percentage of consumption served without network")
fig.colorbar(surf, shrink=0.5, aspect=10)
plt.show()
main_gridsearch() ; exit()