MATLAB 实战复盘:集合覆盖模型 + 线性加权和法,搞定应急物流中心选址

一篇文献的完整复现,一条从"数据还原 → 模型初选 → 综合评价 → 可视化"的选址技术路线。

本文源自对李秀丽等《基于集合覆盖模型和线性加权和法的选址问题研究------以兰州和平高校聚集区应急物流中心选址为例》(《物流科技》2024 年第 47 卷第 17 期)的 MATLAB 复现,代码、数据、图表均已跑通并对齐原文结论。


一、研究背景:为什么要做应急物流中心选址

应急物流是突发事件(自然灾害、公共卫生事件、重大安全事故)下的"生命线"。它的核心矛盾在于:应急物资必须在极短的黄金时间内送达需求点,而设施选址一旦定错,后续的调度、库存、配送效率都会被"锁死"

本文的研究对象是兰州和平高校聚集区。这个区域的特点是人口高度集中、高校与居民区交错,一旦发生突发事件,对物资时效性的要求极高。文章把问题抽象为两步:

  1. 覆盖问题:在"20 分钟可达"的硬约束下,用最少数量、又能覆盖全部需求点的设施点,先做一轮"初选"。
  2. 评价问题:对初选筛出的候选点,用多指标综合评价,最终"择优"出一个最优选址。

这种"先覆盖、后评价 "的两阶段思路,恰好对应了两个经典运筹学工具------集合覆盖模型(Set Covering Model)线性加权和法(Linear Weighted Sum Method)

很多人在做选址时只盯着"距离最近"或"成本最低"单一目标,忽略了"全覆盖"这个硬约束和"多指标权衡"这个软需求。本文的价值正在于把两者串联起来,给出了一条可复现、可迁移的技术路线。


二、主要功能:这套代码到底做了什么

复现脚本 main.m 完成了三件事:

模块 内容 对应文献
数据复现 还原 9 个需求点、时空距离矩阵、评价指标体系与权重 图 1、表 1、表 2、表 4
方法复现 集合覆盖模型初选 + 线性比例变换标准化 + 线性加权和法评价 2.2、2.3 节
可视化 选址示意图、雷达图、权重分布图、加权总分对比图及 4 张补充图表 图 1、表 5、表 6

最终产出 8 张高清图片(300 dpi),并自动在命令行打印全部中间结果,方便核对复现是否与原文一致。


三、技术路线:一张图看懂全流程

整体流程可以概括为四个阶段:


四、算法步骤详解

4.1 集合覆盖模型:先解决"全覆盖"的硬约束

集合覆盖问题的标准形式是:在候选设施点集合中,选出数量最少的子集,使其覆盖全部需求点。用数学语言描述:

min⁡∑j∈Jxj\min \sum_{j \in J} x_jminj∈J∑xj

s.t.∑j∈Nixj≥1,∀i∈I\text{s.t.} \quad \sum_{j \in N_i} x_j \ge 1, \quad \forall i \in Is.t.j∈Ni∑xj≥1,∀i∈I

其中 xj∈{0,1}x_j \in \{0,1\}xj∈{0,1} 表示是否在 jjj 点建站,NiN_iNi 是"能覆盖需求点 iii"的候选点集合。由于原文假设每个备选点服务能力无上限,这里只需考虑覆盖距离约束(≤ 20 min),无需容量约束,问题被大大简化。

具体步骤如下:

Step 1:构建时空距离矩阵。 依据《道路交通安全法实施条例》中"同方向只有 1 条机动车道的城市道路限速 50 km/h"推算各需求点之间的"时间距离"(分钟)。两需求点间时间距离 ≤ 20 min 记为"可覆盖",否则为 Inf

Step 2:构建覆盖矩阵。 定义 cover(i,j) = 1 表示需求点 iii 处于以 jjj 为设施点的 20 min 服务范围内,并据此算出:

  • A(j)A(j)A(j):以 jjj 为设施点所能覆盖的需求点集合(服务集合
  • B(i)B(i)B(i):能覆盖需求点 iii 的候选设施点集合(备选集合

对应原文表 1,复现得到的 9 个服务集合如下:

编号 j A(j)(20min 内覆盖的需求点)
1 {1,2,3,4}
2 {1,2,3}
3 {1,2,3,4,5}
4 {1,3,4,5,6,7}
5 {3,4,5,6}
6 {4,5,6,7,8}
7 {4,6,7,8}
8 {6,7,8,9}
9 {8,9}

Step 3:支配集约简。 这是集合覆盖问题里的一个经典剪枝技巧:若某需求点的覆盖集合是另一个需求点覆盖集合的子集,则该点可被"支配"删除(因为选了那个更大的点,就自动覆盖了这个更小的点)。

例如 A(2)={1,2,3}⊂A(3)={1,2,3,4,5}A(2)=\{1,2,3\} \subset A(3)=\{1,2,3,4,5\}A(2)={1,2,3}⊂A(3)={1,2,3,4,5},所以 2 号点被支配、可删除。依次消去后,保留的候选点为:

{3,4,6,8}\{3, 4, 6, 8\}{3,4,6,8}

薇乐如意园(3)、薇乐花园(4)、兰州工商学院(6)、润新佳苑(8)

Step 4:穷举最小覆盖。 候选点规模小(仅 4 个),直接枚举全部非空子集(24−1=152^4-1=1524−1=15 种),找出能覆盖全部 9 个需求点的最小组合。结果唯一的 2 点组合为:

{3,8}\{3, 8\}{3,8}

D3(薇乐如意园)覆盖 1~5 号需求点,D8(润新佳苑)覆盖 6~9 号需求点,实现全区域覆盖。

matlab 复制代码
% 穷举最小覆盖(核心代码)
for mask = 1:(2^nCand - 1)
    sel = candidateIdx(logical(bitget(mask, 1:nCand)));
    covered = unique([A{sel}]);
    if numel(covered) == nPoint && numel(sel) < minNum
        minNum = numel(sel); minCombos = {sel};
    end
end

4.2 线性加权和法:再解决"哪个更好"的软权衡

集合覆盖模型只回答了"至少要几个、哪几个",但多个最优组合并存时(这里是 {3,8} 一组),仍需要一个评价机制来"择优"。文章用 7 个指标 + 线性加权和法对 D3、D8 两个候选点打分。

Step 1:指标体系与权重。 7 个指标中有 6 个是效益型 (越大越好),1 个是成本型(越小越好),权重之和为 1:

指标 类型 权重
交通便利性 效益型 0.33
水电通讯等辅助设施 效益型 0.10
所在区域需求量 效益型 0.05
物流专业人才的可获得性 效益型 0.13
覆盖能力 效益型 0.15
投建成本 成本型 0.20
服务柔性 效益型 0.04

Step 2:定性指标量化(七档量化表)。 除"所在区域需求量"是定量指标外,其余定性指标统一映射到 0~10 分:

  • 效益型:最低 0 / 很低 1 / 低 3 / 一般 5 / 高 7 / 很高 9 / 最高 10
  • 成本型:最高 10 / 很高 9 / 高 7 / 一般 5 / 低 3 / 很低 1 / 最低 0

量化结果矩阵 XXX(7 行指标 × 2 列候选点)为:

指标 薇乐如意园(D3) 润新佳苑(D8)
交通便利性 7 5
水电通讯等辅助设施 9 5
所在区域需求量 8 3
物流专业人才的可获得性 7 3
覆盖能力 7 7
投建成本 7 3
服务柔性 7 5

Step 3:线性比例变换标准化。 为消除量纲、统一方向,采用线性比例变换:

  • 效益型:rij=xijmax⁡jxijr_{ij} = \dfrac{x_{ij}}{\max\limits_j x_{ij}}rij=jmaxxijxij
  • 成本型:rij=min⁡jxijxijr_{ij} = \dfrac{\min\limits_j x_{ij}}{x_{ij}}rij=xijjminxij

Step 4:线性加权求和。 加权总分定义为:

U(Ai)=∑j=1nwj⋅rijU(A_i) = \sum_{j=1}^{n} w_j \cdot r_{ij}U(Ai)=j=1∑nwj⋅rij

最终结果:

U(薇乐如意园)=0.8858>U(润新佳苑)=0.7443U(\text{薇乐如意园}) = 0.8858 > U(\text{润新佳苑}) = 0.7443U(薇乐如意园)=0.8858>U(润新佳苑)=0.7443

最优选址:薇乐如意园(D3),与原文结论完全一致。


五、公式原理小结

整篇文章的方法内核其实很简洁,就三个公式:

(1)集合覆盖模型

min⁡∑jxj,∑j∈Nixj≥1\min \sum_{j} x_j, \quad \sum_{j \in N_i} x_j \ge 1minj∑xj,j∈Ni∑xj≥1

(2)线性比例变换标准化(区分指标方向)

rij=xijxjmax⁡ (效益型),rij=xjmin⁡xij (成本型)r_{ij} = \frac{x_{ij}}{x_j^{\max}} \ (\text{效益型}), \quad r_{ij} = \frac{x_j^{\min}}{x_{ij}} \ (\text{成本型})rij=xjmaxxij (效益型),rij=xijxjmin (成本型)

(3)线性加权和法

Ui=∑jwjrij,∑jwj=1U_i = \sum_j w_j r_{ij}, \quad \sum_j w_j = 1Ui=j∑wjrij,j∑wj=1

三个公式环环相扣:覆盖模型负责"删得对",标准化负责"比得公平",加权和负责"选得优"。


六、参数设定一览

参数 取值 说明
需求点数量 9 高校聚集区人口集中点
服务半径 R_service 20 min 应急物流时效性标准
道路限速依据 50 km/h 《道路交通安全法实施条例》
候选点(支配集约简后) {3,4,6,8} 集合覆盖初选
最小覆盖组合 {3,8} 2 个设施点覆盖全部 9 点
指标数量 7 6 效益型 + 1 成本型
权重向量 0.33, 0.10, 0.05, 0.13, 0.15, 0.20, 0.04 和为 1
量化分值 0~10(七档) 效益型/成本型方向相反

注意:需求点坐标是示意坐标(依据相对方位人工布置,仅用于可视化),不是精确经纬度。这一点在脚本里也明确标注了,避免读者误解为真实地理坐标。


七、运行环境

  • 运行环境 :MATLAB R2024b(Windows)
    复现步骤:

八、结果解读(配图)

图 1:选址结果示意图

图中蓝色虚线圆是 D3(薇乐如意园)的覆盖范围,覆盖 1~5 号需求点;橙色虚线圆是 D8(润新佳苑)的覆盖范围,覆盖 6~9 号需求点。绿色方块是另外两个候选点(4、6 号),星形是最终确定的最优中心。

图 2:标准化指标雷达图

雷达图直观地展示了两个候选点在 7 个维度上的标准化得分。可以明显看出:D3 在"交通便利性""水电通讯""区域需求量""人才可获得性"上全面领先,D8 仅在"投建成本"(成本型标准化后反而更高)上占优。这也解释了为什么 D3 能胜出。

图 3:指标权重分布图

权重分布揭示了决策偏好:交通便利性(0.33)与投建成本(0.20)合计超过一半,是选址中最重要的两个维度。这说明应急物流中心既强调"送得快",也强调"建得起"。

图 4:加权总分对比图

最终加权总分 0.8858 vs 0.7443,D3 明显占优。这张图是决策的"最后一锤"。

图 5~8:补充图表

这四张补充图分别展示了:20min 覆盖网络关系(图 5)、原始量化值分组对比(图 6)、标准化矩阵热力图(图 7)、以及各指标对总分的加权贡献堆积(图 8)。热力图尤其直观------D3 那一列几乎全是 1.0(深色),只有"投建成本"一格偏浅。


九、应用场景

这条"集合覆盖 + 线性加权和"的技术路线,具有很强的通用性,可以迁移到:

  • 应急/救灾物资储备库选址:用服务半径覆盖受灾点,用多指标择优;
  • 消防站、急救中心、派出所选址:本质都是"在时效约束下覆盖需求点";
  • 充电桩、快递驿站、社区团购自提点选址:覆盖约束换成步行/骑行距离即可;
  • 5G 基站、共享单车投放点布局:把"时间距离"换成"信号覆盖/服务半径"。

可扩展方向包括:加入容量约束 (把集合覆盖升级为"容量约束设施选址")、引入 P-中值/P-中心模型 、用 AHP/熵权法 替代主观权重、用 GIS 真实路网距离替代人工布置的示意坐标等。


十一、总结

本文完整复现了《物流科技》2024 年的一篇选址研究,并给出可运行的 MATLAB 代码与 8 张图表。结论可概括为:

  1. 集合覆盖模型把"全覆盖"从口号变成约束,初选出候选点 {3,4,6,8},并锁定最小覆盖组合 {3,8};
  2. 线性比例变换 + 线性加权和法 在 7 个指标上对两个候选点打分,最终以 0.8858 vs 0.7443 选定薇乐如意园为最优应急物流中心;

如果这篇文章对你有帮助,欢迎点赞、在看、转发。完整的 MATLAB 代码与数据已整理好,关注后可获取。

声明:本文为技术复现与学习笔记,文中结论均基于原文献数据与方法,需求点坐标为示意坐标,仅供教学与研究参考,不构成实际选址决策依据。

完整源码私信回复MATLAB 实战复盘:集合覆盖模型 + 线性加权和法,搞定应急物流中心选址

相关推荐
NoteStream3 小时前
MATLAB绘制带置信区间的折线散点图(科研绘图模板)
开发语言·matlab
简简单单做算法3 小时前
基于遗传算法和贝叶斯联合优化的BiLSTM(GA-BO-BiLSTM)一维时间序列预测算法matlab仿真
matlab·一维时间序列预测·ga-bo-bilstm·遗传和贝叶斯联合优化
程高兴17 小时前
三相两电平光伏MPPT定步长扰动观察法Simulink
matlab
CAE3201 天前
BPM-Matlab光束传播法光学仿真
matlab·bpm·光束传播法
Evand J2 天前
【MATLAB例程,车联网8】MPC网联车辆节能跟驰控制:速度跟踪、间距约束与能耗优化。附MATLAB完整代码的下载链接
开发语言·matlab·车联网·调度·mpc·节能·车辆控制
阿 才2 天前
Matlab(Simulink)使用详解
运维·网络·matlab
Evand J2 天前
【MATLAB例程,车联网12】基于模型预测控制(MPC)的网联车辆交叉口生态驾驶动态优化仿真分析。附完整代码的下载链接
物联网·matlab·车联网·mpc·模型预测控制·车辆·网联车辆
民乐团扒谱机2 天前
【微实验】线性代数之——奇异值分解 SVD:穿透数据迷雾的“X光机”,附 MATLAB 全流程仿真
线性代数·算法·matlab
majorArcs3 天前
MATLAB 绘制论文级双重饼图:2024 高教社杯 C 题实战
matlab