# Initialize seed
from emobpy.tools import set_seed
set_seed()
from emobpy import Mobility
m = Mobility(config_folder='config_files')
m.set_params(
name_prefix="BEV1",
total_hours=168, # one week
time_step_in_hrs=0.25, # 15 minutes
category="user_defined",
reference_date="01/01/2020"
)
m.set_stats(
stat_ntrip_path="TripsPerDay.csv",
stat_dest_path="DepartureDestinationTrip.csv",
stat_km_duration_path="DistanceDurationTrip.csv",
)
m.set_rules(rule_key="user_defined") # see /config_files/rules.yml, it contains a dictionary
# whose key must be the same as rule_key.
# To see all possible rules `from emobpy.constants import RULE; RULE`
m.run()
New profile running: BEV1_W2_fd3ea Progress: 100% [7 / 7] days Profile done: BEV1_W2_fd3ea Elapsed time (min): 0.07
m.save_profile(folder="db", description='168 hrs 15 min step ref-date 01/01/2020')
=== profile saved: db/BEV1_W2_fd3ea.pickle
b) See some attributes
m.name
'BEV1_W2_fd3ea'
m.kind
'driving'
m.description
'168 hrs 15 min step ref-date 01/01/2020'
m.timeseries
hh | state | distance | |
---|---|---|---|
date | |||
2020-01-01 00:00:00 | 0.0 | home | 0.0 |
2020-01-01 00:15:00 | 0.25 | home | 0.0 |
2020-01-01 00:30:00 | 0.5 | home | 0.0 |
2020-01-01 00:45:00 | 0.75 | home | 0.0 |
2020-01-01 01:00:00 | 1.0 | home | 0.0 |
... | ... | ... | ... |
2020-01-07 22:45:00 | 166.75 | home | 0.0 |
2020-01-07 23:00:00 | 167.0 | home | 0.0 |
2020-01-07 23:15:00 | 167.25 | home | 0.0 |
2020-01-07 23:30:00 | 167.5 | home | 0.0 |
2020-01-07 23:45:00 | 167.75 | home | 0.0 |
672 rows × 3 columns
m.profile.head()
hr | state | departure | arrival | last_arrival | purpose | duration | weekday | category | distance | trip_duration | |
---|---|---|---|---|---|---|---|---|---|---|---|
35.50 | 35.50 | home | 11.75 | 12.25 | -27.00 | shopping | 38.75 | Thursday | user_defined | 0.0 | 0.0 |
36.00 | 36.00 | driving | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 6.0 | 16.0 |
44.75 | 44.75 | shopping | 21.00 | 21.25 | 12.25 | home | 8.75 | Thursday | user_defined | 0.0 | 0.0 |
45.00 | 45.00 | driving | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2.0 | 15.0 |
57.25 | 57.25 | home | 9.50 | 9.75 | -2.75 | shopping | 12.25 | Friday | user_defined | 0.0 | 0.0 |
c) Profiles management
from emobpy import DataBase
DB = DataBase('db')
DB.loadfiles()
DB.db.keys()
dict_keys(['BEV1_W2_fd3ea'])
DB.db[m.name]['user_rules']
{'weekday': {'n_trip_out': [1], 'last_trip_to': {'home': True}, 'overall_min_time_at': {'home': 9}, 'min_state_duration': {'home': 0.25, 'errands': 0.25, 'escort': 0.25, 'shopping': 0.25, 'leisure': 0.25}}, 'weekend': {'n_trip_out': [1], 'last_trip_to': {'home': True}, 'overall_min_time_at': {'home': 6}, 'min_state_duration': {'home': 0.25, 'errands': 0.25, 'escort': 0.25, 'shopping': 0.25, 'leisure': 0.25}}}
DB.db[m.name]['kind']
'driving'
d) Visualization
from emobpy.plot import NBplot
PLT = NBplot(DB)
fig_mobility = PLT.sgplot_dp(m.name)
fig_mobility
from emobpy import Consumption, HeatInsulation, BEVspecs
DB.update() # This load new files hosted in database folder as result of new generated files
# mname = list(DB.db.keys())[0] # getting the id of the first mobility profile
mname = m.name
HI = HeatInsulation(True) # Creating the heat insulation by copying the default configuration
BEVS = BEVspecs() # Database that contains BEV models
BEVS.show_models()
Audi e-tron 55 quattro 2019 2020 e-tron 55 quattro Premium Plus 2019 e-tron 55 quattro Prestige 2019 e-tron Sportback 50 quattro 2020 e-tron Sportback 55 quattro 2020 BMW i3 22 kWh 2014 2015 2016 i3 33 kWh 2017 2018 i3 42 kWh 2019 i3s 33 kWh 2018 i3s 42 kWh 2019 i3s Edition RoadStyle 42 kWh 2020 Chevrolet Bolt EV 2017 2018 2019 2020 Spark EV 2014 2015 2016 FIAT 500e 2013 2016 2019 Hyundai IONIQ Electric 28 kWh 2019 IONIQ Electric 38.3 kWh 2020 KONA Electric 64 kWh 2019 Jaguar I-Pace 2019 I-Pace S EV400 AWD Automatic 2020 KIA Soul EV 2015 2016 2017 2018 2019 Soul EV 39 kWh 2020 Soul EV 64 kWh 2020 e-Niro 39 kWh 2019 e-Niro 4 2020 e-Niro 64 kWh 2019 MINI Cooper SE Level I 2020 Cooper SE Level II 2020 Cooper SE Level III 2020 Nissan Leaf S 2013 2014 2015 2016 2017 2018 2019 Leaf S Plus 2019 Leaf SL 2011 2012 2013 2014 2015 2016 2017 2018 2019 Leaf SL Plus 2019 Leaf SV 2011 2012 2013 2014 2015 2016 2017 2018 2019 Leaf SV Plus 2019 Renault Zoe Q210 2013 Zoe Q90 2017 2019 Tesla Model 3 Long Range AWD 2018 2019 2020 Model 3 Long Range RWD 2017 2018 2019 Model 3 Mid Range RWD 2018 2019 Model 3 Performance AWD 2018 2019 2020 Model 3 Standard Range Plus RWD 2019 2020 Model 3 Standard Range RWD 2019 Model S 100D 2017 2018 Model S 60 RWD 2014 2015 Model S 60 RWD Gen 2 2016 2017 Model S 60D 2016 2017 Model S 70 RWD 2015 2016 Model S 70D 2016 Model S 70D 140kW+140kW 2015 Model S 70D 193kW+193kW 2015 Model S 75 RWD 2016 2017 Model S 75D 2016 2017 2018 Model S 85 RWD 2014 2015 Model S 85D 140kW+140kW 2015 Model S 85D 193kW+193kW 2015 Model S 90 RWD 2015 Model S 90D 2015 2016 2017 Model S Base 40 RWD 2013 Model S Base 60 RWD 2013 Model S Base 85 RWD 2013 Model S Long Range (AC) 2019 Model S Long Range (SR) 2019 Model S Long Range Plus (SR) 2020 Model S P100D 2016 2017 2018 Model S P85 RWD 2014 Model S P85+ 2014 Model S P85D 165kW+350kW 2014 2015 Model S P85D 193kW+375kW 2015 Model S P85DL Ludicrous 2015 Model S P90D 2015 2016 Model S P90DL Ludicrous 2015 2016 Model S Performance (AC) 2019 Model S Performance (SR) 2019 2020 Model S Performance P85 RWD 2013 Model S Performance Plus P85+ 2013 Model S Signature 85 RWD 2012 2013 Model S Signature Performance P85 2013 Model S Standard Range 2019 Model X 100D 2017 2018 Model X 60D 2016 Model X 70D 2016 Model X 75D 2016 2017 2018 Model X 90D 2016 2017 Model X Long Range (AC) 2019 Model X Long Range (SR) 2019 2020 Model X P100D 2016 2017 2018 Model X P90D 2016 Model X Performance (AC) 2019 Model X Performance (SR) 2019 2020 Model Y Long Range AWD 2020 Model Y Performance AWD 2020 Roadster 1.5 2008 Roadster 2.0 2009 Roadster 2.5 2010 Roadster 3.0 2016 Roadster Sport 2.0 2009 Volkswagen e-Golf 2014 e-Golf Limited Edition 2015 2017 e-Golf SE 2016 2017 2019 2020 e-Golf SEL Premium 2015 2016 2017 ID.3 2020
BEVS.parameters
['acc_0_100_kmh', 'axle_ratio', 'battery_cap', 'curb_weight', 'drag_coeff', 'motor_type', 'height', 'length', 'market', 'num_cells', 'num_modules', 'power', 'reg_braking', 'top_speed', 'torque', 'trunk_volume', 'battery_type', 'voltage', 'weight', 'width']
dataframe = BEVS.search_by_parameter()
Parameter: power brand model year value unit 0 Tesla Model S P100D 2016 568.0 kw 1 Tesla Model S Performance (SR) 2020 568.0 kw 2 Tesla Model S Performance (AC) 2019 568.0 kw 3 Tesla Model S P90DL Ludicrous 2016 568.0 kw 4 Tesla Model S P90DL Ludicrous 2015 568.0 kw 5 Tesla Model S P90D 2016 568.0 kw 6 Tesla Model S P90D 2015 568.0 kw 7 Tesla Model S P85DL Ludicrous 2015 568.0 kw 8 Tesla Model S P85D 193kW+375kW 2015 568.0 kw 9 Tesla Model S P100D 2018 568.0 kw
VW_ID3 = BEVS.model(('Volkswagen','ID.3',2020)) # Model instance that contains vehicle parameters
Fallback value 0.9 added for missing battery_charging_eff parameter. Fallback value 0.95 added for missing battery_discharging_eff parameter. Fallback value 0.95 added for missing transmission_eff parameter. Fallback value 0.3 added for missing auxiliary_power parameter. Fallback value 3.5 added for missing cabin_volume parameter. Fallback value 1 added for missing hvac_cop_heating parameter. Fallback value 2 added for missing hvac_cop_cooling parameter.
VW_ID3.parameters
{'acc_0_100_kmh': None, 'axle_ratio': 10, 'battery_cap': 45.0, 'curb_weight': 1600.0, 'drag_coeff': 0.267, 'motor_type': 'Brushless DC', 'height': 1.552, 'length': 4.261, 'market': 'Europe', 'num_cells': None, 'num_modules': None, 'power': 93, 'reg_braking': 'Yes', 'top_speed': 160.0, 'torque': 310, 'trunk_volume': 0.39, 'battery_type': None, 'voltage': None, 'weight': None, 'width': 1.809, 'Brand': 'Volkswagen', 'EV Model': 'ID.3', 'Model year': 2020, 'pmr': 58.125, 'inertial_mass': 463.99999999999994, 'front_area': 2.807568, 'battery_charging_eff': 0.9, 'battery_discharging_eff': 0.95, 'transmission_eff': 0.95, 'auxiliary_power': 0.3, 'cabin_volume': 3.5, 'hvac_cop_heating': 1, 'hvac_cop_cooling': 2}
b) Calculate consumption for each trip and generate the time series
c = Consumption(mname, VW_ID3)
c.load_setting_mobility(DB)
c.run(
heat_insulation=HI,
weather_country='DE',
weather_year=2016,
passenger_mass=75, # kg
passenger_sensible_heat=70, # W
passenger_nr=1.5, # Passengers per vehicle including driver
air_cabin_heat_transfer_coef=20, # W/(m2K). Interior walls
air_flow = 0.02, # m3/s. Ventilation
driving_cycle_type='WLTC', # Two options "WLTC" or "EPA"
road_type=0, # For rolling resistance, Zero represents a new road.
road_slope=0
)
New profile running: BEV1_W2_fd3ea_Volkswagen_ID.3_2020_509a2 Progress: 100% [11 / 11] trips
c.save_profile('db')
=== profile saved === : db/BEV1_W2_fd3ea_Volkswagen_ID.3_2020_509a2.pickle
c) See some attributes
c.name
'BEV1_W2_fd3ea_Volkswagen_ID.3_2020_509a2'
c.kind
'consumption'
c.input
'BEV1_W2_fd3ea'
c.brand, c.model, c.year
('Volkswagen', 'ID.3', '2020')
c.timeseries
hh | state | distance | consumption | |
---|---|---|---|---|
date | ||||
2020-01-01 00:00:00 | 0.0 | home | 0.0 | 0.0 |
2020-01-01 00:15:00 | 0.25 | home | 0.0 | 0.0 |
2020-01-01 00:30:00 | 0.5 | home | 0.0 | 0.0 |
2020-01-01 00:45:00 | 0.75 | home | 0.0 | 0.0 |
2020-01-01 01:00:00 | 1.0 | home | 0.0 | 0.0 |
... | ... | ... | ... | ... |
2020-01-07 22:45:00 | 166.75 | home | 0.0 | 0.0 |
2020-01-07 23:00:00 | 167.0 | home | 0.0 | 0.0 |
2020-01-07 23:15:00 | 167.25 | home | 0.0 | 0.0 |
2020-01-07 23:30:00 | 167.5 | home | 0.0 | 0.0 |
2020-01-07 23:45:00 | 167.75 | home | 0.0 | 0.0 |
672 rows × 4 columns
c.profile.head()
datetime | hr | state | distance | trip_duration | speed km/h | wind_m/s | slope_rad | road_type | temp_degC | ... | auxiliary kWh | hvac kWh | motor in kWh | transmission in kWh | wheel kWh | rolling res kWh | air res kWh | gravity kWh | acceleration kWh | trip code | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
hr | |||||||||||||||||||||
35.50 | 2020-01-02 11:30:00 | 35.50 | home | 0.0 | 0.0 | NaN | 0 | 0 | 0 | 0.67 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
36.00 | 2020-01-02 12:00:00 | 36.00 | driving | 6.0 | 16.0 | 22.5 | 0 | 0 | 0 | 0.71 | ... | 0.080 | 0.301886 | 0.875421 | 0.708796 | 0.673356 | 0.312734 | 0.087630 | 0.0 | 0.272992 | 0.0 |
44.75 | 2020-01-02 20:45:00 | 44.75 | shopping | 0.0 | 0.0 | NaN | 0 | 0 | 0 | -0.88 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
45.00 | 2020-01-02 21:00:00 | 45.00 | driving | 2.0 | 15.0 | 8.0 | 0 | 0 | 0 | -0.88 | ... | 0.075 | 0.279697 | 0.332406 | 0.154794 | 0.147055 | 0.109463 | 0.004072 | 0.0 | 0.033520 | 1.0 |
57.25 | 2020-01-03 09:15:00 | 57.25 | home | 0.0 | 0.0 | NaN | 0 | 0 | 0 | -2.22 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
5 rows × 29 columns
d) Visualization
fig_consumption = PLT.sankey(c.name, include=None, to_html=False, path=None)
Consumption [kWh]: 14.774 Distance [km]: 66.0 Specific consumption [kWh/100 km]: 22.385
fig_consumption
a) probability distribution and power rating for charging stations
from emobpy import Availability
DB.update() # This load new generated files that are hosted in database folder
cname = c.name # getting the id of the first consumption profile
station_distribution = { # Dictionary with charging stations type probability distribution per the purpose of the trip (location or destination)
'prob_charging_point': {
'errands': {'public': 0.5, 'none': 0.5},
'escort': {'public': 0.5, 'none': 0.5},
'leisure': {'public': 0.5, 'none': 0.5},
'shopping': {'public': 0.5, 'none': 0.5},
'home': {'public': 0.5, 'none': 0.5},
'workplace': {'public': 0.0, 'workplace': 1.0, 'none': 0.0}, # If the vehicle is at the workplace, it will always find a charging station available (assumption)
'driving': {'none': 0.99, 'fast75': 0.005, 'fast150': 0.005}}, # with the low probability given to fast charging is to ensure fast charging only for very long trips (assumption)
'capacity_charging_point': { # Nominal power rating of charging station in kW
'public': 22,
'home': 3.7,
'workplace': 11,
'none': 0, # dummy station
'fast75': 75,
'fast150': 150}
}
b) Generate time series
ga = Availability(cname, DB)
ga.set_scenario(station_distribution)
ga.run()
soc_init: 0.5 --> soc_end: 0.981 Profile done: BEV1_W2_fd3ea_Volkswagen_ID.3_2020_509a2_avai_041c2
ga.save_profile('db')
=== profile saved === : db/BEV1_W2_fd3ea_Volkswagen_ID.3_2020_509a2_avai_041c2.pickle
b) See some attributes
ga.name
'BEV1_W2_fd3ea_Volkswagen_ID.3_2020_509a2_avai_041c2'
ga.input
'BEV1_W2_fd3ea_Volkswagen_ID.3_2020_509a2'
ga.kind
'availability'
ga.battery_capacity
45.0
ga.charging_eff
0.9
ga.discharging_eff
0.95
ga.soc_init
0.5
ga.soc_min
0.02
ga.timeseries
hh | state | distance | consumption | charging_point | charging_cap | soc | |
---|---|---|---|---|---|---|---|
date | |||||||
2020-01-01 00:00:00 | 0.0 | home | 0.0 | 0.0 | public | 22 | 0.61 |
2020-01-01 00:15:00 | 0.25 | home | 0.0 | 0.0 | public | 22 | 0.72 |
2020-01-01 00:30:00 | 0.5 | home | 0.0 | 0.0 | public | 22 | 0.83 |
2020-01-01 00:45:00 | 0.75 | home | 0.0 | 0.0 | public | 22 | 0.94 |
2020-01-01 01:00:00 | 1.0 | home | 0.0 | 0.0 | public | 22 | 1.0 |
... | ... | ... | ... | ... | ... | ... | ... |
2020-01-07 22:45:00 | 166.75 | home | 0.0 | 0.0 | none | 0 | 0.981123 |
2020-01-07 23:00:00 | 167.0 | home | 0.0 | 0.0 | none | 0 | 0.981123 |
2020-01-07 23:15:00 | 167.25 | home | 0.0 | 0.0 | none | 0 | 0.981123 |
2020-01-07 23:30:00 | 167.5 | home | 0.0 | 0.0 | none | 0 | 0.981123 |
2020-01-07 23:45:00 | 167.75 | home | 0.0 | 0.0 | none | 0 | 0.981123 |
672 rows × 7 columns
c) Visualization
fig_availability = PLT.sgplot_ga(ga.name, rng=None, to_html=False, path=None)
fig_availability
from emobpy import Charging
DB.update()
aname = ga.name # getting the id of the availability profile
strategies = [
"immediate", # When battery has SOC < 100% then it charges immediatelly at a maximun power rating of the current charging station
"balanced", # When battery has SOC < 100% then it charges immediatelly but at lower rating power to ensure 100% SOC at the end (before moving to another place).
"from_0_to_24_at_home", # Customized: starting time of charging (this case 0 hrs), final time of charging (this case 24 hrs), at could be one 'location' (this case 'home') or 'any'.
"from_23_to_8_at_any"
]
b) generation of 4 grid electricity demand time series
for option in strategies:
ged = Charging(aname)
ged.load_scenario(DB)
ged.set_sub_scenario(option)
ged.run()
print(f'Creation Successful:{ged.success}') # if False, modify the strategy to a less constrained.
ged.save_profile('db')
Profile done: BEV1_W2_fd3ea_Volkswagen_ID.3_2020_509a2_avai_041c2_immediate_52d4b Creation Successful:True File saved : db/BEV1_W2_fd3ea_Volkswagen_ID.3_2020_509a2_avai_041c2_immediate_52d4b.pickle Profile done: BEV1_W2_fd3ea_Volkswagen_ID.3_2020_509a2_avai_041c2_balanced_6dc8c Creation Successful:True File saved : db/BEV1_W2_fd3ea_Volkswagen_ID.3_2020_509a2_avai_041c2_balanced_6dc8c.pickle Profile done: BEV1_W2_fd3ea_Volkswagen_ID.3_2020_509a2_avai_041c2_from_0_to_24_at_home_4bfa9 Creation Successful:True File saved : db/BEV1_W2_fd3ea_Volkswagen_ID.3_2020_509a2_avai_041c2_from_0_to_24_at_home_4bfa9.pickle Profile done: BEV1_W2_fd3ea_Volkswagen_ID.3_2020_509a2_avai_041c2_from_23_to_8_at_any_285e1 Creation Successful:True File saved : db/BEV1_W2_fd3ea_Volkswagen_ID.3_2020_509a2_avai_041c2_from_23_to_8_at_any_285e1.pickle
c) See some atributes for the last created time series as an example
ged.name
'BEV1_W2_fd3ea_Volkswagen_ID.3_2020_509a2_avai_041c2_from_23_to_8_at_any_285e1'
ged.input
'BEV1_W2_fd3ea_Volkswagen_ID.3_2020_509a2_avai_041c2'
ged.kind
'charging'
ged.option
'from_23_to_8_at_any'
ged.timeseries
hh | state | distance | consumption | charging_point | charging_cap | actual_soc | charge_battery | charge_grid | |
---|---|---|---|---|---|---|---|---|---|
date | |||||||||
2020-01-01 00:00:00 | 0.0 | home | 0.0 | 0.0 | public | 22 | 0.503497 | 0.629371 | 0.699301 |
2020-01-01 00:15:00 | 0.25 | home | 0.0 | 0.0 | public | 22 | 0.506993 | 0.629371 | 0.699301 |
2020-01-01 00:30:00 | 0.5 | home | 0.0 | 0.0 | public | 22 | 0.51049 | 0.629371 | 0.699301 |
2020-01-01 00:45:00 | 0.75 | home | 0.0 | 0.0 | public | 22 | 0.513986 | 0.629371 | 0.699301 |
2020-01-01 01:00:00 | 1.0 | home | 0.0 | 0.0 | public | 22 | 0.517483 | 0.629371 | 0.699301 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
2020-01-07 22:45:00 | 166.75 | home | 0.0 | 0.0 | none | 0 | 0.981123 | 0.0 | 0.0 |
2020-01-07 23:00:00 | 167.0 | home | 0.0 | 0.0 | none | 0 | 0.981123 | 0.0 | 0.0 |
2020-01-07 23:15:00 | 167.25 | home | 0.0 | 0.0 | none | 0 | 0.981123 | 0.0 | 0.0 |
2020-01-07 23:30:00 | 167.5 | home | 0.0 | 0.0 | none | 0 | 0.981123 | 0.0 | 0.0 |
2020-01-07 23:45:00 | 167.75 | home | 0.0 | 0.0 | none | 0 | 0.981123 | 0.0 | 0.0 |
672 rows × 9 columns
ged.profile
hh | state | distance | consumption | charging_point | charging_cap | soc | consumption kWh | count | actual_soc | charge_battery | charge_grid | omit | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.00 | home | 0.0 | 0.0 | public | 22 | 0.610000 | 0.0 | 143 | 0.503497 | 0.629371 | 0.699301 | 0.0 |
1 | 0.25 | home | 0.0 | 0.0 | public | 22 | 0.720000 | 0.0 | 143 | 0.506993 | 0.629371 | 0.699301 | 0.0 |
2 | 0.50 | home | 0.0 | 0.0 | public | 22 | 0.830000 | 0.0 | 143 | 0.510490 | 0.629371 | 0.699301 | 0.0 |
3 | 0.75 | home | 0.0 | 0.0 | public | 22 | 0.940000 | 0.0 | 143 | 0.513986 | 0.629371 | 0.699301 | 0.0 |
4 | 1.00 | home | 0.0 | 0.0 | public | 22 | 1.000000 | 0.0 | 143 | 0.517483 | 0.629371 | 0.699301 | 0.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
667 | 166.75 | home | 0.0 | 0.0 | none | 0 | 0.981123 | 0.0 | 283 | 0.981123 | 0.000000 | 0.000000 | 0.0 |
668 | 167.00 | home | 0.0 | 0.0 | none | 0 | 0.981123 | 0.0 | 283 | 0.981123 | 0.000000 | 0.000000 | 0.0 |
669 | 167.25 | home | 0.0 | 0.0 | none | 0 | 0.981123 | 0.0 | 283 | 0.981123 | 0.000000 | 0.000000 | 0.0 |
670 | 167.50 | home | 0.0 | 0.0 | none | 0 | 0.981123 | 0.0 | 283 | 0.981123 | 0.000000 | 0.000000 | 0.0 |
671 | 167.75 | home | 0.0 | 0.0 | none | 0 | 0.981123 | 0.0 | 283 | 0.981123 | 0.000000 | 0.000000 | 0.0 |
672 rows × 13 columns
d) Visualization
fig_ged = PLT.sgplot_ged(ged.name, rng=None, to_html=False, path=None) # this looks for all strategies of a single grid availability time series, even though we provide one grid demand id
fig_ged
fig_channel = PLT.overview(ged.name)
Actual time-series date range = [2020-01-01 00:00:00,2020-01-07 23:45:00]
fig_channel
from emobpy import Export
DB.update()
Exp = Export()
Exp.loaddata(DB)
Exp.to_csv()
Exp.save_files()
Summary file: db/bev_data_input.csv Time series file: db/bev_time_series.csv
Total size: 300 MB
This function allows us to select different countries and years when creating new driving consumption time-series.
After finishing the download, you will get the location of the files on your PC. If you want to add more countries, you can edit the CSV files there.
emobpy includes Germany's weather data only for 2016. This data set has several European countries and years from 2000-2017.
# from emobpy import Weather
# WD = Weather()
# WD.download_weather_data()