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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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