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)
Beispiel #3
0
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)
Beispiel #4
0
    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)