前言
电动车路径规划和传统车辆不一样——不仅要考虑距离,还要考虑电量够不够、中途在哪充电、充电排多久的队。更关键的是,最短的路不一定最省电,最省电的路可能最费时间,三个目标之间存在天然的矛盾。
目前关于电动车充电的路径规划相关研究并没有烂大街,选择这个研究方向或许是个不错的选择,投稿也相对容易一些。
今天分享一个完整的 MATLAB 项目:用MOPGA 多目标向光生长算法来求解这个问题,找出一组 Pareto 最优路径,供决策者根据实际需求选择。
问题是什么?
一辆电动车要在 31 个节点组成的物流网络中跑一圈,每个节点恰好访问一次,最后回到出发点。
这就是经典的旅行商问题(TSP),但加了电动车的约束:
-
电池容量有限(60 kWh),跑着跑着会没电
-
只有部分节点有充电站(31 个节点中 17 个可充电)
-
电量低于 10% 时必须找地方充电,充电要排队、要花时间
三个优化目标:
| 目标 | 含义 | | --- | --- | | 最小化总距离 | 路径越短越好 | | 最小化总能耗 | 越省电越好 | | 最小化总耗时 | 行驶时间 + 充电时间 + 排队时间,越快越好 |
这三个目标互相矛盾:抄近路可能经过高能耗路段,绕远路省电但费时间。不存在一个"全局最优",只能找一组权衡解(Pareto 最优解集),让决策者自己挑。
数据从哪来?
数据来自于Kaggle公开数据集:www.kaggle.com/datasets/da…
1. 节点数据集(location_dataset.csv)
-
31 个地理节点,分布在约 95x95 km 的区域
-
6 种类型:城市、港口、仓库、发电厂、工业区、矿区
-
其中城市和港口设有充电站
2. EV 充电数据集(ev_charging_dataset.csv)
-
64,945 条电动车充电记录
-
包含路况(Good / Average / Poor)、天气(Clear / Cloudy / Rain / Storm)等环境信息
-
从中提取关键参数:基础能耗率(0.18 kWh/km)、平均充电功率(50 kW)、平均排队时间(5 min)
路况、天气约束
现实中,同样一段路,路况差或者遇到暴风雨,能耗和速度会差很多。项目从 EV 数据集中提取了路况和天气对能耗与速度的影响,构建了两张倍率表:
能耗倍率(以基准 1.0 为参考):
| | 晴天 | 多云 | 雨天 | 暴风雨 | | --- | --- | --- | --- | --- | | 路况好 | 1.00 | 1.05 | 1.15 | 1.30 | | 路况一般 | 1.15 | 1.20 | 1.35 | 1.50 | | 路况差 | 1.35 | 1.45 | 1.60 | 1.80 |
可以看到,路况差 + 暴风雨时能耗是正常情况的 1.8 倍。
速度倍率(路况因子 x 天气因子):
-
路况:好 100% → 一般 85% → 差 70%
-
天气:晴 100% → 多云 95% → 雨 80% → 暴风雨 60%
路况差 + 暴风雨时速度只有正常的 **42%**(0.70 x 0.60),大幅增加行驶时间。
成本矩阵怎么设计的?
为了让三个目标之间产生真正的冲突(而不是"距离短=能耗低=时间少"的一边倒),每条边的能耗和时间由三个成分叠加:
能耗 = 基础固定成本 + 地形梯度 + 距离相关 + 路面随机因素
-
地形梯度:北部地势高,能耗更大(模拟爬坡)
-
路面随机因素:每条边有独立的随机能耗,代表局部坡度、路面质量、逆风等不可预测因素
时间 = 基础固定延迟 + 拥堵梯度 + 行驶时间 + 交通随机因素
-
拥堵梯度:东部靠近城区,交通延迟更大
-
交通随机因素:代表局部限速、施工、红绿灯密度等
这样设计的结果是:
-
能耗最优路径偏好南部(地势低)
-
时间最优路径偏好西部(拥堵少)
-
距离最优路径走自己的最短几何路线
三个目标各自偏好不同区域,不存在一条路能同时满足所有目标。
用了什么算法?
-
算法一:MOGWO(多目标灰狼优化)
-
算法二:MOPGA(多目标向光生长算法)
环境选择机制:NSGA-II
两个算法都用了 NSGA-II 的环境选择:
-
非支配排序:Pareto 最优解优先保留
-
拥挤度距离:同层解中,越"孤立"的越优先保留(防止解扎堆)
这个机制确保种群既收敛到好的前沿,又保持多样性。
跑出来效果怎么样?
两个算法都成功找到了 100 个 Pareto 最优解,形成一个三维的权衡曲面。
从中选出 4 条代表性路径:
| 路径策略 | 距离 | 能耗 | 耗时 | 充电次数 | | --- | --- | --- | --- | --- | | 最短距离 | 536 km | 268 kWh | 1720 min | 5 | | 最低能耗 | 958 km | 214 kWh | 1616 min | 4 | | 最短时间 | 792 km | 247 kWh | 1409 min | 5 | | 折中方案 | 747 km | 226 kWh | 1482 min | 4 |
可以看到:
-
最短距离的路径能耗反而最高(经过了高能耗路段)
-
最低能耗的路径距离最长(绕道选择低能耗路段)
-
最短时间是独立的第三种路径结构
-
四条路径在地图上走向完全不同,说明三个目标确实存在真实冲突
MOGWO结果:
MOPGA结果:
两个算法的对比:
项目包含什么?
完整 MATLAB 代码,开箱即用:
所有图表同时保存 .png 和 .fig 格式。
而且也不用担心不会写原理,我这里都已经为你写好了。
代码获取
或者点击下方 阅读原文 获取代码。