Exemplo n.º 1
0
	def __init__(self, age):
		self.generate(age)
		self.WorkdayArrival_Avg			= self.WorkdayLeave_Avg + profilegentools.gaussMinMax(7*60, 30)
		if(age < 16):
			self.WorkdayBedTime_Avg		= profilegentools.gaussMinMax((23-(16-age)*0.25)*60, 30) 
			self.WeekendBedTime_Avg		= profilegentools.gaussMinMax((23-(16-age)*0.25)*60, 30) 
		self.WorkdaySport_Avg			= profilegentools.gaussMinMax(19*60, 1*60)
Exemplo n.º 2
0
	def addPV(self, area):
		self.hasPV = True
		self.pvArea = area
		self.pvEfficiency = random.randint(config.PVEfficiencyMin, config.PVEfficiencyMax)
		self.pvAzimuth = profilegentools.gaussMinMax(config.PVAzimuthMean, config.PVAzimuthSigma)
		if(self.pvAzimuth < 0):
			self.pvAzimuth = self.pvAzimuth + 360
		self.pvElevation = profilegentools.gaussMinMax(config.PVAngleMean, config.PVAngleSigma)
Exemplo n.º 3
0
 def __init__(self, age):
     self.generate(age)
     self.generateWorkdays(0)
     self.WeekendWakeUp_Avg = profilegentools.gaussMinMax(8.5 * 60, 1 * 60)
     self.WeekendActivities = 0.7 - (0.03 * (age - 65))
     self.WorkdayBedTime_Avg = profilegentools.gaussMinMax(
         (23 - (age - 65) * 0.15) * 60, 30)
     self.WeekendBedTime_Avg = profilegentools.gaussMinMax(
         (23 - (age - 65) * 0.15) * 60, 30)
Exemplo n.º 4
0
 def __init__(self, age):
     self.generate(age)
     self.WorkdayArrival_Avg = self.WorkdayLeave_Avg + profilegentools.gaussMinMax(
         7 * 60, 30)
     if (age < 16):
         self.WorkdayBedTime_Avg = profilegentools.gaussMinMax(
             (23 - (16 - age) * 0.25) * 60, 30)
         self.WeekendBedTime_Avg = profilegentools.gaussMinMax(
             (23 - (16 - age) * 0.25) * 60, 30)
     self.WorkdaySport_Avg = profilegentools.gaussMinMax(19 * 60, 1 * 60)
Exemplo n.º 5
0
    def generate(self, consumption):
        self.Runtime = profilegentools.gaussMinMax(15, 5)
        self.Offtime = profilegentools.gaussMinMax(40, 10)
        self.Consumption = consumption
        self.State = 0

        self.RuntimeCycle = self.Runtime
        self.OfftimeCycle = self.Offtime
        self.CycleProgress = random.randint(0, self.Runtime + self.Offtime)
        if (self.CycleProgress < (self.Runtime + self.Offtime)):
            self.State = 1
Exemplo n.º 6
0
 def addPV(self, area):
     self.hasPV = True
     self.pvArea = area
     self.pvEfficiency = random.randint(config.PVEfficiencyMin,
                                        config.PVEfficiencyMax)
     self.pvAzimuth = profilegentools.gaussMinMax(config.PVAzimuthMean,
                                                  config.PVAzimuthSigma)
     if (self.pvAzimuth < 0):
         self.pvAzimuth = self.pvAzimuth + 360
     self.pvElevation = profilegentools.gaussMinMax(config.PVAngleMean,
                                                    config.PVAngleSigma)
Exemplo n.º 7
0
	def __init__(self, age):
		self.generate(age)
		self.generateWorkdays(0)
		self.WeekendWakeUp_Avg 			= profilegentools.gaussMinMax(8.5*60, 1*60)
		self.WeekendActivities 			= 0.7 - (0.03*(age-65))
		self.WorkdayBedTime_Avg			= profilegentools.gaussMinMax((23-(age-65)*0.15)*60, 30) 
		self.WeekendBedTime_Avg			= profilegentools.gaussMinMax((23-(age-65)*0.15)*60, 30) 
		
		
		
		
Exemplo n.º 8
0
	def generate(self, consumption):
		self.Runtime = profilegentools.gaussMinMax(15, 5)
		self.Offtime = profilegentools.gaussMinMax(40, 10)
		self.Consumption = consumption
		self.State = 0
		
		self.RuntimeCycle = self.Runtime
		self.OfftimeCycle = self.Offtime
		self.CycleProgress = random.randint(0,self.Runtime+self.Offtime)
		if(self.CycleProgress < (self.Runtime+self.Offtime)):
			self.State = 1
Exemplo n.º 9
0
    def __init__(self):
        self.generate()
        self.ConsumptionYearly = profilegentools.gaussMinMax(
            2010, 400
        ) * config.consumptionFactor  #kWh http://www.nibud.nl/uitgaven/huishouden/gas-elektriciteit-en-water.html

        age = random.triangular(65, 85, 70)
        self.Persons = [persons.PersonRetired(age)]

        if (random.randint(1, 2) == 1):
            self.Fridges = [
                devices.DeviceFridge(
                    random.randint(config.ConsumptionFridgeBigMin,
                                   config.ConsumptionFridgeBigMax))
            ]
        else:
            self.Fridges = [
                devices.DeviceFridge(
                    random.randint(config.ConsumptionFridgeSmallMin,
                                   config.ConsumptionFridgeSmallMax)),
                devices.DeviceFridge(
                    random.randint(config.ConsumptionFridgeSmallMin,
                                   config.ConsumptionFridgeSmallMax))
            ]

        self.hasDishwasher = random.randint(0, 5) < 3  #40%

        #Determine washing days
        self.generateWashingdays(random.randint(2, 3))

        #Dermine Dishwasher times
        if self.hasDishwasher:
            self.generateDishwashdays(3)
Exemplo n.º 10
0
    def __init__(self, parttime=False, jobless=False):
        self.generate()
        numKids = round(
            max(min(4, random.gauss(1.7, 0.4)), 1)
        )  # http://www.cbs.nl/nl-NL/menu/themas/bevolking/faq/specifiek/faq-hoeveel-kinderen.htm

        self.ConsumptionYearly = profilegentools.gaussMinMax(
            2010 + (700 * numKids), 500 + (numKids * 100)
        ) * config.consumptionFactor  #kWh http://www.nibud.nl/uitgaven/huishouden/gas-elektriciteit-en-water.html

        ageParents = random.randint(40, 55)
        if parttime == True:
            self.Persons = [
                persons.PersonWorker(ageParents),
                persons.PersonParttimeWorker(ageParents)
            ]
        elif jobless == True:
            self.Persons = [
                persons.PersonWorker(ageParents),
                persons.PersonJobless(ageParents)
            ]
        else:
            self.Persons = [persons.PersonWorker(ageParents)]
            self.Persons.append(
                copy.deepcopy(self.Persons[0])
            )  #Make a copy, we expect a household to be rather synchronized!

        #To make life easy, only one persons.Person will use the electric vehicle, so only the main persons.Person will receive a driving distance
        self.Persons[0].setDistanceToWork(
            round(
                max(
                    0,
                    random.gauss(config.commuteDistanceMean,
                                 config.commuteDistanceSigma))))

        #now add the kids
        for i in range(0, numKids):
            self.Persons.append(
                persons.PersonStudent(
                    random.randint(ageParents - 3, ageParents + 3) - 30))

        self.Fridges = [
            devices.DeviceFridge(
                random.randint(config.ConsumptionFridgeSmallMin,
                               config.ConsumptionFridgeSmallMax)),
            devices.DeviceFridge(
                random.randint(config.ConsumptionFridgeSmallMin,
                               config.ConsumptionFridgeSmallMax))
        ]

        self.hasDishwasher = random.randint(0, 5) < 4  #60%

        #Determine washing days
        self.generateWashingdays(min(5 + numKids, 7))

        #Dermine Dishwasher times
        if self.hasDishwasher:
            self.generateDishwashdays(min(5 + numKids, 7))
Exemplo n.º 11
0
    def __init__(self, parttime=False, jobless=False):
        self.generate()
        self.ConsumptionYearly = profilegentools.gaussMinMax(
            3360, 700
        ) * config.consumptionFactor  #kWh http://www.nibud.nl/uitgaven/huishouden/gas-elektriciteit-en-water.html

        assert (parttime == False
                or jobless == False)  # ONLY one van be active

        age = random.randint(26, 65)
        if parttime == True:
            self.Persons = [
                persons.PersonWorker(age),
                persons.PersonParttimeWorker(age)
            ]
        elif jobless == True:
            self.Persons = [
                persons.PersonWorker(age),
                persons.PersonJobless(age)
            ]
        else:
            self.Persons = [
                persons.PersonWorker(age),
                persons.PersonWorker(age)
            ]

        #To make life easy, only one persons.Person will use the electric vehicle, so only the main persons.Person will receive a driving distance
        self.Persons[0].setDistanceToWork(
            round(
                max(
                    0,
                    random.gauss(config.commuteDistanceMean,
                                 config.commuteDistanceSigma))))

        if (random.randint(1, 2) == 1):
            self.Fridges = [
                devices.DeviceFridge(
                    random.randint(config.ConsumptionFridgeBigMin,
                                   config.ConsumptionFridgeBigMax))
            ]
        else:
            self.Fridges = [
                devices.DeviceFridge(
                    random.randint(config.ConsumptionFridgeSmallMin,
                                   config.ConsumptionFridgeSmallMax)),
                devices.DeviceFridge(
                    random.randint(config.ConsumptionFridgeSmallMin,
                                   config.ConsumptionFridgeSmallMax))
            ]

        self.hasDishwasher = random.randint(0, 5) < 2  #40%

        #Determine washing days
        self.generateWashingdays(random.randint(3, 4))

        #Dermine Dishwasher times
        if self.hasDishwasher:
            self.generateDishwashdays(3)
Exemplo n.º 12
0
    def __init__(self):
        self.generate()
        self.ConsumptionYearly = profilegentools.gaussMinMax(
            2010, 400
        ) * config.consumptionFactor  #kWh http://www.nibud.nl/uitgaven/huishouden/gas-elektriciteit-en-water.html

        self.Persons = [persons.PersonWorker(random.randint(26, 65))]

        #For information about commuters, see this:
        #http://www.kimnet.nl/publicatie/mobiliteitsbalans-2013
        #Approx 50% uses the car to commute, which is our interrest as this part can be replaced by (PH)EV
        #http://www.cbs.nl/NR/rdonlyres/13516DAC-36E1-47B7-9918-2364EF7D0B48/0/2011k2v4p34art.pdf
        #3 out of 5 working people don't work in town. Fair to assume that these people commute by car
        #Average commute distance is not too clear from multiple sources, such as the once above. Something around 20km seems to be average in most sources
        #However 30 is also mentioned: http://www.nederlandheeftwerk.nl/index.php/cms_categorie/58707/bb/1/id/58707
        #Depends also on the region and work in vicinity.

        self.Persons[0].setDistanceToWork(
            round(
                max(
                    0,
                    random.gauss(config.commuteDistanceMean,
                                 config.commuteDistanceSigma))))

        if (random.randint(1, 2) == 1):
            self.Fridges = [
                devices.DeviceFridge(
                    random.randint(config.ConsumptionFridgeBigMin,
                                   config.ConsumptionFridgeBigMax))
            ]
        else:
            self.Fridges = [
                devices.DeviceFridge(
                    random.randint(config.ConsumptionFridgeSmallMin,
                                   config.ConsumptionFridgeSmallMax)),
                devices.DeviceFridge(
                    random.randint(config.ConsumptionFridgeSmallMin,
                                   config.ConsumptionFridgeSmallMax))
            ]

        #We synchronize the dishwasher and dryer based on the annual consumption. Furthermore, this also influences the number of washes.
        self.hasDishwasher = random.randint(0, 5) == 0  #20%

        #Determine washing days
        self.generateWashingdays(random.randint(2, 3))

        #Dermine Dishwasher times
        if self.hasDishwasher:
            self.generateDishwashdays(3)
Exemplo n.º 13
0
    def __init__(self):
        self.generate()
        self.ConsumptionYearly = profilegentools.gaussMinMax(
            2010, 400
        ) * config.consumptionFactor  #kWh http://www.nibud.nl/uitgaven/huishouden/gas-elektriciteit-en-water.html

        age = random.triangular(65, 85, 70)
        self.Persons = [persons.PersonRetired(age)]

        #To make life easy, only one persons.Person will use the electric vehicle, so only the main persons.Person will receive a driving distance
        self.Persons[0].setDistanceToWork(
            round(
                max(
                    0,
                    random.gauss(config.commuteDistanceMean,
                                 config.commuteDistanceSigma))))

        if (random.randint(1, 2) == 1):
            self.Fridges = [
                devices.DeviceFridge(
                    random.randint(config.ConsumptionFridgeBigMin,
                                   config.ConsumptionFridgeBigMax))
            ]
        else:
            self.Fridges = [
                devices.DeviceFridge(
                    random.randint(config.ConsumptionFridgeSmallMin,
                                   config.ConsumptionFridgeSmallMax)),
                devices.DeviceFridge(
                    random.randint(config.ConsumptionFridgeSmallMin,
                                   config.ConsumptionFridgeSmallMax))
            ]

        self.hasDishwasher = random.randint(0, 5) < 3  #40%

        #Determine washing days
        self.generateWashingdays(random.randint(2, 3))

        #Dermine Dishwasher times
        if self.hasDishwasher:
            self.generateDishwashdays(3)
Exemplo n.º 14
0
	def generate(self, age):	
		#Variates could also use a gauss distribution, some persons are more predictable than others ;)
		self.Age = age
		
		self.WorkdayWakeUp_Avg				= profilegentools.gaussMinMax(7*60, 1.5*60)
		self.WorkdayWakeUp_Variate 			= 10
		self.WorkdayLeave_Avg				= self.WorkdayWakeUp_Avg + profilegentools.gaussMinMax(45, 15)
		self.WorkdayLeave_Variate 			= 10
		self.WorkdayArrival_Avg				= self.WorkdayLeave_Avg + profilegentools.gaussMinMax(8.5*60, 30) 
		self.WorkdayArrival_Variate			= 15
		self.WorkdaySport_Avg				= self.WorkdayArrival_Avg + profilegentools.gaussMinMax(2.5*60, 2*60)
		self.WorkdaySport_Variate			= 15
		self.WorkdaySportDuration_Avg		= profilegentools.gaussMinMax(1.5*60, 30)
		self.WorkdaySportDuration_Variate 	= 10
		self.WorkdayBedTime_Avg				= self.WorkdayWakeUp_Avg + profilegentools.gaussMinMax(15.5*60,30) 
		self.WorkdayBedTime_Variate			= 15
		self.WorkdayActivities 				= random.randint(config.personWeekdayActivityChanceMin, config.personWeekdayActivityChanceMax) / 100 #Chance to conduct random activities			
		
		self.WeekendWakeUp_Avg 				= profilegentools.gaussMinMax(9*60, 2*60)
		self.WeekendWakeUp_Variate 			= 20
		self.WeekendSport_Avg				= profilegentools.gaussMinMax(14*60, 5*60)
		self.WeekendSport_Variate			= 60
		self.WeekendSportDuration_Avg		= profilegentools.gaussMinMax(1.5*60, 30)
		self.WeekendSportDuration_Variate 	= 30
		self.WeekendBedTime_Avg				= profilegentools.gaussMinMax(23*60, 30) 
		self.WeekendBedTime_Variate			= 10
		self.WeekendActivities				= random.randint(config.personWeekendActivityChanceMin, config.personWeekendActivityChanceMax) / 100

		#For a new deepcopy, the following values should be regenerated
		self.WorkdaySportday = 1 + random.randint(1,5)
		self.WeekendSportday = 6*random.randint(0,1)
		self.Workdays = range(1,6)
		self.DistanceToWork  = 0
			
		
		self.CookingTime = self.WorkdayArrival_Avg + 30

		self.showerMorning = True
		self.showerDays = list(range(0, 7))
		self.showerDuration = profilegentools.gaussMinMax(8, 3)

		# Generate Heat parameters
		self.generateHeatParams()
Exemplo n.º 15
0
    def generate(self, age):
        #Variates could also use a gauss distribution, some persons are more predictable than others ;)
        self.Age = age

        self.WorkdayWakeUp_Avg = profilegentools.gaussMinMax(7 * 60, 1.5 * 60)
        self.WorkdayWakeUp_Variate = 10
        self.WorkdayLeave_Avg = self.WorkdayWakeUp_Avg + profilegentools.gaussMinMax(
            45, 15)
        self.WorkdayLeave_Variate = 10
        self.WorkdayArrival_Avg = self.WorkdayLeave_Avg + profilegentools.gaussMinMax(
            8.5 * 60, 30)
        self.WorkdayArrival_Variate = 15
        self.WorkdaySport_Avg = self.WorkdayArrival_Avg + profilegentools.gaussMinMax(
            2.5 * 60, 2 * 60)
        self.WorkdaySport_Variate = 15
        self.WorkdaySportDuration_Avg = profilegentools.gaussMinMax(
            1.5 * 60, 30)
        self.WorkdaySportDuration_Variate = 10
        self.WorkdayBedTime_Avg = self.WorkdayWakeUp_Avg + profilegentools.gaussMinMax(
            15.5 * 60, 30)
        self.WorkdayBedTime_Variate = 15
        self.WorkdayActivities = random.randint(
            config.personWeekdayActivityChanceMin,
            config.personWeekdayActivityChanceMax
        ) / 100  #Chance to conduct random activities

        self.WeekendWakeUp_Avg = profilegentools.gaussMinMax(9 * 60, 2 * 60)
        self.WeekendWakeUp_Variate = 20
        self.WeekendSport_Avg = profilegentools.gaussMinMax(14 * 60, 5 * 60)
        self.WeekendSport_Variate = 60
        self.WeekendSportDuration_Avg = profilegentools.gaussMinMax(
            1.5 * 60, 30)
        self.WeekendSportDuration_Variate = 30
        self.WeekendBedTime_Avg = profilegentools.gaussMinMax(23 * 60, 30)
        self.WeekendBedTime_Variate = 10
        self.WeekendActivities = random.randint(
            config.personWeekendActivityChanceMin,
            config.personWeekendActivityChanceMax) / 100

        #For a new deepcopy, the following values should be regenerated
        self.WorkdaySportday = 1 + random.randint(1, 5)
        self.WeekendSportday = 6 * random.randint(0, 1)
        self.Workdays = range(1, 6)
        self.DistanceToWork = 0

        self.CookingTime = self.WorkdayArrival_Avg + 30

        self.showerMorning = True
        self.showerDays = list(range(0, 7))
        self.showerDuration = profilegentools.gaussMinMax(8, 3)

        # Generate Heat parameters
        self.generateHeatParams()
Exemplo n.º 16
0
    def generate(self):
        #The Yearly consumption is the normal consumption of domestic appliances as found for years in households. This excludes:
        #																										   (PH)EV, Heat Pump, PV
        self.ConsumptionYearly = profilegentools.gaussMinMax(3500, 500)  #kWh

        #According to http://www.energie-nederland.nl/wp-content/uploads/2013/04/EnergieTrends2014.pdf, this is the distribution for devices we are interested in:
        self.ConsumptionShare = { "Electronics" : profilegentools.gaussMinMax(17,3), \
               "Lighting"  : profilegentools.gaussMinMax(6,2), \
               "Standby"  : profilegentools.gaussMinMax(35,6) }

        self.Persons = []

        self.Consumption  = {  "Total"   : [], \
               "Other"   : [], \
               "Inductive"  : [], \
               "Fridges"  : [], \
               "Electronics" : [], \
               "Lighting"  : [], \
               "Standby"  : [] }

        self.consumptionFactor = { "Other"   : [], \
               "Inductive"  : [], \
               "Fridges"  : [], \
               "Electronics" : [], \
               "Lighting"  : [], \
               "Standby"  : [] }

        self.HeatGain = {   "PersonGain" : [], \
               "DeviceGain" : [], \
               "SolarGain"  : [], \
               "VentFlow"  : [], \
               "Total"   : []}

        self.HeatDemand = {   "DHWDemand"  : [], \
               "Total"   : []}

        # Heat gain factors from devices
        self.HeatGainShare = {  "Other"   : 0.3, \
                  "Fridges"  : 0.5, \
               "Electronics" : 1.0, \
               "Lighting"  : 0.8, \
               "Standby"  : 1.0 }

        self.ReactiveConsumption = {"Total"   : [], \
               "Other"   : [], \
               "Inductive"  : [], \
               "Fridges"  : [], \
               "Electronics" : [], \
               "Lighting"  : [], \
               "Standby"  : [] }

        self.ReactiveFactor = { "Other"   : 1, \
              "Inductive"  : (random.randint(70,90)/100), \
              "Fridges"  : (random.randint(50,65)/100), \
              "Electronics" : -(random.randint(99,100)/100), \
              "Lighting"  : -(random.randint(99,100)/100), \
              "Standby"  : -(random.randint(75,85)/100) }

        self.PVProfile = []

        self.Occupancy = []

        self.hasDishwasher = False
        self.hasInductionCooking = random.randint(1, 10) < 4
        self.hasEV = False
        self.hasHP = False
        self.hasCHP = False
        self.hasFloorHeating = True

        self.numOfWashes = 0  #weekly
        self.numOfDishwashes = 0  #Weekly

        self.WashingDays = []
        self.washingMoment = [-1] * 7
        self.DishwashDays = []
        self.DishwashMoment = [-1] * 7

        #devices
        self.Fridges = []
        self.Devices = {  "Kettle": devices.DeviceKettle(config.ConsumptionKettle),\
             "Lighting": devices.DeviceLighting(),\
             "Electronics": devices.DeviceElectronics(),\
             "Cooking": devices.DeviceCooking(),\
             "Ventilation": devices.DeviceVentilation(config.ConsumptionHouseVentilation),\
             "Ironing": devices.DeviceIroning(config.ConsumptionIron),\
             "Vacuumcleaner": devices.DeviceVacuumcleaner(config.ConsumptionVacuumcleaner),\
             "WashingMachine": devices.DeviceWashingMachine(),\
             "DishwashMachine": devices.DeviceDishwasher(),\
             "ElectricalVehicle": devices.DeviceElectricalVehicle(),\
             "PVPanel" : devices.DeviceSolarPanel()}

        self.HeatingDevices = { "PersonGain": heatdemand.PersonGain(), \
              "Thermostat": heatdemand.Thermostat(), \
              "VentFlow": heatdemand.Ventilation(), \
              "DHWDemand": heatdemand.DHWDemand() }

        self.familyActivites = random.randint(
            config.familyOutingChanceMin, config.familyOutingChanceMax) / 100
Exemplo n.º 17
0
    def generate(self, age):
        self.Age = age
        # --edit-- shift the activity schedule
        self.WorkdayWakeUp_Avg = profilegentools.gaussMinMax(5 * 60, 0.5 * 60)
        self.WorkdayWakeUp_Variate = 10
        self.WorkdayLeave_Avg = self.WorkdayWakeUp_Avg + \
            profilegentools.gaussMinMax(2.5*60, 15)
        self.WorkdayLeave_Variate = 10
        self.WorkdayArrival_Avg = self.WorkdayLeave_Avg + \
            profilegentools.gaussMinMax(8.5*60, 30)
        self.WorkdayArrival_Variate = 15
        self.WorkdaySport_Avg = self.WorkdayArrival_Avg + \
            profilegentools.gaussMinMax(2.5*60, 2*60)
        self.WorkdaySport_Variate = 15
        self.WorkdaySportDuration_Avg = profilegentools.gaussMinMax(
            1.5 * 60, 30)
        self.WorkdaySportDuration_Variate = 10
        self.WorkdayBedTime_Avg = self.WorkdayWakeUp_Avg + \
            profilegentools.gaussMinMax(16*60, 30)
        self.WorkdayBedTime_Variate = 15
        self.WorkdayActivities = random.randint(
            config.personWeekdayActivityChanceMin,
            config.personWeekdayActivityChanceMax
        ) / 100  # Chance to conduct random activities

        self.WeekendWakeUp_Avg = profilegentools.gaussMinMax(8 * 60, 2 * 60)
        self.WeekendWakeUp_Variate = 20
        self.WeekendSport_Avg = profilegentools.gaussMinMax(14 * 60, 5 * 60)
        self.WeekendSport_Variate = 60
        self.WeekendSportDuration_Avg = profilegentools.gaussMinMax(
            1.5 * 60, 30)
        self.WeekendSportDuration_Variate = 30
        self.WeekendBedTime_Avg = profilegentools.gaussMinMax(22 * 60, 30)
        self.WeekendBedTime_Variate = 10
        self.WeekendActivities = random.randint(
            config.personWeekendActivityChanceMin,
            config.personWeekendActivityChanceMax) / 100

        # For a new deepcopy, the following values should be regenerated
        self.WorkdaySportday = 1 + random.randint(1, 5)
        self.WeekendSportday = 6 * random.randint(0, 1)
        self.Workdays = range(1, 6)
        self.DistanceToWork = 0

        self.CookingTime = self.WorkdayArrival_Avg + 30

        self.showerMorning = True
        self.showerDays = list(range(0, 7))
        self.showerDuration = profilegentools.gaussMinMax(8, 3)

        # Generate Heat parameters
        self.generateHeatParams()