Appliances with multiple cycles

An example of an appliance with multiple cycle is fridge. Fridges usually have different duty cycles can be estimated based on seasonal temperature trends.

In this example a fridge with 3 different duty cycles is modelled. The time windows are defined for 3 different cycles for 3 different season types:

season type

Standard cycle

Intermediate cycle

Intensive cycle

Hot

00:00:00 - 04:59:00 & 20:01:00 - 23:59:00

05:00:00 - 07:59:00

08:00:00 - 20:00:00

Warm

00:00:00 - 04:59:00 & 18:01:00 - 23:59:00

05:00:00 - 09:39:00

09:40:00 - 18:00:00

Cold

00:00:00 - 04:59:00 & 20:01:00 - 23:59:00

05:00:00 - 20:00:00

Creating the user and appliance

# importing functions
from ramp import User,calc_peak_time_range,yearly_pattern
import pandas as pd
# creating user
household = User()
# creating the appliance
fridge = household.Appliance(
    name = "Fridge",
    number = 1,
    power  = 200,
    num_windows = 1,
    func_time = 1400,
    time_fraction_random_variability = 0,
    func_cycle = 30,
    fixed = "yes",
    fixed_cycle = 3, # number of cycles
)
# setting the functioning windows
fridge.windows([0,1440]) # always on during the whole year

Assigining the specific cycles

# assiging the specific cycles
# first cycle: standard cycle
fridge.specific_cycle_1(
    p_11 = 200,
    t_11 = 20,
    p_12 = 5,
    t_12 = 10,
)

# second cycle: intermediate cycle
fridge.specific_cycle_2(
    p_21 = 200,
    t_21 = 15,
    p_22 = 5,
    t_22 = 15,
)

# third cycle: intensive cycle
fridge.specific_cycle_3(
    p_31 = 200,
    t_31 = 10,
    p_32 = 5,
    t_32 = 20,
)

After defining the cycle power and duration parameters, the time windows of year at which the cycles happens should be specifid by:

# defining cycle behaviour
fridge.cycle_behaviour(
    cw11 = [480,1200],
    cw21 = [300,479],
    cw31 = [0,229],
    cw32 = [1201,1440]
)

Buidling the profiles

peak_time_range = calc_peak_time_range(
    user_list = [household]
)
year_behaviour = yearly_pattern()
# days to build the profiles
days = {
    "May-16": 136,
    "August-16": 228,
    "December-16": 350,
}

profiles = pd.DataFrame(index=range(0,1440),columns = days.keys())

for day,i in days.items():
    profile = household.generate_single_load_profile(
        prof_i = i, # the day to generate the profile
        peak_time_range = peak_time_range,
        Year_behaviour = year_behaviour
    )

    profiles[day] = profile
print(profiles)
      May-16  August-16  December-16
0      0.001      0.001        0.001
1      0.001      0.001        0.001
2      0.001      5.000        0.001
3      0.001      5.000        0.001
4      0.001      5.000        0.001
...      ...        ...          ...
1435   5.000      5.000      200.000
1436   5.000    200.000      200.000
1437   5.000    200.000      200.000
1438   5.000    200.000      200.000
1439   5.000    200.000      200.000

[1440 rows x 3 columns]
# plotting a part of the days
profiles.iloc[400:500].plot()
<AxesSubplot:>
../../_images/output_15_1.png