Features of SimBA¶
Consumption analysis¶
The consumption can be calculated in two ways: Either with a constant average specific consumption or with a trip specific consumption, where the consumption depends on the temperature, the incline, the level of loading and the average speed.
To use a constant consumption, this value can be defined in the Vehicle types as “mileage” in the unit of [kWh/km]. To use the trip specific consumption, a consumption table needs to be created with data for each vehicle type. The path to the consumption table is assigned to the variable “mileage” in Vehicle types. The consumption table should have the columns “vehicle_type”, “level_of_loading”, “incline” ,”mean_speed_kmh”, “t_amb”, “consumption_kwh_per_km” and its creation is at ths point of development not part of SimBA. The consumption for each trip is then calculated by interpolation of the datapoints provided in the table.
The level_of_loading describes the share between an empty vehicle (0) and a fully loaded vehicle (1) and can be handed over in two ways: Either directly as a column in Schedule with specific values for each individual trip or as an input file “default_level_of_loading.csv” (path defined in Configuration) containing values for each hour of the day. SimBA will first look into schedule and take this value and if it is not defined take the one from the .csv file. The temperature information is obtained in the same way as the level of loading and should be given in °C. In order to calculate the consumption based on the incline, an extra “all_stations.csv” file (path defined in Configuration) has to be provided containing information on the elevation in m of each station. The incline is then calculated as the average incline between start and stop of the trip, which is an assumption that creates good results for vehicles with recuperation technology, as most electric vehicles have. The mean speed is calculated using the information provided in Schedule about duration and length of each trip.
Vehicle Dispatch¶
To allocate the rotations to vehicles, vehicles of the needed type to fulfil the rotation are used. If no suitable vehicle is available, a new vehicle is created. A vehicle is defined as “available” if it is currently not serving another rotation, has the same depot and if it had enough time after return to the depot to be charged. This “minimum standing time” at the depot is calculated using the variable min_recharge_deps_oppb or min_recharge_deps_depb from the :ref`config` together with the respective battery capacity of the vehicle and assuming the maximum available power of the depot charging stations.
Charging simulation¶
The charging simulation is carried out in the open source software SpiceEV, that is included in SimBA as a package. SimBA therefore uses SpiceEVs charging strategy “distributed”, that allows to separate the charging strategy depending on the station type. The station types can be either depot charging station (deps) or opportunity charging station (opps). At depot charging stations vehicles are being charged using SpiceEVs strategy “balanced”, which uses the whole standing time to charge with the minimal power to reach a desired SoC. At opportunity charging stations the strategy “greedy” is employed, that charges with the maximum available power due to restrictions from the grid connection, the charging curve of the vehicle and the charging station.
Generate report¶
The generation of the report is implemented as a mode, that can be activated with the keyword “report” in modes (Report). The report generates most of the output files. The report can be called any number of times e.g. mode = [“sim”, “report”, “neg_depb_to_oppb”, “report”, “service_optimization”, “report”]. For each report, a sub-folder is created in the output directory (as defined in the Configuration) named “report_[nr]” with the respective number.
The generation of the report can be modified using the flag “cost_calculation” in Configuration. If this flag is set to true, each report will also generate the file “summary_vehicles_costs.csv”.
Default outputs¶
Cost calculation¶
- Investment
Buses: Costs for all buses used in the simulation. Costs include battery swaps, depending on the lifetime of both buses and batteries.
Charging infrastructure: Costs for all depot and opportunity charging stations, depending on the number of actually used charging stations at each grid connector.
Grid connectors: Costs for grid connectors and transformers, depending on the voltage level and the distance to the grid.
Garages: Costs for workstations and charging infrastructure at garages.
Stationary storages: Costs for stationary batteries at depot and opportunity stations, depending on its capacity.
- Maintenance
Depending on the lifetime of each component maintenance costs are calculated for buses, charging infrastructure, grid connectors and stationary storages.
- Electricity
Power procurement: Costs for the procurement of energy.
Grid fees: Costs for power and energy price, depending on the voltage level and the utilization time per year.
Taxes: Taxes like electricity taxes, depending on given taxes by price sheet.
Feed-in remuneration: Remuneration for electricity fed into the grid.
As result the following table is saved as CSV:
parameter |
unit |
description |
|---|---|---|
c_vehicles |
EUR |
Investment costs of all buses |
c_gcs |
EUR |
Investment costs of all grid connectors |
c_cs |
EUR |
Investment costs of all charging stations |
c_garage_cs |
EUR |
Investment costs of charging stations at garages |
c_garage |
EUR |
Investment costs of garages itself |
c_garage_workstations |
EUR |
Investment costs of working stations at garages |
c_stat_storage |
EUR |
Investment costs of stationary storages |
c_invest |
EUR |
Sum of all investment costs |
c_vehicles_annual |
EUR/year |
Annual investment costs of all buses |
c_gcs_annual |
EUR/year |
Annual investment costs of all grid connectors |
c_cs_annual |
EUR/year |
Annual investment costs of all charging stations |
c_garage_annual |
EUR/year |
Sum of annual investment costs of garages |
c_stat_storage_annual |
EUR/year |
Annual investment costs of all stationary storages |
c_invest_annual |
EUR/year |
Sum of all annual investment costs |
c_maint_gc_annual |
EUR/year |
Annual maintenance costs of grid connectors |
c_maint_infrastructure_annual |
EUR/year |
Annual maintenance costs of charging stations and stationary storages |
c_maint_vehicles_annual |
EUR/year |
Annual maintenance costs of buses |
c_maint_stat_storage_annual |
EUR/year |
Annual maintenance costs of stationary storages |
c_maint_annual |
EUR/year |
Sum of annual maintenance costs |
c_el_procurement_annual |
EUR/year |
Annual costs of power procurement |
c_el_power_price_annual |
EUR/year |
Annual grid fee for highest load peak |
c_el_energy_price_annual |
EUR/year |
Annual grid fee for drawn energy |
c_el_taxes_annual |
EUR/year |
Annual costs for all electricity related taxes |
c_el_feed_in_remuneration_annual |
EUR/year |
Annual feed-in remuneration |
c_el_annual |
EUR/year |
Sum of all annual electricity costs |
Optimization¶
There are several options for optimizations that are implemented as Modes of SimBA. These options are currently:
Consistency check¶
SimBA makes certain assumption, that have to be valid to trust the results. these are:
The trips inside a rotation are chronologically sorted
The trip time is not negative, so the arrival of the trip is later or equal to its departure.
The break time between trips is not negative, so the departure of the consecutive trip is later or equal to the arrival of the preceding trip.
Each rotation has a defined and fixed depot, so the rotation starts and ends at the same station
Every trip within a rotation starts where the previous trip ended
In order to test these assumptions, the flag “check_rotation_consistency” can be activated in the Configuration, which will result in the display of cases where assumptions are broken in the console and in the log file. Additionally, the inconsistent rotations can be filtered out of the simulation by setting the “skip_inconsistent_rotations” flag to true.
Rotation filter¶
Before all rotations specified in the Schedule are simulated, there is the option to filter only the ones relevant to for the actual analysis. This is activated by setting the “rotation_filter_variable” in the Configuration to either “include” to consider only certain rotations from the schedule, or to “exclude” to exclude certain rotations from the analysis. The list of rotations for both options is specified as “rotation_filter” in the Path paragraph of the Configuration.
Logging¶
SimBA uses the “logging” package for logging. All logging messages are both displayed in the Terminal and written to a .log file. The filepath and the loglevel can be defined in the Configuration. Four log levels are available in the following order: DEBUG, INFO, WARN and ERROR. INFO includes INFO, WARN and ERROR but excludes DEBUG.