Beispiel #1
0
def test_storage_populates_break_even_profile_correctly():
    from d3a.models.read_user_profile import default_profile_dict
    s = StorageStrategy(break_even=(22, 23))
    assert all([be[0] == 22 and be[1] == 23 for _, be in s.break_even.items()])
    assert set(s.break_even.keys()) == set(default_profile_dict().keys())

    s = StorageStrategy(break_even={0: (22, 23), 10: (24, 25), 20: (27, 28)})
    assert set(s.break_even.keys()) == set(default_profile_dict().keys())
    assert all([s.break_even[f"{i:02}:00"] == (22, 23) for i in range(10)])
    assert all([s.break_even[f"{i:02}:00"] == (24, 25) for i in range(10, 20)])
    assert all([s.break_even[f"{i:02}:00"] == (27, 28) for i in range(20, 24)])
Beispiel #2
0
def test_simulation_config_parameters(context, scenario, cloud_coverage,
                                      iaa_fee):
    from d3a.models.read_user_profile import default_profile_dict
    assert context.simulation.simulation_config.cloud_coverage == int(
        cloud_coverage)
    assert len(
        context.simulation.simulation_config.market_maker_rate) == 24 * 60
    assert len(default_profile_dict().keys()) == len(
        context.simulation.simulation_config.market_maker_rate.keys())
    assert context.simulation.simulation_config.market_maker_rate["01:59"] == 0
    assert context.simulation.simulation_config.market_maker_rate["12:00"] == \
        context._market_maker_rate["11:00"]
    assert context.simulation.simulation_config.market_maker_rate["23:00"] == \
        context._market_maker_rate["22:00"]
    assert context.simulation.simulation_config.iaa_fee == int(iaa_fee)
Beispiel #3
0
def test_simulation_config_parameters(context, cloud_coverage):
    from d3a.models.read_user_profile import default_profile_dict
    assert context.simulation.simulation_config.cloud_coverage == int(
        cloud_coverage)
    assert len(context.simulation.simulation_config.market_maker_rate) == \
        24 / context.simulation.simulation_config.slot_length.hours + \
        context.simulation.simulation_config.market_count
    assert len(default_profile_dict().keys()) == len(
        context.simulation.simulation_config.market_maker_rate.keys())
    assert context.simulation.simulation_config.market_maker_rate[from_format(
        f"{TODAY_STR}T01:00", DATE_TIME_FORMAT)] == 0
    assert context.simulation.simulation_config.market_maker_rate[from_format(
        f"{TODAY_STR}T12:00",
        DATE_TIME_FORMAT)] == context._market_maker_rate[from_format(
            f"{TODAY_STR}T11:00", DATE_TIME_FORMAT)]
    assert context.simulation.simulation_config.market_maker_rate[from_format(
        f"{TODAY_STR}T23:00",
        DATE_TIME_FORMAT)] == context._market_maker_rate[from_format(
            f"{TODAY_STR}T22:00", DATE_TIME_FORMAT)]
Beispiel #4
0
def convert_energy_profile_to_power(input_profile, output_file):
    profile = _readCSV(input_profile)
    # Create a minute-resolution profile, filling the empty slots with previous values
    profile = _fill_gaps_in_profile(profile)
    GlobalConfig.sim_duration = duration(days=1) - duration(minutes=1)
    output_dict = default_profile_dict(0)
    for k, v in output_dict.items():
        # Average market slot values
        iter_duration = duration(minutes=0)
        averaged_value = 0
        while iter_duration < GlobalConfig.slot_length:
            averaged_value += profile[k + iter_duration]
            iter_duration += duration(minutes=1)
        averaged_value /= GlobalConfig.slot_length.minutes
        output_dict[k] = averaged_value

    power_profile = {
        k: convert_energy_to_power(float(v))
        for k, v in output_dict.items()
    }
    with open(output_file, 'w') as csv_file:
        writer = csv.writer(csv_file)
        for key, value in power_profile.items():
            writer.writerow([key, value])