Skip to content

Commit

Permalink
#6 include reduced power function
Browse files Browse the repository at this point in the history
  • Loading branch information
justinhodura committed Jul 7, 2022
1 parent d843524 commit 59d674f
Show file tree
Hide file tree
Showing 2 changed files with 146 additions and 8 deletions.
134 changes: 134 additions & 0 deletions data/configs/run_bvg_test.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
# Configs for the eBus Toolbox

##### INPUT/OUTPUT FILES AND PATHS #####

# Input file containing trip information (required)
input_schedule = "./data/bvg_test/export_line100.csv"

# output path for scenario.json -- called input since its input for spiceev
output_directory = "./data/sim_outputs/"

# electrified stations (defaults to: data/examples/electrified_stations.json)
electrified_stations = "data/bvg_test/electrified_stations.json"

# vehicle types (defaults to: ./data/examples/vehicle_types.json)
vehicle_types = "./data/bvg_test/vehicle_types.json"


##### SIMULATION HYPERPARAMETERS #####
# set random seed (for always random: set seed = null)
seed = 1

# number of interations for the adjustment of charging types (default:1)
iterations = 5

# set length of timestep in minutes (default: 15 minute intervals)
interval = 1

# time difference between signal time and actual start time of a vehicle event im min. (default: 10)
signal_time_dif = 10


##### SIMULATION CONDITIONS AND BOUNDARIES #####

# maximum number of days to simulate, if not set simulate entire schedule
#days = 10

# set minimum allowed state of charge when leaving (default: 0.8)
desired_soc = 1
save_timeseries = "timeseries.csv"
save_results = "results.json"
save_soc = "soc.csv"


# Preferred charging type. Options: depb, oppb (default: depb)
preferred_charging_type = "depb"

# min charging time at opp station [minutes] (default: 2)
min_charging_time_opps = 0

# buffer time at opp station if no specific buffer time is provided
# via the electrified_stations.json [minutes] (default: 1)
# Time specific buffer times can be set via a dict like:
# {"10-22": 5, "else": 2} NOTE: else clause is a MUST!
# The buffer time is deducted off of the planned standing time.
# It may resemble things like delays and/or docking procedures
default_buffer_time_opps = {"7-10": 2, "14-18": 3, "else": 0}


##### PHYSICAL SETUP OF ENVIRONMENT #####

# minimum fraction of capacity for recharge when leaving the depot. Helps calculating the minimum standing time at depot. Between 0 - 1. (default: 1)
min_recharge_deps_oppb = 1
min_recharge_deps_depb = 1

# max power of grid connectors at depot and opp stations
# default: Sum of max power of all charging stations at this grid connector
gc_power_opps = 100000
gc_power_deps = 100000

# max power of charging station at depot and opp stations
# at depot stations opp and depot busses have distinct charging stations (all default to: 150)
cs_power_opps = 400
cs_power_deps_depb = 150
cs_power_deps_oppb = 150

# define hours of traffic_jam (options are "stop&go" and "dense")
#rush_hour = {"stop&go": [["07:00", "09:00"], ["15:00", "17:00"]], "dense": [["17:00", "19:00"]]}

# set stationary batteries [capacity, C-Rate]
# battery with capacity = 75 kWh and C-Rate = 0.5
#battery = [[50, 1]]

# 2 batteries with capacity = 50 kWh, C-Rate = 1, grid_connector = "Betriebshof A")
#battery = [[50, 1, "Station-0"]]

# unlimited battery capacity with constant (dis)charge of 50 kWh
#battery = [[-1, 50]]


##### TIMESERIES #####

# list of external load timeseries (in this example in same directory as resulting json) and
# grid connector at which the timeseries shall be applied
# e.g. [["timeseries_1_path", "gc_name_1"], ["timeseries_2_path", "gc_name_2"]]
#include_ext_load_csv = [["Building-20210705-20210719.csv", "Betriebshof A"]]

# options for external load CSV (options are used for all files specified above):
# set CSV column name, timestep duration in sec. (example: 10 min) and factor (example: input in Watt)
#include_ext_csv_option = [["column", "value"], ["step_duration_s", 600], ["factor", 0.001]]

# local feed in timeseries (in this example in subdirectory "timeseries" - relative to resulting json) and
# grid connector at which the timeseries shall be applied
# e.g. [["timeseries_1_path", "gc_name_1"], ["timeseries_2_path", "gc_name_2"]]
#include_feed_in_csv = [["timeseries/feed_in.csv", "Betriebshof A"]]

# options for feed in CSV (options are used for all files specified above):
# set CSV column name, timestep duration in sec. (example: 1 hour) and factor (example: input in Watt)
#include_feed_in_csv_option = [["column", "value"], ["step_duration_s", 3600], ["factor", 1]]

# energy price timeseries in EUR/kWh (in this example in parent directory - relative to resulting json) and
# grid connector at which the timeseries shall be applied
# e.g. [["timeseries_1_path", "gc_name_1"], ["timeseries_2_path", "gc_name_2"]]
#include_price_csv = [["../energy_price.csv", "Betriebshof A"]]

# options for price CSV (options are used for all files specified above):
# set CSV column name and timestep duration in sec. (example: 6 hours)
#include_price_csv_option = [["column", "value"], ["step_duration_s", 21600]]
# for more options, see https://github.com/rl-institut/spice_ev/wiki/Command-line-options#csv-file-options


########### SPICE_EV SIMULATE PARAMETERS ###############

strategy = distributed
# possible strategies: greedy, balanced, balanced_market, schedule, flex_window
# options: LOAD_STRAT (sub-strategy for some strategies), CONCURRENCY [-], HORIZON [h], PRICE_THRESHOLD [€]
strategy_option = [["CONCURRENCY", 1.0], ["PRICE_THRESHOLD", 0.001], ["ALLOW_NEGATIVE_SOC", 1]]

# show plots after simulation
visual = false

# give margin for desired SoC [0.0 - 1.0]
# margin = 0.1 -> simulation will not abort if vehicles reach at least 90% of the desired SoC before leaving.
# margin = 1.0 -> simulation continues with every positive SoC value, but may fail if trips can not be completed.
margin = 1.0
20 changes: 12 additions & 8 deletions ebus_toolbox/sensitivity_analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,19 +91,23 @@ def get_temperature():
# cs_power_opps, cs_power_deps_depb, cs_power_deps_oppb (Technik)

# cs_power_opps
power_opps = np.arange(start=50, stop=350, step=50)
reduced_power = random.choice(power_opps)

def reduced_power():
"creates list of different values which are smaller then the default power "
power_opps = np.arange(start=50, stop=350, step=50)
reduced_power_opps = random.choice(power_opps)

# cs_power_deps_depb
power_deps_depb = np.arange(start=30, stop=90, step=30)
reduced_power = random.choice(power_deps_depb)

# cs_power_deps_depb
power_deps_depb = np.arange(start=30, stop=90, step=30)
reduced_power_depb = random.choice(power_deps_depb)

# cs_power_deps_depb
power_deps_depb = np.arange(start=30, stop=120, step=30)
reduced_power = random.choice(power_deps_depb)

# cs_power_deps_depb
power_deps_oppb = np.arange(start=30, stop=120, step=30)
reduced_power_oppb = random.choice(power_deps_depb)

return reduced_power_opps, reduced_power_depb, reduced_power_oppb

# 4. network utilization
# gc_power_opps, gc_power_deps (Netzauslastung)
Expand Down

0 comments on commit 59d674f

Please sign in to comment.