Пример #1
0
    def __init__(
            self,
            n_households: int, data='Germany',
            initial_active_occupancy: np.ndarray = None,
            initial_irradiance: float = None,
            **kwargs,
        ) -> None:
        """Initialize a Fisher lighting simulator.

        Args:
            n_households:
            data: Defaults to 'Germany'.
            initial_active_occupancy: Defaults to None.
            initial_irradiance: Defaults to None.
        """
        if data == 'Germany':
            from demod.datasets.Germany.loader import GermanDataHerus
            data = GermanDataHerus()
        super().__init__(n_households, **kwargs)

        lighting_dict = data.load_fisher_lighting()

        self.global_irradiation_min_switch = lighting_dict[
            'irradiation_threshold_min'
        ]
        self.global_irradiation_max_switch = lighting_dict[
            'irradiation_threshold_max'
        ]
        self.individual_light_use = lighting_dict[
            'individual_light_use'
        ]

        self.initialize_starting_state(
            initial_active_occupancy,
            initial_irradiance
        )
Пример #2
0
import numpy as np

sys.path.insert(1, os.path.join(sys.path[0], '..'))

from demod.utils.plotters import FIGSIZE, plot_household_activities
from demod.utils.appliances import merge_appliance_dict
from demod.simulators.util import sample_population
from demod.simulators.appliance_simulators import ActivityApplianceSimulator, ProbabiliticActivityAppliancesSimulator, OccupancyApplianceSimulator
from demod.simulators.base_simulators import SimLogger
from demod.datasets.Germany.loader import GermanDataHerus
from demod.simulators.activity_simulators import SubgroupsIndividualsActivitySimulator, SemiMarkovSimulator, MarkovChain1rstOrder

# %%
n_households = 5

data = GermanDataHerus(version='vBottaccioli')

hh_subgroups, probs, _ = data.load_population_subgroups()

n_hh_list = sample_population(n_households, probs)

sim = SubgroupsIndividualsActivitySimulator(hh_subgroups,
                                            n_hh_list,
                                            logger=SimLogger(
                                                'get_activity_states',
                                                'current_time',
                                                aggregated=False),
                                            subsimulator=SemiMarkovSimulator,
                                            data=data,
                                            use_week_ends_days=True)
Пример #3
0
 def test_german_data(self):
     data = GermanDataHerus()
     app_dic = data.load_appliance_dict()
Пример #4
0
 def test_sampling_algo(self):
     self.kwargs['bulbs_sampling_algo'] = 'randn'
     self.kwargs['data'] = GermanDataHerus()
     self.run_base_tests()
     self.kwargs.pop('bulbs_sampling_algo')
     self.kwargs.pop('data')
Пример #5
0
 def test_german_data(self):
     data = GermanDataHerus()
     light_dic = data.load_crest_lighting()
     bulbs = data.load_bulbs()
     print(data.load_installed_bulbs_stats())
Пример #6
0
 def test_german_data_herus(self):
     data = GermanDataHerus()
     data.load_buildings_dict()
     data.load_heating_system_dict()
     data.load_thermostat_dict()
Пример #7
0
from demod.simulators.base_simulators import SimLogger
from demod.datasets.GermanTOU.loader import GTOU
from demod.datasets.OpenPowerSystems.loader import OpenPowerSystemClimate
from demod.datasets.Germany.loader import GermanDataHerus

from demod.simulators.sparse_simulators import SparseTransitStatesSimulator
from demod.simulators.weather_simulators import RealClimate
from demod.simulators.lighting_simulators import CrestLightingSimulator
from demod.simulators.heating_simulators import FiveModulesHeatingSimulator
from demod.simulators.appliance_simulators import SubgroupApplianceSimulator
from demod.simulators.weather_simulators import RealInterpolatedClimate

#%% INITIALIZATION

# Inputs
data = GermanDataHerus(version='v0.1')
time_ = datetime.datetime(2018, 1, 1, 0, 0, 0)  # starting time of simulation
days = 3  # number of days to be simulated
n_households = 1  # number of households to be simulated
subgroup = {
    'n_residents': 5,
    'household_type': 4,
}  # n° residents should be consisten with the household type
# Here the available household types:
# 1 = One person household
# 2 = Couple without kids
# 3 = Single Parent with at least one kid under 18 and the other under 27
# 4 = Couple with at least one kid under 18 and the other under 27
# 5 = Others

# Occupancy
Пример #8
0
sys.path.insert(1, os.path.join(sys.path[0], '..'))


from demod.utils.plotters import FIGSIZE
from demod.utils.appliances import merge_appliance_dict
from demod.simulators.util import sample_population
from demod.simulators.appliance_simulators import ActivityApplianceSimulator, ProbabiliticActivityAppliancesSimulator, OccupancyApplianceSimulator
from demod.simulators.base_simulators import SimLogger
from demod.datasets.Germany.loader import GermanDataHerus
from demod.simulators.activity_simulators import SubgroupsIndividualsActivitySimulator, SemiMarkovSimulator, MarkovChain1rstOrder

# %%
n_households = 2000

data = GermanDataHerus(version='vBottaccioli')

hh_subgroups, probs, _ = data.load_population_subgroups()


n_hh_list = sample_population(n_households, probs)

sim = SubgroupsIndividualsActivitySimulator(
    hh_subgroups,
    n_hh_list,
    logger=SimLogger('get_activity_states', 'current_time'),
    subsimulator=SemiMarkovSimulator,
    data=data,
    use_week_ends_days=True
)
# Simulates appliances using the CREST method
Пример #9
0
    def __init__(self,
                 n_households,
                 start_datetime=datetime.datetime(2014, 1, 1, 4, 0, 0),
                 include_heating=True,
                 include_climate=True,
                 initial_outside_temperature=5.0,
                 data=GermanDataHerus(),
                 **kwargs):

        super().__init__(n_households=n_households,
                         start_datetime=start_datetime,
                         **kwargs)

        # sample the population
        subgroups, pdf, _ = data.load_population_subgroups()
        counts = sample_population(self.n_households, pdf)

        # initialize all simulators in the correct order
        with warnings.catch_warnings():
            warnings.filterwarnings("ignore")
            self.activity_simulator = _instantiate_activity_simulator(
                data,
                subgroups,
                counts,
                start_datetime,
            )

        active_occupancy = self.activity_simulator.get_active_occupancy()

        self.appliance_simulator = OccupancyApplianceSimulator(
            subgroups,
            counts,
            initial_active_occupancy=active_occupancy,
            start_datetime=start_datetime,
            data=data)

        if include_climate:
            with warnings.catch_warnings():
                warnings.filterwarnings("ignore")
                self.climate = _instantiate_climate(
                    data,
                    start_datetime,
                    self.step_size,
                )
            initial_outside_temperature = (
                self.climate.get_outside_temperature())
        else:
            self.climate = None
        self.include_climate = include_climate

        self.light_sim = CrestLightingSimulator(self.n_households,
                                                data=data,
                                                bulbs_sampling_algo='randn')

        if include_heating:
            self.heating = FiveModulesHeatingSimulator(
                self.n_households,
                initial_outside_temperature,
                data=data,
            )
        self.include_heating = include_heating

        super().initialize_starting_state(initialization_time=start_datetime)
Пример #10
0
 def test_with_herus_data(self):
     data = GermanDataHerus()
     data.load_historical_climate_data(datetime.datetime(2014, 1, 1))