MAIRCA-理想-实际比较分析法
MAIRCA(Multi-Attributive Ideal-Real Comparative Analysis,理想-实际比较分析法)是一种基于“理论评价”和“实际评价”差距进行排序的多指标综合评价方法。其核心思想是:先为每个方案分配一个理论上应获得的评价份额,再根据方案在各…
MAIRCA-理想-实际比较分析法
1. 方法概述
MAIRCA(Multi-Attributive Ideal-Real Comparative Analysis,理想-实际比较分析法)是一种基于“理论评价”和“实际评价”差距进行排序的多指标综合评价方法。其核心思想是:先为每个方案分配一个理论上应获得的评价份额,再根据方案在各指标上的归一化表现得到实际评价份额,最后以二者之间的总差距作为优劣判据。
就本项目当前实现而言,MAIRCA 模块并不是单纯的教材版计算器,而是一条完整的工程化评价链:
- 先读取“方案列 + 指标列”的表格数据;
- 再区分正向指标、负向指标和适度指标;
- 对适度指标先做“越接近标准值越优”的接近度变换;
- 对所有列执行正值平移,保证后续比值运算稳定;
- 权重可由熵权法自动生成,也可由用户自定义;
- 之后按 MAIRCA 公式构造理论评价矩阵 \(T_p\)、实际评价矩阵 \(T_r\) 与差距矩阵 \(G\);
- 最终依据总差距 \(Q_i\) 升序完成排序,并附带敏感性分析与子集指标计算功能。
设共有 \(m\) 个方案、\(n\) 个指标,原始决策矩阵记为
$$ X=(x_{ij})_{m\times n}, \quad i=1,2,\ldots,m, \quad j=1,2,\ldots,n \tag{1} $$
设最终权重向量为
$$ w=\big(w_1,w_2,\ldots,w_n\big)^\top, \quad w_j\ge 0, \quad \sum_{j=1}^{n}w_j=1 \tag{2} $$
项目最终在结果页与 Excel 中输出的核心列为 真实评价总和Tr、总差距Q(越小越优) 与 排名。其中真正决定排序的是总差距 \(Q_i\),且 \(Q_i\) 越小,方案越优。
2. 输入结构与项目流程
2.1 输入数据结构
上传页 ui/upload_widget.py 支持 .xlsx、.xls 与 .csv 文件;结合 utils/data_validator.py,当前项目对输入数据有如下约束:
- 第 1 列必须为方案或对象名称;
- 第 2 列及以后为指标列;
- 指标列必须全部可转为数值;
- 不允许空值;
- 方案名称不允许重复;
- 上传页默认不允许常数列。
因此,进入 core/mairca_calculator.py 的数据结构可以记为
$$ \mathcal{D}=\{A_i,\ x_{i1},x_{i2},\ldots,x_{in}\}_{i=1}^{m} \tag{3} $$
其中第一个字段为方案名称,其余字段为指标值。核心类 _prepare_matrix() 还会再次对选中指标执行数值化处理,并仅保留所有选中指标均为有效数值的行。
2.2 界面流程与参数入口
主窗口 ui/main_window.py 对应的标准流程为:
- 上传数据;
- 选择参与计算的指标;
- 为每个指标指定类型;
- 选择熵权法标准化方式与权重获取方式;
- 进入结果页自动调用
MAIRCACalculator.calculate_mairca()。
方法页 ui/methods_widget.py 当前提供两类参数:
- 熵权法标准化方式:
min-max或z-score; - 权重方式:
entropy或custom。
需要特别说明的是:这里的“标准化方式”只作用于 熵权法计算权重,并不改变 MAIRCA 主体中归一化矩阵 \(N\) 的计算公式。这是本模块最关键的实现细节之一。
3. 指标类型、适度指标变换与正值平移
3.1 指标类型
当前项目支持三类指标:
- 正向指标:值越大越优;
- 负向指标:值越小越优;
- 适度指标:值越接近给定标准值越优。
其中,指标页 ui/indicators_widget.py 要求用户为每个被选中指标显式指定其类型。若某指标被设为适度指标,则还必须给出标准值。
3.2 适度指标接近度变换
对适度指标 \(C_j\),设其目标标准值为 \(s_j^\ast\)。项目先计算该列相对目标值的最大偏离尺度:
$$ M_j=\max\left(|\max_i x_{ij}-s_j^\ast|,\ |\min_i x_{ij}-s_j^\ast|\right) \tag{4} $$
若 \(M_j\le 0\),说明所有观测值与标准值没有离散差异,则程序直接令
$$ y_{ij}=1 \tag{5} $$
否则采用接近度变换:
$$ y_{ij}=1-\frac{|x_{ij}-s_j^\ast|}{M_j} \tag{6} $$
随后程序会把 \(y_{ij}\) 裁剪到 \([0,1]\) 区间,并把该指标在后续计算中统一视为正向指标。也就是说,适度指标在项目中的真实处理链是:
$$ x_{ij}\longrightarrow y_{ij}\in[0,1]\longrightarrow \text{按正向指标继续计算} \tag{7} $$
这一逻辑对应 MAIRCACalculator._prepare_matrix()。
3.3 适度指标标准值的工程约束
当前 UI 与核心都把适度指标标准值等于 0 视为“未设置”。因此,虽然从纯数学角度看标准值可以是 0,但本项目的正常界面流程要求
$$ s_j^\ast\ne 0 \tag{8} $$
否则会直接报错并终止计算。这一点必须在论文或项目说明中写清,否则会与一般教科书定义产生偏差。
3.4 正值平移
由于 MAIRCA 主归一化中对负向指标采用 \(\min/x\) 形式,为避免 0 或负数导致分母不稳定,程序在 _ensure_positive() 中先对每个指标列做正值平移。若第 \(j\) 个指标最小值满足 \(\min_i y_{ij}\le 0\),则执行
$$ \tilde{x}_{ij}=y_{ij}+\big(-\min_i y_{ij}\big)+\varepsilon \tag{9} $$
其中 \(\varepsilon\) 为极小正数,项目默认取 \(10^{-12}\)。若该列本身全部大于 0,则平移量为 0。完成平移后,程序还会统一执行下界裁剪:
$$ \tilde{x}_{ij}\leftarrow \max(\tilde{x}_{ij},\varepsilon) \tag{10} $$
于是,真正进入后续权重与 MAIRCA 主体计算的预处理矩阵记为
$$ \tilde{X}=(\tilde{x}_{ij})_{m\times n} \tag{11} $$
Excel 中的 正值平移 与 预处理矩阵 工作表,正对应式(9)至式(11)的结果。
4. 权重确定:熵权法与自定义权重
4.1 熵权法标准化矩阵与 MAIRCA 归一化矩阵是两套口径
这是 MAIRCA 模块最容易被误写的地方。项目在计算过程中会出现两套不同矩阵:
- 一套是用于熵权法求权重的标准化矩阵;
- 另一套是用于 MAIRCA 主体计算的归一化矩阵 \(N\)。
二者并不相同,也不应混写。
4.2 熵权法的 Max-Min 标准化
当用户选择 min-max 且权重方式为 entropy 时,项目在 _entropy_normalize() 中对正向指标使用
$$ n_{ij}^{(E)}=\frac{\tilde{x}_{ij}-\min_i \tilde{x}_{ij}}{\max_i \tilde{x}_{ij}-\min_i \tilde{x}_{ij}} \tag{12} $$
对负向指标使用
$$ n_{ij}^{(E)}=\frac{\max_i \tilde{x}_{ij}-\tilde{x}_{ij}}{\max_i \tilde{x}_{ij}-\min_i \tilde{x}_{ij}} \tag{13} $$
若某列满足 \(\max_i \tilde{x}_{ij}=\min_i \tilde{x}_{ij}\),则该列直接记为 0。
4.3 熵权法的 Z-score 后再归一化
当用户选择 z-score 时,项目先计算
$$ z_{ij}=\frac{\tilde{x}_{ij}-\mu_j}{\sigma_j} \tag{14} $$
其中 \(\mu_j\) 为第 \(j\) 个指标均值,\(\sigma_j\) 为总体标准差,代码中采用 std(ddof=0)。随后再把 \(z_{ij}\) 映射到 \([0,1]\) 区间:
$$ \operatorname{mm}_{ij}=\frac{z_{ij}-\min_i z_{ij}}{\max_i z_{ij}-\min_i z_{ij}} \tag{15} $$
对正向指标,熵权法标准化结果取
$$ n_{ij}^{(E)}=\operatorname{mm}_{ij} \tag{16} $$
对负向指标,则取
$$ n_{ij}^{(E)}=1-\operatorname{mm}_{ij} \tag{17} $$
因此,进入熵权法的标准化矩阵记为
$$ N^{(E)}=\big(n_{ij}^{(E)}\big)_{m\times n} \tag{18} $$
Excel 中的 熵权法标准化 或 熵权法标准化矩阵 工作表,记录的就是式(18)。
4.4 熵值、差异系数与熵权
设第 \(j\) 个指标在矩阵 \(N^{(E)}\) 中的列和为 \(\sum_i n_{ij}^{(E)}\),则比重为
$$ p_{ij}=\frac{n_{ij}^{(E)}}{\sum_{k=1}^{m}n_{kj}^{(E)}} \tag{19} $$
熵值定义为
$$ e_j=-\frac{1}{\ln m}\sum_{i=1}^{m}p_{ij}\ln p_{ij} \tag{20} $$
差异系数定义为
$$ d_j=1-e_j \tag{21} $$
最终熵权为
$$ w_j=\frac{d_j}{\sum_{k=1}^{n}d_k} \tag{22} $$
这对应 MAIRCACalculator._entropy_weights() 的实际实现。
4.5 自定义权重
当用户选择 custom 时,项目不会再计算式(19)至式(22),而是读取用户输入的原始权重 \(\hat{w}_j\),先按所选指标重新对齐,对缺失项补 0,再统一归一化:
$$ w_j=\frac{\hat{w}_j}{\sum_{k=1}^{n}\hat{w}_k} \tag{23} $$
若用户给定的总和不大于 0,程序会回退为等权:
$$ w_j=\frac{1}{n} \tag{24} $$
因此,在项目实现中,自定义权重并不是“直接原样使用”,而是“对齐后再归一化”的权重。
5. MAIRCA 主体计算:\(N\)、\(T_p\)、\(T_r\)、\(G\) 与 \(Q\)
5.1 MAIRCA 归一化矩阵 \(N\)
在 _normalize_mairca() 中,项目对预处理矩阵 \(\tilde{X}\) 采用经典 MAIRCA 归一化方式。对正向指标:
$$ n_{ij}=\frac{\tilde{x}_{ij}}{\max_i \tilde{x}_{ij}} \tag{25} $$
对负向指标:
$$ n_{ij}=\frac{\min_i \tilde{x}_{ij}}{\tilde{x}_{ij}} \tag{26} $$
于是得到 MAIRCA 主体中的归一化矩阵
$$ N=(n_{ij})_{m\times n} \tag{27} $$
式(25)至式(27)与第 4 节的熵权法标准化矩阵并不是同一个对象。项目导出的 归一化矩阵N 工作表,对应的正是式(27)。
5.2 方案优先度向量
当前模块没有额外引入方案先验偏好,而是对所有方案采用等优先度:
$$ P(A_i)=\frac{1}{m}, \quad i=1,2,\ldots,m \tag{28} $$
结果表 方案优先度P 中的 P(Ai),正是式(28)的离散展开。
5.3 理论评价矩阵
在得到优先度向量与权重向量后,构造理论评价矩阵:
$$ t_{ij}^{p}=P(A_i)\,w_j \tag{29} $$
记
$$ T_p=\big(t_{ij}^{p}\big)_{m\times n} \tag{30} $$
由于 \(\sum_j w_j=1\) 且 \(P(A_i)=1/m\),故每个方案的理论总和满足
$$ \sum_{j=1}^{n}t_{ij}^{p}=\frac{1}{m} \tag{31} $$
这也正是项目 汇总 工作表中 理论总和Tp 对各方案完全相同的原因。
5.4 实际评价矩阵
程序随后将理论评价矩阵与 MAIRCA 归一化矩阵逐元素相乘,得到实际评价矩阵:
$$ t_{ij}^{r}=t_{ij}^{p}\,n_{ij} \tag{32} $$
记
$$ T_r=\big(t_{ij}^{r}\big)_{m\times n} \tag{33} $$
每个方案的实际评价总和为
$$ Tr_i=\sum_{j=1}^{n}t_{ij}^{r} \tag{34} $$
项目最终结果列 真实评价总和Tr,对应的就是式(34)。
5.5 差距矩阵与总差距
理想-实际差距矩阵定义为
$$ g_{ij}=t_{ij}^{p}-t_{ij}^{r} \tag{35} $$
记
$$ G=\big(g_{ij}\big)_{m\times n} \tag{36} $$
方案 \(A_i\) 的总差距定义为
$$ Q_i=\sum_{j=1}^{n}g_{ij} \tag{37} $$
结合式(31)和式(34),还可写为
$$ Q_i=\frac{1}{m}-Tr_i \tag{38} $$
因此,在当前实现中:
真实评价总和Tr越大越好;总差距Q越小越好;- 二者在等优先度设定下本质上是等价排序。
5.6 排名规则
项目按总差距 \(Q_i\) 升序排名,并使用 rank(ascending=True, method="min") 处理并列名次,即
$$ \operatorname{Rank}(A_i)=\operatorname{rank}_{\uparrow}^{\text{min}}(Q_i) \tag{39} $$
这正是 MAIRCACalculator._rank_from_q() 的实现。Excel 的 得分与排名 和 汇总 工作表都基于式(39)生成。
6. 敏感性分析与子集指标计算
6.1 权重扰动方式
项目默认开启权重敏感性分析,扰动比例参数为 sensitivity_delta=0.1,即默认进行 \(\pm 10\%\) 扰动。对第 \(j\) 个指标,程序先构造未归一化扰动权重:
$$ \tilde{w}_{k}^{(\pm,j)}= \begin{cases} (1\pm\delta)w_k, & k=j\\ w_k, & k\ne j \end{cases} \tag{40} $$
随后再归一化得到
$$ w_{k}^{(\pm,j)}= \frac{\tilde{w}_{k}^{(\pm,j)}}{\sum_{\ell=1}^{n}\tilde{w}_{\ell}^{(\pm,j)}} \tag{41} $$
其中 \(\delta\in[0,0.9]\),默认 \(\delta=0.1\)。
6.2 稳定性指标
对每一次扰动,程序都会重新计算 \(T_p\)、\(T_r\)、\(Q\) 与排名,并输出以下稳定性指标:
Spearman相关系数:扰动前后名次相关性;最大名次变化:所有方案名次绝对变化的最大值;Top1是否变化:最优方案是否发生改变。
这部分结果由 _sensitivity_analysis() 生成,并在 Excel 中导出为 敏感性分析 工作表。
6.3 子集指标计算
结果页 ui/results_widget.py 还提供“子集指标计算”功能。其本质是调用 calculate_partial_mairca(),暂时把 selected_indicators 替换为用户勾选的指标子集,然后重复执行完整的 MAIRCA 计算链。追加结果时,程序会写入新的 Excel 页签:
- 默认页签前缀为
子集; - 当前实现实际追加的页签名为
子集得分排名。
因此,本模块不仅支持“全指标排序”,还支持“局部指标重算与对比”。
7. 输出结构、图表与复现脚本
7.1 统一结果结构
MAIRCACalculator.calculate_mairca() 返回统一结果字典,主要包含:
raw_data:原始上传数据;processed_data:方案名、预处理矩阵和有效指标类型;step_results:预处理矩阵、权重、\(N\)、\(T_p\)、\(T_r\)、\(G\)、敏感性分析等中间结果;final_results:最终Tr、Q与排名;charts:图表信息;parameters:所选指标、指标类型、标准值、权重方式、标准化方式、敏感性参数等。
7.2 默认输出路径与图表
在结果页中,程序先在 results/ 下创建一层时间戳目录;随后 save_results() 又会在该目录下继续创建一层
<app_name>分析结果_<时间戳>/
并在其中生成 Excel、图表、输入快照与复现脚本。就核心导出函数本身而言,其标准结构为:
<output_base>/<app_name>分析结果_<时间戳>/<app_name>分析结果_<时间戳>.xlsxcharts/weights.pngcharts/gap_q.pngcharts/sensitivity.png(若敏感性分析存在)input_snapshot.xlsxrepro_mairca_<时间戳>.pyrepro_module/core/mairca_calculator.py
其中图表含义分别为:
weights.png:各指标权重柱状图;gap_q.png:各方案总差距 \(Q\) 柱状图;sensitivity.png:敏感性稳定性柱状图。
7.3 Excel 工作表
结合 save_results() 的实际导出逻辑,当前模块可能生成以下工作表:
参数原始数据指标类型适度指标正值平移预处理矩阵熵权法标准化熵权法计算归一化矩阵N方案优先度P权重理论评价矩阵Tp实际评价矩阵Tr差距矩阵G汇总敏感性分析得分与排名图表清单
其中:
得分与排名最适合直接作为论文结果表;汇总同时给出理论总和Tp、真实总和Tr、总差距Q和排名;图表清单会记录图表用途与相对路径;参数会记录权重方式、标准化方式、指标类型和标准值等复现信息。
7.4 复现脚本
当前模块会在结果目录自动生成 repro_mairca_<时间戳>.py。该脚本会写入以下关键信息:
- 输入快照路径;
- 所选指标;
- 指标类型;
- 适度指标标准值;
- 熵权法标准化方式;
- 权重方式;
- 自定义权重(若选择
custom)。
重新执行该脚本后,会再次调用 calculate_mairca() 和 save_results(),从而复现同一批次实验。
8. 与项目实现一致的若干注意事项
8.1 本项目的 MAIRCA 使用等优先度
许多文献会把方案优先度 \(P(A_i)\) 视为可变参数,但当前项目固定采用式(28)的等优先度设定,不提供界面修改入口。因此,若论文直接基于本软件结果,应明确写明“各方案先验优先度相同”。
8.2 适度指标会先转接近度,再按正向指标进入所有后续步骤
这意味着:
- 适度指标不会保留原始量纲;
- 熵权法中的标准化和 MAIRCA 中的 \(N\) 矩阵,看到的都是变换后的接近度值;
- 适度指标一旦转换完成,在程序内部就不再以“适度型”身份参与计算。
8.3 熵权法标准化矩阵与 MAIRCA 归一化矩阵不能混写
这是当前模块最关键的公式口径问题。项目中:
- 式(12)至式(18)只服务于熵权法权重计算;
- 式(25)至式(27)才是 MAIRCA 主体中的 \(N\) 矩阵。
若论文把两者写成同一个矩阵,结论虽然可能还能跑通,但已与项目实际代码不一致。
8.4 自定义权重会先补零再归一化
如果用户给出的自定义权重没有覆盖全部所选指标,程序会先按指标顺序重排、对缺失项补 0,再统一归一化。因此,文档中不能简单写成“软件直接采用用户输入权重”,而应写成“软件采用对齐归一化后的自定义权重”。
8.5 排名本质上由 \(Q_i\) 决定
虽然结果表同时展示 真实评价总和Tr 和 总差距Q,但代码的排序依据是 \(Q_i\) 升序,而不是 \(Tr_i\) 降序。只是在当前等优先度设定下,二者等价。
9. 论文写作模板
若本文采用本项目中的 MAIRCA 模块进行多指标综合评价,可按如下方式描述:
首先构建方案-指标原始决策矩阵,并依据指标属性将指标划分为正向指标、负向指标和适度指标。对于适度指标,依据其与目标标准值的偏离程度构造接近度指标,并将其转化为效益型变量;随后对全部指标数据进行正值平移,以保证后续比值归一化的稳定性。权重确定阶段可采用熵权法或自定义权重,其中熵权法通过标准化矩阵计算各指标熵值、差异系数及权重。之后,在方案等优先度假设下构造理论评价矩阵和实际评价矩阵,并计算二者之间的差距矩阵。最后以各方案总差距作为评价依据,按照总差距由小到大完成排序。
若研究中还使用了软件默认的稳定性检验,可进一步写为:
在得到基准排序结果后,对各指标权重分别施加正负扰动并重新归一化,计算扰动前后排序结果的 Spearman 相关系数、最大名次变化和最优方案稳定性,以检验 MAIRCA 评价结果对权重变化的敏感程度。
10. 与代码实现的对应关系
表 1 MAIRCA 关键公式与项目实现对应关系
| 内容 | 数学表达 | 项目实现 |
|---|---|---|
| 原始输入结构与数据约束 | 式(1)—式(3) | ui/upload_widget.py、utils/data_validator.py、core/mairca_calculator.py::set_data |
| 适度指标接近度变换 | 式(4)—式(8) | ui/indicators_widget.py、core/mairca_calculator.py::_prepare_matrix |
| 正值平移与预处理矩阵 | 式(9)—式(11) | core/mairca_calculator.py::_ensure_positive |
| 熵权法标准化与熵权计算 | 式(12)—式(24) | ui/methods_widget.py、core/mairca_calculator.py::_entropy_normalize、_entropy_weights |
| MAIRCA 归一化矩阵 \(N\) | 式(25)—式(27) | core/mairca_calculator.py::_normalize_mairca |
| 优先度、理论评价、实际评价与差距 | 式(28)—式(38) | core/mairca_calculator.py::calculate_mairca |
| 排名规则 | 式(39) | core/mairca_calculator.py::_rank_from_q |
| 敏感性分析 | 式(40)—式(41) | core/mairca_calculator.py::_sensitivity_analysis |
| Excel、图表与复现脚本导出 | 第 7 节 | core/mairca_calculator.py::save_results、ui/results_widget.py |
总体来看,本项目中的 MAIRCA 属于“适度指标接近度转换 + 正值平移 + 熵权/自定义赋权 + 等优先度 MAIRCA 差距排序 + 敏感性分析”的工程化实现。对于论文写作,建议把式(25)至式(39)作为方法主体,再结合式(4)至式(24)交代本软件在适度指标处理、权重生成和数据预处理上的具体实现口径。
11. 论文模板补充
11.1 方法描述模板
“本文采用 MAIRCA 方法对候选方案进行综合评价。首先对原始决策矩阵执行指标类型处理、正值平移与权重确定,并在等优先度假设下构造理论评价矩阵和实际评价矩阵;随后计算二者之间的差距矩阵,并以总差距作为综合评价依据,最终完成方案排序。”
11.2 结果解释模板
结果部分可写为:结果表明,总差距 \(Q_i\) 越小,说明方案越接近理论评价状态,因此综合表现越优。若敏感性分析中权重扰动后排序变化较小,则说明 MAIRCA 评价结果具有较好的稳健性;若总差距与真实评价总和同时支持相同排序,则可增强结果解释的一致性。
11.3 表格标题模板
- 表 1 MAIRCA 指标类型与权重设置表
- 表 2 MAIRCA 理论评价矩阵与实际评价矩阵结果表
- 表 3 MAIRCA 差距矩阵与总差距结果表
- 表 4 MAIRCA 敏感性分析结果表
11.4 图表题注模板
- 图 1 MAIRCA 指标权重分布图。
- 图 2 MAIRCA 总差距排序图。
- 图 3 MAIRCA 权重扰动敏感性分析图。
11.5 表格示例
表 1 MAIRCA 综合评价结果表示例
| 方案 | 理论评价总和 \(Tp\) | 实际评价总和 \(Tr\) | 总差距 \(Q\) | 排名 |
|---|---|---|---|---|
| \(A_1\) | ||||
| \(A_2\) |
表注:方案排序按总差距 \(Q_i\) 升序确定,总差距越小表示方案越优。
12. 单篇终审补充
12.1 图题与表题对齐建议
参数表可写为:表X MAIRCA 参数设置表。原始数据表可写为:表X MAIRCA 原始数据表。指标类型表可写为:表X MAIRCA 指标类型设置表。适度指标表可写为:表X MAIRCA 适度指标设置表。正值平移表可写为:表X MAIRCA 正值平移结果表。预处理矩阵表可写为:表X MAIRCA 预处理矩阵表。熵权法标准化表可写为:表X MAIRCA 熵权法标准化表。熵权法计算表可写为:表X MAIRCA 熵权法计算过程表。归一化矩阵N表可写为:表X MAIRCA 归一化矩阵 N 表。方案优先度P表可写为:表X MAIRCA 方案优先度 P 表。权重表可写为:表X MAIRCA 指标权重表。理论评价矩阵Tp表可写为:表X MAIRCA 理论评价矩阵 \(T_p\) 表。实际评价矩阵Tr表可写为:表X MAIRCA 实际评价矩阵 \(T_r\) 表。差距矩阵G表可写为:表X MAIRCA 差距矩阵 \(G\) 表。汇总表可写为:表X MAIRCA 汇总结果表。敏感性分析表可写为:表X MAIRCA 敏感性分析表。得分与排名表可写为:表X MAIRCA 得分与排名表。图表清单表可写为:表X MAIRCA 图表索引与路径表。weights.png建议写为:图X MAIRCA 指标权重图。gap_q.png建议写为:图X MAIRCA 总差距图。sensitivity.png建议写为:图X MAIRCA 敏感性分析图。
12.2 终审说明
- 当前代表性结果目录可采用
results/manual_check_mairca_20260321/MAIRCA-理想-实际比较分析法分析结果_20260321_043145。其中主工作簿为MAIRCA-理想-实际比较分析法分析结果_20260321_043145.xlsx。 - 当前真实工作表为
参数/原始数据/指标类型/适度指标/正值平移/预处理矩阵/熵权法标准化/熵权法计算/归一化矩阵N/方案优先度P/权重/理论评价矩阵Tp/实际评价矩阵Tr/差距矩阵G/汇总/敏感性分析/得分与排名/图表清单。论文表题应按这套中文 sheet 名准确落地。 - 当前稳定实体图文件为
charts/weights.png、charts/gap_q.png、charts/sensitivity.png。正文如果解释“总差距越小越优”,应直接对应差距矩阵G/汇总/得分与排名这三张表和gap_q.png。 - 真实 repro 脚本为
repro_mairca_20260321_043145.py,并通过SRC_FILE = SCRIPT_DIR / 'input_snapshot.xlsx'读取输入快照,再输出到repro_outputs/。它不是统一的repro_inputs/...结构,而是“脚本同目录输入快照 + repro_outputs”口径。 - 当前结果目录包含递归
repro_outputs/复现链。论文正文若只写主实验,应固定引用首层主结果目录,不要把后续复现层的图表和 xlsx 混入正文。
12.3 全量强化补充
- 当前主证据目录是
具体的算法3/多指标评价/MAIRCA-理想-实际比较分析法/results/manual_check_mairca_20260321/MAIRCA-理想-实际比较分析法分析结果_20260321_043145。主工作簿位于具体的算法3/多指标评价/MAIRCA-理想-实际比较分析法/results/manual_check_mairca_20260321/MAIRCA-理想-实际比较分析法分析结果_20260321_043145/MAIRCA-理想-实际比较分析法分析结果_20260321_043145.xlsx。 - 当前主工作簿的真实工作表为
参数、原始数据、指标类型、适度指标、正值平移、预处理矩阵、熵权法标准化、熵权法计算、归一化矩阵N、方案优先度P、权重、理论评价矩阵Tp、实际评价矩阵Tr、差距矩阵G、汇总、敏感性分析、得分与排名、图表清单,与旧文列出的主结构一致。 - 当前首层图文件为
具体的算法3/多指标评价/MAIRCA-理想-实际比较分析法/results/manual_check_mairca_20260321/MAIRCA-理想-实际比较分析法分析结果_20260321_043145/charts/weights.png、gap_q.png、sensitivity.png。这三张图是正文应引用的主图,不应改去引用repro_outputs里的再生成副本。 - 当前 repro 脚本为
具体的算法3/多指标评价/MAIRCA-理想-实际比较分析法/results/manual_check_mairca_20260321/MAIRCA-理想-实际比较分析法分析结果_20260321_043145/repro_mairca_20260321_043145.py,其真实输入口径是SRC_FILE = SCRIPT_DIR / 'input_snapshot.xlsx'。与很多算法不同,这里没有repro_inputs/目录,而是把输入快照平铺在首层目录里。 - 当前首层输入快照实体文件是
具体的算法3/多指标评价/MAIRCA-理想-实际比较分析法/results/manual_check_mairca_20260321/MAIRCA-理想-实际比较分析法分析结果_20260321_043145/input_snapshot.xlsx。因此这篇文档的复现口径应明确写成“脚本同目录输入快照复现”。 - 当前目录还包含一层递归复现结果
具体的算法3/多指标评价/MAIRCA-理想-实际比较分析法/results/manual_check_mairca_20260321/MAIRCA-理想-实际比较分析法分析结果_20260321_043145/repro_outputs/MAIRCA-理想-实际比较分析法分析结果_20260321_043213/,里面也有新的工作簿、图和repro_mairca_20260321_043213.py。写文档时必须把043145视为首层主结果,把043213视为 repro 再生产物。
13. 软件实现核查补充(2026-07)
- 当前实现的主证据目录应写作
具体的算法3/多指标评价/MAIRCA-理想-实际比较分析法/results/manual_check_mairca_20260321/MAIRCA-理想-实际比较分析法分析结果_20260321_043145。 - 正文应围绕
参数、原始数据、指标类型、适度指标、正值平移、预处理矩阵、熵权法标准化、熵权法计算、归一化矩阵N、方案优先度P、权重、理论评价矩阵Tp、实际评价矩阵Tr、差距矩阵G、汇总、敏感性分析、得分与排名、图表清单来写。 - 图证应对应
charts/weights.png、gap_q.png、sensitivity.png。 repro_mairca_20260321_043145.py使用input_snapshot.xlsx作为脚本同目录输入快照,并在repro_outputs/里递归生成后续结果;正文应将首层主结果与递归复现层分开。