Using excel to build a model

In some cases in which the number of users or appliances are high, it can be difficult to create a model using python scripts. In RAMP, there is the possibility to create inputs using excel. In this example we show a use case of this functionality.

from ramp import User, Appliance, UseCase
from ramp import calc_peak_time_range,yearly_pattern
import pandas as pd

At the first step, user needs to creat User classes and assign Appliances to the user class without assiging detaild appliance characteristics

Buidling a model database

# Defining a dict of users with their appliances

user_app = {
    "household" : ["light","tv"],
    "school": ["light","computer"]
}
# creating a UseCase class to create the database
use_case = UseCase()
# assinging the appliances to users
for user,apps in user_app.items():

    user_instance = User(user_name = user)

    for app in apps:
        app_instance = user_instance.add_appliance(name=app)
        app_instance.windows()

    use_case.add_user(user_instance)
/Users/mohammadamintahavori/Documents/GitHub/RAMP/ramp/core/core.py:738: UserWarning: No windows is declared, default window of 24 hours is selected
  warnings.warn(UserWarning("No windows is declared, default window of 24 hours is selected"))

Once the users and appliacnes are added to the use_case instance, the user can get a pd.DataFrame or an excel file of all the data with the default values:

Exporting the database

# getting the dataframe
use_case.export_to_dataframe()
user_name num_users user_preference name number power num_windows func_time time_fraction_random_variability func_cycle ... cw32_start cw32_end r_c3 window_1_start window_1_end window_2_start window_2_end window_3_start window_3_end random_var_w
0 household 1 0 light 1 0.0 1 0 0 1 ... 0 0 0 0 1440 0 0 0 0 0
1 household 1 0 tv 1 0.0 1 0 0 1 ... 0 0 0 0 1440 0 0 0 0 0
2 school 1 0 light 1 0.0 1 0 0 1 ... 0 0 0 0 1440 0 0 0 0 0
3 school 1 0 computer 1 0.0 1 0 0 1 ... 0 0 0 0 1440 0 0 0 0 0

4 rows × 51 columns

# Printing out the database to an excel file
use_case.save("path/name_of_file")

Once the function is used, an excel file will be created in the given path:

excel file image

excel file image

Now the user can easily fill-out the information in the excel file and load the data into the model database as follow:

Loading the database

# loading data

use_case = UseCase() # creating a new UseCase instance
use_case.load("path/name_of_file.xlsx")

Generating load profiles

Once the database is loaded, the user can continue with the normal analysis like generating aggregated profiles

peak_time_range = calc_peak_time_range(
    user_list = use_case.users
)

year_behaviour = yearly_pattern()
n_days = 30



for user in use_case.users:
    user_profiles = []
    for day in range(n_days):
        profile = user.generate_aggregated_load_profile(
                        prof_i = day,
                        peak_time_range = peak_time_range,
                        Year_behaviour = year_behaviour
                    )

        user_profiles.extend(profile)

    profiles = pd.DataFrame(
        data = user_profiles,
        index = pd.date_range(start = "2020-01-01",periods = 1440*n_days,freq="T"),
    )

    profiles.plot(title = user.user_name)
../../_images/output_17_0.png ../../_images/output_17_1.png