Spaces:
Sleeping
Sleeping
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() | |