def test_global_market_maker_rate_set_at_instantiation(area_test1):
    strategy = InfiniteBusStrategy(energy_sell_rate=35)
    assert strategy.energy_rate == GlobalConfig.market_maker_rate
    strategy = InfiniteBusStrategy(energy_rate_profile={"01:15": 40})
    timestamp_key = pendulum.today("utc").set(hour=1, minute=15)
    rate = find_object_of_same_weekday_and_time(GlobalConfig.market_maker_rate,
                                                timestamp_key)
    assert rate == 40
예제 #2
0
    def test_update_area_event_can_switch_strategy_from_infinite_bus_to_market_maker(
            self):
        self.strategy_mmr = InfiniteBusStrategy(energy_sell_rate=30,
                                                energy_buy_rate=25)
        self.area_mmr = Area("mmr",
                             None,
                             None,
                             self.strategy_mmr,
                             self.config,
                             None,
                             grid_fee_percentage=0)
        self.area_mmr.parent = self.area_grid
        self.area_grid.children.append(self.area_mmr)

        event_dict = {
            "eventType": "update_area",
            "area_uuid": self.area_mmr.uuid,
            "area_representation": {
                'type': 'MarketMaker'
            }
        }

        self.area_grid.activate()

        self.live_events.add_event(event_dict)
        self.live_events.handle_all_events(self.area_grid)
        assert type(self.area_mmr.strategy) == MarketMakerStrategy
예제 #3
0
파일: d3asim_1896.py 프로젝트: xg86/d3a
def get_setup(config):
    ConstSettings.IAASettings.MARKET_TYPE = 2
    ConstSettings.GeneralSettings.DEFAULT_UPDATE_INTERVAL = 1
    ConstSettings.GeneralSettings.DEFAULT_MARKET_MAKER_RATE = 30

    area = Area('Grid', [
        Area(
            'Microgrid',
            [
                Area(
                    'House 1',
                    [
                        Area('H1 storage',
                             strategy=StorageStrategy(
                                 initial_soc=10,
                                 battery_capacity_kWh=1,
                                 max_abs_battery_power_kW=5,
                                 initial_buying_rate=5,
                                 final_buying_rate=15,
                                 initial_selling_rate=30,
                                 final_selling_rate=15.1),
                             appliance=SwitchableAppliance())
                    ],
                    grid_fee_percentage=0,
                    transfer_fee_const=0,
                ),
            ],
        ),
        Area('DSO',
             strategy=InfiniteBusStrategy(energy_sell_rate=15),
             appliance=SimpleAppliance()),
    ],
                config=config)
    return area
예제 #4
0
def get_setup(config):
    ConstSettings.IAASettings.MARKET_TYPE = 2
    ConstSettings.GeneralSettings.KEEP_PAST_MARKETS = True
    area = Area('Grid', [
        Area(
            'House 1',
            [
                Area('H1 General Load',
                     strategy=LoadHoursStrategy(avg_power_W=200,
                                                hrs_of_day=list(range(0, 23)),
                                                initial_buying_rate=0,
                                                final_buying_rate=30),
                     appliance=SwitchableAppliance()),
                Area('H1 PV',
                     strategy=PVStrategy(panel_count=4,
                                         initial_selling_rate=30,
                                         final_selling_rate=5),
                     appliance=PVAppliance()),
            ],
        ),
        Area('Infinite Bus',
             strategy=InfiniteBusStrategy(energy_buy_rate=5,
                                          energy_sell_rate=30),
             appliance=SimpleAppliance()),
    ],
                config=config)
    return area
예제 #5
0
def get_setup(config):

    ConstSettings.GeneralSettings.DEFAULT_UPDATE_INTERVAL = 1
    ConstSettings.IAASettings.MARKET_TYPE = 2

    area = Area(
        'Grid',
        [
            Area(
                'House 1',
                [
                    Area('H1 General Load',
                         strategy=LoadHoursStrategy(avg_power_W=4000,
                                                    hrs_per_day=1,
                                                    hrs_of_day=list(range(
                                                        1, 2)),
                                                    initial_buying_rate=45,
                                                    final_buying_rate=45,
                                                    fit_to_limit=True)),
                ],
                grid_fee_percentage=0,
                grid_fee_constant=0,
            ),
            Area('DSO',
                 strategy=InfiniteBusStrategy(energy_buy_rate=5,
                                              energy_sell_rate=30)),
        ],
        config=config,
        grid_fee_percentage=50,
        grid_fee_constant=0,
    )
    return area
예제 #6
0
def get_setup(config):
    ConstSettings.IAASettings.MARKET_TYPE = 2
    area = Area(
        'Grid',
        [
            Area(
                'House 1',
                [
                    Area('H1 General Load', strategy=LoadHoursStrategy(avg_power_W=200,
                                                                       hrs_of_day=list(
                                                                           range(0, 23)),
                                                                       final_buying_rate=27,
                                                                       initial_buying_rate=27),
                         appliance=SwitchableAppliance()),
                    Area('H1 PV', strategy=PVStrategy(panel_count=4,
                                                      final_selling_rate=15,
                                                      initial_selling_rate=24.1),
                         appliance=PVAppliance()),
                ], transfer_fee_const=1
            ),
            Area('Infinite Bus', strategy=InfiniteBusStrategy(energy_buy_rate=24,
                                                              energy_sell_rate=24),
                 appliance=SimpleAppliance()
                 ),
        ],
        config=config
    )
    return area
예제 #7
0
def get_setup(config):
    ConstSettings.IAASettings.GRID_FEE_TYPE = 1
    ConstSettings.GeneralSettings.DEFAULT_UPDATE_INTERVAL = 3
    ConstSettings.IAASettings.MARKET_TYPE = 2
    ConstSettings.GeneralSettings.KEEP_PAST_MARKETS = False

    area = Area(
        'Grid',
        [
            Area(
                'House 1',
                [
                    Area('H1 General Load',
                         strategy=LoadHoursStrategy(avg_power_W=4000,
                                                    hrs_per_day=1,
                                                    hrs_of_day=list(
                                                        range(12, 13)),
                                                    initial_buying_rate=45,
                                                    final_buying_rate=45,
                                                    fit_to_limit=True),
                         appliance=SwitchableAppliance()),
                ],
                grid_fee_percentage=0,
                transfer_fee_const=0,
            ),
            Area('DSO',
                 strategy=InfiniteBusStrategy(energy_buy_rate=5,
                                              energy_sell_rate=30),
                 appliance=SimpleAppliance()),
        ],
        config=config,
        grid_fee_percentage=0,
        transfer_fee_const=45,
    )
    return area
예제 #8
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
예제 #9
0
def get_setup(config):
    ConstSettings.IAASettings.MARKET_TYPE = 2
    area = Area(
        'Grid',
        [
            Area(
                'House 1',
                [
                    Area('H1 General Load', strategy=LoadHoursStrategy(avg_power_W=200,
                                                                       hrs_of_day=list(
                                                                           range(0, 23)),
                                                                       initial_buying_rate=0,
                                                                       final_buying_rate=30)
                         ),
                    Area('H1 PV', strategy=PVStrategy(panel_count=4,
                                                      initial_selling_rate=30,
                                                      final_selling_rate=5)
                         ),
                ],
            ),
            Area('Infinite Bus', strategy=InfiniteBusStrategy(energy_buy_rate=5,
                                                              energy_sell_rate=30)

                 ),

        ],
        config=config
    )
    return area
예제 #10
0
    def apply(self, area):
        if area.uuid != self.area_uuid:
            return False
        area_type = self.area_params.pop("type", None)
        self.sanitize_live_event_parameters()
        if area_type is not None and area_type != "Area":
            if area.strategy is None:
                return False
            reactivate = False
            if area_type == "MarketMaker":
                area.strategy = MarketMakerStrategy(**self.area_params)
                reactivate = True
            elif area_type == "InfiniteBus":
                # TODO: After hack to move this parameter casting at the web side
                self.area_params['energy_sell_rate'] = self.area_params.pop(
                    'energy_rate', None)
                area.strategy = InfiniteBusStrategy(**self.area_params)
                reactivate = True
            if reactivate:
                area.activate()
                area.strategy.event_activate()
                area.strategy.event_market_cycle()

        area.area_reconfigure_event(**self.area_params)

        return True
def get_setup(config):

    ConstSettings.IAASettings.MARKET_TYPE = 2
    ConstSettings.IAASettings.MIN_OFFER_AGE = 0
    ConstSettings.IAASettings.MIN_BID_AGE = 0

    area = Area(
        "Grid",
        [
            Area("Community", [
                Area("Family 2 children with PV + ESS", [
                    Area("Family General Load",
                         strategy=LoadHoursStrategy(avg_power_W=5680,
                                                    hrs_of_day=list(range(24)),
                                                    hrs_per_day=24,
                                                    initial_buying_rate=23,
                                                    final_buying_rate=23)),
                    Area("Family PV",
                         strategy=PVStrategy(max_panel_power_W=17985,
                                             panel_count=1,
                                             initial_selling_rate=6,
                                             final_selling_rate=6)),
                    Area("Family ESS",
                         strategy=StorageStrategy(initial_soc=20,
                                                  battery_capacity_kWh=5,
                                                  initial_buying_rate=22.94,
                                                  final_buying_rate=22.94,
                                                  initial_selling_rate=22.95,
                                                  final_selling_rate=22.95))
                ]),
                Area("Community PP",
                     strategy=FinitePowerPlant(max_available_power_kW=10,
                                               energy_rate=1)),
                Area("Community Load",
                     strategy=LoadHoursStrategy(avg_power_W=1200,
                                                hrs_of_day=list(range(24)),
                                                hrs_per_day=24,
                                                initial_buying_rate=10,
                                                final_buying_rate=10))
            ],
                 grid_fee_constant=4.0),
            Area("DSO",
                 strategy=InfiniteBusStrategy(energy_buy_rate=20,
                                              energy_sell_rate=22))
        ],
        config=config,
        grid_fee_constant=4.0,
    )
    return area
예제 #12
0
def get_setup(config):

    ConstSettings.IAASettings.MARKET_TYPE = 2
    ConstSettings.IAASettings.MIN_OFFER_AGE = 0
    ConstSettings.IAASettings.MIN_BID_AGE = 0

    area = Area(
        "Grid",
        [
            Area("Community", [
                Area("Young Couple House", [
                    Area("YC General Load",
                         strategy=LoadHoursStrategy(avg_power_W=3147,
                                                    hrs_of_day=list(range(24)),
                                                    hrs_per_day=24,
                                                    initial_buying_rate=25,
                                                    final_buying_rate=25,
                                                    fit_to_limit=True)),
                ]),
                Area("Community PV",
                     strategy=PVStrategy(max_panel_power_W=4000,
                                         panel_count=1,
                                         initial_selling_rate=8,
                                         final_selling_rate=8)),
                Area("Community Load",
                     strategy=LoadHoursStrategy(avg_power_W=400,
                                                hrs_of_day=list(range(24)),
                                                hrs_per_day=24,
                                                initial_buying_rate=25.5,
                                                final_buying_rate=25.5,
                                                fit_to_limit=True)),
                Area("Community PP",
                     strategy=FinitePowerPlant(max_available_power_kW=5,
                                               energy_rate=10))
            ],
                 grid_fee_constant=4.0),
            Area("DSO",
                 strategy=InfiniteBusStrategy(energy_buy_rate=5,
                                              energy_sell_rate=22))
        ],
        config=config,
        grid_fee_constant=4.0,
    )
    return area
예제 #13
0
def get_setup(config):
    area = Area('Grid', [
        Area('InfiniteBus',
             strategy=InfiniteBusStrategy(energy_sell_rate=30,
                                          energy_buy_rate=12),
             appliance=SimpleAppliance()),
        Area('House', [
            Area('Load',
                 strategy=LoadHoursStrategy(avg_power_W=100,
                                            hrs_per_day=10,
                                            hrs_of_day=list(range(8, 19))),
                 appliance=SwitchableAppliance()),
            Area('PV',
                 strategy=PVPredefinedStrategy(cloud_coverage=0),
                 appliance=PVAppliance()),
        ]),
    ],
                config=config)
    return area
예제 #14
0
def get_setup(config):
    area = Area('Grid', [
        Area('House 1', [
            Area('H1 General Load',
                 strategy=LoadHoursStrategy(avg_power_W=200,
                                            hrs_per_day=23,
                                            hrs_of_day=list(range(0, 23)),
                                            initial_buying_rate=25,
                                            final_buying_rate=25)),
            Area('H1 PV',
                 strategy=PVStrategy(panel_count=4,
                                     initial_selling_rate=23.0,
                                     final_selling_rate=23.0)),
        ]),
        Area('Infinite Bus',
             strategy=InfiniteBusStrategy(energy_buy_rate=24,
                                          energy_sell_rate=24)),
    ],
                config=config)
    return area
예제 #15
0
def get_setup(config):
    import d3a.constants
    d3a.constants.DISPATCH_EVENTS_BOTTOM_TO_TOP = True
    ConstSettings.IAASettings.MARKET_TYPE = 2
    ConstSettings.GeneralSettings.DEFAULT_UPDATE_INTERVAL = 1
    ConstSettings.GeneralSettings.MIN_UPDATE_INTERVAL = 1
    ConstSettings.GeneralSettings.DEFAULT_MARKET_MAKER_RATE = 30
    ConstSettings.StorageSettings.SELLING_RATE_RANGE = RateRange(30, 15.1)
    ConstSettings.StorageSettings.BUYING_RATE_RANGE = RateRange(5, 15)

    area = Area('Grid', [
        Area(
            'Microgrid',
            [
                Area(
                    'House 1',
                    [
                        Area('H1 storage',
                             strategy=StorageStrategy(
                                 initial_soc=10,
                                 battery_capacity_kWh=1,
                                 max_abs_battery_power_kW=0.01,
                                 initial_buying_rate=5,
                                 final_buying_rate=15,
                                 initial_selling_rate=30,
                                 final_selling_rate=15.1,
                                 update_interval=1),
                             appliance=SwitchableAppliance())
                    ],
                    grid_fee_percentage=0,
                    grid_fee_constant=0,
                ),
            ],
        ),
        Area('DSO',
             strategy=InfiniteBusStrategy(energy_sell_rate=15,
                                          energy_buy_rate=0),
             appliance=SimpleAppliance()),
    ],
                config=config)
    return area
def get_setup(config):

    ConstSettings.IAASettings.MARKET_TYPE = 2
    ConstSettings.IAASettings.MIN_OFFER_AGE = 0
    ConstSettings.IAASettings.MIN_BID_AGE = 0

    area = Area(
        "Grid",
        [
            Area("Community", [
                Area("Family 2 children with PV", [
                    Area("Family General Load",
                         strategy=LoadHoursStrategy(avg_power_W=2161,
                                                    hrs_of_day=list(range(24)),
                                                    hrs_per_day=24,
                                                    initial_buying_rate=27.895,
                                                    final_buying_rate=27.895,
                                                    fit_to_limit=True)),
                    Area("Family PV",
                         strategy=PVStrategy(max_panel_power_W=17985,
                                             panel_count=1,
                                             initial_selling_rate=5,
                                             final_selling_rate=5))
                ]),
                Area("Community PP",
                     strategy=FinitePowerPlant(max_available_power_kW=5,
                                               energy_rate=1))
            ],
                 grid_fee_constant=4.0),
            Area("DSO",
                 strategy=InfiniteBusStrategy(energy_buy_rate=20,
                                              energy_sell_rate=22))
        ],
        config=config,
        grid_fee_constant=4.0,
    )
    return area
예제 #17
0
def bus_test3(area_test3):
    c = InfiniteBusStrategy(energy_sell_rate=30)
    c.area = area_test3
    c.owner = area_test3
    return c
def get_setup(config):
    ConstSettings.IAASettings.MARKET_TYPE = 1
    ConstSettings.GeneralSettings.DEFAULT_UPDATE_INTERVAL = 5

    Houses_initial_buying_rate = 6
    Houses_final_buying_rate = 30

    area = Area(
        'Grid',
        [
            Area(
                'Microgrid',
                [
                    Area(
                        'House 1',
                        [
                            Area(
                                'H1 General Load',
                                strategy=LoadHoursStrategy(
                                    avg_power_W=100,
                                    hrs_per_day=5,
                                    hrs_of_day=[9, 10, 11, 12, 13, 14, 15, 16],
                                    initial_buying_rate=
                                    Houses_initial_buying_rate,
                                    final_buying_rate=Houses_final_buying_rate
                                ),
                                appliance=SwitchableAppliance()),
                            Area(
                                'H1 PV',
                                strategy=PVStrategy(
                                    panel_count=3,
                                    max_panel_power_W=250,  # to test
                                    initial_selling_rate=30,
                                    final_selling_rate=0),
                                appliance=PVAppliance()),
                        ],
                        grid_fee_percentage=0,
                        grid_fee_constant=0,
                    ),
                    Area(
                        'House 2',
                        [
                            Area(
                                'H2 General Load',
                                strategy=LoadHoursStrategy(
                                    avg_power_W=100,
                                    hrs_per_day=5,
                                    hrs_of_day=[9, 10, 11, 12, 13, 14, 15, 16],
                                    initial_buying_rate=
                                    Houses_initial_buying_rate,
                                    final_buying_rate=Houses_final_buying_rate
                                ),
                                appliance=SwitchableAppliance()),
                            Area('H2 PV',
                                 strategy=PVStrategy(panel_count=4,
                                                     max_panel_power_W=250,
                                                     initial_selling_rate=30,
                                                     final_selling_rate=0),
                                 appliance=PVAppliance()),
                        ],
                        grid_fee_percentage=0,
                        grid_fee_constant=0,
                    ),
                ],
            ),
            Area('DSO',
                 strategy=InfiniteBusStrategy(energy_buy_rate=5),
                 appliance=SimpleAppliance()),
        ],
        config=config,
        grid_fee_percentage=0,
        grid_fee_constant=0,
    )
    return area
예제 #19
0
def get_setup(config):

    ConstSettings.GeneralSettings.DEFAULT_UPDATE_INTERVAL = 1
    ConstSettings.IAASettings.MARKET_TYPE = 2
    ConstSettings.GeneralSettings.DEFAULT_MARKET_MAKER_RATE = 22

    area = Area(
        'Grid',
        [
            Area(
                'Community',
                [
                    Area('Family 2 children+PV',
                         [
                             Area('Load 1 L13', strategy=LoadProfileExternalStrategy(
                                 daily_load_profile=os.path.join(current_dir,
                                                                 "resources/CHR27 Family both at work, 2 children HH1.csv"),
                                 initial_buying_rate=11,
                                 use_market_maker_rate=True),
                                  ),
                             Area('PV 1 (4kW)', strategy=PVUserProfileExternalStrategy(
                                 power_profile=os.path.join(current_dir, "resources/Berlin_pv.csv"),
                                 panel_count=4,
                                 initial_selling_rate=30,
                                 final_selling_rate=11),
                                  ),
                         ]),

                    Area('Family 2 children',
                         [
                             Area('Load 2 L21', strategy=LoadProfileExternalStrategy(
                                 daily_load_profile=os.path.join(current_dir,
                                                                 "resources/CHR44 Family with 2 children, 1 at work, 1 at home HH1.csv"),
                                 initial_buying_rate=11,
                                 use_market_maker_rate=True),
                                  ),
                         ]),

                    Area('Family 3 children+PV+Batt',
                         [
                             Area('Load 3 L17', strategy=LoadProfileExternalStrategy(
                                 daily_load_profile=os.path.join(current_dir,
                                                                 "resources/CHR41 Family with 3 children, both at work HH1.csv"),
                                 initial_buying_rate=11,
                                 use_market_maker_rate=True),
                                  ),
                             Area('PV 3 (5kW)', strategy=PVUserProfileExternalStrategy(
                                 power_profile=os.path.join(current_dir, "resources/Berlin_pv.csv"),
                                 panel_count=5,
                                 initial_selling_rate=30,
                                 final_selling_rate=11),
                                  ),
                             Area('Tesla Powerwall 3', strategy=StorageExternalStrategy(initial_soc=10,
                                                                                        min_allowed_soc=10,
                                                                                        battery_capacity_kWh=14,
                                                                                        max_abs_battery_power_kW=5,
                                                                                        initial_buying_rate=0,
                                                                                        final_buying_rate=25,
                                                                                        initial_selling_rate=30,
                                                                                        final_selling_rate=25.1),
                                  ),
                         ]),

                    Area('Young Couple',
                         [
                             Area('Load 4 L15', strategy=LoadProfileExternalStrategy(
                                 daily_load_profile=os.path.join(current_dir,
                                                                 "resources/CHR33 Couple under 30 years with work HH1.csv"),
                                 initial_buying_rate=11,
                                 use_market_maker_rate=True),
                                  ),
                         ]),

                    Area('Multigenerational house',
                         [
                             Area('Load 5 L9', strategy=LoadProfileExternalStrategy(
                                 daily_load_profile=os.path.join(current_dir,
                                                                 "resources/CHR15 Multigenerational Home working couple, 2 children, 2 seniors HH1.csv"),
                                 initial_buying_rate=11,
                                 use_market_maker_rate=True),
                                  ),
                             Area('PV 5 (10kW)', strategy=PVUserProfileExternalStrategy(
                                 power_profile=os.path.join(current_dir, "resources/Berlin_pv.csv"),
                                 panel_count=10,
                                 initial_selling_rate=30,
                                 final_selling_rate=11),
                                  ),
                             Area('Tesla Powerwall 5', strategy=StorageExternalStrategy(initial_soc=10,
                                                                                        min_allowed_soc=10,
                                                                                        battery_capacity_kWh=14,
                                                                                        max_abs_battery_power_kW=5,
                                                                                        initial_buying_rate=0,
                                                                                        final_buying_rate=25,
                                                                                        initial_selling_rate=30,
                                                                                        final_selling_rate=25.1),
                                  ),
                         ]),

                    Area('Retired couple',
                         [
                             Area('Load 6 L24', strategy=LoadProfileExternalStrategy(
                                 daily_load_profile=os.path.join(current_dir,
                                                                 "resources/CHR54 Retired Couple, no work HH1.csv"),
                                 initial_buying_rate=11,
                                 use_market_maker_rate=True),
                                  ),
                         ]),

                    Area('Flatsharing Student',
                         [
                             Area('Load 7 L22', strategy=LoadProfileExternalStrategy(
                                 daily_load_profile=os.path.join(current_dir,
                                                                 "resources/CHR52 Student Flatsharing HH1.csv"),
                                 initial_buying_rate=11,
                                 use_market_maker_rate=True),
                                  ),
                         ]),

                    Area('6 apartments building',
                         [
                             Area('Load 81 L20', strategy=LoadProfileExternalStrategy(
                                 daily_load_profile=os.path.join(current_dir,
                                                                 "resources/CHR43 Single with 1 child, with work HH1.csv"),
                                 initial_buying_rate=11,
                                 use_market_maker_rate=True),
                                  ),
                             Area('Load 82 L17', strategy=LoadProfileExternalStrategy(
                                 daily_load_profile=os.path.join(current_dir,
                                                                 "resources/CHR39 Couple, 30 - 64 years, with work HH1.csv"),
                                 initial_buying_rate=11,
                                 use_market_maker_rate=True),
                                  ),
                             Area('Load 83 L14', strategy=LoadProfileExternalStrategy(
                                 daily_load_profile=os.path.join(current_dir,
                                                                 "resources/CHR31 Single, Retired HH1.csv"),
                                 initial_buying_rate=11,
                                 use_market_maker_rate=True),
                                  ),
                             Area('Load 84 L10', strategy=LoadProfileExternalStrategy(
                                 daily_load_profile=os.path.join(current_dir,
                                                                 "resources/CHR16 Couple over 65 years HH1.csv"),
                                 initial_buying_rate=11,
                                 use_market_maker_rate=True),
                                  ),
                             Area('Load 85 L22', strategy=LoadProfileExternalStrategy(
                                 daily_load_profile=os.path.join(current_dir,
                                                                 "resources/CHR52 Student Flatsharing HH1.csv"),
                                 initial_buying_rate=11,
                                 use_market_maker_rate=True),
                                  ),
                             Area('Load 86 L8', strategy=LoadProfileExternalStrategy(
                                 daily_load_profile=os.path.join(current_dir, "resources/CHR11 Student, HH1.csv"),
                                 initial_buying_rate=11,
                                 use_market_maker_rate=True),
                                  ),
                         ]),

                    Area('6 apartments building+PV',
                         [
                             Area('Load 81 L20', strategy=LoadProfileExternalStrategy(
                                 daily_load_profile=os.path.join(current_dir,
                                                                 "resources/CHR43 Single with 1 child, with work HH1.csv"),
                                 initial_buying_rate=11,
                                 use_market_maker_rate=True),
                                  ),
                             Area('Load 82 L17', strategy=LoadProfileExternalStrategy(
                                 daily_load_profile=os.path.join(current_dir,
                                                                 "resources/CHR39 Couple, 30 - 64 years, with work HH1.csv"),
                                 initial_buying_rate=11,
                                 use_market_maker_rate=True),
                                  ),
                             Area('Load 83 L14', strategy=LoadProfileExternalStrategy(
                                 daily_load_profile=os.path.join(current_dir,
                                                                 "resources/CHR31 Single, Retired HH1.csv"),
                                 initial_buying_rate=11,
                                 use_market_maker_rate=True),
                                  ),
                             Area('Load 84 L10', strategy=LoadProfileExternalStrategy(
                                 daily_load_profile=os.path.join(current_dir,
                                                                 "resources/CHR16 Couple over 65 years HH1.csv"),
                                 initial_buying_rate=11,
                                 use_market_maker_rate=True),
                                  ),
                             Area('Load 85 L22', strategy=LoadProfileExternalStrategy(
                                 daily_load_profile=os.path.join(current_dir,
                                                                 "resources/CHR52 Student Flatsharing HH1.csv"),
                                 initial_buying_rate=11,
                                 use_market_maker_rate=True),
                                  ),
                             Area('Load 86 L8', strategy=LoadProfileExternalStrategy(
                                 daily_load_profile=os.path.join(current_dir, "resources/CHR11 Student, HH1.csv"),
                                 initial_buying_rate=11,
                                 use_market_maker_rate=True),
                                  ),
                             Area('PV 9 (15kW)', strategy=PVUserProfileExternalStrategy(
                                 power_profile=os.path.join(current_dir, "resources/Berlin_pv.csv"),
                                 panel_count=15,
                                 initial_selling_rate=30,
                                 final_selling_rate=11),
                                  ),
                         ]),

                ], grid_fee_constant=4, external_connection_available=True),

            Area('Market Maker', strategy=InfiniteBusStrategy(energy_buy_rate=21, energy_sell_rate=22)),
        ],
        config=config, grid_fee_constant=4, external_connection_available=True
    )
    return area
def bus_test5(area_test1):
    c = InfiniteBusStrategy(energy_rate_profile=os.path.join(
        d3a_path, "resources", "SAM_SF_Summer.csv"))
    c.area = area_test1
    c.owner = area_test1
    return c
def bus_test6(area_test1):
    c = InfiniteBusStrategy(buying_rate_profile=os.path.join(
        d3a_path, "resources", "LOAD_DATA_1.csv"))
    c.area = area_test1
    c.owner = area_test1
    return c
예제 #22
0
def get_setup(config):

    ConstSettings.GeneralSettings.DEFAULT_UPDATE_INTERVAL = 1
    ConstSettings.IAASettings.MARKET_TYPE = 2
    ConstSettings.GeneralSettings.KEEP_PAST_MARKETS = False
    ConstSettings.IAASettings.MIN_OFFER_AGE = 1

    area = Area(
        'Grid',
        [
            Area(
                'Community',
                [
                    Area(
                        'House 1',
                        [
                            Area('H1 General Load',
                                 strategy=DefinedLoadStrategy(
                                     daily_load_profile=os.path.join(
                                         current_dir,
                                         "../../resources/KPI_L1.csv"),
                                     initial_buying_rate=20,
                                     final_buying_rate=30,
                                     fit_to_limit=True),
                                 appliance=SwitchableAppliance()),
                            Area('H1 PV',
                                 strategy=PVUserProfileStrategy(
                                     power_profile=os.path.join(
                                         current_dir,
                                         "../../resources/KPI_PV1.csv"),
                                     initial_selling_rate=20,
                                     final_selling_rate=15,
                                     fit_to_limit=True),
                                 appliance=PVAppliance()),
                            Area('H1 General Load evening',
                                 strategy=LoadHoursStrategy(
                                     hrs_per_day=1,
                                     hrs_of_day=list([22, 23]),
                                     avg_power_W=2000,
                                     initial_buying_rate=20,
                                     final_buying_rate=30),
                                 appliance=SwitchableAppliance()),
                        ],
                        grid_fee_percentage=0,
                        transfer_fee_const=0,
                    ),
                    Area('central storage',
                         strategy=StorageStrategy(initial_soc=10,
                                                  min_allowed_soc=10,
                                                  battery_capacity_kWh=6,
                                                  max_abs_battery_power_kW=5,
                                                  initial_buying_rate=12,
                                                  final_buying_rate=20,
                                                  initial_selling_rate=29,
                                                  final_selling_rate=20.01),
                         appliance=SwitchableAppliance()),
                    Area(
                        'House 2',
                        [
                            Area('H2 General Load',
                                 strategy=DefinedLoadStrategy(
                                     daily_load_profile=os.path.join(
                                         current_dir,
                                         "../../resources/KPI_L1.csv"),
                                     initial_buying_rate=20,
                                     final_buying_rate=30,
                                     fit_to_limit=True),
                                 appliance=SwitchableAppliance()),
                            Area('H2 PV',
                                 strategy=PVUserProfileStrategy(
                                     power_profile=os.path.join(
                                         current_dir,
                                         "../../resources/KPI_PV2.csv"),
                                     initial_selling_rate=20,
                                     final_selling_rate=15,
                                     fit_to_limit=True),
                                 appliance=PVAppliance()),
                        ],
                        grid_fee_percentage=0,
                        transfer_fee_const=0,
                    ),
                    Area(
                        'House 3',
                        [
                            Area('H3 General Load',
                                 strategy=DefinedLoadStrategy(
                                     daily_load_profile=os.path.join(
                                         current_dir,
                                         "../../resources/KPI_L1.csv"),
                                     initial_buying_rate=20,
                                     final_buying_rate=30,
                                     fit_to_limit=True),
                                 appliance=SwitchableAppliance()),
                            Area('H3 PV',
                                 strategy=PVUserProfileStrategy(
                                     power_profile=os.path.join(
                                         current_dir,
                                         "../../resources/KPI_PV3.csv"),
                                     initial_selling_rate=20,
                                     final_selling_rate=15,
                                     fit_to_limit=True),
                                 appliance=PVAppliance()),
                        ],
                        grid_fee_percentage=0,
                        transfer_fee_const=0,
                    ),
                ],
                grid_fee_percentage=0,
                transfer_fee_const=0,
            ),
            Area('Feed In Tariff',
                 strategy=InfiniteBusStrategy(energy_buy_rate=15.2,
                                              energy_sell_rate=200),
                 appliance=SimpleAppliance()),
            Area('Market Maker',
                 strategy=MarketMakerStrategy(energy_rate=30,
                                              grid_connected=True))
        ],
        config=config,
        grid_fee_percentage=0,
        transfer_fee_const=0,
    )
    return area
예제 #23
0
def get_setup(config):
    ConstSettings.IAASettings.MARKET_TYPE = 2
    ConstSettings.IAASettings.BID_OFFER_MATCH_TYPE = \
        BidOfferMatchAlgoEnum.PAY_AS_CLEAR.value
    ConstSettings.GeneralSettings.MARKET_CLEARING_FREQUENCY_PER_SLOT = 1
    ConstSettings.GeneralSettings.SUPPLY_DEMAND_PLOTS = False

    area = Area(
        'GRID',
        [
            Area(
                'LEM',
                [
                    Area(
                        'House 1',
                        [
                            Area('Load H1', strategy=LoadHoursStrategy(
                                avg_power_W=200, hrs_per_day=24, hrs_of_day=range(24),
                                final_buying_rate=30, initial_buying_rate=15,
                                fit_to_limit=True, update_interval=5),
                                 ),
                            Area('H1 PV', strategy=PVStrategy(
                                panel_count=1, initial_selling_rate=13,
                                fit_to_limit=False,
                                energy_rate_decrease_per_update=1,
                                update_interval=5),
                                 ),
                        ], grid_fee_percentage=0, grid_fee_constant=0,
                    ),
                    Area(
                        'House 2',
                        [
                            Area('Load H2', strategy=LoadHoursStrategy(
                                avg_power_W=200, hrs_per_day=24, hrs_of_day=range(24),
                                final_buying_rate=30, initial_buying_rate=18,
                                fit_to_limit=True, update_interval=5),
                                 ),
                            Area('H2 PV', strategy=PVStrategy(
                                panel_count=1, initial_selling_rate=24,
                                fit_to_limit=False,
                                energy_rate_decrease_per_update=1,
                                update_interval=5),
                                 ),
                            ], grid_fee_percentage=0, grid_fee_constant=0,
                    ),
                    Area(
                        'House 3',
                        [
                            Area('Load H3', strategy=LoadHoursStrategy(
                                avg_power_W=200, hrs_per_day=24, hrs_of_day=range(24),
                                final_buying_rate=30, initial_buying_rate=16,
                                update_interval=5),
                                 ),
                        ], grid_fee_percentage=0, grid_fee_constant=0,
                    ),
                    Area(
                        'House 4',
                        [
                            Area('Load H4', strategy=LoadHoursStrategy(
                                avg_power_W=200, hrs_per_day=24, hrs_of_day=range(24),
                                final_buying_rate=30, initial_buying_rate=15,
                                update_interval=5),
                                 ),
                        ], grid_fee_percentage=0, grid_fee_constant=0,
                    ),
                ],
            ),
            Area('Infinite Bus', strategy=InfiniteBusStrategy(
                energy_buy_rate=12, energy_sell_rate=30),
                 ),
        ],
        config=config

    )
    return area
예제 #24
0
def get_setup(config):
    ConstSettings.IAASettings.MARKET_TYPE = 3
    ConstSettings.GeneralSettings.MARKET_CLEARING_FREQUENCY_PER_SLOT = 1
    ConstSettings.GeneralSettings.SUPPLY_DEMAND_PLOTS = False

    area = Area('GRID', [
        Area(
            'LEM',
            [
                Area(
                    'House 1',
                    [
                        Area('Load H1',
                             strategy=LoadHoursStrategy(avg_power_W=200,
                                                        hrs_per_day=24,
                                                        hrs_of_day=range(24),
                                                        final_buying_rate=30,
                                                        initial_buying_rate=15,
                                                        fit_to_limit=True,
                                                        update_interval=5),
                             appliance=SwitchableAppliance()),
                        Area('H1 PV',
                             strategy=PVStrategy(
                                 panel_count=1,
                                 initial_selling_rate=13,
                                 fit_to_limit=False,
                                 energy_rate_decrease_per_update=1,
                                 update_interval=5),
                             appliance=PVAppliance()),
                    ],
                    transfer_fee_pct=0,
                    transfer_fee_const=0,
                ),
                Area(
                    'House 2',
                    [
                        Area('Load H2',
                             strategy=LoadHoursStrategy(avg_power_W=200,
                                                        hrs_per_day=24,
                                                        hrs_of_day=range(24),
                                                        final_buying_rate=30,
                                                        initial_buying_rate=18,
                                                        fit_to_limit=True,
                                                        update_interval=5),
                             appliance=SwitchableAppliance()),
                        Area('H2 PV',
                             strategy=PVStrategy(
                                 panel_count=1,
                                 initial_selling_rate=24,
                                 fit_to_limit=False,
                                 energy_rate_decrease_per_update=1,
                                 update_interval=5),
                             appliance=PVAppliance()),
                    ],
                    transfer_fee_pct=0,
                    transfer_fee_const=0,
                ),
                Area(
                    'House 3',
                    [
                        Area('Load H3',
                             strategy=LoadHoursStrategy(avg_power_W=200,
                                                        hrs_per_day=24,
                                                        hrs_of_day=range(24),
                                                        final_buying_rate=30,
                                                        initial_buying_rate=16,
                                                        update_interval=5),
                             appliance=SwitchableAppliance()),
                    ],
                    transfer_fee_pct=0,
                    transfer_fee_const=0,
                ),
                Area(
                    'House 4',
                    [
                        Area('Load H4',
                             strategy=LoadHoursStrategy(avg_power_W=200,
                                                        hrs_per_day=24,
                                                        hrs_of_day=range(24),
                                                        final_buying_rate=30,
                                                        initial_buying_rate=15,
                                                        update_interval=5),
                             appliance=SwitchableAppliance()),
                    ],
                    transfer_fee_pct=0,
                    transfer_fee_const=0,
                ),
            ],
        ),
        Area('Infinite Bus',
             strategy=InfiniteBusStrategy(energy_buy_rate=12,
                                          energy_sell_rate=30),
             appliance=SimpleAppliance()),
    ],
                config=config)
    return area
예제 #25
0
def get_setup(config):

    ConstSettings.GeneralSettings.DEFAULT_UPDATE_INTERVAL = 1
    ConstSettings.IAASettings.MARKET_TYPE = 1

    area = Area(
        'Grid',
        [
            Area(
                'Community',
                [
                    Area(
                        'House 1',
                        [
                            Area('H1 General Load',
                                 strategy=DefinedLoadStrategy(
                                     daily_load_profile=os.path.join(
                                         current_dir,
                                         "../../resources/KPI_L1.csv"),
                                     initial_buying_rate=20,
                                     final_buying_rate=30,
                                     fit_to_limit=True),
                                 appliance=SwitchableAppliance()),
                            Area('H1 PV',
                                 strategy=PVUserProfileStrategy(
                                     power_profile=os.path.join(
                                         current_dir,
                                         "../../resources/KPI_PV1.csv"),
                                     initial_selling_rate=20,
                                     final_selling_rate=20,
                                     fit_to_limit=True),
                                 appliance=PVAppliance()),
                        ],
                        grid_fee_percentage=0,
                        grid_fee_constant=0,
                    ),
                    Area(
                        'House 2',
                        [
                            Area('H2 General Load',
                                 strategy=DefinedLoadStrategy(
                                     daily_load_profile=os.path.join(
                                         current_dir,
                                         "../../resources/KPI_L1.csv"),
                                     initial_buying_rate=20,
                                     final_buying_rate=30,
                                     fit_to_limit=True),
                                 appliance=SwitchableAppliance()),
                            Area('H2 PV',
                                 strategy=PVUserProfileStrategy(
                                     power_profile=os.path.join(
                                         current_dir,
                                         "../../resources/KPI_PV2.csv"),
                                     initial_selling_rate=20,
                                     final_selling_rate=20,
                                     fit_to_limit=True),
                                 appliance=PVAppliance()),
                        ],
                        grid_fee_percentage=0,
                        grid_fee_constant=0,
                    ),
                    Area(
                        'House 3',
                        [
                            Area('H3 General Load',
                                 strategy=DefinedLoadStrategy(
                                     daily_load_profile=os.path.join(
                                         current_dir,
                                         "../../resources/KPI_L1.csv"),
                                     initial_buying_rate=20,
                                     final_buying_rate=30,
                                     fit_to_limit=True),
                                 appliance=SwitchableAppliance()),
                            Area('H3 PV',
                                 strategy=PVUserProfileStrategy(
                                     power_profile=os.path.join(
                                         current_dir,
                                         "../../resources/KPI_PV3.csv"),
                                     initial_selling_rate=20,
                                     final_selling_rate=20,
                                     fit_to_limit=True),
                                 appliance=PVAppliance()),
                        ],
                        grid_fee_percentage=0,
                        grid_fee_constant=0,
                    ),
                ],
                grid_fee_percentage=1,
                grid_fee_constant=0,
            ),
            Area('DSO',
                 strategy=InfiniteBusStrategy(energy_buy_rate=20,
                                              energy_sell_rate=30),
                 appliance=SimpleAppliance()),
        ],
        config=config,
        grid_fee_percentage=0,
        grid_fee_constant=0,
    )
    return area
예제 #26
0
def bus_test4(area_test4):
    c = InfiniteBusStrategy(energy_sell_rate=30, energy_buy_rate=25)
    c.area = area_test4
    c.owner = area_test4
    return c