Simulation Parameters

The simulation of an eBus-System relies on a variety of simulation parameters. SimBA provides most of them as default values. Depending on specific needs adjusting these values can increase the accuracy of the simulation outputs. The SimBA input files are described in detail in the following subsections as well as their default parameters. When providing the user defined input files, the user should make sure the files are either ‘utf-8’ encoded or not contain regional characters. Except for the electrified_stations.json, all .json files can be enriched with in-line comments starting with \\.

Configuration

The configuration file config.cfg is provided as example in ./examples/ and provides the user with most of the functionality surrounding the settings and boundary conditions of a simulation. The config file is divided into several sections:

Paths: Here all in- and output paths are defined
Modes: Here the modes of execution can be defined
Flags: Here, optional functionality can be activated or deactivated
Physical setup of environment: Here, the physical setup is characterized
Simulation Parameters: The simulation can be adjusted using these parameters

The example (data/simba.cfg) contains parameter descriptions which are explained here in more detail:

Table 2 config.cfg parameters

Parameter

Default value

Expected values

Description

input_schedule

Mandatory: no default given

Path as string

Input file containing Schedule information

Output_directory

Data/sim_outputs

Path as string

Output files are stored here

electrified_stations

./data/examples/vehicle_types.json

Path as string

Path to Electrified stations data

vehicle_types

./data/examples/vehicle_types.json

Path as string

Path to Vehicle types

station_data_path

Optional: no default given

Path as string

Path to Station data

outside_temperature_over_day_path

Optional: no default given

Path as string

Path to Temperatures

level_of_loading_over_day_path

Optional: no default given

Path as string

Path to Level of loading

cost_parameters_file

Optional: no default given

Path as string

Path to Cost parameters

mode

[‘sim’, ‘report’]

List of modes is any order in range of [‘sim’, ‘neg_depb_to_oppb’, ‘neg_oppb_to_depb’, ‘service_optimization’, ‘report’]

The order of Modes of SimBA is defined here

cost_calculation

false

Boolean

Activates the Cost calculation

check_rotation_consistency

false

Boolean

Activates the Consistency check

skip_inconsistent_rotations

false

Boolean

If check_rotation_consistency is active, rotations that don’t comply with the checked assumptions are removed from the schedule if skip_inconsistent_rotations is set true

show_plots

false

Boolean

If activated, plots are displayed with every run of Report mode

preferred_charging_type

depb

depb, oppb

All rotations that have no specification of charging type in Schedule are assigned the charging type defined here

gc_power_opps

100000

Numeric

Default max. power [kW] of grid connectors at opportunity charging stations, Individual gc_power per gc can be defined in Electrified stations

gc_power_deps

100000

Numeric

Default max. power [kW] of grid connectors at depot charging stations, Individual gc_power per gc can be defined in Electrified stations

cs_power_opps

300

Numeric

Default max. power [kW] of opportunity charging stations

cs_power_deps_depb

300

Numeric

Default max. power [kW] of depot charging stations for depot charging buses. Individual cs_power per gc and cs type can be defined in Electrified stations

cs_power_deps_oppb

300

Numeric

Default max. power [kW] of depot charging stations for opportunity charging buses. Individual cs_power per gc and cs type can be defined in Electrified stations

desired_soc_deps

1

0…1

Minimum allowed state of charge when leaving a depot station after charging. Also used to initialize the vehicles SoCs at the beginning of the simulation.

desired_soc_opps

1

0…1

Minimum allowed state of charge when leaving an opportunity station after charging

min_recharge_deps_oppb

1

0…1

This value is used to calculate the minimum standing time of opportunity charging busses at the depot, which is needed for the Vehicle Dispatch

min_recharge_deps_depb

1

0…1

This value is used to calculate the minimum standing time of depot charging busses at the depot, which is needed for the Vehicle Dispatch

min_charging_time

0

Numeric

Only stops that are longer than the time defined here are used for charging

default_buffer_time_opps

0

Numeric or dict e.g. {“10-22”: 5, “else”: 2} (else clause is a must if using the dict definition)

The buffer time is deducted off of the planned standing time at each opportunity station. It can be used to model things like delays and/or docking procedures. This value is used if no specific buffer is defined per station in Electrified stations. It can either be given as constant or depending on the time of the day using a dict.

default_voltage_level

MV

HV, HV/MV, MV, MV/LV, LV

The default voltage level is used, if no specific voltage level is defined per station in Electrified stations. It is used to calculate the costs. Choices describe high voltage (HV), transformer between high and medium voltage (HV/MV), medium voltage MV, transformer between medium and low voltage (MV/LV) and low voltage (LV)

days

Optional: no default given

Numeric

If this value is defined only the first number of ‘days’ of the schedule are simulated

interval

1

Numeric

Timestep in minutes

signal_time_dif

10

Numeric

Some strategies use limited foresight. E.g. prioritization of vehicles at limited number of charging stations is carried out only for this time ahead of actual time step. Also used in spiceEV as time difference between signal time and actual start time of a vehicle event in min.

eta

false

Boolean

Show estimated time to finish simulation after each step. Not recommended for fast computations

Schedule

To analyze your own electric bus schedule, the data needs to be provided as a .csv file where each row contains the details of a single trip of that schedule. Find the details about the various columns in this file below. The first table lists the mandatory columns while the second one (tbd) lists optional parameters. Refer to data/examples/trips.csv for an example.

Table 3 schedule mandatory input

Column Name

Description

Example

rotation_id

Unique alphanumeric ID to identify rotations

27312

departure_name

Name of the station the trip starts at

Warschauer Straße

departure_time

Date and time at which bus starts trip (ISO-Format)

2022-03-13T10:25

arrival_name

Name of the station the trip ends at

Ostbahnhof Berlin

arrival_time

Date and Time at which bus completes trip (ISO-Format) (e.g. yyyy-mm-ddThh:mm[:ss])

2022-03-13T10:30

distance

Distance traveled in m

1340

vehicle_type

ID of vehicle type defined in vehicle types file. Set path of this file in config
(see default for reference: data/examples/vehicle_types.json)

some_bus_type

Table 4 schedule optional input

Column Name

Description

Example

line

The bus line

512, M10, X11 etc.

charging_type

The preferred charging type for this trip.
NOTE: All trips of a rotation need to have the same charging type.
If omitted, charging type is set according to preferred charging type provided in the config file.

Options: depb, oppb

temperature

Temperature of the trip in degC

25

level_of_loading

The level of loading of the bus on this trip in between 0 and 1

0.5.

This is how a schedule file might look like.

line

departure_name

departure_time

arrival_time

arrival_name

distance

rotation_id

vehicle_type

temperature

level_of_loading

LINE_0

Station-0

2022-03-07 21:28:00

2022-03-07 21:31:00

Station-1

1530

1

12m_bus

20

0

LINE_0

Station-1

2022-03-07 21:31:00

2022-03-07 22:04:00

Station-3

14519

1

12m_bus

-5

0.9

LINE_0

Station-3

2022-03-07 22:08:00

2022-03-07 22:43:00

Station-1

13541

1

12m_bus

LINE_0

Station-1

2022-03-07 22:51:00

2022-03-07 23:24:00

Station-2

14519

1

12m_bus

Vehicle types

The vehicle types that can be used are defined in the “vehicle_type.json”. The path to this file has to be defined in the Configuration and an example is given at “data/examples/vehicle_types.json”.

The data is structured as a .json where the top level key represents the vehicle_type, that needs to correspond to the “vehicle_type” defined in the Schedule. The next level key defines the charging_type (“oppb” or “depb”). For one vehicle type either one or both charging types can be defined and for each given charging type the specifications in the third level of the .json have to be given. In this level, the parameters for the specified vehicle are be defined. The specification of one vehicle with the vehicle_type “AB” and the charging_types “depb” and “oppb” is given as follows:

{
    "AB": {  // vehicle_type
        "depb": {  // charging_type
            "name": "articulated bus - depot charging",  // long name
            "capacity": 250,  // battery capacity in kWh
            "charging_curve": [[0, 150], [0.8, 150], [1, 15]],  // charging curve [SoC, kW]
            "min_charging_power": 0,  // min charging power in KW
            "v2g": false,  // Is vehicle capable of vehicle to grid?
            "mileage": "data/examples/energy_consumption_example.csv",  // mileage in kWh/km or link to consumption.csv
            "battery_efficiency": 0.95  // optional. default: 0.95
        },
        "oppb": {
            "name": "articulated bus - opportunity charging",
            "capacity": 150,
            "charging_curve": [[0, 250], [0.8, 250], [1, 25]],
            "min_charging_power": 0,
            "v2g": false,
            "mileage": "data/examples/energy_consumption_example.csv"
        }
    }
}

Electrified stations

All stations, that are or could be equipped with charging infrastructure have to be parameterized in the “electrified_stations.json” together with their grid connection, charging infrastructure and local energy systems. The path to this file has to be defined in the Configuration.

The data is structured as a .json where the top level key represents the station name, that needs to correspond to the “departure_name”, respectively “arrival_name” defined in the Schedule. Each station has two mandatory arguments: “type” defines if a station is a depot (“deps”) or an opportunity charging station (“opps”) and “n_charging_stations” limits the amount of vehicles, that can simultaneously charge at one station.

Furthermore, the energy system at each station can be characterized in terms of local power generation (“energy_feed_in”), local external loads (“external_load”) or local stationary electric power storage (“battery”). An example that displays all further parameters and the specification of the local energy systems is given at “data/examples/electrified_stations.json”.

Cost parameters

In order to run the Cost calculation, all cost parameters are to be defined in the cost_params.json. The file is used as input for both, SimBA and SpiceEV, as both tools do part of the cost calculation and therefore no comments are allowed here. If not otherwise specified the investments/costs are gross prices. A commented example is given below, for a working example please refer to “data/examples/cost_params.json”.

{
    "vehicles": {  // all vehicles and charging types have to be defined here
        "SB_debp": {  // all combinations of vehicle types and charging types have a separate cost definition, the name is to be given as [vehicle_type]_[charging_type]
            "capex": 500000,  // investment cost for one vehicle without vehicle battery
            "c_maint_per_km": 0.24,  // maintenance cost per km
            "lifetime": 14  // lifetime of the vehicle in years
        }
    },
    "batteries": {  // vehicle battery
        "lifetime_battery": 7,   // lifetime of the vehicle battery in years
        "cost_per_kWh": 250  // investment cost for vehicle battery per kWh
    },
    "gc": {  // grid connection
        "LV": {  // grid connection in specific voltage level. Options are "HV", "HV/MV", "MV", "MV/LV", "LV" and all relevant voltage levels have to be defined here
            "default_distance": 50,  // Used if not specified individually in electrified_stations.json
            "capex_gc_fix": 100,  // fix investment cost for establishing a grid connection
            "capex_gc_per_meter": 16.85,  // investment cost per meter
            "capex_gc_per_kW": 24.14,  // investment cost per kW
            "capex_transformer_fix": 0,  // fix investment cost for a transformer
            "capex_transformer_per_kW": 0  // fix investment cost for a transformer per kW
        },
        "lifetime_gc": 50,  // lifetime of the grid connection in years
        "c_maint_transformer_per_year": 0.02,  // annual maintenance costs in % of capex
        "lifetime_transformer": 20  // lifetime in years
    },
    "stationary_storage": {    // stationary electric energy storage
        "capex_fix": 1,  // fix investment cost for stationary storage
        "capex_per_kWh": 1,  //  investment cost for stationary storage per kWh
        "c_maint_stat_storage_per_year": 0.02,  // annual maintenance costs in % of capex
        "lifetime_stat_storage": 20  // lifetime in years
    },
    "cs":{  // charging stations
        "capex_opps_per_kW": 877.5,  //  investment cost for opportunity charging stations per kW
        "capex_deps_per_kW": 1000,  //  investment cost for depot charging stations per kW
        "lifetime_cs": 20,  // lifetime of charging stations in years
        "c_maint_cs_per_year": 0.02  // annual maintenance costs in % of capex
    },
    "garage": {
        "n_charging_stations": 1,  // number of charging stations for the garage
        "power_cs": 50,  // power of the charging stations for the garage
        "vehicles_per_workstation": 20,  // how many vehicles share one workstation
        "cost_per_workstation": 245000,  //  investment cost for one workstation
        "lifetime_workstations": 20  // lifetime in years
    }
}

all remaining parameters are described in the example file.

Station data

The file “all_stations.csv” contains information that is relevant for all stations regardless of their status of electrification. At this stage of development this reduces to the information of station height that is relevant only if a trip specific Consumption analysis is employed. See the example at “data/examples/all_stations.csv” for the required structure.

Level of loading

If a trip specific Consumption analysis is employed, the level of loading for each trip is required. This information can be detailed in the Schedule. If not specified there, a default value for every hour of the day can be specified in this file. See the example at “data/examples/default_level_of_loading_over_day.csv” for the required structure.

Temperatures

If a trip specific Consumption analysis is employed, the temperature for each trip is required. This information can be detailed in the Schedule. If not specified there, a default value for every hour of the day can be specified in this file. See the example at “data/examples/default_temp_summer.csv” for the required structure.

Consumption table

The consumption table can be referenced in the Vehicle types file. Instead of constant consumption SimBA uses provided temperatures, level of loadings, mean speeds, average inclines and the vehicle type to interpolate the consumption value from this data table. Level of loading and temperatures are read from the Schedule if the trips provide them. If they are missing from the schedule, they are looked up from the files Level of loading and Temperatures. The average incline is calculated from Station data and the mean speed is calculated by using the departure and arrival time and distance provided by the schedule.