def get_setup(config): ConstSettings.IAASettings.MARKET_TYPE = 2 ConstSettings.PVSettings.FINAL_SELLING_RATE = 0 ConstSettings.GeneralSettings.DEFAULT_MARKET_MAKER_RATE = 30 ConstSettings.LoadSettings.INITIAL_BUYING_RATE = 0 ConstSettings.LoadSettings.FINAL_BUYING_RATE = 30 area = Area('Grid', [ Area('House 1', [ Area('H1 General Load', strategy=LoadHoursStrategy(avg_power_W=1000, hrs_per_day=24, hrs_of_day=list(range(0, 24)), initial_buying_rate=ConstSettings. LoadSettings.INITIAL_BUYING_RATE, final_buying_rate=ConstSettings. LoadSettings.FINAL_BUYING_RATE), appliance=SwitchableAppliance()), ]), Area('House 2', [ Area('H2 PV1', strategy=PVStrategy(1), appliance=PVAppliance()), Area('H2 PV2', strategy=PVStrategy(1), appliance=PVAppliance()), Area('H2 PV3', strategy=PVStrategy(1), appliance=PVAppliance()), Area('H2 PV4', strategy=PVStrategy(1), appliance=PVAppliance()), Area('H2 PV5', strategy=PVStrategy(1), appliance=PVAppliance()), ]), ], config=config) return area
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
def get_setup(config): ConstSettings.IAASettings.MARKET_TYPE = 2 ConstSettings.PVSettings.FINAL_SELLING_RATE = 0 ConstSettings.GeneralSettings.DEFAULT_MARKET_MAKER_RATE = 30 ConstSettings.StorageSettings.BUYING_RANGE = RangeLimit(0, 29.9) ConstSettings.StorageSettings.SELLING_RANGE = RangeLimit(30, 30) area = Area('Grid', [ Area('House 1', [ Area('H1 Storage', strategy=StorageStrategy(initial_soc=11, battery_capacity_kWh=10, max_abs_battery_power_kW=5, initial_buying_rate=0), appliance=SwitchableAppliance()), ]), Area('House 2', [ Area('H2 PV1', strategy=PVStrategy(1), appliance=PVAppliance()), Area('H2 PV2', strategy=PVStrategy(1), appliance=PVAppliance()), Area('H2 PV3', strategy=PVStrategy(1), appliance=PVAppliance()), Area('H2 PV4', strategy=PVStrategy(1), appliance=PVAppliance()), Area('H2 PV5', strategy=PVStrategy(1), appliance=PVAppliance()), ]), ], config=config) return area
def test_pv_constructor_rejects_incorrect_parameters(): with pytest.raises(D3ADeviceException): PVStrategy(panel_count=-1) with pytest.raises(D3ADeviceException): PVStrategy(max_panel_power_W=-100) with pytest.raises(D3ADeviceException): PVStrategy(initial_selling_rate=5, final_selling_rate=15)
def test_pv_constructor_rejects_incorrect_parameters(): with pytest.raises(ValueError): PVStrategy(risk=-1) with pytest.raises(ValueError): PVStrategy(risk=101) with pytest.raises(ValueError): PVStrategy(panel_count=0)
def get_setup(config): ConstSettings.IAASettings.MARKET_TYPE = 2 ConstSettings.PVSettings.MIN_SELLING_RATE = 0 ConstSettings.GeneralSettings.DEFAULT_MARKET_MAKER_RATE = 30 ConstSettings.LoadSettings.MIN_ENERGY_RATE = 0 ConstSettings.LoadSettings.MAX_ENERGY_RATE = 30 area = Area('Grid', [ Area('House 1', [ Area( 'H1 General Load', strategy=LoadHoursStrategy( avg_power_W=1000, hrs_per_day=24, hrs_of_day=list(range(0, 24)), min_energy_rate=ConstSettings.LoadSettings.MIN_ENERGY_RATE, max_energy_rate=ConstSettings.LoadSettings.MAX_ENERGY_RATE ), appliance=SwitchableAppliance()), ]), Area('House 2', [ Area('H2 PV1', strategy=PVStrategy(1, 0), appliance=PVAppliance()), Area('H2 PV2', strategy=PVStrategy(1, 0), appliance=PVAppliance()), Area('H2 PV3', strategy=PVStrategy(1, 0), appliance=PVAppliance()), Area('H2 PV4', strategy=PVStrategy(1, 0), appliance=PVAppliance()), Area('H2 PV5', strategy=PVStrategy(1, 0), appliance=PVAppliance()), ]), ], config=config) return area
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
def test_pv_constructor_rejects_incorrect_parameters(): with pytest.raises(D3ADeviceException): PVStrategy(panel_count=-1) with pytest.raises(D3ADeviceException): PVStrategy(max_panel_power_W=-100) with pytest.raises(D3ADeviceException): pv = PVStrategy(initial_selling_rate=5, final_selling_rate=15) pv.event_activate() with pytest.raises(D3ADeviceException): PVStrategy(fit_to_limit=True, energy_rate_decrease_per_update=1) with pytest.raises(D3ADeviceException): PVStrategy(fit_to_limit=False, energy_rate_decrease_per_update=-1)
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): # Two sided market ConstSettings.IAASettings.MARKET_TYPE = 2 ConstSettings.PVSettings.FINAL_SELLING_RATE = 0 ConstSettings.GeneralSettings.DEFAULT_MARKET_MAKER_RATE = 30 ConstSettings.LoadSettings.INITIAL_BUYING_RATE = 0 ConstSettings.LoadSettings.FINAL_BUYING_RATE = 30 area = Area('Grid', [ Area('House 1', [ Area('H1 General Load', strategy=CustomLoadStrategy(avg_power_W=200, hrs_per_day=6, hrs_of_day=list(range(9, 15)), initial_buying_rate=ConstSettings. LoadSettings.INITIAL_BUYING_RATE, final_buying_rate=ConstSettings. LoadSettings.FINAL_BUYING_RATE), appliance=SwitchableAppliance()), ]), Area('House 2', [ Area('H2 PV', strategy=PVStrategy(4, 0), appliance=PVAppliance()), ]), ], config=config) return area
def get_setup(config): config.grid_fee_type = 1 ConstSettings.GeneralSettings.DEFAULT_UPDATE_INTERVAL = 5 area = Area('Grid', [ Area('Neighborhood 1', [ Area('House 1', [ Area('H1 General Load', strategy=LoadHoursStrategy(avg_power_W=200, hrs_per_day=24, hrs_of_day=list(range(0, 24)), initial_buying_rate=30, final_buying_rate=30), appliance=SwitchableAppliance()), ], grid_fee_constant=0) ], grid_fee_constant=1), Area('Neighborhood 2', [ Area('House 2', [ Area('H2 PV', strategy=PVStrategy(panel_count=10, initial_selling_rate=10, final_selling_rate=10), appliance=PVAppliance()), ], grid_fee_constant=0), ], grid_fee_constant=1) ], config=config, grid_fee_constant=2) return area
def get_setup(config): config.read_market_maker_rate(30) 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)), final_buying_rate=14), appliance=SwitchableAppliance()), Area('H1 Storage1', strategy=StorageStrategy(energy_rate_decrease_per_update=7, battery_capacity_kWh=1.2, max_abs_battery_power_kW=5, final_buying_rate=12, final_selling_rate=17.01), appliance=SwitchableAppliance()), Area('H1 PV', strategy=PVStrategy(panel_count=4, final_selling_rate=5, energy_rate_decrease_per_update=7), appliance=PVAppliance()), ] ), Area('Commercial Energy Producer', strategy=CommercialStrategy(energy_rate=15), appliance=SimpleAppliance()), ], config=config ) return area
def get_setup(config): area = Area('Grid', [ Area('Neighborhood 1', [ Area('House 1', [ Area('H1 General Load', strategy=LoadHoursStrategy(avg_power_W=200, hrs_per_day=24, hrs_of_day=list(range(0, 24)), initial_buying_rate=30, final_buying_rate=30), appliance=SwitchableAppliance()), ], grid_fee_percentage=0) ], grid_fee_percentage=5), Area('Neighborhood 2', [ Area('House 2', [ Area('H2 PV', strategy=PVStrategy(panel_count=4, initial_selling_rate=10, final_selling_rate=10), appliance=PVAppliance()), ], grid_fee_percentage=0), ], grid_fee_percentage=5) ], config=config, grid_fee_percentage=10) return area
def get_setup(config): # Two sided market ConstSettings.IAASettings.MARKET_TYPE = 2 ConstSettings.PVSettings.MIN_SELLING_RATE = 0 ConstSettings.GeneralSettings.DEFAULT_MARKET_MAKER_RATE = 30 ConstSettings.LoadSettings.MIN_ENERGY_RATE = 0 ConstSettings.LoadSettings.MAX_ENERGY_RATE = 30 DeviceRegistry.REGISTRY = device_registry_dict ConstSettings.BalancingSettings.FLEXIBLE_LOADS_SUPPORT = False 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(9, 15)), min_energy_rate=ConstSettings.LoadSettings.MIN_ENERGY_RATE, max_energy_rate=ConstSettings.LoadSettings.MAX_ENERGY_RATE ), appliance=SwitchableAppliance()), ]), Area('House 2', [ Area('H2 PV', strategy=PVStrategy(4, 0), appliance=PVAppliance()), ]), ], config=config) return area
def pv_test8(area_test3): p = PVStrategy(1, 10) p.area = area_test3 p.owner = area_test3 p.offers.posted = {Offer('id', 1, 1, 'FakeArea', market=area_test3.test_market): area_test3.test_market} return p
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): area = Area('Grid', [ Area( 'House 1', [ Area('H1 General Load', strategy=LoadHoursStrategy(avg_power_W=200, hrs_per_day=4, hrs_of_day=list(range(24)), final_buying_rate=35)), Area( 'H1 PV', strategy=PVStrategy(panel_count=4, initial_selling_rate=30, final_selling_rate=5), ), ], grid_fee_percentage=0, grid_fee_constant=0, ), Area('Commercial Energy Producer', strategy=CommercialStrategy(energy_rate=30)), ], config=config) return area
def get_setup(config): ConstSettings.GeneralSettings.KEEP_PAST_MARKETS = True area = Area('Grid', [ Area( 'House 1', [ Area('H1 General Load', strategy=LoadHoursStrategy(avg_power_W=200, hrs_per_day=24, hrs_of_day=list(range(24)), final_buying_rate=35), appliance=SwitchableAppliance()), Area('H1 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('Commercial Energy Producer', strategy=CommercialStrategy(energy_rate=30), appliance=SimpleAppliance()), ], 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=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
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
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
def get_setup(config): # Left this for testing that the KPIs export also works with KEEP_PAST_MARKETS ConstSettings.GeneralSettings.KEEP_PAST_MARKETS = True area = Area('Grid', [ Area( 'House 1', [ Area('H1 General Load', strategy=LoadHoursStrategy(avg_power_W=200, hrs_per_day=4, hrs_of_day=list(range(10, 14)), final_buying_rate=35), appliance=SwitchableAppliance()), Area('H1 PV', strategy=PVStrategy(panel_count=4, initial_selling_rate=30, final_selling_rate=5), appliance=PVAppliance()), ], grid_fee_percentage=0, transfer_fee_const=0, ), Area('Commercial Energy Producer', strategy=CommercialStrategy(energy_rate=30), appliance=SimpleAppliance()), ], config=config) return area
def get_setup(config): config.read_market_maker_rate(market_maker_rate) area = Area( 'Grid', [ Area( 'House', [ Area('H1 General Load', strategy=LoadHoursStrategy( avg_power_W=500, hrs_per_day=6, hrs_of_day=list( range(6, 22)), max_energy_rate=35.01 ), appliance=SwitchableAppliance()), # The default value is 1, for historical average price # Here a value of 2 is used, which is using the market maker rate Area('H1 PV', strategy=PVStrategy(4, 80, initial_rate_option=2), appliance=PVAppliance()), ] ), ], config=config ) return area
def get_setup(config): area = Area( 'Grid', children=[ Area('House 1', children=[ Area('H2 PV', strategy=PVStrategy(panel_count=1, initial_selling_rate=80), appliance=PVAppliance(), event_list=[ StrategyEvents(12, { 'panel_count': 5, 'max_panel_power_W': 320 }) ]) ]), Area('Grid Load', strategy=LoadHoursStrategy(avg_power_W=10000, hrs_per_day=24, hrs_of_day=list(range(0, 24)), final_buying_rate=35), appliance=SwitchableAppliance()) ], config=config) return area
def pv_test6(area_test3): p = PVStrategy() p.area = area_test3 p.owner = area_test3 p.offers.posted = {} p.energy_production_forecast_kWh = ENERGY_FORECAST return p
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 pv_test9(area_test9): p = PVStrategy(panel_count=3) p.area = area_test9 p.owner = area_test9 p.offers.posted = {} p.energy_production_forecast_kWh = ENERGY_FORECAST return p
def get_setup(config): # Two sided market ConstSettings.IAASettings.MARKET_TYPE = 2 ConstSettings.PVSettings.MIN_SELLING_RATE = 0 ConstSettings.GeneralSettings.DEFAULT_MARKET_MAKER_RATE = 30 ConstSettings.StorageSettings.MIN_BUYING_RATE = 0 ConstSettings.StorageSettings.BREAK_EVEN_BUY = 29.9 ConstSettings.StorageSettings.BREAK_EVEN_SELL = 30 area = Area('Grid', [ Area('House 1', [ Area('H1 Storage', strategy=StorageStrategy( initial_capacity_kWh=0.6, break_even=( ConstSettings.StorageSettings.BREAK_EVEN_BUY, ConstSettings.StorageSettings.BREAK_EVEN_SELL)), appliance=SwitchableAppliance()), ]), Area('House 2', [ Area('H2 PV', strategy=PVStrategy(4, 0), appliance=PVAppliance()), ]), ], config=config) return area
def get_setup(config): area = Area('Grid', [ Area( 'House 1', [ Area('Penalty PV', strategy=PVStrategy(panel_count=10, initial_selling_rate=30, final_selling_rate=5), appliance=PVAppliance()), ], grid_fee_percentage=0, transfer_fee_const=0, ), Area( 'House 2', [ Area('Non Penalty Load', strategy=LoadHoursStrategy(avg_power_W=100, hrs_per_day=6, hrs_of_day=list(range(10, 16)), final_buying_rate=35), appliance=SwitchableAppliance()), ], grid_fee_percentage=0, transfer_fee_const=0, ), ], config=config) return area
def get_setup(config): area = Area('Grid', [ Area('House 1', [ Area('H1 DefinedLoad', strategy=DefinedLoadStrategy(daily_load_profile=profile_path, final_buying_rate=36), appliance=SwitchableAppliance()), Area('H1 Storage1', strategy=StorageStrategy(initial_soc=50), appliance=SwitchableAppliance()), ]), Area('House 2', [ Area('H2 General Load', strategy=LoadHoursStrategy(avg_power_W=1000, hrs_per_day=4, hrs_of_day=list(range(12, 16)), final_buying_rate=35), appliance=SwitchableAppliance()), Area('H2 PV', strategy=PVStrategy(1, 80), appliance=PVAppliance()), ]), Area('Finite Commercial Producer', strategy=FinitePowerPlant(energy_rate=30, max_available_power_kW=0.01), appliance=SwitchableAppliance()), Area('Commercial Energy Producer', strategy=CommercialStrategy(energy_rate=30), appliance=SimpleAppliance()), ], config=config) return area