def run_both_with_existing_schedule(oemoef_schedule_file_name, hal_schedule_sim_name, time_range, pv_path, hal_result_file_name, oemof_result_file_name): # generate data paths = create_test_data(time_range, False, pv_data_path=pv_path) # load data load_data = pd.read_csv(paths['load_data'])['power[W]'] pv_data = pd.read_csv(paths['pv_data'])['power[W]'] heat_load_data = pd.read_csv(paths['load_heat_data'])['power[W]'] date_time_index = pd.date_range(time_range[0], periods=len(pv_data), freq='min') hal_scheduled_es = build_es_from_hal_sim_results( date_time_index, pv_data, load_data, heat_load_data, Path.cwd() / 'hal' / 'sim_results' / hal_schedule_sim_name, hal_schedule_sim_name) # run oemof with existing schedule oemof_scheduled_es = build_es_from_oemof_sim_results( date_time_index, pv_data, load_data, heat_load_data, Path.cwd() / 'oemof_runs' / 'results', oemoef_schedule_file_name) run_oemof(oemof_scheduled_es, oemof_result_file_name) run_oemof(hal_scheduled_es, hal_result_file_name)
def run_simulation(time_range, pv_path, heat_load_path, hal_result_sim_name, oemof_result_file_name): # generate data paths = create_test_data(time_range, False, pv_data_path=pv_path, heat_load_path=heat_load_path) # load data load_data = pd.read_csv(paths['load_data'])['power[W]'] pv_data = pd.read_csv(paths['pv_data'])['power[W]'] heat_load_data = pd.read_csv(paths['load_heat_data'])['power[W]'] date_time_index = pd.date_range(time_range[0], periods=len(pv_data), freq='min') es = build_es(date_time_index, pv_data, load_data, heat_load_data) run_hal(es, hal_result_sim_name) run_oemof(es, oemof_result_file_name)
def run_altered_pv(time_range, pv_data_path: str, oemof_control_file_name, tau=30, std=1000, i=0): paths = create_test_data(time_range, plot=False, pv_data_path=pv_data_path) pv_data = pd.read_csv(paths['pv_data'], parse_dates=True, index_col=0) noise = red_noise(pv_data, tau, std) # plt.plot(noise) # plt.show() pv_data['power[W]'] = pv_data['power[W]'] + noise modified_pv = pv_data.clip_lower(0) modified_pv_path = '/'.join( pv_data_path.split('/')[:-1]) + '/noised_pv_data.csv' modified_pv.to_csv(modified_pv_path) oemof_file_name = f"ensemble_{tau}_{std}_{i}.oemof" hal_sim_name = f"ensemble_{tau}_{std}_{i}" run_with_existing_schedule(oemof_control_file_name, time_range, modified_pv_path, hal_sim_name, oemof_file_name)
print(Path.cwd()) print(os.getcwd()) # super important to be able to run hal outside of its own context, otherwise "module not found"-errors will occur sys.path.append(str(Path.cwd() / 'hal')) sys.path.append(str(Path.cwd() / 'hal' / 'src')) import oemof.solph as solph import pandas as pd # generate data day = 60 * 24 week = day * 7 month = week * 4 time_window = day time_range = ['2016-09-01', '2016-10-01'] paths = create_test_data(time_range, False) # load data load_data = pd.read_csv(paths['load_data'])['power[W]'] pv_data = pd.read_csv(paths['pv_data'])['power[W]'] heat_load_data = pd.read_csv(paths['load_heat_data'])['power[W]'] date_time_index = pd.date_range(time_range[0], periods=len(pv_data), freq='min') no_of_datapoints = len(load_data) no_of_chunks = math.ceil(no_of_datapoints / time_window) split_load_data = np.array_split(load_data, no_of_chunks) split_pv_data = np.array_split(pv_data, no_of_chunks) split_heat_load_data = np.array_split(heat_load_data, no_of_chunks)