The EV model object defined by {evprof} is generated with function get_ev_model(). This function returns an object of class evmodel. This object prints a summary of its components. The package provides an example of evmodel created in the California study case article, using the charging sessions data provided by ACN.

evprof::california_ev_model
## EV sessions model of class "evmodel", created on 2024-01-29 
## Timezone of the model: America/Los_Angeles 
## The Gaussian Mixture Models of EV user profiles are built in:
##   - Connection Models: logarithmic scale
##   - Energy Models: logarithmic scale
## 
## Model composed by 2 time-cycles:
##   1. Workday:
##      Months = 1-12, Week days = 1-2
##      User profiles = Visit, Worktime
##   2. Weekend:
##      Months = 1-12, Week days = 6-7
##      User profiles = Visit

The evmodelobject has two components:

The model itself is composed by multiple Gaussian models (GMM). The connection_models are Gaussian models of two variables (connection start time and connection duration) and the energy_models are built with a single variable (energy). Thus, the statistic features of connection_models are a centroid (\(\mu\)), a covariance matrix (\(\Sigma\)) and the weight or ratio of the corresponding model. Besides, the statistic features of energy_models are a mean (\(\mu\)), a standard deviation (\(\sigma\)) and the weight or ratio of the corresponding model.

Let’s take a look to these statistical features of the Worktime user profile for Working days in the California model:

california_ev_model$models
## # A tibble: 2 × 4
##   time_cycle months     wdays     user_profiles   
##   <chr>      <list>     <list>    <list>          
## 1 Workday    <int [12]> <int [5]> <tibble [2 × 4]>
## 2 Weekend    <int [12]> <int [2]> <tibble [1 × 4]>
workday_model <- california_ev_model$models$user_profiles[[1]]
workday_model
## # A tibble: 2 × 4
##   profile  ratio connection_models energy_models   
##   <chr>    <dbl> <list>            <list>          
## 1 Visit    0.460 <tibble [3 × 3]>  <tibble [1 × 3]>
## 2 Worktime 0.540 <tibble [3 × 3]>  <tibble [1 × 3]>
worktime_model <- workday_model[2, ]

The connection model is a mixture of 3 bi-variate Gaussian Models:

worktime_model$connection_models
## [[1]]
## # A tibble: 3 × 3
##   mu        sigma         ratio
##   <list>    <list>        <dbl>
## 1 <dbl [2]> <dbl [2 × 2]> 0.305
## 2 <dbl [2]> <dbl [2 × 2]> 0.428
## 3 <dbl [2]> <dbl [2 × 2]> 0.267

On the other hand, the energy models can be based on the charging rate (Power variable) of the sessions. It has been observed that the energy demand increases together with the charging power (big vehicles have larger batteries and can charge at higher rates). Thus, function get_energy_models has the logical parameter by_power to fit the Energy Gaussian Models for the different groups of charging powers separately. In the case of California study case, we set by_power=FALSE, that’s why we got the Unknown in the energy_models tibble with a ratio of 1:

worktime_model$energy_models[[1]]
## # A tibble: 1 × 3
##   charging_rate ratio energy_models   
##   <chr>         <int> <list>          
## 1 Unknown           1 <tibble [8 × 3]>

Thus, the energy model of all Worktime sessions is a mixture of 9 Gaussian models:

worktime_model$energy_models[[1]]$energy_models[[1]]
## # A tibble: 8 × 3
##      mu sigma  ratio
##   <dbl> <dbl>  <dbl>
## 1  1.34 0.129 0.0204
## 2  1.78 0.129 0.164 
## 3  2.11 0.129 0.167 
## 4  2.48 0.129 0.158 
## 5  2.63 0.129 0.179 
## 6  3.01 0.129 0.0969
## 7  3.35 0.129 0.0941
## 8  3.65 0.129 0.120