2026年ACM TCH,动态救护车路径优化:结合 K-means 聚类与多目标粒子群算法两阶段策略

目录


1.摘要

本文针对多伤员、急救资源不足动态救护车路径问题(DARP),将患者分为强弱两类紧急度,构建了最小化行驶距离与接送时间的双目标数学模型。针对NP-hard问题,本文提出一种两阶段求解算法(k-means-MOPSO):首先通过k-means算法对空间伤员进行区域聚类,再利用多目标粒子群算法优化救护车调度路径。实验通过Hypervolume、Spacing和R2指标,验证了该算法相较于NSGA-III、NSGA-II及SPEA2等前沿多目标算法优越性能。

2.问题描述

考虑灾害后多区域伤员救援,车辆从起点出发,访问伤员点并返回或转运,需求可随时间出现。HEI 需要立即优先处理,SEI 可延后或现场处理。模型追求更短行驶距离、更短响应/乘车时间和更高优先级服务,同时满足分配、容量、流守恒、时间窗和二元变量约束。目标为最小化距离、时间和优先级代价:

min ⁡ ( f 1 ( X i j ) + f 2 ( X i j ) + f 3 ( X i j ) ) \min \left(f_1(X_{ij})+f_2(X_{ij})+f_3(X_{ij})\right) min(f1(Xij)+f2(Xij)+f3(Xij))

距离目标为:

f 1 ( X i j ) = ∑ i ∈ N ∑ j ∈ N ∑ k ∈ K ∑ t ∈ T d i j x i j k t f_1(X_{ij})=\sum_{i\in N}\sum_{j\in N}\sum_{k\in K}\sum_{t\in T} d_{ij}x_{ijkt} f1(Xij)=i∈N∑j∈N∑k∈K∑t∈T∑dijxijkt

时间目标为:

f 2 ( X i j ) = ∑ i ∈ N ∑ k ∈ K ∑ t ∈ T t i j y i k t f_2(X_{ij})=\sum_{i\in N}\sum_{k\in K}\sum_{t\in T} t_{ij}y_{ikt} f2(Xij)=i∈N∑k∈K∑t∈T∑tijyikt

优先级目标为:

f 3 ( X i j ) = ∑ i ∈ N ∑ k ∈ K ∑ t ∈ T p r i o r i t y i t y i k t f_3(X_{ij})=\sum_{i\in N}\sum_{k\in K}\sum_{t\in T} priority_{it}y_{ikt} f3(Xij)=i∈N∑k∈K∑t∈T∑priorityityikt

3.求解方法

K-means 先把空间相近、需求相似的伤员分成若干簇,降低每辆车面对的搜索范围;MOPSO 再在各簇内或簇间寻找非支配路径集合。

Cluster-First Method: K-Means Algorithm

K-means 以伤员位置和相关属性为输入,通过迭代更新簇中心,使同簇点距离更近。聚类结果相当于给救护车划分服务区域,减少跨区绕行。

Route-Second Approach: MOPSO

MOPSO 把每个粒子视为一组救护车路线。粒子根据自身历史最优和外部档案中的全局引导解更新,档案保存非支配解。算法同时考虑距离、时间和优先级,输出 Pareto 前沿。

4.实验结果

实验分为 SARP 与 DARP。SARP 基于 Augerat CVRP 数据改造,DARP 在此基础上加入动态新增需求、HEI/SEI 等特征。对照算法包括 k-means-NSGA-II、k-means-NSGA-III、k-means-SPEA2,以及部分静态场景中的 k-means-SA-TS、PA-PSO、GA。

5.参考文献

Zidi I, Issaoui B, El Khediri S, et al. Optimizing Dynamic Ambulance Routing Problem: A Two-Phase Strategy Combining K-means Clustering and Multi-Objective Particle Swarm OptimizationJ. ACM Transactions on Computing for Healthcare, 2026, 7(2): 1-26.

6.算法辅导·应用定制·读者交流

xx

相关推荐
梦帮科技3 分钟前
多任务权重流形融合:SLERP 球形线性插值、DARE 稀疏剪枝与多专家模型融合落地
人工智能·深度学习·算法·机器学习·tensorflow·聚类·剪枝
Tisfy5 分钟前
LeetCode 0020.有效的括号:栈匹配
算法·leetcode·字符串·题解·括号匹配
测试学习test23 分钟前
SPI读取W25Q64硬件驱动(HAL库)
数据库·stm32·嵌入式硬件·算法
迅猛龙办公室29 分钟前
Python实现斐波那契数列
算法
淡海水31 分钟前
02-01-原理篇-Mark-Sweep与变种算法
算法·unity·c#·游戏引擎·.net·gc
Navigator_Z33 分钟前
LeetCode //C - 1276. Number of Burgers with No Waste of Ingredients
c语言·算法·leetcode
keyipatience1 小时前
跳表详细解析
开发语言·数据结构·c++·算法·跳表
大侠归来1 小时前
cJSON 源码解析:parse_string 函数深入剖析
linux·网络·算法
余额瞒着我当琳2 小时前
C++ map 底层与AVL 树
开发语言·c++·算法
释厄6232 小时前
物理发展史·量子力学=节点2·牛顿力学=节点3·宇宙的语言算法AI
人工智能·算法·microsoft