基于出行链的电动汽车充电负荷仿真与配电网规划应用
2026/9/18 15:02:05 网站建设 项目流程

简介:这是一份关于电动汽车充电需求时空分析的学术文献PDF,面向电力系统调度、充电设施规划及汽车技术相关的研究人员与工程技术人员。文中基于出行链理论提出充电需求分析方法,通过3次B样条最小二乘曲线拟合电动汽车在不同停驻区域停驻时长的概率分布,结合蒙特卡洛法与NHTS2009数据构建用户一日出行链,进而设计两种充电行为并分析各停驻区域的充电需求,弥补了传统方法仅考虑夜间返家后充电、忽略日间充电需求的不足。该文章刊发于2017年《电力自动化设备》第37卷第8期,PDF内容涵盖引言、出行链理论概述、时空变量模拟、充电需求分析及结论等完整结构,并附有参考文献与图表,便于直接引用或方法复现。资源共1个文件,压缩包大小仅564KB,目前已有357人学习下载,适合电气工程专业学生、充电设施规划人员及相关科研工作者阅读参考。

1. 为什么要从“出行链”而不是“统计数据”倒推充电负荷

做城市充电设施规划或小区配电网扩容时,最常见的做法是拿区域里电动汽车保有量乘以单车平均功率,再乘一个同时率系数,估算出“大概要多少千瓦”。这套粗放算法在车少的时候够用,但一旦渗透率上来,负荷曲线会在晚高峰叠加出严重尖峰,配变过载、台区重载的问题会集中爆发。真正的问题是:充电行为在时间和空间上分布极不均匀,而决定这种分布的,是车主每天的活动序列——几点出门、去哪些地方、停多久、剩余电量还有多少。

从出行链(trip chain)入手的充电需求分析方法,把“人的活动轨迹”作为建模主线:一辆车一天的行程被拆成一串有序的活动节点(家→公司→商场→家),每个节点都具备到达时间、停留时长、行驶里程和充电可能性。只要把路网距离、能耗模型和充电决策规则接进去,就可以逐个车主地还原“什么时间、在哪个位置、以多大功率、充了多少电”。这种方法输出的不是一根平均负荷棒图,而是带时间轴和空间坐标的充电需求时空分布,可以直接驱动充电桩选址、配电网容量校核和有序充电策略设计。

本文适合三类人:做城市充电基础设施规划的工程师、研究电动汽车与电网互动的算法工程师、以及需要在项目中快速搭一套需求仿真原型的技术负责人。下文会把这套方法从模型原理讲到可运行的 Python 骨架,并给出关键参数设定与常见的坑。

2. 建立微观出行链模型:从活动日志到车辆状态转移

2.1 为什么活动序列比单次出行更能反映充电需求

单次出行模型只描述“从 A 到 B”,无法回答“到达 B 之后会不会充电”,因为充不充取决于车辆当前剩余电量、接下来的计划行程以及 B 点的充电条件。出行链模型把全天活动按时间排序,车辆状态(位置、剩余电量、驻停/行驶)随每个链节依次更新。只有当所有链节被串起来,才能捕捉到一个关键现象:充电决策受“下一段行程”的预期能耗约束

举例来说,一名车主早上从家出发到公司(10 公里),中午去餐厅(5 公里),下午去商场(8 公里),晚上回家。若只做单次出行模拟,每段行程的充电概率是独立抽取的;但在链式模型里,车辆在商场停驻时电量剩余 45%,而回家还需消耗 12% 电量,那么商场是否充电取决于“45% - 12% = 33% 是否低于车主心理阈值”——这个阈值通常取 20%~30%。这种前后依赖关系是统计方法无法体现的。

2.2 出行链的数学表示与状态转移

一条出行链可以形式化为一组有序状态:

L = [(origin_1, dest_1, t_depart_1, t_arrive_1, dist_1), (origin_2, dest_2, t_depart_2, t_arrive_2, dist_2), ...]

每个链节定义一段行驶(从上一个驻停点出发到下一个目的地)。车辆状态转移则围绕两个核心变量:SOC(荷电状态)和位置。

2.2.1 行驶段消耗

行驶段能耗取决于里程和单位里程能耗,常见做法是引入速度修正系数:

def energy_consumed(distance_km, avg_speed_kmh): # 基础能耗:约 0.15 kWh/km(中型纯电车参考值) base_consumption = 0.15 # 速度修正:低速频繁启停能耗更高,高速风阻增大 if avg_speed_kmh < 30: factor = 1.25 elif avg_speed_kmh < 60: factor = 1.1 elif avg_speed_kmh < 90: factor = 1.0 else: factor = 1.15 return distance_km * base_consumption * factor

这段代码先以 0.15 kWh/km 作为基准能耗,再按平均车速施加修正系数。逻辑上,低速段(城区拥堵)由于频繁加减速,单位能耗上升;高速段(快速路)则因风阻增加而能耗上升。实际项目里,基准能耗应根据车型分布加权,不能所有车统一取 0.15。

2.2.2 驻停段充电决策

到达目的地后,车辆进入驻停状态。此时是否充电按以下优先级判断:

  1. SOC 低于强制充电阈值(如 20%):必须充电,否则后续行程无法完成。
  2. 下一段行程能耗超过当前 SOC 可支撑里程:必须充电。
  3. 其他情况:按概率模型决定,概率与驻停时长、充电便利性正相关。

2.3 活动目的地与链式结构的抽取策略

出行链的生成方式直接决定仿真结果的真实度。实操中推荐按“先定链结构,再填活动属性”的两步法:

  • 第一步:从居民出行调查数据(NHTS、城市综合交通调查)中抽取链类型分布。常见链类型包括:H-W-H(家-工作-家),H-W-S-H(家-工作-购物-家),H-S-W-H(家-购物-工作-家)等。若没有调查数据,可按城市功能分区比例自行设定链类型概率。
  • 第二步:对每条链,按出发时间分布(通常早高峰 7:00-9:00)、停留时长分布(工作停留 8 小时,购物停留 1-2 小时)抽样具体时间值。

车辆 SOC 初始值一般假设为 80%~100%(假设夜间充满),后续逐段扣除能耗。每次充电后 SOC 按充电量递增,快充桩功率取 60 kW,慢充桩取 7 kW。

3. 用 Python 搭建最小可运行的充电需求仿真骨架

3.1 定义出行链数据结构

推荐用字典或 dataclass 表示单条出行链,并用列表承载一整天的活动序列。以下代码定义了一个可扩展的结构,后续接入不同数据源时不必改动核心逻辑。

from dataclasses import dataclass from typing import List, Tuple @dataclass class Trip: """单段出行""" origin: str # 起点位置类型:home/work/shopping/other destination: str # 终点位置类型 depart_time: float # 出发时刻(小时,如 8.5 表示 8:30) arrive_time: float # 到达时刻 distance_km: float # 行驶里程 @dataclass class TripChain: """一天内的出行链""" chain_id: int trips: List[Trip] initial_soc: float = 0.9 # 出发时 SOC,90%

关键点:depart_timearrive_time的差值就是行驶时间,中间若有驻停,由前一条 Trip 的arrive_time与后一条 Trip 的depart_time之间的间隔决定。这种结构让“链”天然携带时间顺序,方便后续按时间轴聚合负荷。

3.2 按时间轴推进的充电事件判定

有了出行链,接下来按时间顺序逐段模拟车辆状态,将充电事件记录到日志列表中。这里的核心逻辑是:行驶段更新 SOC,驻停段判断充电并更新 SOC。

import random def simulate_charging(chain: TripChain, forced_threshold: float = 0.2, charger_power: float = 7.0, prob_coeff: float = 0.6) -> List[dict]: """按出行链顺序模拟充电事件 返回: [{start_time, end_time, location, power, energy}] """ soc = chain.initial_soc battery_capacity = 60.0 # kWh events = [] for idx, trip in enumerate(chain.trips): # 1. 行驶段:扣除能耗 soc -= energy_consumed(trip.distance_km, trip.distance_km / max(trip.arrive_time - trip.depart_time, 0.1)) # 2. 到达目的地后,判断是否充电 if idx == len(chain.trips) - 1: break # 最后一段到家,默认家充由夜间统一处理 # 计算驻停时长 next_trip = chain.trips[idx + 1] dwell_time_h = next_trip.depart_time - trip.arrive_time if dwell_time_h <= 0: continue # 下一段行程的预期能耗 next_energy = energy_consumed( next_trip.distance_km, next_trip.distance_km / max(next_trip.arrive_time - next_trip.depart_time, 0.1) ) # 决策逻辑 need_charge = False if soc < forced_threshold: need_charge = True elif soc * battery_capacity - next_energy * 1.2 < 0.1 * battery_capacity: need_charge = True # 完成下一段后剩余不足 10% else: # 概率模型:驻停越长越可能充,prob_coeff 为基准概率 prob = min(0.9, prob_coeff * (dwell_time_h / 2.0)) need_charge = random.random() < prob if need_charge: # 充电量:充满或充到驻停结束 energy_needed = (1.0 - soc) * battery_capacity energy_max = charger_power * dwell_time_h energy_charged = min(energy_needed, energy_max) soc += energy_charged / battery_capacity events.append({ 'start': trip.arrive_time, 'end': trip.arrive_time + energy_charged / charger_power, 'location': trip.destination, 'power': charger_power, 'energy': energy_charged }) return events

这段代码的逻辑分三层:第一层是行驶段 SOC 更新,基于能耗模型扣除电量;第二层是充电必要性判断,先看 SOC 是否跌破强制阈值,再看能否支撑下一段行程,如果两项都不触发则走概率模型;第三层是充电量计算,按“充满所需电量”和“驻停时长内可充电量”取小值,避免出现充电时间超出驻停时间的逻辑错误。

参数说明:forced_threshold=0.2表示剩余电量低于 20% 时强制充电;prob_coeff=0.6是概率模型的基准系数,驻停 2 小时对应 0.6 的充电概率;charger_power=7.0默认慢充功率,若模拟快充场景可改为 60.0。实际使用中,energy_consumed里传入的平均速度计算方式比较粗糙,在路网距离已知的情况下,建议将平均速度按道路等级拆分,而不是用距离除以总时间。

3.3 聚合生成区域负荷曲线

单台车的充电事件只是离散的矩形脉冲,要得到配电台区或城市片区的负荷曲线,需要将所有车辆的充电事件按时间切片累加。

import numpy as np def aggregate_load(events_list: List[List[dict]], time_slot_min: int = 15, horizon_h: int = 24) -> np.ndarray: """将多辆车的事件聚合成负荷曲线 返回: 长度为 horizon_h * 60 / time_slot_min 的数组,单位 kW """ n_slots = int(horizon_h * 60 / time_slot_min) load = np.zeros(n_slots) for vehicle_events in events_list: for evt in vehicle_events: start_idx = int(evt['start'] * 60 / time_slot_min) end_idx = int(evt['end'] * 60 / time_slot_min) load[start_idx:end_idx] += evt['power'] return load

参数说明:time_slot_min=15是时间分辨率,工程项目中 15 分钟粒度足以反映负荷峰谷形态;若用于谐波或电压分析,可加密到 1 分钟。horizon_h=24是仿真时间窗。这段代码没有处理跨天事件,若充电结束时间超过 24 点,需要截断或循环移位。

4. 关键参数校订:从出行调查数据到充电行为模型

4.1 出行链类型分布如何影响结果

出行链类型分布是整条模型链中最敏感的输入。以下是一组城市通勤场景的参考分布:

链类型含义占比(工作日)典型充电场景
H-W-H家-工作-家42%工作地慢充、夜间家充
H-W-S-H家-工作-购物-家18%商场快充、工作地慢充
H-S-W-H家-购物-工作-家11%商场快充
H-O-H家-其他-家16%目的地快充
H-W-W-H家-工作-工作-家8%全天多地停驻
其他含多目的链5%随机

占比越高的链类型,其充电事件对负荷曲线的贡献权重越大。若把 H-W-H(两点一线)占比调高到 60%,晚高峰的充电负荷会明显集中在 18:00-21:00 的家充时段;若把含购物环节的链占比调高,下午 14:00-17:00 的商场快充负荷会显著抬升。因此,在缺少实测数据时,至少要按城市属性(职住平衡型、商业中心型、混合型)区分链分布的基准值。

4.2 SOC 阈值与充电功率的敏感性

下表中的参数共同决定充电负荷总量与峰谷形态:

参数典型范围对结果的影响
初始 SOC0.8~1.0影响全天总充电量,初始值越低,各时段充电概率越高
强制充电阈值0.15~0.3阈值越高,白天快充事件越多,负荷曲线越平缓
慢充功率3.5~7 kW直接影响家充负荷高度与持续时间
快充功率30~120 kW影响白天充电功率峰值,功率越高,脉冲越尖锐
驻停充电概率系数0.4~0.8系数越高,充电事件越多,整体负荷抬升

工程上建议用蒙特卡洛做多轮抽样:每次仿真随机抽取一组参数(从上述范围中按均匀分布或三角分布取值),运行 1000 次后统计负荷曲线的 5%~95% 分位带。这样做既能覆盖个体行为差异,也能为配电网规划提供偏保守的区间估计。

4.3 空间维度怎么加进去

上述代码只输出了时间维度的负荷,实际充电需求分析必须落到空间位置。常见做法是引入地理网格:将城市划分为 500m×500m 或 1km×1km 的栅格,每个 POI 点归属一个网格。出行链中的origindestination不再只存类型标签,而是存储网格编号,充电事件累加时按location字段映射到网格。

网格化的价值在于:可以输出“某网格在 18:00 的充电需求功率”,直接与配变容量对照,定位重载风险区域。这一步在代码上并不复杂——将aggregate_loadlocation分组调用即可,但需要提前准备好路网距离矩阵和 POI 空间分布数据。

5. 数据获取的务实路径与精度取舍

5.1 没有居民出行调查怎么办

理想数据源是城市综合交通调查(每 5-10 年一次)和 GPS 轨迹数据,但这两类数据通常不公开。退而求其次的方案有三个:

  • 用手机信令数据脱敏后的 OD 分布反推活动链——适合运营商或规划院内部项目。
  • 用 POI 密度和土地利用类型构造出行生成率——精度低但快速可用。
  • 参考美国 NHTS(全美家庭出行调查)或欧盟相关调查的链分布结构,按国内城市职住特征调整权重。

精度取舍原则:链类型分布与驻停时长分布的误差,会直接影响充电事件的时间分布。若没有本地数据,建议将驻停时长的方差调大 20%~30%,以覆盖行为异质性。

5.2 验证仿真结果是否可信

模型建好后,最常见的质疑是“你凭什么说曲线是对的”。标准化验证路径如下:

  1. 总量校验:将仿真得到的日均充电量除以区域内 EV 数量,与充电桩运营商的单桩日均充电量对比,偏差应在 ±15% 以内。
  2. 形态校验:抓取典型工作日的实际充电负荷曲线(可从电网侧负荷采集或充电平台 API 获取),对比峰谷出现时间窗口,峰现时差不应超过 1 小时。
  3. 空间校验:若手头有某商场的充电桩利用率数据,对比该网格内的仿真快充事件数与实际充电次数的量级。

第 2 条是收益最高的验证——即便总电量有偏差,只要峰谷趋势对得上,模型用于有序充电策略预评估就足够可靠。

6. 从需求分析到充电规划:三种进阶用法

6.1 有序充电策略的量化评估

出行链模型天然适合评估“错峰充电”的调控潜力。将充电事件中的start_time延后(模拟智能充电桩的延时启动),看配变负载率是否下降,以及延时会否导致 SOC 无法支撑次日出行的溢出事件。实现方式只需在simulate_charging后加一道后处理:将家充事件平移至电价低谷时段,并校验平移到次日凌晨 3:00 之前是否能让车辆充满。

6.2 快充与慢充配比寻优

给定充电需求时空分布后,用电网约束反推快慢充桩比例。常见做法是建立目标函数:最小化“未满足充电需求”与“设备投资”的加权和。出行链模型在这里的核心价值是:它知道每个网格在何时产生多少需求,因此可以按“网格级负荷峰谷差最小化”来分配慢充桩容量,而不是全市统一比例。

6.3 需求响应的潜力估算

若充电运营商要参与需求响应(削峰),需要知道“可平移负荷”的规模。从出行链模型输出的每个充电事件都有start_timeend_timelocation,可以据此计算:在保持车辆 SOC 不低于用户设定下限的前提下,最多能将多少 kW 的负荷从晚高峰移至凌晨。这个数字是需求响应容量申报的技术依据。

对一个仿真模型而言,最重要的不是参数多精确,而是决策链路完整可追溯。出行链方法把“人为什么在某个时间某个地点充电”的逻辑用结构化的方式固化了下来,后续无论是做配电网规划,还是做车网互动策略,都能在这个骨架上持续加肉而不会推倒重来。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询