コード例 #1
0
ファイル: test_util.py プロジェクト: epfl-herus/demod
 def test_output_size(self):
     out = sample_population(1, self.test_pdf, self.algo)
     self.assertEqual(len(out), len(self.test_pdf))
     out3 = sample_population(10, self.test_pdf, self.algo)
     self.assertEqual(len(out3), len(self.test_pdf))
     out2 = sample_population(10, np.array([0.2, 0.8]), self.algo)
     self.assertEqual(len(out2), 2)
     out1 = sample_population(10, np.array([1]), self.algo)
     self.assertEqual(len(out1), 1)
コード例 #2
0
ファイル: test_util.py プロジェクト: epfl-herus/demod
 def test_numbers(self):
     out = sample_population(1, self.test_pdf, self.algo)
     print(out)
     self.assertEqual(sum(out), 1)
     out = sample_population(10, self.test_pdf, self.algo)
     print(out)
     self.assertEqual(sum(out), 10)
     out = sample_population(10, np.array([1]))
     print(out)
     self.assertEqual(sum(out), 10)
コード例 #3
0
ファイル: test_util.py プロジェクト: epfl-herus/demod
    def test_real_population_values(self):
        """Test only the real population algo for ensuring correct values"""
        out = sample_population(10, self.test_pdf, 'real_population')
        self.assertTrue(np.all(np.array([2, 5, 3]) == out))

        out = sample_population(10, np.array([1]), 'real_population')
        self.assertTrue(np.all(np.array([10]) == out))

        # check cases with small numbers
        out = sample_population(1, np.array([0.3, 0.7]), 'real_population')
        self.assertTrue(np.all(np.array([1, 0]) == out))
        out = sample_population(2, np.array([0.3, 0.7]), 'real_population')
        self.assertTrue(np.all(np.array([1, 1]) == out))
        out = sample_population(2, np.array([0.5, 0.5]), 'real_population')
        self.assertTrue(np.all(np.array([1, 1]) == out))
コード例 #4
0
ファイル: bottaccioli.py プロジェクト: epfl-herus/demod
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)

sim_app = ActivityApplianceSimulator(
    n_households,
    initial_activities_dict=sim.get_activity_states(),
    data=data,
コード例 #5
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)