Batteries and charging¶
An electric fleet can carry a battery, so a fleet-sizing study counts the time
vehicles lose to charging. A fleet without battery behaves exactly as before.
The battery¶
Add a battery to a fleet, as the fleet's battery key:
| Field | Meaning |
|---|---|
capacity_kwh |
kWh, > 0 |
initial |
state of charge (SoC) at the start, 0-1, default 1.0 |
low |
SoC below which a freed vehicle goes to charge |
target |
SoC charged to, > low, default 1.0 |
strategy |
threshold (default), opportunity, swap or scheduled |
opportunity_below |
opportunity only: an idle vehicle below it charges when a point is free |
schedule |
scheduled only: a record of the schedules section; a value > 0 is a charging window |
chargers |
optional list of charger names; default every charger of the matching kind |
The vehicle drains at the fleet's power kW: busy while driving (loaded, empty
or to a charger) and handling, idle while idle, nothing while charging. A
battery fleet's own resource has no energy row: the grid sees the chargers.
Chargers¶
Declare chargers in the model's chargers:
| Field | Meaning |
|---|---|
name, node |
unique name; a node of the path network |
kind |
charge (default) or swap |
points |
vehicles served at once, >= 1 |
power_kw |
kW per point; for swap, the rate removed packs recharge at |
knee, taper_floor |
default 0.8 and 0.1: above knee the power falls linearly to taper_floor x power_kw at 100 % |
efficiency |
grid kWh = battery kWh / efficiency, default 1.0 |
swap_time |
swap only: a number or distribution, in swap_time_unit (default the model unit) |
spare_packs |
swap only, optional: a swap waits for a charged pack; without it packs are unlimited |
Strategies¶
- Threshold. A vehicle released below
lowdrives to a charger (empty travel), queues for a point, charges totarget, then is free again. It keeps its fleet slot the whole time, so it counts as busy and cannot be dispatched. - Opportunity. A vehicle going idle below
opportunity_belowdrives to a charger only if a point is free there now. It stays dispatchable: a request ends the charge at that instant with the SoC reached. Belowlowthe threshold rule applies. - Swap. As threshold, at a
swapstation: the stay isswap_timeand the SoC becomes 1.0. The removed pack recharges at the station'spower_kw. - Scheduled. During a window of the schedule, each vehicle released below
targetcharges untiltargetor the window's end, whichever comes first; idle vehicles start an interruptible charge when a window opens. Outside windows the threshold rule still applies.
A vehicle picks the charger with the least drive time plus expected wait (its place
in line behind the vehicles on a point, waiting or on their way, times the mean
stay), ties by name. It never stops mid-job: the SoC may go below zero, which counts
as one depleted event per crossing and is logged once per fleet. Size the
battery or low so the count stays at 0. A battery fleet with no charger it can
drive to gets W_NO_CHARGER at load, naming the node to join; its vehicles then
simply never charge.
Results¶
- The
charging_summaryframe, per charger: sessions, point utilization, mean wait and queue, grid kWh, peak kW and energy cost. Each charger also has a row in the energy and cost summaries. Grid kWh is what was drawn in the observed window: a session still running at the end counts what it has drawn so far, and one spanning the warm-up counts only from the reset. - The
battery_summaryframe, per fleet: share of time charging, charge trips, minimum and mean final SoC, depleted count and drain kWh. - Scenario and optimizer keys:
charger/<name>/Grid kWh,battery/<fleet>/Charging %and the other columns. - Playback shows a charger at its node with its occupied points, and a SoC bar on each vehicle.
A charger inside a submodel definition is a template (node $base or $bay): each instance
gets its own copy, <instance>/<name>, which is what the results show.
Not modelled¶
A site power cap or load management, battery ageing, charging while moving and per-vehicle differences within a fleet. A warm-up never resets the SoC.