def storage_strategy_test12(area_test12):
    s = StorageStrategy(battery_capacity_kWh=5,
                        max_abs_battery_power_kW=5,
                        cap_price_strategy=True)
    s.owner = area_test12
    s.area = area_test12
    return s
def storage_strategy_test6(area_test6, market_test6, called):
    s = StorageStrategy(initial_soc=41.67)
    s.owner = area_test6
    s.area = area_test6
    s.accept_offer = called
    s.offers.post(market_test6.trade.offer, market_test6.id)
    return s
예제 #3
0
def get_setup(config):
    GlobalConfig.POWER_FLOW = True
    area = Area(
        'Grid',
        [
            Area(
                'House 1',
                [
                    Area('H1 General Load',
                         strategy=LoadHoursStrategy(avg_power_W=200,
                                                    hrs_per_day=6,
                                                    hrs_of_day=list(
                                                        range(12, 18)),
                                                    final_buying_rate=35),
                         appliance=SwitchableAppliance()),
                    Area('H1 Storage1',
                         strategy=StorageStrategy(initial_soc=50),
                         appliance=SwitchableAppliance()),
                    Area('H1 Storage2',
                         strategy=StorageStrategy(initial_soc=50),
                         appliance=SwitchableAppliance()),
                ],
                grid_fee_percentage=0,
                grid_fee_constant=0,
            ),
            Area(
                'House 2',
                [
                    Area('H2 General Load',
                         strategy=LoadHoursStrategy(avg_power_W=200,
                                                    hrs_per_day=4,
                                                    hrs_of_day=list(
                                                        range(12, 16)),
                                                    final_buying_rate=35),
                         appliance=SwitchableAppliance()),
                    Area('H2 PV',
                         strategy=PVStrategy(panel_count=4,
                                             initial_selling_rate=30,
                                             final_selling_rate=5,
                                             max_panel_power_W=100),
                         appliance=PVAppliance()),
                ],
                grid_fee_percentage=0,
                grid_fee_constant=0,
            ),
            Area('Cell Tower',
                 strategy=CellTowerLoadHoursStrategy(avg_power_W=100,
                                                     hrs_per_day=24,
                                                     hrs_of_day=list(
                                                         range(0, 24)),
                                                     final_buying_rate=35),
                 appliance=SwitchableAppliance()),
            Area('DSO',
                 strategy=InfiniteBusStrategy(energy_buy_rate=10,
                                              energy_sell_rate=30),
                 appliance=SimpleAppliance()),
        ],
        config=config,
    )
    return area
예제 #4
0
def storage_strategy_test4(area_test4, called):
    s = StorageStrategy(initial_soc=100,
                        battery_capacity_kWh=2.1)
    s.owner = area_test4
    s.area = area_test4
    s.accept_offer = called
    return s
예제 #5
0
def get_setup(config):
    DeviceRegistry.REGISTRY = device_registry_dict
    ConstSettings.BalancingSettings.ENABLE_BALANCING_MARKET = True
    area = Area('Grid', [
        Area('House 1', [
            Area('H1 General Load',
                 strategy=LoadHoursStrategy(avg_power_W=200,
                                            hrs_per_day=6,
                                            hrs_of_day=list(range(0, 18)),
                                            final_buying_rate=35)),
            Area('H1 Storage1', strategy=StorageStrategy(initial_soc=50)),
            Area('H1 Storage2', strategy=StorageStrategy(initial_soc=50)),
        ]),
        Area('House 2', [
            Area('H2 General Load',
                 strategy=LoadHoursStrategy(avg_power_W=200,
                                            hrs_per_day=4,
                                            hrs_of_day=list(range(12, 16)),
                                            final_buying_rate=35)),
            Area(
                'H2 PV',
                strategy=PVStrategy(4, 80),
            ),
        ]),
        Area('Cell Tower',
             strategy=LoadHoursStrategy(avg_power_W=100,
                                        hrs_per_day=24,
                                        hrs_of_day=list(range(0, 24)),
                                        final_buying_rate=35))
    ],
                config=config)
    return area
예제 #6
0
def get_setup(config):
    area = Area(
        'Grid',
        [
            Area('House 1', [
                Area('H1 General Load',
                     strategy=LoadHoursStrategy(avg_power_W=200,
                                                hrs_per_day=6,
                                                hrs_of_day=list(range(12, 18)),
                                                final_buying_rate=25)),
                Area('H1 Storage1', strategy=StorageStrategy(initial_soc=50)),
                Area('H1 Storage2', strategy=StorageStrategy(initial_soc=50)),
            ]),
            Area('House 2', [
                Area('H2 General Load',
                     strategy=LoadHoursStrategy(avg_power_W=200,
                                                hrs_per_day=4,
                                                hrs_of_day=list(range(12, 16)),
                                                final_buying_rate=35)),
                Area(
                    'H2 PV',
                    strategy=PVStrategy(3, 80),
                ),
            ]),
            Area('Cell Tower',
                 strategy=LoadHoursStrategy(avg_power_W=100,
                                            hrs_per_day=24,
                                            hrs_of_day=list(range(0, 24)),
                                            final_buying_rate=35))
            # Area('Commercial Energy Producer',
            #      strategy=CommercialStrategy(energy_range_wh=(40, 120), energy_price=30)
            #      ),
        ],
        config=config)
    return area
예제 #7
0
def get_setup(config):

    i_c = 12 * 1.2
    i_c_f = 1
    area = Area('Grid', [
        Area('House 1', [
            Area('H1 PV', strategy=PVStrategy(60, 80),
                 appliance=PVAppliance()),
            Area('H1 General Load',
                 strategy=DefinedLoadStrategy(daily_load_profile=os.path.join(
                     d3a_path, 'resources', 'SAM_MF2_Summer.csv'),
                                              max_energy_rate=35),
                 appliance=SwitchableAppliance()),
            Area('H1 Storage1',
                 strategy=StorageStrategy(battery_capacity_kWh=i_c,
                                          max_abs_battery_power_kW=i_c,
                                          initial_capacity_kWh=i_c_f * i_c),
                 appliance=SwitchableAppliance()),
        ]),
        Area('House 2', [
            Area('H2 PV', strategy=PVStrategy(60, 80),
                 appliance=PVAppliance()),
            Area('H2 General Load',
                 strategy=DefinedLoadStrategy(daily_load_profile=os.path.join(
                     d3a_path, 'resources', 'SAM_MF2_Summer.csv'),
                                              max_energy_rate=35),
                 appliance=SwitchableAppliance()),
            Area('H2 Storage1',
                 strategy=StorageStrategy(battery_capacity_kWh=i_c,
                                          max_abs_battery_power_kW=i_c,
                                          initial_capacity_kWh=i_c_f * i_c),
                 appliance=SwitchableAppliance()),
        ]),
        Area('House 3', [
            Area('H3 General Load',
                 strategy=DefinedLoadStrategy(daily_load_profile=os.path.join(
                     d3a_path, 'resources', 'SAM_MF2_Summer.csv'),
                                              max_energy_rate=35),
                 appliance=SwitchableAppliance()),
            Area('H3 Storage1',
                 strategy=StorageStrategy(battery_capacity_kWh=i_c,
                                          max_abs_battery_power_kW=i_c,
                                          initial_capacity_kWh=i_c_f * i_c),
                 appliance=SwitchableAppliance()),
        ]),
        Area('House 4', [
            Area('H4 General Load',
                 strategy=DefinedLoadStrategy(daily_load_profile=os.path.join(
                     d3a_path, 'resources', 'SAM_MF2_Summer.csv'),
                                              max_energy_rate=35),
                 appliance=SwitchableAppliance()),
            Area('H4 Storage1',
                 strategy=StorageStrategy(battery_capacity_kWh=i_c,
                                          max_abs_battery_power_kW=i_c,
                                          initial_capacity_kWh=i_c_f * i_c),
                 appliance=SwitchableAppliance()),
        ]),
    ],
                config=config)
    return area
예제 #8
0
def get_setup(config):
    area = Area('Grid', [
        Area(
            'House 1',
            [
                Area('H1 Storage1',
                     strategy=StorageStrategy(initial_soc=10,
                                              battery_capacity_kWh=15.0,
                                              initial_buying_rate=0,
                                              final_buying_rate=23.99,
                                              final_selling_rate=28.01)),
                Area('H1 Storage2',
                     strategy=StorageStrategy(initial_soc=10,
                                              battery_capacity_kWh=15.0,
                                              initial_buying_rate=0,
                                              final_buying_rate=22.99,
                                              final_selling_rate=28.01)),
            ],
            grid_fee_percentage=0,
        ),
        Area(
            'House 2',
            [
                Area('H2 PV', strategy=PVStrategy(1, final_selling_rate=23.0)),
            ],
            grid_fee_percentage=0,
        ),
    ],
                config=config)
    return area
예제 #9
0
def get_setup(config):
    ConstSettings.IAASettings.MARKET_TYPE = 2
    ConstSettings.GeneralSettings.EXPORT_OFFER_BID_TRADE_HR = True

    area = Area('Grid', [
        Area('House 1', [
            Area('H1 Storage1',
                 strategy=StorageStrategy(initial_soc=10,
                                          min_allowed_soc=10,
                                          battery_capacity_kWh=1.2,
                                          max_abs_battery_power_kW=5,
                                          initial_selling_rate=30,
                                          final_buying_rate=25,
                                          final_selling_rate=25.1,
                                          initial_buying_rate=0,
                                          fit_to_limit=True,
                                          update_interval=1)),
            Area('H1 Storage2',
                 strategy=StorageStrategy(initial_soc=10,
                                          min_allowed_soc=10,
                                          battery_capacity_kWh=1.2,
                                          max_abs_battery_power_kW=5,
                                          initial_selling_rate=30,
                                          final_buying_rate=25,
                                          final_selling_rate=25.1,
                                          initial_buying_rate=0,
                                          fit_to_limit=True,
                                          update_interval=1))
        ]),
    ],
                config=config)
    return area
예제 #10
0
def get_setup(config):

    ConstSettings.IAASettings.MARKET_TYPE = 3
    ConstSettings.GeneralSettings.MARKET_CLEARING_FREQUENCY_PER_SLOT = 3
    ConstSettings.LoadSettings.INITIAL_BUYING_RATE = 35
    ConstSettings.LoadSettings.FINAL_BUYING_RATE = 35
    ConstSettings.StorageSettings.BUYING_RANGE = RangeLimit(24.99, 25)
    ConstSettings.StorageSettings.SELLING_RANGE = RangeLimit(30, 25.01)

    area = Area('Grid', [
        Area('House 1', [
            Area('H1 General Load',
                 strategy=LoadHoursStrategy(avg_power_W=100,
                                            hrs_per_day=24,
                                            hrs_of_day=list(range(24)),
                                            final_buying_rate=35),
                 appliance=SwitchableAppliance()),
            Area('H1 Storage1',
                 strategy=StorageStrategy(initial_soc=50),
                 appliance=SwitchableAppliance()),
            Area('H1 Storage2',
                 strategy=StorageStrategy(initial_soc=50),
                 appliance=SwitchableAppliance()),
            Area('H1 PV', strategy=PVStrategy(4), appliance=PVAppliance()),
            Area('H1 CEP',
                 strategy=CommercialStrategy(energy_rate=30),
                 appliance=SimpleAppliance()),
        ]),
    ],
                config=config)
    return area
예제 #11
0
def storage_strategy_test8(area_test8):
    s = StorageStrategy(initial_soc=99,
                        battery_capacity_kWh=101,
                        max_abs_battery_power_kW=401)
    s.owner = area_test8
    s.area = area_test8
    return s
예제 #12
0
def get_setup(config):
    from d3a.models.const import ConstSettings
    ConstSettings.GeneralSettings.MAX_OFFER_TRAVERSAL_LENGTH = 1
    area = Area('Grid', [
        Area('House 1', [
            Area('H1 Storage1',
                 strategy=StorageStrategy(risk=0,
                                          initial_capacity_kWh=1.5,
                                          battery_capacity_kWh=15.0,
                                          break_even=(23.99, 28.01)),
                 appliance=SwitchableAppliance()),
            Area('H1 Storage2',
                 strategy=StorageStrategy(risk=0,
                                          initial_capacity_kWh=1.5,
                                          battery_capacity_kWh=15.0,
                                          break_even=(22.99, 28.01)),
                 appliance=SwitchableAppliance()),
        ]),
        Area('House 2', [
            Area('H2 PV',
                 strategy=PVStrategy(
                     1, 0, min_selling_rate=23.0, initial_rate_option=2),
                 appliance=PVAppliance()),
        ]),
    ],
                config=config)
    return area
def get_setup(config):
    ConstSettings.IAASettings.MIN_BID_AGE = 0
    ConstSettings.IAASettings.MIN_OFFER_AGE = 0
    area = Area('Grid', [
        Area('House 1', [
            Area('H1 General Load',
                 strategy=LoadHoursStrategy(avg_power_W=200,
                                            hrs_per_day=6,
                                            hrs_of_day=list(range(12, 18)),
                                            final_buying_rate=35)),
            Area('H1 Storage1',
                 strategy=StorageStrategy(initial_soc=100,
                                          battery_capacity_kWh=20)),
            Area('H1 Storage2',
                 strategy=StorageStrategy(initial_soc=100,
                                          battery_capacity_kWh=20)),
        ],
             grid_fee_constant=2),
        Area('House 2', [
            Area('load',
                 strategy=LoadHoursExternalStrategy(avg_power_W=200,
                                                    hrs_per_day=24,
                                                    hrs_of_day=list(
                                                        range(0, 24)),
                                                    final_buying_rate=35)),
            Area('pv', strategy=PVExternalStrategy(panel_count=4)),
        ],
             external_connection_available=True,
             grid_fee_constant=1),
        Area('Market Maker', strategy=MarketMakerStrategy(energy_rate=30)),
    ],
                grid_fee_constant=10,
                config=config)
    return area
예제 #14
0
def get_setup(config):
    ConstSettings.IAASettings.AlternativePricing.PRICING_SCHEME = 1
    area = Area('Grid', [
        Area('House 1', [
            Area('H1 General Load',
                 strategy=LoadHoursStrategy(avg_power_W=100,
                                            hrs_per_day=24,
                                            hrs_of_day=list(range(0, 24))),
                 appliance=SwitchableAppliance()),
            Area('H1 Storage1',
                 strategy=StorageStrategy(initial_soc=50),
                 appliance=SwitchableAppliance()),
            Area('H1 PV', strategy=PVStrategy(4, 0), appliance=PVAppliance()),
        ]),
        Area('House 2', [
            Area('H2 General Load',
                 strategy=LoadHoursStrategy(avg_power_W=100,
                                            hrs_per_day=24,
                                            hrs_of_day=list(range(0, 24))),
                 appliance=SwitchableAppliance()),
            Area('H2 PV', strategy=PVStrategy(4, 0), appliance=PVAppliance()),
            Area('H2 Storage1',
                 strategy=StorageStrategy(initial_soc=100),
                 appliance=SwitchableAppliance()),
        ]),
        Area('Commercial Energy Producer',
             strategy=CommercialStrategy(energy_rate=30),
             appliance=SimpleAppliance()),
    ],
                config=config)
    return area
예제 #15
0
def storage_strategy_test7_1(area_test7):
    s = StorageStrategy(initial_soc=99.67, battery_capacity_kWh=3.01,
                        max_abs_battery_power_kW=5.21, final_buying_rate=26,
                        final_selling_rate=27)
    s.owner = area_test7
    s.area = area_test7
    return s
예제 #16
0
def storage_strategy_test11(area_test11, called):
    s = StorageStrategy(battery_capacity_kWh=100,
                        initial_capacity_kWh=50,
                        max_abs_battery_power_kW=1)
    s.owner = area_test11
    s.area = area_test11
    s.accept_offer = called
    return s
예제 #17
0
def storage_strategy_test1(area_test1, called):
    s = StorageStrategy(max_abs_battery_power_kW=2.01,
                        initial_buying_rate=23.6, final_buying_rate=23.6,
                        initial_selling_rate=23.7, final_selling_rate=23.7)
    s.owner = area_test1
    s.area = area_test1
    s.accept_offer = called
    return s
예제 #18
0
def storage_strategy_test14(area_test14, called):
    s = StorageStrategy(initial_soc=50, battery_capacity_kWh=30,
                        max_abs_battery_power_kW=10, initial_selling_rate=25,
                        final_selling_rate=24, initial_buying_rate=0, final_buying_rate=23.9)
    s.owner = area_test14
    s.area = area_test14
    s.accept_offer = called
    return s
예제 #19
0
def storage_strategy_test13(area_test13, called):
    s = StorageStrategy(battery_capacity_kWh=5, max_abs_battery_power_kW=5,
                        initial_selling_rate=35.1, final_selling_rate=35,
                        initial_buying_rate=34, final_buying_rate=34)
    s.owner = area_test13
    s.area = area_test13
    s.accept_offer = called
    return s
예제 #20
0
def storage_strategy_test11(area_test11, called):
    s = StorageStrategy(battery_capacity_kWh=100, initial_soc=50,
                        max_abs_battery_power_kW=1, initial_buying_rate=30,
                        final_buying_rate=30, initial_selling_rate=33, final_selling_rate=32)
    s.owner = area_test11
    s.area = area_test11
    s.accept_offer = called
    return s
예제 #21
0
def storage_strategy_test12(area_test12):
    s = StorageStrategy(battery_capacity_kWh=5,
                        initial_capacity_kWh=2.5,
                        max_abs_battery_power_kW=5,
                        break_even=(16.99, 17.01),
                        cap_price_strategy=True)
    s.owner = area_test12
    s.area = area_test12
    return s
예제 #22
0
def storage_strategy_test13(area_test13, called):
    s = StorageStrategy(battery_capacity_kWh=5,
                        initial_capacity_kWh=2.5,
                        max_abs_battery_power_kW=5,
                        break_even=(34, 35.1))
    s.owner = area_test13
    s.area = area_test13
    s.accept_offer = called
    return s
예제 #23
0
def test_storage_strategy_increases_rate_when_fit_to_limit_is_false():
    storage = StorageStrategy(
        fit_to_limit=False,
        initial_selling_rate=30, final_selling_rate=25, energy_rate_decrease_per_update=1,
        initial_buying_rate=10, final_buying_rate=20, energy_rate_increase_per_update=1)
    storage.area = FakeArea(1)
    storage.event_activate()
    assert all([rate == -1 for rate in storage.bid_update.energy_rate_change_per_update.values()])
    assert all([rate == 1 for rate in storage.offer_update.energy_rate_change_per_update.values()])
예제 #24
0
def storage_strategy_test7_3(area_test7):
    s = StorageStrategy(initial_soc=19.96, battery_capacity_kWh=5.01,
                        max_abs_battery_power_kW=5.21, final_selling_rate=17,
                        initial_buying_rate=15, final_buying_rate=16)
    s.owner = area_test7
    s.area = area_test7
    s.offers.posted = {Offer('id', 30, 1, 'FakeArea'): area_test7.current_market.id}
    s.market = area_test7.current_market
    return s
예제 #25
0
def get_setup(config):
    area = Area(
        'Grid',
        [
            Area(
                'House 1',
                [
                    Area('H1 General Load',
                         strategy=LoadHoursStrategy(avg_power_W=200,
                                                    hrs_per_day=6,
                                                    hrs_of_day=list(
                                                        range(12, 18)),
                                                    final_buying_rate=35),
                         appliance=SwitchableAppliance()),
                    Area('H1 Storage1',
                         strategy=StorageStrategy(initial_soc=50),
                         appliance=SwitchableAppliance()),
                    Area('H1 Storage2',
                         strategy=StorageStrategy(initial_soc=50),
                         appliance=SwitchableAppliance()),
                ],
                transfer_fee_pct=0,
                transfer_fee_const=0,
            ),
            Area(
                'House 2',
                [
                    Area('H2 General Load',
                         strategy=LoadHoursStrategy(avg_power_W=200,
                                                    hrs_per_day=4,
                                                    hrs_of_day=list(
                                                        range(12, 16)),
                                                    final_buying_rate=35),
                         appliance=SwitchableAppliance()),
                    Area('H2 PV',
                         strategy=PVStrategy(panel_count=4,
                                             initial_selling_rate=30,
                                             final_selling_rate=5),
                         appliance=PVAppliance()),
                ],
                transfer_fee_pct=0,
                transfer_fee_const=0,
            ),
            Area('Cell Tower',
                 strategy=CellTowerLoadHoursStrategy(avg_power_W=100,
                                                     hrs_per_day=24,
                                                     hrs_of_day=list(
                                                         range(0, 24)),
                                                     final_buying_rate=35),
                 appliance=SwitchableAppliance()),
            # Area('Commercial Energy Producer',
            #      strategy=CommercialStrategy(energy_rate=30),
            #      appliance=SimpleAppliance()
            #      ),
        ],
        config=config)
    return area
예제 #26
0
def storage_strategy_test7_1(area_test7):
    s = StorageStrategy(initial_capacity_kWh=3.0,
                        battery_capacity_kWh=3.01,
                        max_abs_battery_power_kW=5.21,
                        initial_rate_option=2,
                        break_even=(26, 27))
    s.owner = area_test7
    s.area = area_test7
    return s
예제 #27
0
def get_setup(config):
    ConstSettings.GeneralSettings.DEFAULT_UPDATE_INTERVAL = 5
    area = Area(
        'Grid',
        [
            Area(
                'House 1',
                [
                    Area('H1 General Load',
                         strategy=LoadHoursStrategy(avg_power_W=200,
                                                    hrs_per_day=6,
                                                    hrs_of_day=list(
                                                        range(12, 18)),
                                                    final_buying_rate=25),
                         grid_fee_percentage=0),
                    Area('H1 Storage1',
                         strategy=StorageStrategy(initial_soc=50),
                         grid_fee_percentage=0),
                    Area('H1 Storage2',
                         strategy=StorageStrategy(initial_soc=50),
                         grid_fee_percentage=0),
                ],
                grid_fee_percentage=0,
                grid_fee_constant=0,
            ),
            Area(
                'House 2',
                [
                    Area('H2 General Load',
                         strategy=LoadHoursStrategy(avg_power_W=200,
                                                    hrs_per_day=4,
                                                    hrs_of_day=list(
                                                        range(12, 16)),
                                                    final_buying_rate=35),
                         grid_fee_percentage=0),
                    Area('H2 PV',
                         strategy=PVStrategy(10),
                         grid_fee_percentage=0),
                ],
                grid_fee_percentage=0,
                grid_fee_constant=0,
            ),
            Area('Cell Tower',
                 strategy=LoadHoursStrategy(avg_power_W=100,
                                            hrs_per_day=24,
                                            hrs_of_day=list(range(0, 24)),
                                            final_buying_rate=35),
                 grid_fee_percentage=0)
            # Area('Commercial Energy Producer',
            #      strategy=CommercialStrategy(energy_range_wh=(40, 120), energy_price=30),
            #
            #      ),
        ],
        config=config)
    return area
예제 #28
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)])
예제 #29
0
def get_setup(config):
    ConstSettings.IAASettings.MARKET_TYPE = 2
    ConstSettings.IAASettings.BID_OFFER_MATCH_TYPE = \
        BidOfferMatchAlgoEnum.PAY_AS_CLEAR.value
    # ConstSettings.GeneralSettings.SUPPLY_DEMAND_PLOTS = False
    ConstSettings.GeneralSettings.MARKET_CLEARING_FREQUENCY_PER_SLOT = 3
    ConstSettings.GeneralSettings.DEFAULT_UPDATE_INTERVAL = 5

    area = Area('Grid', [
        Area('House 1', [
            Area(
                'H1 General Load',
                strategy=LoadHoursStrategy(avg_power_W=100,
                                           hrs_per_day=6,
                                           hrs_of_day=list(range(12, 18)),
                                           initial_buying_rate=35,
                                           final_buying_rate=35),
            ),
            Area(
                'H1 Storage1',
                strategy=StorageStrategy(initial_soc=50),
            ),
            Area(
                'H1 Storage2',
                strategy=StorageStrategy(initial_soc=50),
            ),
        ]),
        Area('House 2', [
            Area(
                'H2 General Load',
                strategy=LoadHoursStrategy(avg_power_W=100,
                                           hrs_per_day=4,
                                           hrs_of_day=list(range(12, 16)),
                                           final_buying_rate=35),
            ),
            Area(
                'H2 PV',
                strategy=PVStrategy(4),
            ),
            Area(
                'H2 CEP',
                strategy=CommercialStrategy(energy_rate=10),
            ),
        ]),
        Area(
            'Cell Tower',
            strategy=LoadHoursStrategy(avg_power_W=100,
                                       hrs_per_day=24,
                                       hrs_of_day=list(range(0, 24)),
                                       final_buying_rate=35),
        ),
    ],
                config=config)
    return area
예제 #30
0
def test_first_market_cycle_with_initial_capacity(storage_strategy_test8: StorageStrategy,
                                                  area_test8: FakeArea):
    storage_strategy_test8.event_activate()
    storage_strategy_test8.event_market_cycle()
    sell_market = area_test8.all_markets[0]
    assert(isclose(storage_strategy_test8.state.offered_sell_kWh[sell_market.time_slot],
                   100.0 - storage_strategy_test8.state.capacity *
                   storage_strategy_test8.state.min_allowed_soc_ratio, rel_tol=1e-02))
    assert len(storage_strategy_test8.offers.posted_in_market(
        area_test8._markets_return["Fake Market"].id)
    ) > 0