# 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()