基于MATLAB的网络分析法(ANP)非独立递阶决策系统
项目介绍
本项目是一个专门用于解决复杂决策问题的MATLAB决策支持工具,其核心理论基础是T.L.Saaty教授提出的网络分析法(Analytic Network Process, ANP)。与传统的层次分析法(AHP)仅能处理简单的递阶结构不同,本系统能够有效处理决策指标之间、准则层与元素层之间以及元素层内部各因子之间普遍存在的相互依存(Dependence)和反馈(Feedback)关系。通过构建超矩阵并进行极限收敛计算,系统能够科学地确定各评价指标的全局权重,为复杂非独立递阶结构的决策提供量化依据。
功能特性
- 灵活的结构建模:支持将系统划分为多个准则簇,并精细定义各准则簇内部的元素分布,适应非独立递阶层次。
- 自动化权重提取:内置特征值法,能够从复杂的判断矩阵中提取主特征向量并进行归一化处理。
- 严谨的一致性检验:系统集成了一致性指标(CI)和随机一致性指标(RI)的比对逻辑,自动计算一致性比例(CR),确保专家评分的逻辑有效性。
- 超矩阵变换处理:完整实现从物理含义清晰的未加权超矩阵,到满足列随机性的加权超矩阵,再到反映长期稳定关系的极限超矩阵的转换。
- 高效极限收敛算法:采用基于幂法的迭代计算,通过矩阵自乘实现权重的快速收敛。
- 可视化结果展示:提供直观的柱状图分析以及结构化的文本排序输出,方便用户直接获取决策结论。
实现逻辑与步骤说明
本系统的计算过程严格遵循ANP的标准算法流程:
- 系统初始化与映射定义:
在程序开始阶段,定义准则簇名称和元素名称。通过簇映射数组建立元素与所属簇的归属关系。预设1-10阶的随机一致性指标(RI)作为检验基准。
- 构造未加权超矩阵:
系统逐一计算子块矩阵。针对簇内(内部依赖)或簇间(外部依赖)的影响关系构造判断矩阵。通过求解该矩阵的最大特征值及其对应的特征向量,得到局部权重向量。这些向量被填入未加权超矩阵的相应位置,反映了元素间的局部相互作用程度。
- 构造准则簇权重矩阵:
由于ANP中不同准则簇的重要性不同,系统要求输入准则簇之间的两两比较矩阵。通过计算得到准则簇权重向量,该向量反映了各簇在网络结构中的影响权重。
- 计算加权超矩阵:
为了保证超矩阵的列元素之和为1(即满足马尔可夫链的随机矩阵要求),系统将未加权超矩阵中的每个子块与其对应的准则簇权重相乘。计算完成后,系统会自动执行归一化校验,确保矩阵的数值稳定性。
- 计算极限超矩阵:
通过对加权超矩阵进行幂法迭代(即矩阵自乘),模拟网络中的反馈传播过程。迭代会持续进行,直到矩阵各列趋于一致且数值稳定。系统中设定了最大迭代次数(1000次)和收敛精度阈值(1e-8),以确保在达到平衡态时停止计算。
- 结果提取与排序:
极限超矩阵的每一列即代表了各元素在考虑了反馈关系后的全局权重。系统提取第一列数据,按权重从大到小对所有因素进行重新排序,并显示最终的排名、名称及数值。
关键函数与算法细节分析
系统内部封装了一个专门的函数用于处理判断矩阵。该函数利用eig函数提取最大特征值,并基于所得的特征向量进行绝对值化和归一化。同时,它会自动计算CI值((最大特征值-n)/(n-1)),并根据预定义的RI表返回CR值。
在计算极限超矩阵时,采用了W_next = W_limit * W_limit的策略。相比于简单的逐次方累乘,这种倍增幂法能够以对数级速度加快收敛。通过比较前后两次迭代矩阵元素的绝对差值之最大值来判断是否达到收敛条件。
在加权阶段,系统通过双重循环遍历准则簇,并通过索引查找函数定位各个子块在超矩阵中的行列坐标。在最终可视化环节,程序结合了排序算法和图形渲染引擎,将抽象的矩阵数值转化为直观的权重分布图。
使用方法
- 参数配置:根据实际评价体系修改程序头部的准则簇、元素名称及所属关系映射映射表。
- 矩阵录入:在相应位置输入或替换模拟的专家判断矩阵数据,确保矩阵满足互反性(Aij = 1/Aji)。
- 执行计算:直接运行主脚本,系统将自动依次执行一致性检验、超矩阵计算及迭代。
- 结果查看:在MATLAB命令行窗口查看各阶段的CR值和最终排名表,同时在弹出的图形窗口中观察指标权重的分布情况。
系统要求
- 运行环境:MATLAB R2016b 及以上版本(需要支持eig、bar等核心函数)。
- 硬件建议:标准通用计算设备,无需特殊GPU加速。
- 依赖项:无需安装第三方工具箱。