update pv yield code
This commit is contained in:
parent
4f1a47d505
commit
c8c37b756c
@ -39,7 +39,8 @@ class EnergySystem:
|
|||||||
total_gen = 0
|
total_gen = 0
|
||||||
for index, row in data.iterrows():
|
for index, row in data.iterrows():
|
||||||
time = row['time']
|
time = row['time']
|
||||||
sunlight_intensity = row['sunlight']
|
# sunlight_intensity = row['sunlight']
|
||||||
|
pv_yield = row['PV yield[kW/kWp]']
|
||||||
factory_demand = row['demand']
|
factory_demand = row['demand']
|
||||||
electricity_price = row['buy']
|
electricity_price = row['buy']
|
||||||
sell_price = row['sell']
|
sell_price = row['sell']
|
||||||
@ -55,7 +56,7 @@ class EnergySystem:
|
|||||||
soc = self.ess.storage / self.ess.capacity
|
soc = self.ess.storage / self.ess.capacity
|
||||||
self.hour_stored_2.append(soc)
|
self.hour_stored_2.append(soc)
|
||||||
|
|
||||||
generated_pv_power = self.pv.capacity * sunlight_intensity # 生成的功率,单位 kW
|
generated_pv_power = self.pv.capacity * pv_yield# 生成的功率,单位 kW
|
||||||
generated_pv_energy = generated_pv_power * time_interval * self.pv.loss # 生成的能量,单位 kWh
|
generated_pv_energy = generated_pv_power * time_interval * self.pv.loss # 生成的能量,单位 kWh
|
||||||
self.generated += generated_pv_energy
|
self.generated += generated_pv_energy
|
||||||
# pv生成的能量如果比工厂的需求要大
|
# pv生成的能量如果比工厂的需求要大
|
||||||
|
48
main.py
48
main.py
@ -1,9 +1,5 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
|
|
||||||
# In[ ]:
|
|
||||||
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import glob
|
import glob
|
||||||
import shutil
|
import shutil
|
||||||
@ -28,9 +24,6 @@ folder_path = 'plots'
|
|||||||
clear_folder_make_ess_pv(folder_path)
|
clear_folder_make_ess_pv(folder_path)
|
||||||
|
|
||||||
|
|
||||||
# In[ ]:
|
|
||||||
|
|
||||||
|
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
import seaborn as sns
|
import seaborn as sns
|
||||||
import numpy as np
|
import numpy as np
|
||||||
@ -38,10 +31,6 @@ import pandas as pd
|
|||||||
from EnergySystem import EnergySystem
|
from EnergySystem import EnergySystem
|
||||||
from config import pv_config, grid_config, ess_config
|
from config import pv_config, grid_config, ess_config
|
||||||
|
|
||||||
|
|
||||||
# In[ ]:
|
|
||||||
|
|
||||||
|
|
||||||
import json
|
import json
|
||||||
|
|
||||||
print("Version 0.0.5")
|
print("Version 0.0.5")
|
||||||
@ -49,9 +38,6 @@ print("Version 0.0.5")
|
|||||||
with open('config.json', 'r') as f:
|
with open('config.json', 'r') as f:
|
||||||
js_data = json.load(f)
|
js_data = json.load(f)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
time_interval = js_data["time_interval"]["numerator"] / js_data["time_interval"]["denominator"]
|
time_interval = js_data["time_interval"]["numerator"] / js_data["time_interval"]["denominator"]
|
||||||
print(time_interval)
|
print(time_interval)
|
||||||
|
|
||||||
@ -132,9 +118,6 @@ plt.savefig('plots/demand.png')
|
|||||||
plt.close()
|
plt.close()
|
||||||
|
|
||||||
|
|
||||||
# In[ ]:
|
|
||||||
|
|
||||||
|
|
||||||
def draw_results(results, filename, title_benefit, annot_benefit=False, figure_size=(10, 10)):
|
def draw_results(results, filename, title_benefit, annot_benefit=False, figure_size=(10, 10)):
|
||||||
df=results
|
df=results
|
||||||
df = df.astype(float)
|
df = df.astype(float)
|
||||||
@ -220,10 +203,6 @@ def draw_roi(costs, results, filename, title_roi, days=365, annot_roi=False, fig
|
|||||||
plt.ylabel('PV Capacity (MW)')
|
plt.ylabel('PV Capacity (MW)')
|
||||||
plt.savefig(filename)
|
plt.savefig(filename)
|
||||||
|
|
||||||
|
|
||||||
# In[ ]:
|
|
||||||
|
|
||||||
|
|
||||||
def draw_cost(costs, filename, title_cost, annot_cost=False, figure_size=(10, 10)):
|
def draw_cost(costs, filename, title_cost, annot_cost=False, figure_size=(10, 10)):
|
||||||
df = costs
|
df = costs
|
||||||
df = df.astype(int)
|
df = df.astype(int)
|
||||||
@ -255,9 +234,6 @@ def draw_cost(costs, filename, title_cost, annot_cost=False, figure_size=(10, 10
|
|||||||
plt.savefig(filename)
|
plt.savefig(filename)
|
||||||
|
|
||||||
|
|
||||||
# In[ ]:
|
|
||||||
|
|
||||||
|
|
||||||
def draw_overload(overload_cnt, filename, title_unmet, annot_unmet=False, figure_size=(10, 10), days=365, granularity=15):
|
def draw_overload(overload_cnt, filename, title_unmet, annot_unmet=False, figure_size=(10, 10), days=365, granularity=15):
|
||||||
df = overload_cnt
|
df = overload_cnt
|
||||||
print(days, granularity)
|
print(days, granularity)
|
||||||
@ -305,18 +281,10 @@ def draw_overload(overload_cnt, filename, title_unmet, annot_unmet=False, figure
|
|||||||
plt.ylabel('PV Capacity (MW)')
|
plt.ylabel('PV Capacity (MW)')
|
||||||
plt.savefig(filename)
|
plt.savefig(filename)
|
||||||
|
|
||||||
|
|
||||||
# In[ ]:
|
|
||||||
|
|
||||||
|
|
||||||
def cal_profit(es: EnergySystem, saved_money, days):
|
def cal_profit(es: EnergySystem, saved_money, days):
|
||||||
profit = saved_money - es.ess.get_cost_per_year() / 365 * days - es.pv.get_cost_per_year() / 365 * days
|
profit = saved_money - es.ess.get_cost_per_year() / 365 * days - es.pv.get_cost_per_year() / 365 * days
|
||||||
return profit
|
return profit
|
||||||
|
|
||||||
|
|
||||||
# In[ ]:
|
|
||||||
|
|
||||||
|
|
||||||
def generate_data(pv_capacity, pv_cost_per_kW, pv_lifetime, pv_loss, ess_capacity, ess_cost_per_kW, ess_lifetime, ess_loss, grid_capacity, grid_loss, sell_price, time_interval, data, days):
|
def generate_data(pv_capacity, pv_cost_per_kW, pv_lifetime, pv_loss, ess_capacity, ess_cost_per_kW, ess_lifetime, ess_loss, grid_capacity, grid_loss, sell_price, time_interval, data, days):
|
||||||
pv = pv_config(capacity=pv_capacity,
|
pv = pv_config(capacity=pv_capacity,
|
||||||
cost_per_kW=pv_cost_per_kW,
|
cost_per_kW=pv_cost_per_kW,
|
||||||
@ -341,9 +309,6 @@ def generate_data(pv_capacity, pv_cost_per_kW, pv_lifetime, pv_loss, ess_capacit
|
|||||||
return (results, overload_cnt, costs, netto_benefit, gen_energy, energySystem.generated)
|
return (results, overload_cnt, costs, netto_benefit, gen_energy, energySystem.generated)
|
||||||
|
|
||||||
|
|
||||||
# In[ ]:
|
|
||||||
|
|
||||||
|
|
||||||
months_results = []
|
months_results = []
|
||||||
months_costs = []
|
months_costs = []
|
||||||
months_overload = []
|
months_overload = []
|
||||||
@ -434,17 +399,11 @@ draw_overload(overload_cnt=annual_overload,
|
|||||||
figure_size=figure_size)
|
figure_size=figure_size)
|
||||||
|
|
||||||
|
|
||||||
# In[ ]:
|
|
||||||
|
|
||||||
|
|
||||||
def save_data(data, filename):
|
def save_data(data, filename):
|
||||||
data.to_csv(filename+'.csv')
|
data.to_csv(filename+'.csv')
|
||||||
data.to_json(filename + '.json')
|
data.to_json(filename + '.json')
|
||||||
|
|
||||||
|
|
||||||
# In[ ]:
|
|
||||||
|
|
||||||
|
|
||||||
if not os.path.isdir('data'):
|
if not os.path.isdir('data'):
|
||||||
os.makedirs('data')
|
os.makedirs('data')
|
||||||
|
|
||||||
@ -452,15 +411,8 @@ save_data(annual_result, f'data/{pv_begin}-{pv_end}-{pv_groups}-{ess_begin}-{ess
|
|||||||
save_data(annual_costs, f'data/{pv_begin}-{pv_end}-{pv_groups}-{ess_begin}-{ess_end}-{ess_groups}-costs')
|
save_data(annual_costs, f'data/{pv_begin}-{pv_end}-{pv_groups}-{ess_begin}-{ess_end}-{ess_groups}-costs')
|
||||||
save_data(annual_overload, f'data/{pv_begin}-{pv_end}-{pv_groups}-{ess_begin}-{ess_end}-{ess_groups}-overload_cnt')
|
save_data(annual_overload, f'data/{pv_begin}-{pv_end}-{pv_groups}-{ess_begin}-{ess_end}-{ess_groups}-overload_cnt')
|
||||||
|
|
||||||
|
|
||||||
# In[ ]:
|
|
||||||
|
|
||||||
|
|
||||||
draw_results(annual_result, 'plots/test.png', 'test', False)
|
draw_results(annual_result, 'plots/test.png', 'test', False)
|
||||||
|
|
||||||
|
|
||||||
# In[ ]:
|
|
||||||
|
|
||||||
|
|
||||||
draw_roi(annual_costs, annual_nettos, 'plots/annual_roi.png', title_roi, 365, annot_benefit, figure_size)
|
draw_roi(annual_costs, annual_nettos, 'plots/annual_roi.png', title_roi, 365, annot_benefit, figure_size)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user