一区直接冲!基于MOPGA-NSGA-II 的电动车多目标路径优化研究(考虑路况天气与充电约束)(MATLAB 实现)

0 阅读5分钟

前言

电动车路径规划和传统车辆不一样——不仅要考虑距离,还要考虑电量够不够、中途在哪充电、充电排多久的队。更关键的是,最短的路不一定最省电,最省电的路可能最费时间,三个目标之间存在天然的矛盾。

目前关于电动车充电的路径规划相关研究并没有烂大街,选择这个研究方向或许是个不错的选择,投稿也相对容易一些。

今天分享一个完整的 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 的环境选择:

  1. 非支配排序:Pareto 最优解优先保留

  2. 拥挤度距离:同层解中,越"孤立"的越优先保留(防止解扎堆)

这个机制确保种群既收敛到好的前沿,又保持多样性。


跑出来效果怎么样?

两个算法都成功找到了 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 格式。

而且也不用担心不会写原理,我这里都已经为你写好了。

图片


代码获取

mbd.pub/o/bread/YZW…

或者点击下方 阅读原文 获取代码。