层次分析法(AHP)详解:从原理到MATLAB实战,解决多准则决策难题 1. 从“拍脑袋”到“算脑袋”为什么我们需要层次分析法在数学建模、项目评估、方案决策甚至日常生活中我们常常面临一个经典难题当多个因素交织在一起共同影响一个最终目标时我们该如何科学地、量化地做出最优选择比如你要选一款手机需要考虑价格、性能、拍照、续航、品牌等多个维度一个城市要评估几个新区的发展规划得权衡经济、环境、社会、成本等不同指标。如果只是凭感觉“拍脑袋”决定往往说服力不足也容易陷入主观偏见。层次分析法正是为了解决这类复杂的多准则决策问题而生的“算脑袋”工具。它由美国运筹学家托马斯·塞蒂在20世纪70年代提出其核心思想是把一个复杂的决策问题分解为目标、准则、方案等层次通过两两比较的方式将人的主观判断进行量化最终计算出各方案的权重或优劣排序。它巧妙地将定性与定量分析相结合特别适合那些没有统一度量标准、难以完全用数据描述的决策场景。简单来说AHP帮你把“我觉得A比B好一点C和D差不多”这种模糊的感觉变成了“A的权重是0.35B是0.25C是0.20D是0.20”这样清晰的数字。这不仅让决策过程变得透明、可追溯也极大地提升了结论的说服力。无论是大学生参加数学建模竞赛还是企业管理者进行战略评估掌握AHP都相当于拥有了一把将主观经验转化为客观依据的钥匙。2. AHP的核心四步搭建框架、构造矩阵、计算权重与一致性检验层次分析法的实施流程可以清晰地分为四个步骤这四步环环相扣构成了AHP方法论的骨架。理解并走通这四步你就掌握了AHP的八成精髓。2.1 第一步建立层次结构模型这是整个分析的基石也是最需要思考和经验的一步。你需要把决策问题条理化、层次化构建一个像金字塔一样的结构。目标层最高层问题的最终目的即你要决策什么。例如“选择最优的手机”、“评估最佳城市规划方案”。准则层中间层为实现总目标而设立的各项判断准则、子目标或属性。它可以有多层。例如选择手机的准则层可以包括“硬件性能”、“用户体验”、“成本”等而“硬件性能”下又可以细分为“处理器”、“内存”、“存储”等子准则。方案层最底层待选的各个方案、措施或对象。例如“华为Mate 60”、“iPhone 15”、“小米14”。搭建模型时要确保同一层次的元素大致属于同一量级且对上一层次的某个因素产生影响。一个好的层次结构应该要素齐全、逻辑清晰、层次分明。我个人的经验是在建模初期可以先用思维导图工具如XMind进行头脑风暴罗列所有可能因素再进行归类和分层这样不容易遗漏重要准则。2.2 第二步构造判断成对比较矩阵这是AHP将主观判断量化的关键步骤。对于从属于上一层次每个因素的同一层次诸因素我们需要进行两两比较。比较时塞蒂教授引入了一个1-9的标度法来量化我们的判断。1-9标度法的含义1表示两个因素相比具有同等重要性。3表示两个因素相比一个因素比另一个因素稍微重要。5表示两个因素相比一个因素比另一个因素明显重要。7表示两个因素相比一个因素比另一个因素强烈重要。9表示两个因素相比一个因素比另一个因素极端重要。2, 4, 6, 8表示上述相邻判断的中间值。倒数若因素i与因素j的重要性之比为a_ij则因素j与因素i的重要性之比为a_ji 1 / a_ij。假设在“选择手机”的目标下准则层有“性能(A)”、“拍照(B)”、“续航(C)”三个因素。我们针对“性能”这个上层因素来比较这三个准则的重要性。经过思考你认为性能比拍照明显重要标度5性能比续航稍微重要标度3拍照比续航介于稍微不重要和同等重要之间标度1/2这里需要谨慎我们稍后讨论那么我们就可以构造出一个3x3的判断矩阵性能(A)拍照(B)续航(C)性能(A)153拍照(B)1/51?续航(C)1/3?1注意矩阵的对角线元素都是1自己比自己同等重要。根据倒数规则A比B是5那么B比A就是1/5A比C是3那么C比A就是1/3。现在剩下B和C的比较值未知需要你再次判断。如果你认为拍照比续航“稍微不重要”那么标度可以取“稍微重要”的倒数即1/3。但这里你感觉是介于“同等重要(1)”和“稍微不重要(1/3)”之间这可能对应标度1/2。这里有一个非常重要的实操技巧尽量避免使用偶数标度2,4,6,8及其倒数除非你非常确信你的判断恰好处于两个奇数标度的正中间。因为奇数标度的语义更明确而偶数标度容易引入歧义。在初期练习时建议强迫自己在1,3,5,7,9及其倒数中做出选择这能训练你的判断力。所以这里我们或许可以重新评估拍照和续航相比是“同等重要(1)”还是“稍微不重要(1/3)”假设我们最终判定为“同等重要”则矩阵补充完整如下性能(A)拍照(B)续航(C)性能(A)153拍照(B)1/511续航(C)1/311这个矩阵就称为针对“选择手机”目标其准则层元素之间的判断矩阵。2.3 第三步层次单排序与一致性检验构造好判断矩阵后我们需要计算这个矩阵的特征向量这个特征向量就代表了各因素相对于其上层因素的权重这个过程称为“层次单排序”。最常用的计算方法是“算术平均法”或“几何平均法”。以算术平均法为例将判断矩阵的每一列归一化即每一列的元素除以该列所有元素之和。 对于我们上面的矩阵 第一列和1 1/5 1/3 1 0.2 0.3333 1.5333 第二列和5 1 1 7 第三列和3 1 1 5归一化后矩阵为性能(A)拍照(B)续航(C)性能(A)1/1.5333≈0.65225/7≈0.71433/50.6000拍照(B)0.2/1.5333≈0.13041/7≈0.14291/50.2000续航(C)0.3333/1.5333≈0.21741/7≈0.14291/50.2000将归一化后的矩阵的每一行相加 性能(A)行和0.6522 0.7143 0.6000 1.9665 拍照(B)行和0.1304 0.1429 0.2000 0.4733 续航(C)行和0.2174 0.1429 0.2000 0.5603将行和向量归一化即得到权重向量W 总和1.9665 0.4733 0.5603 3.0001 性能权重 W_A 1.9665 / 3.0001 ≈ 0.6555 拍照权重 W_B 0.4733 / 3.0001 ≈ 0.1578 续航权重 W_C 0.5603 / 3.0001 ≈ 0.1867所以权重向量 W [0.6555, 0.1578, 0.1867]^T。这意味着在“选择手机”时你认为“性能”的权重高达65.55%“拍照”占15.78%“续航”占18.67%。接下来是至关重要的一步一致性检验。由于判断矩阵基于人的主观评分可能会出现逻辑矛盾。例如如果你认为A比B重要3B比C重要3那么理论上A应该比C重要至少是3*39。但如果你在矩阵中给A比C的标度是2这就产生了不一致。一致性检验就是用来衡量这种矛盾程度的。计算最大特征值 λ_max首先计算判断矩阵A乘以权重向量W得到一个新的向量AW。A * W |1 5 3| |0.6555| |1*0.6555 5*0.1578 3*0.1867| |1.9665| |1/5 1 1| * |0.1578| |0.2*0.6555 1*0.1578 1*0.1867| ≈ |0.4733| |1/3 1 1| |0.1867| |0.3333*0.65551*0.15781*0.1867| |0.5603|然后λ_max 近似等于 AW 的每个分量除以 W 对应分量的平均值。 λ_max ≈ (1.9665/0.6555 0.4733/0.1578 0.5603/0.1867) / 3 ≈ (3.000 3.000 3.000) / 3 3.000 这是一个理想情况因为我们的矩阵是完全一致的计算一致性指标 CI CI (λ_max - n) / (n - 1)其中n为矩阵阶数本例中n3。 CI (3.000 - 3) / (3 - 1) 0查询平均随机一致性指标 RI 这是一个通过随机实验得到的标准值与矩阵阶数n有关。常用RI值如下表n12345678910RI000.520.891.121.261.361.411.461.49计算一致性比率 CR CR CI / RI 当CR 0.10时认为判断矩阵的一致性是可以接受的。否则就需要调整判断矩阵中的标度值。在本例中CI0所以CR0 0.1通过检验。在实际操作中由于主观判断的模糊性CR很难为0但只要小于0.1我们就认为这个权重分配是合理可信的。2.4 第四步层次总排序与决策层次单排序得到了每一层元素相对于其上一层某元素的权重。层次总排序就是计算最底层方案层各元素相对于最高层目标层的权重总排序。这个过程是从最高层到最底层逐层合成的。假设我们有三个手机方案P1, P2, P3。我们已经得到了准则层对目标层的权重 W_Criteria [0.6555, 0.1578, 0.1867]性能、拍照、续航。现在我们需要针对每一个准则让专家或决策者对三个手机进行两两比较构造新的判断矩阵并计算每个手机在该准则下的权重即层次单排序。例如针对“性能”准则比较P1, P2, P3的性能得到权重向量 W_Performance [w_p1, w_p2, w_p3]。针对“拍照”准则得到 W_Camera [w_c1, w_c2, w_c3]。针对“续航”准则得到 W_Battery [w_b1, w_b2, w_b3]。那么手机P1相对于总目标“选择最优手机”的最终得分总权重为总权重(P1) W_性能 * w_p1 W_拍照 * w_c1 W_续航 * w_b1 0.6555 * w_p1 0.1578 * w_c1 0.1867 * w_b1同理计算P2和P3的总权重。总权重最高的方案即为最优方案。注意在计算方案层对每个准则的单排序时同样需要进行一致性检验。只有当所有判断矩阵的一致性都可接受时最终的总排序结果才是可靠的。3. MATLAB实战让AHP计算飞起来手工计算AHP对于3阶、4阶矩阵尚可应付一旦准则和方案增多计算量将急剧增大且容易出错。这时MATLAB就成为了我们的得力助手。下面我将演示如何用MATLAB实现AHP的核心计算并分享一些实用的代码片段和技巧。3.1 判断矩阵的输入与权重计算首先我们在MATLAB中定义判断矩阵。假设我们有一个4阶的判断矩阵例如准则层有4个因素。% 定义判断矩阵A A [1, 3, 5, 7; 1/3, 1, 2, 5; 1/5, 1/2, 1, 3; 1/7, 1/5, 1/3, 1]; % 这是一个示例矩阵体现了A1最重要A4最不重要接下来我们使用特征值法计算权重。特征值法的思想是判断矩阵A的最大特征值对应的特征向量归一化后就是权重向量。MATLAB的eig函数可以方便地计算特征值和特征向量。% 方法一特征值法 (更贴近AHP原理) [V, D] eig(A); % V是特征向量矩阵D是对角矩阵对角线上是特征值 eigenvalues diag(D); % 提取特征值 [max_eigval, max_index] max(eigenvalues); % 找到最大特征值及其位置 weight_vector V(:, max_index); % 取出对应的特征向量 weight_vector abs(weight_vector); % 取绝对值特征向量可能为复数或负值AHP中取正 weight_vector weight_vector / sum(weight_vector); % 归一化得到权重向量W1 disp(使用特征值法计算的权重); disp(weight_vector);除了特征值法我们也可以实现之前提到的算术平均法和法和几何平均法根法作为对比或验证。% 方法二算术平均法和法 [n, ~] size(A); Sum_A sum(A); % 对每一列求和 Stand_A A ./ repmat(Sum_A, n, 1); % 矩阵每一列归一化 W2 sum(Stand_A, 2) / n; % 对归一化后的矩阵每一行求和再除以n disp(使用算术平均法计算的权重); disp(W2); % 方法三几何平均法根法 Prod_A prod(A, 2); % 对每一行求积 Prod_n_A Prod_A .^ (1/n); % 开n次方 W3 Prod_n_A / sum(Prod_n_A); % 归一化 disp(使用几何平均法计算的权重); disp(W3);运行后你会发现三种方法计算出的权重向量非常接近。在实际应用中特征值法是标准方法但和法与根法计算简单易于理解且对于一致性较好的矩阵结果差异很小。3.2 一致性检验的自动化实现一致性检验是AHP不可或缺的一环我们必须用代码来实现它。% 接上文假设我们使用特征值法得到的权重向量 W weight_vector % 最大特征值 max_eigval 前面已求得 % 1. 计算一致性指标 CI CI (max_eigval - n) / (n - 1); % 2. 定义平均随机一致性指标 RI (这里定义到n10) RI_Table [0, 0, 0.52, 0.89, 1.12, 1.26, 1.36, 1.41, 1.46, 1.49]; if n length(RI_Table) RI RI_Table(n); else % 对于大于10的阶数可以使用近似公式 RI 1.98*(n-2)/n RI 1.98 * (n - 2) / n; warning(矩阵阶数n%d 10RI值使用近似公式计算结果仅供参考。, n); end % 3. 计算一致性比率 CR CR CI / RI; disp([最大特征值 λ_max , num2str(max_eigval)]); disp([一致性指标 CI , num2str(CI)]); disp([随机一致性指标 RI , num2str(RI)]); disp([一致性比率 CR , num2str(CR)]); if CR 0.10 disp(一致性检验通过CR 0.10判断矩阵的一致性可以接受。); else disp(一致性检验未通过CR 0.10请调整判断矩阵。); % 这里可以添加一些辅助调整的建议例如找出最不一致的元素 % 计算每个元素的相对贡献度一种方法 AW A * W; lambda_i AW ./ W; % 每个分量近似的特征值 inconsistency abs(lambda_i - max_eigval); [~, idx] max(inconsistency); [row, col] ind2sub(size(A), idx); fprintf(建议重点关注矩阵中第%d行第%d列的元素 a(%d,%d)%.4f其一致性贡献最大。\n, row, col, row, col, A(row, col)); end这段代码不仅完成了检验还在未通过时给出了调整建议。它通过计算AW./W得到一组近似的特征值与最大特征值偏差最大的那个分量对应的原始判断矩阵元素可能最值得怀疑调整它可能最有效地降低CR值。3.3 封装成函数与层次总排序计算为了提高代码的复用性我们可以将AHP单层权重计算和一致性检验封装成一个函数。function [W, CR, lambda_max] ahp_weight(A) % AHP单层权重计算与一致性检验函数 % 输入A - 判断矩阵 (方阵) % 输出W - 权重向量 % CR - 一致性比率 % lambda_max - 最大特征值 % CI - 一致性指标 [n, m] size(A); if n ~ m error(输入矩阵A必须为方阵); end % 使用特征值法计算权重 [V, D] eig(A); eigenvalues diag(D); [lambda_max, max_index] max(real(eigenvalues)); % 取实部 W real(V(:, max_index)); % 取实部 W abs(W); % 取绝对值确保为正 W W / sum(W); % 归一化 % 一致性检验 CI (lambda_max - n) / (n - 1); RI_Table [0, 0, 0.52, 0.89, 1.12, 1.26, 1.36, 1.41, 1.46, 1.49]; if n length(RI_Table) RI RI_Table(n); else RI 1.98 * (n - 2) / n; % 近似公式 end CR CI / RI; end有了这个函数层次总排序的计算就变得非常清晰。假设我们有3个准则对目标的权重向量为W_Criteria每个准则下针对3个方案的判断矩阵分别为A1, A2, A3。% 假设数据 W_Criteria [0.6; 0.3; 0.1]; % 准则层权重 % 方案层对每个准则的判断矩阵 A1 [1, 2, 4; 1/2, 1, 3; 1/4, 1/3, 1]; % 准则1下的方案比较 A2 [1, 1/3, 1/5; 3, 1, 1/2; 5, 2, 1]; % 准则2下的方案比较 A3 [1, 5, 7; 1/5, 1, 3; 1/7, 1/3, 1]; % 准则3下的方案比较 % 计算每个准则下方案的权重 [W1, CR1] ahp_weight(A1); [W2, CR2] ahp_weight(A2); [W3, CR3] ahp_weight(A3); % 检查一致性 if CR10.1 CR20.1 CR30.1 disp(所有方案层判断矩阵一致性检验通过。); else error(存在方案层判断矩阵未通过一致性检验请调整。); end % 构造方案层权重矩阵 (每一列是一个方案在不同准则下的权重) Scheme_Weights [W1, W2, W3]; % 注意这里W1, W2, W3是列向量拼成3x3矩阵 % 层次总排序方案最终权重 准则层权重 * 方案层权重矩阵 Final_Weights W_Criteria * Scheme_Weights; % 或者用 sum(W_Criteria .* Scheme_Weights, 1) % 更清晰的写法 Final_Weights zeros(size(W1)); for i 1:length(W_Criteria) Final_Weights Final_Weights W_Criteria(i) * Scheme_Weights(:, i); end disp(方案最终权重总排序); for i 1:length(Final_Weights) fprintf(方案P%d: %.4f\n, i, Final_Weights(i)); end [~, best_idx] max(Final_Weights); fprintf(\n最优方案是P%d\n, best_idx);通过这样的代码组织一个完整的AHP分析流程就自动化了。你可以轻松修改输入矩阵快速得到不同决策场景下的结果。4. 避坑指南AHP实战中的常见陷阱与应对策略层次分析法原理看似清晰但在实际应用尤其是数学建模竞赛中新手很容易踩坑。下面我结合多年评审和指导经验梳理出几个最常见的陷阱及应对策略。4.1 准则层构建的“粒度”陷阱问题准则划分过粗或过细。过粗如只分“技术”、“经济”、“社会”导致每个准则下包含太多异质因素难以进行合理的两两比较。过细则会导致层次结构过于庞大构造的判断矩阵数量激增工作量大且容易混乱更重要的是细化的准则之间可能存在高度相关性违反AHP的独立性假设。对策遵循“MECE”原则Mutually Exclusive, Collectively Exhaustive相互独立完全穷尽。每个准则应相对独立且同一层所有准则加起来能完整描述上一层次因素。一个实用的技巧是将准则数量控制在3-7个。心理学研究表明人对超过7个事物进行两两比较时判断的一致性会显著下降。如果初始因素很多可以先进行聚类形成几个大的维度一级准则每个维度下再细分二级准则。4.2 判断矩阵的“标度随意性”陷阱问题填写1-9标度时凭感觉乱填导致矩阵一致性极差CR远大于0.1或者虽然CR勉强通过但权重分布明显不合理如某个极次要因素权重过高。对策建立比较锚点先找出这组因素中最重要和最不重要的两个赋予一个你认为合理的标度如9或1/9。然后以它们为基准去评估其他因素。反复提问比较因素i和j时不要想“i比j重要多少”而是问“为了总目标提升i的效用是提升j的效用的多少倍”这有助于将模糊的“重要性”转化为更具体的“效用比”。逆向检查构造完矩阵后看看计算出的权重是否符合你的整体直觉。如果某个你认为“一般重要”的因素权重却高达0.5那肯定有问题需要回头检查对应的标度。团队决策时使用加权几何平均如果有多位专家打分不要简单算术平均他们的判断矩阵。应对每位专家给出的标度取几何平均数再用这个平均标度构造综合判断矩阵。几何平均能更好地保持倒数关系。4.3 一致性检验的“唯CR论”陷阱问题过分追求CR0.1甚至通过反复微调标度来“凑”出一个漂亮的CR值而忽略了调整后的标度是否真实反映了你的判断。这本质上是“用数学修正主观”本末倒置。对策理解一致性检验的本质是“逻辑自洽性检查”而不是“准确性检查”。CR0.1只说明你的判断没有大的逻辑矛盾不代表你的判断一定正确。正确的流程是先基于你的真实认知构造矩阵 - 计算CR - 如果CR过大比如0.2说明你的判断可能存在矛盾需要重新审视你的认知而不是直接改数字 - 在重新思考后或许会发现之前对某个因素的定位有误这时再修正标度 - 重新计算。整个过程主观判断是主导数学工具是辅助验证和发现思维盲点的。4.4 方案层比较的“标准缺失”陷阱问题在方案层进行两两比较时感到无从下手。例如比较两款手机的“性能”你知道A芯片比B芯片好但好多少对应标度3还是5对策为每个准则建立具体的、可操作的比较标准。例如性能查芯片跑分如Geekbench计算分数比值。比值在1-1.2倍可视为同等重要(1)1.2-1.5倍可视为稍微重要(3)以此类推。或者如果跑分是120分 vs 100分那么重要性比例可以是120/1001.2近似对应标度1或3这里需要引入一个映射规则。价格直接使用价格的倒数比或差值比。例如价格越低越好。A手机3000元B手机4000元。对于“成本”准则A相对于B的重要性可以是 (4000/3000) ≈ 1.33对应标度3更稳健的做法是设定价格区间低于某个值为“极端重要(9)”位于某个区间为“明显重要(5)”等。定性指标如“外观设计”可以分解为几个子维度材质、手感、色彩先对子维度用AHP再综合或者采用德尔菲法专家背对背打分确定标度。核心在于尽可能为比较找到客观依据即使不能完全量化也要建立清晰的评价等级描述让判断有据可依。4.5 MATLAB计算中的“特征向量”陷阱问题在MATLAB中使用eig函数时直接取第一个特征向量或对复数/负值特征向量处理不当。对策确保取最大特征值对应的特征向量使用[max_eigval, max_index] max(diag(D));定位。处理复数判断矩阵是正互反矩阵理论上最大特征值是实数但由于计算精度eig函数可能返回极小的虚部。用real()函数取实部即可。处理负值特征向量可能所有分量同号也可能有正有负。AHP中权重应为正数。通常取绝对值abs()。但更严谨的做法是如果特征向量分量有正有负说明你的判断矩阵可能存在问题如标度设置导致矩阵性质改变需要回头检查。归一化最后一定要对特征向量进行归一化使其和为1。验证用简单的算术平均法或几何平均法计算权重与特征值法的结果进行交叉验证。如果差异很大优先检查判断矩阵和特征值计算代码。5. 超越基础AHP的局限性与进阶方法探讨没有任何方法是万能的AHP也不例外。了解它的局限性并知道在什么情况下可以寻求更高级的方法是成为建模高手的必经之路。5.1 AHP的固有局限性主观性依赖AHP的根基是主观判断矩阵。专家的知识、经验和偏见会直接影响结果。所谓“垃圾进垃圾出”。标度局限1-9标度法虽然经典但有时不足以精细区分差异。例如当两个因素重要性相差20倍时最大标度9也显得力不从心。独立性假设AHP要求同一层次的元素相互独立。现实中很多因素存在相关性如“GDP”和“财政收入”强行使用AHP会扭曲权重。方案增减敏感性增加或减少一个方案可能会导致原有方案的排序发生变化这在某些决策中是不希望看到的称为“排名逆转”问题。层次结构固定AHP要求预先确定完整的层次结构。对于动态的、元素间关系复杂的系统问题构建静态层次结构可能过于简化。5.2 模糊层次分析法为了处理判断的模糊性模糊集理论被引入AHP形成了模糊层次分析法。它允许专家用三角模糊数如“大约5”表示为(3,5,7)或梯形模糊数来表示判断而不是一个确切的数字。这更符合人类“模糊判断”的思维方式。计算过程涉及模糊数的运算和去模糊化最终得到权重。FAHP能更好地容纳不确定性但计算更为复杂。5.3 与熵权法结合AHP-熵权法组合赋权这是数学建模中非常流行且实用的策略用于克服AHP纯主观的缺点。AHP主观赋权体现决策者的经验和战略意图。熵权法客观赋权基于各方案在不同指标下的实际数据利用信息熵计算指标的离散程度。数据离散程度越大即该指标区分方案的能力越强熵权越大。组合赋权将AHP得到的主观权重与熵权法得到的客观权重通过线性加权如各占50%、乘法合成等方法结合起来得到综合权重。这种方法既考虑了主观偏好又尊重了客观数据使得评价结果更加全面、可靠。在建模论文中采用这种组合模型通常能显著提升模型的科学性和说服力。5.4 网络层次分析法当系统内元素存在复杂的相互依存和反馈关系而不仅仅是简单的层次关系时T.L. Saaty又提出了ANP。ANP将系统元素分为控制层和网络层允许同层或不同层元素之间相互影响用“超矩阵”来刻画这种复杂的网络关系最终计算极限超矩阵得到权重。ANP能处理更复杂的决策问题但建模和计算难度也大大增加。如何选择对于元素关系清晰、相对独立的简单或中等复杂决策经典AHP足矣。如果决策者判断模糊或需要容纳不确定性考虑模糊AHP。如果同时拥有专家经验和客观数据强烈推荐AHP-熵权法组合这是竞赛中的“加分项”。如果元素间存在明显的相互影响、依赖和反馈如供应链评价、生态系统分析则需要研究ANP。掌握层次分析法不仅仅是学会一套计算流程更是掌握了一种将复杂问题结构化、将主观思维量化的系统思维方式。从小心翼翼地构造第一个判断矩阵到用MATLAB一键生成分析报告再到洞察其局限并融合其他方法这个过程本身就是建模能力成长的缩影。在实际应用中不妨多问自己几个“为什么”为什么选这几个准则这个标度3的依据是什么如果换一组专家结果会大变吗这些思考远比机械地跑通程序更有价值。