ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

基于层次分析法的5G应急网络无人机部署方案选择与Matlab实现

基于层次分析法的5G应急网络无人机部署方案选择与Matlab实现 做5G应急网络无人机部署的人大概率都碰到过这样一个问题方案听起来都对可真到拍板的时候谁也说不清为什么选这个不选那个。覆盖范围要大、业务容量要高、续航得够、成本还不能离谱再加上抗毁性和可靠性指标一多决策就成了扯皮现场。我最早接手这类项目时也走了一段弯路后来逐步把层次分析法AHP引入到初步网络规划阶段配合Matlab做快速计算把“拍脑袋选方案”变成了“打分排序选方案”整个过程可控、可解释、可复现。这篇文章就把这套流程完整拆开讲从理论建模、判断矩阵构造到Matlab源码实现和实际运行结果适合做应急通信、无线网络规划、无人机行业应用以及相关课题设计的同学参考。1. 无人机应急网络规划先从决策需求说起1.1 5G应急网络里的无人机到底怎么部署应急通信场景有很多种山区暴雨导致地面基站失联、大型活动现场短时间内涌入大量人流、偏远地区临时需要专网保障。这些场景有一个共同点地面通信基础设施要么受损、要么根本不存在但又必须在几小时内恢复基本语音和数据服务。这时候无人机挂载轻量化5G基站升空就可以快速建立临时覆盖。这几年这类方案已经不是什么实验项目国内外的应急演练里都能看到它的身影。但无人机部署不是“飞一架上去”这么简单。飞多高、用几架、怎么协同会直接影响网络性能。我拆成三种典型形态来看高空单机广覆盖一架载重较大的无人机升到300米左右挂一个轻量化基站覆盖半径能做到5公里上下。优点是覆盖大、调度简单缺点是业务容量有限而且一旦这架飞机出问题整片区域就失联了。中空多机组网三到五架无人机在150米左右高度组成链状或网格状覆盖通过空地链路互联。覆盖和容量都排在中间位置冗余性也比单机好比较适合需要“恢复一片区域”的场景。低空集群让十几架小型无人机在80米以下高度密集部署每架覆盖半径不大但可以拼出高容量区域。这个方案容量最高、冗余性最强但成本高、协同复杂续航也短。这三种方案没有绝对的好坏完全取决于应急场景到底要什么。如果是地震后保证搜救队伍通信可能更看重覆盖和抗毁如果是一场大型演唱会临时保障业务容量就变成第一优先级。所以做初步网络规划本质上是在多个目标之间做权衡决策。1.2 为什么初步规划阶段适合用层次分析法在决定用AHP之前我其实试过几种办法先说结论在“初步规划”这个时间点上AHP是性价比最高的。如果一开始就上粒子群或遗传算法你得先定义一个完整的目标函数把覆盖、容量、成本、抗毁性全部量化成数学表达式还要给出初始化种群和迭代参数。这在项目前期根本不现实因为你连精确的信道模型和地形数据都还没有算出来的结果大概率也是“垃圾进垃圾出”。如果直接做链路预算和覆盖仿真又太慢。应急场景给决策的时间窗口只有几个小时你不可能光学射线追踪模型就花上一天。而且仿真的前提是方案已经基本确定否则算十种方案来回对比时间成本无法接受。AHP的核心价值在于它能把你脑子里的定性判断结构化。比如“覆盖范围比部署成本重要”这件事平时只能靠开会讨论但用AHP你可以把这种判断变成判断矩阵里的数字再通过一致性检验判断这些数字有没有自相矛盾。计算量极小Matlab跑一次连一秒都不用结果还能清清楚楚打印出来给团队看。所以我说它是一个很好的“先粗选、后细算”的开头工具。它不会替代后续的仿真和实测但它能帮你在数据不完整的时候先做出一个不后悔的方向性决策。2. 手把手搭建AHP决策模型2.1 三层结构目标、准则、方案怎么定AHP模型的第一步是搭层次结构。这个结构通常分三层目标层、准则层、方案层。目标层这一层非常直白本例中就是“选出最优的5G应急网络无人机部署方案”。准则层是我个人认为整个模型里最关键的一层。准则选得好不好直接决定决策结果有没有参考价值。我给这个项目定了五个准则覆盖范围C1用覆盖半径或覆盖面积衡量应急场景首先要让人“找得到网”。业务容量C2用同时支持在线用户数或小区吞吐量衡量决定网络能不能真正用起来。续航驻空能力C3用连续驻空时间衡量应急网络不是飞几分钟就算完至少要撑到地面抢修完成。部署成本C4包含无人机平台、挂载设备、运输、人力等综合费用预算约束是现实存在的。抗毁可靠性C5用系统冗余度和故障切换能力衡量应急场景最怕单点失效。方案层就是上面说的三个候选方案S1高空单机、S2中空多机、S3低空集群。它们在五个准则下的表现可以先用一个表定下来后面填判断矩阵时心里就有数了。候选方案飞行高度覆盖半径在线容量驻空时间综合成本冗余性S1 高空单机300m5km约200用户6h约50万低S2 中空多机150m8km约800用户4h约120万中S3 低空集群80m3km约1200用户2h约200万高这些数字在我这里是“初步规划阶段的经验估值”不是最终设计值。但没关系AHP要的就是这种量级的判断而不是厘米级精度。2.2 判断矩阵的标度规则与构造方法层次结构搭好之后下一步就是构造判断矩阵这也是AHP最核心、最需要认真对待的一步。判断矩阵采用Saaty提出的1到9标度法1表示两个因素同等重要3表示前者比后者稍微重要5表示明显重要7表示强烈重要9表示极端重要2、4、6、8是中间过渡值。反过来比较就填倒数比如覆盖范围对业务容量是3那业务容量对覆盖范围就是1/3。我拿实际生活打个比方。假如你选餐厅觉得口味比环境明显重要就给口味和环境这一对比值填5反过来环境比口味就是1/5。这里的“5”不是数学意义上是五倍而是“排序意义上的显著差异”这一点很多人理解偏了。准则层的判断矩阵我写成这样A [ 1 3 4 5 2 1/3 1 2 4 1/2 1/4 1/2 1 3 1/3 1/5 1/4 1/3 1 1/4 1/2 2 3 4 1 ]读法就是第一行第一列永远是1表示覆盖范围和它自己同等重要第一行第二列是3表示覆盖范围比业务容量稍微重要第二行第一列自然是1/3。检查一下对角线全是1对角线对称位置互为倒数这是判断矩阵的最基本规则。这里必须强调判断矩阵里的数字应该来自场景需求而不是拍脑袋。做应急网络规划时最好由项目经理、网络工程师、现场指挥一起打分把不同角色的诉求都量化进去。代码只是把人的判断计算成排序如果输入质量不高输出自然不可信。2.3 权重计算与一致性检验的数学原理判断矩阵构造完成之后要从中提取出每个准则的权重。最常用、理论最严谨的方法是特征向量法。设判断矩阵为A它的最大特征值对应的特征向量就是权重向量。直觉上可以这样理解一个完全一致的判断矩阵里各行的比值关系是严格固定的这个固定关系恰好体现在主特征向量里即使矩阵不完全一致主特征向量也仍然能代表“整体上”的权重关系。所以我先把A做特征值分解取出最大特征值对应的特征向量再归一化就得到了五个准则的权重。但取权重之前必须先过一致性检验这关。所谓一致性很好理解如果我认为覆盖比容量重要A比B重要容量比续航重要B比C重要那我就不应该认为覆盖比续航还次要。判断矩阵如果存在这种矛盾计算出来的权重就没有意义。一致性指标的计算方式如下CI (lambda_max - n) / (n - 1) CR CI / RI其中n是矩阵阶数RI是平均随机一致性指标只和阶数有关。n等于5的时候RI取1.12。CR小于0.1我们就认为判断矩阵的一致性可以接受如果CR大于0.1说明打分矛盾太多建议回到判断矩阵去修改。从数学角度看当矩阵完全一致时lambda_max恰好等于nCI就是0。所以CI实际上衡量的是矩阵偏离完全一致的程度。这个约束非常重要它不是走过场而是AHP比“随便打个分求平均”更可靠的核心原因。3. Matlab源码实现从主流程到核心函数3.1 主脚本的整体设计思路Matlab代码并不复杂但结构要清爽。我的做法是把任务拆成四步第一步输入准则层判断矩阵第二步计算准则权重并做一致性检验第三步依次读取五个方案层判断矩阵分别计算方案在单准则下的权重第四步把准则权重和方案权重加权求和得到综合得分并排序。写代码时我习惯把每一层矩阵都放在脚本最前面用清晰的变量名和注释标记好。这样做的好处是你在做参数敏感性分析时只需要改动脚本顶部的几行数据不用深入函数内部到处找。算例规模小没有必要一开始就搞类、搞包一个脚本加两个小函数是最舒服的节奏。还要注意方案层的判断矩阵一共有五个分别对应五个准则存放顺序要一致。我这里用的是Matlab的元胞数组cell按下标顺序存放既灵活又不容易混。3.2 判断矩阵输入与自动校验写计算函数时我加了几道基础的输入校验。首先判断矩阵必须是方阵否则没法求特征值其次对角线元素必须全为1这是AHP的基本性质最后矩阵阶数不能超过9因为后面会用到的RI表只做到9阶。这些校验虽然简单但能在实际使用中帮你省掉很多排查时间。你可能会问顺序不对成什么程度会被校验拦住比如一个本该是5阶的矩阵不小心填成4阶特征值还是能算出来但结果完全错误。加了校验程序会在第一步就报错而不是等到最后给你一个看似合理实则错误的排序结果。3.3 权重计算、CR求解与排序输出附源码下面给出完整可运行的源码。主脚本负责组织流程和输出结果ahp_eig函数负责单层权重计算和一致性判断。%% AHP_5G_UAV_Deployment.m % 5G应急网络无人机部署方案AHP决策 % 层次分析法用于初步网络规划 clear; clc; close all; %% 1. 准则层判断矩阵 % C1 覆盖范围, C2 业务容量, C3 续航驻空, C4 部署成本, C5 抗毁可靠 A [ 1 3 4 5 2 1/3 1 2 4 1/2 1/4 1/2 1 3 1/3 1/5 1/4 1/3 1 1/4 1/2 2 3 4 1 ]; %% 2. 计算准则权重并做一致性检验 [W, CR, lambda_max] ahp_eig(A); fprintf(准则层权重: ); fprintf(%.4f , W); fprintf(\n最大特征值: %.4f, CR %.4f\n, lambda_max, CR); if CR 0.1 error(准则层一致性检验不通过请调整判断矩阵); end %% 3. 方案层判断矩阵 % 三个方案: S1 高空单机广覆盖, S2 中空多机组网, S3 低空集群 % 依次对应 5 个准则 B cell(5, 1); B{1} [1 1/3 1/5; 3 1 1/3; 5 3 1]; % 覆盖范围 B{2} [1 1/4 1/5; 4 1 1/3; 5 3 1]; % 业务容量 B{3} [1 1/3 1/3; 3 1 1; 3 1 1]; % 续航驻空 B{4} [1 3 5; 1/3 1 3; 1/5 1/3 1]; % 部署成本 B{5} [1 1/3 1/4; 3 1 1/2; 4 2 1]; % 抗毁可靠 n_scheme size(B{1}, 1); S zeros(n_scheme, 1); for k 1:5 [Wk, CRk, ~] ahp_eig(B{k}); if CRk 0.1 fprintf(准则%d对应的方案判断矩阵CR %.4f不通过\n, k, CRk); end fprintf(准则%d下方案权重: %.4f %.4f %.4f, CR %.4f\n, ... k, Wk(1), Wk(2), Wk(3), CRk); S S W(k) * Wk; end %% 4. 综合得分与排序 fprintf(\n 方案综合得分 \n); [~, idx] sort(S, descend); for i 1:n_scheme fprintf(S%d: %.4f\n, i, S(i)); end fprintf(推荐方案: S%d\n, idx(1));function [W, CR, lambda_max] ahp_eig(A) % AHP_EIG 使用特征向量法计算AHP判断矩阵权重和一致性比例 % 输入: A - 判断矩阵 % 输出: W - 归一化权重向量, CR - 一致性比例, lambda_max - 最大特征值 n size(A, 1); % 基础校验 if size(A, 2) ~ n error(判断矩阵必须为方阵); end if any(abs(diag(A) - 1) 1e-6) error(判断矩阵对角线元素必须为1); end if n 9 error(RI表只支持到9阶矩阵); end % 特征值分解 [V, D] eig(A); lambda_vec real(diag(D)); lambda_max max(lambda_vec); [~, idx] max(lambda_vec); W abs(V(:, idx)); W W / sum(W); % 一致性检验 CI (lambda_max - n) / (n - 1); RI_table [0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45]; RI RI_table(n); CR CI / RI; if n 3 CR 0; % 一阶、二阶矩阵天然一致 end end这段代码可以直接保存成两个文件主脚本和一个函数文件。函数文件在Matlab中另存为ahp_eig.m即可。运行后命令行会依次打印准则层权重、每一个方案矩阵的CR值以及三个方案的综合得分排序。3.4 可复用把代码改造成函数如果你不想每次修改都打开脚本可以把主脚本也封装成函数输入是准则层判断矩阵和方案层判断矩阵元胞数组输出是权重、CR和综合得分。我提供一个改造思路核心代码不变只包一层外壳function [S, W, CR] ahp_5g_uav(A, B) % AHP_5G_UAV 一键计算无人机部署AHP决策 % 输入: A - 准则层判断矩阵 % B - 方案层判断矩阵元胞数组 % 输出: S - 方案综合得分, W - 准则权重, CR - 准则一致性比例 n_scheme size(B{1}, 1); [W, CR, ~] ahp_eig(A); S zeros(n_scheme, 1); for k 1:length(B) [Wk, ~, ~] ahp_eig(B{k}); S S W(k) * Wk; end [~, idx] sort(S, descend); fprintf(推荐方案: S%d\n, idx(1)); end这样你以后做别的决策比如选基站位置、选回传链路方案只需要换成自己的判断矩阵和方案矩阵调用同一个函数就行。4. 真实案例用AHP从三个备选部署方案中选最优4.1 场景假设与参数设定为了展示完整流程我构造了一个贴近现实的场景某山区因暴雨引发道路中断地面基站供电机房被洪水浸泡整个乡镇的通信基本瘫痪。应急通信车没法在短时间内开到现场唯一可行的手段是无人机快速升空恢复该区域的5G覆盖。初步判断受影响区域半径约3公里人口集中在几个村子预计高峰时段同时在网用户可能达到1000人以上需要至少撑过4小时的黄金救援期。在这个场景下三个备选方案分别是前面提过的S1高空单机、S2中空多机、S3低空集群。这些方案的参数是我根据公开产品资料和工程经验估算的不同项目肯定有差异但用来做AHP演示足够了。注意这里我用的是“初步规划”思路不借助高精度地形和信道模型先把方向和大概率正确的方案选出来后续再做详细设计。这就像装修房子先确定“要不要砸墙”的大方向而不是一上来就确定每个插座的位置。4.2 运行结果与分析我把前面那段代码在Matlab环境里跑了一遍过程结果如下具体数值可能因Matlab版本和浮点计算
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表