模糊综合评价
模糊综合评价(Fuzzy Comprehensive Evaluation, FCE)是数学建模中处理评价类问题的主力方法之一:它把"边界不清"的定性评语(如"教学质量好""环境质量优")用隶属度量化,再通过模糊合成把多个因素的模糊信息汇总成一个综合评价向量。它特别擅长处理"指标是定性打分的、等级之间没有明确分界"的评价场景,常与层次分析法(AHP)、熵权法、TOPSIS 组合使用,是竞赛评价类论文中出现频率最高的算法之一。本文从模糊数学基础、模型五要素、合成算子、评价指标、可视化到可运行代码,完整梳理模糊综合评价的竞赛实战用法。
一、算法含义
1.1 通俗理解:从"85 分算不算优秀"说起
先看一个竞赛中常见的场景:要评价一位教师的教学质量,通常有"教学内容、教学方法、教学态度、教学效果"四个方面(因素),每个方面给出"优秀 / 良好 / 中等 / 及格 / 不及格"五个等级(评语)。问题来了:
- 一位教师某班及格率 92%,这个指标算"优秀"还是"良好"?如果硬性规定"90 分以上算优秀",那 89.9 分与 90 分只差 0.1 分,却一个"优秀"一个"良好",这显然不符合人的直觉;
- 专家投票时,20 位专家有 15 位投"优秀"、3 位投"良好"、2 位投"中等",这个"多数派"结论能有多确定?
经典集合论的回答是"非此即彼":元素要么属于集合、要么不属于。这种二值逻辑用一个特征函数刻画:
模糊数学(L. A. Zadeh 于 1965 年提出)把"属于"改成一个介于 0 和 1 之间的数——隶属度 ,表示" 在多大程度上属于集合 "。于是:
- 及格率 92% 可以"以 0.7 的程度属于优秀、以 0.3 的程度属于良好",即 ,;
- 15/20 位专家投"优秀",就把"教学内容属于优秀"的隶属度定为 。
模糊综合评价做的事情,就是把每个因素对每个等级的隶属度(构成隶属度矩阵 )、每个因素的重要性权重(构成权重向量 ),用模糊合成算子"合成"成一个最终的评价向量 ——即"评价对象整体上对每个等级的隶属程度",再据此下结论。整个过程可以用一句话概括:
隶属度矩阵 R 记录"单个因素落在各等级的模糊程度",权重 A 记录"各因素谁更重要",模糊合成 B = A ∘ R 把它们揉成一个总评价。
1.2 模糊数学基础:隶属度与隶属函数
隶属函数 把一个具体数值 (指标值、打分、票数比例等)映射为对模糊集合 的隶属度。竞赛中常用的隶属函数有三类形状(以 100 分制指标、等级"优秀/良好/中等/及格/不及格"为例,相邻等级间隔 10 分):
- 升半梯形(常用于最高等级"优秀"):
- 降半梯形(常用于最低等级"不及格"):
- 中间梯形(常用于"良好/中等/及格"这类中间等级,以"良好"为例):
- 高斯型(曲线光滑,多用于指标取中间值最优的情形):
三个重要性质:
- 相邻等级的隶属曲线互相重叠: 时 、、其余为 0——同一个值同时"部分属于"两个相邻等级,这正是"模糊"二字的含义;
- 模糊划分(partition of unity):上面这组梯形隶属函数对任意 都有 ,即各等级隶属度之和恒为 1,这保证后续评价向量天然"行归一化";
- 隶属函数形状由问题决定:拐点(85、95 等)和斜率(这里都是 10 分宽)是人为设定的,需要根据评分标准的语义在论文中交代清楚。
1.3 模糊综合评价的五个要素
一个完整的模糊综合评价模型由以下五个要素构成(符号定义统一见第五节):
要素 1:因素集(指标集)
即评价从哪些方面进行。如教学质量评价:,共 个因素。
要素 2:评语集(等级集)
即评价结果的档次划分。如 ,共 个等级。评语集一般取 3~5 个等级:太少区分度不足,太多(如 7 级以上)专家难以区分相邻等级。
要素 3:权重向量
表示第 个因素的重要程度。权重通常由 AHP(层次分析法) 给出(构造判断矩阵 → 求特征向量 → 一致性检验),也可以用熵权法(客观数据定权)或两者组合赋权。本文第六节示例中的权重 即由 AHP 方根法算出。
要素 4:单因素评价矩阵(隶属度矩阵)
第 行 是第 个因素的单因素评价向量:只从这个因素看,对象属于各等级的隶属度。每行必须归一化:。竞赛中 的三种构造方式:
| 构造方式 | 做法 | 适用情形 |
|---|---|---|
| 专家投票比例法 | 请 位专家投票, | 定性指标(本文主例,20 位专家投票) |
| 隶属函数法 | 指标实测值 代入各等级隶属函数, | 定量指标(本文小例,及格率 92%) |
| 频率统计法 | 大样本调查, | 问卷/量表数据 |
要素 5:模糊合成算子
把 与 合成为总评价向量的运算规则。常用的有三种,见 1.5 节。
1.4 一级模糊综合评价模型
单层(一级)模糊综合评价的模型非常简洁——权重向量与隶属度矩阵做一次模糊合成:
其中 是评价对象整体上对第 个等级的隶属度, 称为综合评价向量。以本文示例(教学质量评价)为例,采用加权平均型算子时:
第一分量手算演示(加权平均型 ):
同理可得 ,分量和为 1。解读:该教师的教学质量"以 65.91% 的程度属于优秀、23.57% 属于良好、8.25% 属于中等、2.27% 属于及格、0% 属于不及格"。
1.5 常用模糊合成算子(三种)
合成算子 的选择直接影响结果,是模糊综合评价的核心设计决策。设 为权重、 为隶属度,三种常用算子如下:
① 主因素决定型 (取小取大)
含义:先对每个因素"取小"(,相当于权重给隶属度封顶),再跨因素"取大"(只保留最突出的那个因素)。缺点:大量投票信息被丢弃, 的分量和往往小于 1,结论偏保守。本文示例中 给出 ,分量和仅 0.8005——"优秀"分量 0.6591 被权重上限 0.4231 直接卡掉了一截。
② 主因素突出型 (乘积取大)
含义:用乘法代替取小(权重不再"封顶"而是缩放),但最后仍只取最大值,次要因素的信息依然被忽略。比 精细一些,但仍只反映"最突出因素"。
③ 加权平均型 (乘加)——竞赛最常用
含义:权重与隶属度全部参与运算,既体现加权平均、又让每个因素的投票都进入结果。优点:信息利用最充分, 分量和恒为 1(当 行归一化、 归一化时),结果最均衡可信。本文示例中 给出 。
| 算子 | 公式 | 体现权重的方式 | 信息利用 | 竞赛建议 |
|---|---|---|---|---|
| 取小取大 | 取小封顶 | 最少(只留主要因素) | 仅做对比,不用它下结论 | |
| 乘积取大 | 乘法缩放 | 较少(仍只取最大) | 少用 | |
| 加权平均 | 乘法加权 | 全部 | 推荐,竞赛标配 |
竞赛提示:论文中写"选用加权平均型算子 ,它能充分利用全部单因素评价信息"这一句话,就足以让评审认可你的算子选择;若再对比一下 的结果并指出其信息丢失,属于加分操作(第六节代码就是这么做的)。
1.6 结果判定:最大隶属度原则与加权平均综合得分
得到 后如何下结论?两种主流方法,通常并用:
方法一:最大隶属度原则—— 中最大分量对应的等级就是结论:
但最大隶属度原则不是永远可靠的:当 的分布比较"平坦"(最大分量与次大分量相差不大)时,单凭 0.01 的差距下结论没有说服力。常用有效度指标 判断( 为最大分量、 为次大分量、 为等级数):
- :最大隶属度原则有效,可直接判定;
- (或经验法则 ):原则失效,应改用加权平均综合得分判定。
本文示例:,,,原则有效。
方法二:加权平均综合得分——给每个等级赋一个代表分值 ,再按隶属度加权:
| 等级 | 优秀 | 良好 | 中等 | 及格 | 不及格 |
|---|---|---|---|---|---|
| 赋分 (常见) | 95 | 85 | 75 | 65 | 55 |
| 综合得分带 |
本文示例: 分 → 对应"优秀",与最大隶属度原则结论一致。综合得分还有一个大用处:多个评价对象需要排序时,向量 之间无法直接比较大小,得分 可以——所以竞赛中常给"每位教师/每家企业"都算一个 然后排序。
1.7 多级模糊综合评价(因素分层)的思想
当因素很多时(如"教学质量"下分 4 个方面、每个方面下再分 3~4 个具体指标,共十几项),直接让 15 个因素一次性竞争权重会稀释权重、也难以两两比较。多级模糊综合评价把因素分成若干层,逐层评价:
目标层: 教学质量
|
准则层: 教学水平 教学素养
/ \ / \
指标层: 教学内容 教学方法 教学态度 教学效果
做法分两步(以二级模型为例):
- 底层一级评价:对每个准则下的因素子集 ,用该子集内因素的权重 与其隶属度矩阵 合成,得到该准则的评价向量 ;
- 顶层二级评价:把所有准则的评价向量拼成新的"隶属度矩阵" ,再用准则层权重 合成:。
三级、四级模型以此类推,自底向上逐层合成。多级模型的优点:每层因素数量少、权重好定、判断矩阵好构造,且能输出每一层的中间评价结果(如"教学水平"单独评了多少分),论文层次感更强。竞赛中因素超过 6~8 个时,强烈建议使用多级模型。
1.8 优缺点
优点:
- 擅长处理定性、模糊信息:专家评语、满意度打分这类"说不清边界"的信息正是它的主场,不需要硬凑精确数值;
- 结果信息丰富:输出是一个完整的等级分布向量 (而非一个孤零零的分数),可以读出"优秀 66%、良好 24%"这样的细腻结构;
- 模型简单、可解释性强:五要素清清楚楚,公式只有一次矩阵合成,评审老师容易看懂;
- 可分层扩展:多级模型能评价几十个因素的大指标体系;
- 兼容多种定权方法:AHP、熵权、专家打分、组合赋权都可无缝接入。
缺点:
- 隶属度确定主观:隶属函数形状、专家投票、等级划分都依赖人为设定,不同设定可能得出不同结论(应在论文中做灵敏度分析回应);
- 权重主观:AHP 判断矩阵是专家主观给出,虽有一致性检验兜底,但仍是争议点;
- 结果依赖合成算子: 与 结果差别可能很大,选错算子结论就跑偏;
- 最大隶属度原则可能失效: 分布平坦时"最大分量"没有说服力,需要 检验或改用加权平均;
- 无法处理指标间相关/冲突:这是评价方法共性的短板,可结合 TOPSIS、灰色关联等互验。
二、何时使用(适用场景与条件)
2.1 适用场景
凡满足"评价结果天然是等级、评价信息带有模糊性"的问题,模糊综合评价都值得一试:
- 教学质量评价:对教师、课程、教材做"优秀/良好/中等/及格/不及格"的评定(本文示例);
- 顾客/用户满意度:满意度本身就是"很满意/满意/一般/不满意"的模糊等级,隶属度矩阵可直接来自问卷各档人数比例;
- 环境质量评价:空气、水质的"优/良/轻度污染/中度污染/重度污染"分级,且各指标(PM2.5、SO₂ 等)的等级边界本身是模糊的;
- 食品安全风险评估:风险等级(低/中/高)由多种定性、半定量因素共同决定;
- 工程评标与供应商选择:标书评审的"商务/技术/价格"评分与"优/良/中"评定;
- 绩效、信用与竞争力评价:员工绩效等级、企业信用评级、城市竞争力等——竞赛中出现频率最高的应用大类。
2.2 竞赛典型题目
评价类题目是国赛的常客,以下题目常被用作模糊综合评价的教学案例:
- 2005 国赛 A 题"长江水质的评价和预测":对 17 个观测站的水质按《地表水环境质量标准》做综合评价,经典做法即"各指标隶属函数 → 隶属度矩阵 → AHP 定权 → 模糊综合评价";
- 2015 国赛 B 题"互联网+"时代的出租车资源配置:评价不同时空的"供求匹配程度"(一个典型的模糊概念);
- 2016 国赛 B 题"小区开放对道路通行的影响":对小区开放效果做综合评价;
- 历年题目中"满意度调查、服务质量评估、方案比选、绩效评定"类问题,凡涉及定性指标与等级划分的,模糊综合评价几乎都是标配方法之一。
竞赛提示:近年国赛题目越来越开放,评价对象常由参赛者自己定义。模糊综合评价 + AHP 的组合"套路成熟、叙述清晰、结果好看",是评价类题目性价比最高的方案之一;但也正因用的人多,必须在建模过程(隶属度怎么来的、权重怎么定的、灵敏度如何)上写出细节才能拉开差距。
2.3 使用前提(建模前检查清单)
| 检查项 | 具体要求 | 检查手段 |
|---|---|---|
| 能构造隶属度矩阵 | 每个因素能给出对各等级的隶属度(投票/隶属函数/频率) | 专家问卷可发放、或指标有数值可代公式 |
| 评语集合理 | 等级数 3~5 个,语义互斥且覆盖全部可能 | 与领域标准一致(如水质标准、绩效等级) |
| 权重有依据 | AHP 判断矩阵通过一致性检验(CR < 0.1) | 计算 、CI、CR |
| 隶属度矩阵行归一化 | 每行之和为 1,无全零行 | 按行求和检查 |
| 指标同向化 | 各指标"越大越好"或统一转为正向 | 逆向指标取倒数/取负后再构造隶属函数 |
| 单因素评价可信 | 投票专家有代表性、样本量足够(一般 ≥ 10 位) | 说明专家构成与抽样方法 |
2.4 不适用 / 慎用的情形
- 全定量数据且需精确排序:指标都是实测数值(如利润、成本、产量)、评价结果用于精细排序时,TOPSIS(逼近理想解)或熵权法更直接——它们不需要人为划分等级,输出就是精确得分;模糊综合评价的等级划分反而会损失精度;
- 需要严格客观结论:隶属度与权重都主观,若评审明确要求"完全基于数据的客观评价",纯模糊综合评价会被质疑,应至少用熵权法替换 AHP 定权;
- 结果用于精确预测/规划:模糊综合评价是评价方法,不是预测方法;它告诉你"现状处于哪个等级",不告诉你"明年会是多少";
- 评价对象间差异极小时:若所有对象打分都集中在同一等级(如都"良好"),模糊综合评价的区分度很低,需要细化评语集或引入更细的量化指标。
几种主流评价方法的对比:
| 方法 | 核心思想 | 适合情形 | 与模糊综合评价的关系 |
|---|---|---|---|
| 模糊综合评价 | 隶属度矩阵 + 权重合成 | 定性指标多、等级界限模糊 | 本文主角 |
| AHP | 两两比较定权重 | 只需定权/多准则决策 | 常给模糊综合评价供权重,黄金搭档 |
| TOPSIS | 距正负理想解的距离排序 | 全定量、要精确排序 | 与 FCE 互验或组合成模糊 TOPSIS |
| 熵权法 | 数据离散程度定客观权重 | 有完整数据、要客观定权 | 替换/混合 AHP 为 FCE 定权 |
| 灰色关联分析 | 与参考序列的几何相似度 | 少数据、贫信息 | 常与 FCE 并列做交叉验证 |
2.5 与 AHP、TOPSIS、熵权法的经典组合
- AHP 定权 + 模糊综合评价(黄金组合):AHP 负责"谁更重要"(输出权重 ),模糊综合评价负责"实际表现如何"(输出向量 )。两者各司其职,是竞赛论文中出现频率最高的评价套路;
- 熵权法定权 + 模糊综合评价:当指标有实际观测数据时,用熵权法从数据本身提取权重(客观),替换或修正 AHP 的主观权重,回应"权重太主观"的质疑;
- 组合赋权 + 模糊综合评价:(线性加权)或 (乘法归一),主观与客观兼顾;
- 模糊综合评价 + TOPSIS 交叉验证:同一个问题分别用两种方法评价,若排序结果大体一致,说明结论稳健——这是评审眼中的加分操作;
- 模糊 TOPSIS:把隶属度矩阵当作决策矩阵、等级当作"属性",在模糊环境下找理想解,是两方法的直接融合。
三、算法指标
下面每个指标都给出:中文名、公式、取值范围、如何解读。符号定义见第五节,本文示例数值来自第六节可运行程序(教学质量评价示例)。
3.1 综合评价向量 B(各评语等级隶属度)
- 取值范围:;加权平均型下 (取小取大型下分量和通常 ,这是判断信息是否丢失的直观标志);
- 含义:评价对象整体上属于各评语等级的隶属程度,是模糊综合评价的核心输出;
- 解读:本文示例 ,读作"该教师教学质量以 65.91% 的程度属于优秀、23.57% 属于良好、……";最大分量对应等级即初步结论;分量分布的"尖峭/平坦"反映结论的确定程度。
3.2 综合得分 S(等级赋分加权平均)
- 取值范围:介于最高与最低等级赋分之间,如赋分 时 ,单位与赋分一致(分);
- 方向:越大越好;
- 解读:把等级分布"压缩"成一个可比较的分数。本文示例 分,落在 分数带 → "优秀",与最大隶属度结论一致。主要用途:多个评价对象排序、与最大隶属度结论交叉印证。
3.3 最大隶属度原则及其有效性(、 与 )
- 判定规则:(或 )时最大隶属度原则有效;(或 )时原则失效,两个等级"难分高下",应改用综合得分 判定;
- 解读:本文示例 (优秀),(良好),,,原则有效、结论可信。注意:当 出现"双峰"(如 )时 ,硬按最大隶属度下结论会被评审质疑。
3.4 单因素评价向量 (第 i 个因素对各等级的隶属度)
- 取值范围:,行和恒为 1;
- 含义:抛开其他因素,仅从第 个因素看,对象属于各等级的程度。它是 的一行,也是构成 的原料;
- 解读:单因素向量用于短板诊断——哪个因素的最大隶属度落在低等级,哪个因素就是拖后腿的短板。本文示例中"教学内容"的向量为 (明显优秀),"教学方法"为 (相对较弱,还有 5% 专家投"及格"),可知该教师应在教学方法上改进。
3.5 权重一致性指标 CI 与 CR(AHP 定权的配套检验)
- RI(平均随机一致性指标)查表值: 时 RI ; 时 ; 时 ; 时 ; 时 ;
- 判定规则: 时判断矩阵一致性可接受,权重可信;否则应请专家重新打分;
- 解读:本文示例 ,,,一致性检验通过。注意:这个指标本身不是模糊综合评价的输出,但它是 AHP 定权可信度的证明,论文中必须报告。
3.6 指标汇总表
| 指标 | 公式 | 取值/阈值 | 解读要点 |
|---|---|---|---|
| 综合评价向量 | () | ,和为 1 | 最大分量对应等级即结论;分布平坦则结论不牢 |
| 综合得分 | 介于最高/最低赋分之间 | 用于对象排序;与最大隶属度交叉印证 | |
| 最大隶属度 | 越接近 1 结论越确定 | ||
| 原则有效性 | 有效 | 时改用加权平均判定 | |
| 单因素评价向量 | 的第 行 | ,行和为 1 | 短板诊断:看哪个因素弱 |
| 一致性指标 、 | , | 通过 | AHP 权重可信度的证明 |
四、可视化图表
4.1 四张图速查表
| 图名(文件名) | 用途 | 关键解读点 |
|---|---|---|
图① 隶属函数曲线图(fce_membership_curves.png) | 展示各等级隶属函数形状(横轴指标值、纵轴隶属度)与相邻等级重叠关系 | 曲线峰值位置 = 该等级的"典型值";相邻曲线交点 = 等级分界;好的隶属函数应覆盖全区间、无空档;垂线处的纵坐标即某指标值的各等级隶属度(如 时优秀 0.7、良好 0.3) |
图② 隶属度矩阵热力图(fce_matrix_heatmap.png) | 展示 的整体结构(行 = 因素、列 = 等级) | 颜色越深隶属度越大;每行之和必须为 1;深色块若集中在对角带说明因素间区分度高;某行全浅说明该因素"没有立场" |
图③ 各因素评价等级条形图(fce_factor_bars.png) | 分组柱状图展示每个因素在各等级的分布 | 柱高 = 投票比例;哪个因素的"优秀柱"矮、"及格柱"高,哪个就是短板;柱形扁平(各等级差不多)说明该因素争议大 |
图④ 综合评价结果等级分布图(fce_result_dist.png) | B 向量条形图 + 饼图,标注最大隶属度等级 | 最高柱(最大扇区)即结论等级,应用醒目颜色高亮并标注数值;分布呈"单峰尖峭" → 结论明确;"双峰/平台" → 最大隶属度原则存疑,改看综合得分 |
4.2 每张图"好"与"异常"的特征
- 图① 隶属函数曲线:好图——各曲线平滑连续、相邻曲线重叠约一半区间、整个横轴区间无"三不管"空档、任意 处各曲线值之和为 1;异常——两曲线之间出现空档(某段 对所有等级隶属度都为 0,评价会"卡死")、曲线总高超过 1(不是模糊划分, 分量和会大于 1)、拐点位置与评分标准语义不符。
- 图② 热力图:好图——每行和为 1、数值与深浅一致、颜色最深的格子分布在对角线附近(各因素"各说各话"但指向一致);异常——某一行全为 0(该因素没参与评价,检查数据)、行和 ≠ 1(忘记归一化)、一行均匀分布(该因素区分度为零,考虑删除或重新设计)。
- 图③ 分组柱状图:好图——每组 5 根柱高低错落、每组的"主峰"位置能一眼看出;异常——某因素各柱几乎一样高(无区分度)、柱顶未标注数值(读者无法读取精确比例)、各因素色标与图①②不一致(同一等级换了颜色)。
- 图④ 结果分布图:好图——最大柱高亮且标注数值与等级名、饼图剔除了零扇区、图题含综合得分;异常——双峰或平台分布(必须同时报告 与综合得分,不可只按最大隶属度下结论)、饼图带 0 值扇区(出现零厚度细线,不专业)。
五、符号说明
| 符号 | 含义 | 示例/单位 |
|---|---|---|
| 因素集(指标集) | 教学内容, 教学方法, 教学态度, 教学效果 | |
| 评语集(等级集) | 优秀, 良好, 中等, 及格, 不及格 | |
| 、 | 因素个数、等级个数 | 本文示例 , |
| 第 个评价因素 | = 教学内容 | |
| 第 个评语等级 | = 优秀 | |
| 因素权重向量 | ||
| 第 个因素的权重 | ,,无单位 | |
| 单因素评价(隶属度)矩阵, | 由专家投票比例或隶属函数得到 | |
| 第 个因素对第 等级的隶属度 | , | |
| 第 个因素的单因素评价向量( 的第 行) | ||
| 综合评价向量 | ||
| 评价对象整体对第 等级的隶属度 | ||
| 模糊合成算子 | 、、 | |
| 、 | 取小 、取大 | ; |
| 隶属函数: 对模糊集 的隶属度 | ||
| 第 等级的赋值分 | ,分 | |
| 综合得分 | 分 | |
| 、 | 最大分量、次大分量 | , |
| 最大隶属度原则有效度 | (有效) | |
| AHP 判断矩阵(两两比较) | :教学内容比教学方法稍微重要 | |
| 、、 | AHP 最大特征值与一致性指标、比率 | , |
| 平均随机一致性指标(查表) | 时 |
六、可运行程序(完整代码)
环境要求:Python 3.12,依赖 numpy、matplotlib(本文代码仅用到这两个库;允许使用的库还包括 scipy、scikit-learn、pandas)。以下所有代码块按顺序拼接保存为
fce_demo.py运行即可:控制台打印第三节全部指标(B 向量、两种合成算子对比、最大隶属度与有效性 、综合得分、等级判定),并在figures/子目录生成 4 张图(fce_membership_curves.png、fce_matrix_heatmap.png、fce_factor_bars.png、fce_result_dist.png)。
# -*- coding: utf-8 -*-
"""
============================================================
模糊综合评价(FCE)完整示例:高校教师教学质量评价
------------------------------------------------------------
内容:
(1) 因素集 U(4 因素)× 评语集 V(5 等级),隶属度矩阵 R 由 20 位专家投票比例构造
(2) AHP(方根法 + 一致性检验)确定因素权重 A
(3) 手写两种模糊合成算子:M(·,+) 加权平均型 与 M(∧,∨) 取小取大型,并对比
(4) 手写最大隶属度原则(含有效性检验 α)与加权平均综合得分(等级赋分 95/85/75/65/55)
(5) 定量指标示例:及格率 92% 经半梯形隶属函数映射为各等级隶属度
(6) 绘制并保存 4 张图到 figures/ 目录
依赖:numpy、matplotlib(Python 3.12)
============================================================
"""
# ========== 0. 导入库与全局设置 ==========
import os
import numpy as np
import matplotlib.pyplot as plt
# ---- matplotlib 中文显示设置(防止图内中文乱码)----
plt.rcParams["font.sans-serif"] = ["PingFang SC", "Arial Unicode MS", "SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# ---- 图片输出目录(相对当前工作目录的 figures/ 子目录)----
FIG_DIR = "figures"
os.makedirs(FIG_DIR, exist_ok=True)
# ========== 1. 构造数据:因素集、评语集、专家投票隶属度矩阵 R ==========
# 1.1 因素集 U(评价的 n=4 个方面)与评语集 V(m=5 个等级)
U = ["教学内容", "教学方法", "教学态度", "教学效果"]
V = ["优秀", "良好", "中等", "及格", "不及格"]
n_factor, n_grade = len(U), len(V)
# 1.2 隶属度矩阵 R:邀请 20 位专家(学生/督导/同行)对每个因素投票,
# 票数比例即隶属度 r_ij = 投票数 / 20(比例化后每行和为 1)
votes = np.array([
[15, 3, 2, 0, 0], # 教学内容:15 票优秀、3 票良好、2 票中等
[10, 7, 2, 1, 0], # 教学方法:10 票优秀、7 票良好、2 票中等、1 票及格
[15, 4, 1, 0, 0], # 教学态度
[12, 6, 1, 1, 0], # 教学效果
], dtype=float)
R = votes / votes.sum(axis=1, keepdims=True) # 每行除以该行票数之和 → 行归一化
# ---- 等级固定配色(优→不及格,全篇 4 张图统一,避免同一等级在不同图中变色)----
GRADE_COLORS = ["#1b7837", "#4575b4", "#e8c020", "#f78a35", "#d73027"]
print("=" * 66)
print("1. 专家投票票数矩阵(每行 20 票):")
print(votes.astype(int))
print("\n隶属度矩阵 R(每行归一化,行和 = 1):")
print(np.round(R, 4))
# ========== 2. AHP 确定因素权重(方根法 + 一致性检验) ==========
# 2.1 判断矩阵 P:专家按 1-9 标度两两比较 4 个因素的相对重要程度。
# 例如 p12 = 2 表示"教学内容比教学方法稍微重要";p34 = 0.5 表示"教学态度不如教学效果重要"
P = np.array([
[1.0, 2.0, 3.0, 2.0],
[0.5, 1.0, 2.0, 1.0],
[1/3, 0.5, 1.0, 0.5],
[0.5, 1.0, 2.0, 1.0],
])
# 2.2 方根法(几何平均法)求权重向量 A:
# 每行元素连乘后开 n 次方 → 得到"几何平均重要度" → 归一化(权重和 = 1)
geo_mean = np.prod(P, axis=1) ** (1.0 / len(P)) # 每行连乘开 n 次方
A = geo_mean / geo_mean.sum() # 归一化得到权重向量
# 2.3 一致性检验:λmax → CI → CR(RI 为 n=4 时的平均随机一致性指标 0.89)
lam = np.linalg.eigvals(P) # 判断矩阵全部特征值(正互反矩阵的谱半径 = λmax)
lam_max = float(lam.real.max()) # 最大特征值 λmax
CI = (lam_max - len(P)) / (len(P) - 1) # 一致性指标 CI = (λmax − n) / (n−1)
RI = 0.89 # 平均随机一致性指标(n=4 查表值)
CR = CI / RI # 一致性比率 CR
print("\n" + "=" * 66)
print("2. AHP 权重(方根法):A =", np.round(A, 4), "(权重和 =", round(A.sum(), 6), ")")
print(f"一致性检验:λmax = {lam_max:.4f},CI = {CI:.4f},CR = {CR:.4f}(CR < 0.1,通过)")
# ========== 3. 手写模糊合成算子:M(·,+) 与 M(∧,∨) 对比 ==========
def compose_weighted(A, R):
"""加权平均型算子 M(·,+):b_j = Σ_i a_i · r_ij。
用矩阵乘法即可实现;权重与隶属度全部参与运算,信息利用最充分(竞赛最常用)。"""
return A @ R
def compose_minmax(A, R):
"""主因素决定型算子 M(∧,∨):b_j = max_i min(a_i, r_ij)。
先对每个因素"取小"(权重给隶属度封顶),再在各因素间"取大"(只保留最突出的因素)。"""
B = np.zeros(R.shape[1])
for j in range(R.shape[1]):
B[j] = np.max(np.minimum(A, R[:, j])) # 逐列:先 min(a_i, r_ij),再取 max
return B
B_weighted = compose_weighted(A, R) # M(·,+) 加权平均型(正式评价采用)
B_minmax = compose_minmax(A, R) # M(∧,∨) 取小取大型(仅用于对比,展示信息丢失)
print("\n" + "=" * 66)
print("3. 两种合成算子的综合评价向量对比:")
print("M(·,+) 加权平均型 B =", np.round(B_weighted, 4),
"(分量和 =", round(B_weighted.sum(), 4), ")")
print("M(∧,∨) 取小取大型 B =", np.round(B_minmax, 4),
"(分量和 =", round(B_minmax.sum(), 4), ")")
print("→ M(∧,∨) 的分量和仅为 %.3f,不等于 1:它只保留了每个等级上最被看重的因素,"
"大量投票信息被丢弃,结论偏保守。竞赛推荐使用 M(·,+)。" % B_minmax.sum())
# ========== 4. 结果判定:最大隶属度原则 + 有效性检验 + 加权平均综合得分 ==========
SCORE = np.array([95.0, 85.0, 75.0, 65.0, 55.0]) # 各等级代表分值(优秀 95、良好 85、…)
def max_membership(B):
"""最大隶属度原则:取 B 中最大分量对应的等级作为评价结论。返回(等级序号, 最大分量 β)。"""
k = int(np.argmax(B))
return k, float(B[k])
def validity_alpha(B):
"""最大隶属度原则有效性指标:α = (n·β − 1) / (2·γ·(n−1)),
其中 β 为最大分量、γ 为次大分量、n 为等级数。α ≥ 0.5 时原则有效。"""
n = len(B)
gamma = float(np.sort(B)[-2]) # 次大分量 γ
if gamma <= 0:
return np.inf # γ = 0:其余等级全为 0,原则绝对有效
return (n * float(np.max(B)) - 1.0) / (2.0 * gamma * (n - 1.0))
def score_to_grade(s):
"""综合得分 → 等级(分数带:≥90 优秀,[80,90) 良好,[70,80) 中等,[60,70) 及格,<60 不及格)"""
for th, g in zip([90, 80, 70, 60, 0], V):
if s >= th:
return g
return V[-1]
B = B_weighted # 正式评价采用加权平均型算子的结果
k_max, beta = max_membership(B)
gamma = float(np.sort(B)[-2]) # 次大分量
alpha = validity_alpha(B)
score = float(B @ SCORE) # 综合得分 S = Σ_j b_j · s_j(隶属度加权平均)
print("\n" + "=" * 66)
print("4. 结果判定(采用 M(·,+) 算子的 B):")
print("综合评价向量 B =", np.round(B, 4))
print(f"最大隶属度原则:β = {beta:.4f}(等级“{V[k_max]}”),次大分量 γ = {gamma:.4f},"
f"比值 β/γ = {beta / gamma:.3f}")
print(f"最大隶属度原则有效性指标 α = {alpha:.4f}(α ≥ 0.5,原则有效,结论可信)")
print(f"加权平均综合得分 S = {score:.2f} 分 → 对应等级:“{score_to_grade(score)}”")
print(f"最终结论:该教师教学质量评定为“{V[k_max]}”(综合得分 {score:.2f} 分,"
f"两种判定方式结论一致)")
# ========== 5. 定量指标 → 隶属度:半梯形/梯形隶属函数(以及格率 92% 为例) ==========
def f_excellent(x):
"""优秀(升半梯形):μ = 0 (x<85);μ = (x−85)/10 (85≤x<95);μ = 1 (x≥95)"""
return np.where(x >= 95, 1.0, np.where(x >= 85, (x - 85.0) / 10.0, 0.0))
def f_good(x):
"""良好(中间梯形,峰值 1):μ = (x−75)/10 (75≤x<85);μ = (95−x)/10 (85≤x<95);其余 0"""
return np.where((x >= 85) & (x < 95), (95.0 - x) / 10.0,
np.where((x >= 75) & (x < 85), (x - 75.0) / 10.0, 0.0))
def f_medium(x):
"""中等(中间梯形):μ = (x−65)/10 (65≤x<75);μ = (85−x)/10 (75≤x<85);其余 0"""
return np.where((x >= 75) & (x < 85), (85.0 - x) / 10.0,
np.where((x >= 65) & (x < 75), (x - 65.0) / 10.0, 0.0))
def f_pass(x):
"""及格(中间梯形):μ = (x−55)/10 (55≤x<65);μ = (75−x)/10 (65≤x<75);其余 0"""
return np.where((x >= 65) & (x < 75), (75.0 - x) / 10.0,
np.where((x >= 55) & (x < 65), (x - 55.0) / 10.0, 0.0))
def f_fail(x):
"""不及格(降半梯形):μ = 1 (x<55);μ = (65−x)/10 (55≤x<65);μ = 0 (x≥65)"""
return np.where(x <= 55, 1.0, np.where(x < 65, (65.0 - x) / 10.0, 0.0))
MEMBER_FUNCS = [f_excellent, f_good, f_medium, f_pass, f_fail] # 与评语集 V 一一对应
def fuzzify(x):
"""任意指标值 x → 各等级隶属度行向量(长度 = 等级数;本构造下各分量和为 1)"""
return np.array([f(x) for f in MEMBER_FUNCS])
x0 = 92.0 # 某教师所授班级的及格率 92%
r_quant = fuzzify(x0) # 隶属函数法构造单因素评价向量
B_quant = compose_weighted(np.array([1.0]), r_quant.reshape(1, -1)).ravel() # 单因素权重 [1]
score_quant = float(B_quant @ SCORE) # 单因素综合评价得分
print("\n" + "=" * 66)
print(f"5. 定量指标示例:及格率 x = {x0:.0f}% 经半梯形隶属函数映射:")
print("各等级隶属度 r =", np.round(r_quant, 4))
print("(92% 介于 85~95 之间:以 0.7 属于“优秀”、0.3 属于“良好”,其余为 0——"
"同一个值同时隶属两个相邻等级,正是“模糊”的含义)")
print("单因素评价向量 B =", np.round(B_quant, 4))
print(f"综合得分 S = {score_quant:.2f} 分(0.7×95 + 0.3×85 = 92,恰好还原原指标值)")
# ========== 6. 图① 隶属函数曲线图(半梯形/梯形,横轴指标值、纵轴隶属度) ==========
xgrid = np.linspace(0, 100, 401) # 指标取值网格 [0, 100]
fig, ax = plt.subplots(figsize=(9, 5))
for f, c, name in zip(MEMBER_FUNCS, GRADE_COLORS, V):
ax.plot(xgrid, f(xgrid), lw=2, color=c, label=f"{name} μ(x)") # 5 条隶属曲线
ax.axvline(x0, color="gray", ls="--", lw=1.2) # 标出及格率 92% 的位置
ax.annotate(f"x = {x0:.0f}%\nμ优秀 = {f_excellent(x0):.1f}\nμ良好 = {f_good(x0):.1f}",
xy=(x0, 0.72), xytext=(48, 0.50), fontsize=10,
arrowprops=dict(arrowstyle="->", color="gray", lw=1.2))
ax.set_xlabel("指标值 x(如及格率 %)")
ax.set_ylabel("隶属度 μ(x)")
ax.set_title("图① 半梯形/梯形隶属函数曲线(相邻等级曲线重叠:同一 x 可同时隶属多个等级)")
ax.set_xlim(0, 100)
ax.set_ylim(0, 1.05)
ax.grid(alpha=0.3)
ax.legend(fontsize=9, loc="upper right")
fig.tight_layout()
fig.savefig(os.path.join(FIG_DIR, "fce_membership_curves.png"), dpi=150)
plt.show()
# ========== 7. 图② 隶属度矩阵 R 热力图(因素 × 等级) ==========
fig, ax = plt.subplots(figsize=(9, 4.5))
im = ax.imshow(R, cmap="Blues", vmin=0, vmax=1, aspect="auto") # 颜色深浅 = 隶属度大小
ax.set_xticks(range(n_grade))
ax.set_xticklabels(V)
ax.set_yticks(range(n_factor))
ax.set_yticklabels(U)
for i in range(n_factor): # 每格标注数值
for j in range(n_grade):
ax.text(j, i, f"{R[i, j]:.2f}", ha="center", va="center", fontsize=10,
color="white" if R[i, j] > 0.55 else "black")
ax.set_title("图② 隶属度矩阵 R 热力图(行 = 因素,列 = 等级;每行和为 1)")
fig.colorbar(im, ax=ax, label="隶属度", shrink=0.9)
fig.tight_layout()
fig.savefig(os.path.join(FIG_DIR, "fce_matrix_heatmap.png"), dpi=150)
plt.show()
# ========== 8. 图③ 各因素评价等级条形图(分组柱状图:因素 × 等级) ==========
fig, ax = plt.subplots(figsize=(10, 5))
xpos = np.arange(n_factor)
width = 0.16 # 柱宽:每个因素并排画 5 根柱
for j in range(n_grade):
ax.bar(xpos + (j - 2) * width, R[:, j], width, label=V[j],
color=GRADE_COLORS[j], edgecolor="black", lw=0.5)
ax.set_xticks(xpos)
ax.set_xticklabels(U, fontsize=11)
ax.set_ylabel("隶属度(专家投票比例)")
ax.set_ylim(0, 0.85)
ax.set_title("图③ 各因素对各等级的隶属度(分组柱状图)")
ax.legend(ncol=5, fontsize=9, loc="upper center", bbox_to_anchor=(0.5, -0.12))
ax.grid(axis="y", alpha=0.3)
fig.subplots_adjust(bottom=0.18) # 给图例留出下方空间
fig.savefig(os.path.join(FIG_DIR, "fce_factor_bars.png"), dpi=150)
plt.show()
# ========== 9. 图④ 综合评价结果等级分布图(B 向量:条形图 + 饼图) ==========
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4.8))
# 左:B 向量条形图,最大隶属度对应等级用其等级色高亮,其余灰色
bar_colors = [GRADE_COLORS[j] if j == k_max else "#d9d9d9" for j in range(n_grade)]
ax1.bar(range(n_grade), B, color=bar_colors, edgecolor="black", lw=0.5)
for j, bj in enumerate(B): # 柱顶标注数值
ax1.text(j, bj + 0.012, f"{bj:.3f}", ha="center", fontsize=10)
ax1.set_xticks(range(n_grade))
ax1.set_xticklabels(V)
ax1.set_ylim(0, 0.75)
ax1.set_ylabel("隶属度")
ax1.set_title(f"综合评价向量 B(最大隶属度:{V[k_max]},β = {beta:.3f})")
ax1.grid(axis="y", alpha=0.3)
# 右:B 向量饼图,剔除隶属度为 0 的等级(避免出现零厚度扇区)
mask = B > 1e-12
idx = np.nonzero(mask)[0]
ax2.pie(B[mask], labels=[V[j] for j in idx], autopct="%.1f%%",
colors=[GRADE_COLORS[j] for j in idx], startangle=90, counterclock=False,
explode=[0.05 if j == k_max else 0 for j in idx])
ax2.set_title(f"B 向量等级分布饼图(综合得分 {score:.2f} 分)")
fig.suptitle("图④ 综合评价结果等级分布", fontsize=13)
fig.tight_layout(rect=[0, 0, 1, 0.94])
fig.savefig(os.path.join(FIG_DIR, "fce_result_dist.png"), dpi=150)
plt.show()
# ========== 10. 全部指标汇总打印(对应文档第三节的指标清单) ==========
print("\n" + "=" * 66)
print("模糊综合评价结果汇总(教学质量评价示例)")
print("=" * 66)
print("因素权重 A(AHP 方根法):", np.round(A, 4))
print("综合评价向量 B(M(·,+)) :", np.round(B, 4))
print("综合评价向量 B(M(∧,∨)) :", np.round(B_minmax, 4))
print(f"最大隶属度等级 : {V[k_max]}(β = {beta:.4f},γ = {gamma:.4f},"
f"β/γ = {beta / gamma:.3f},α = {alpha:.4f})")
print(f"综合得分 : {score:.2f} 分(对应等级:{score_to_grade(score)})")
print("4 张图已保存到 figures/ 目录:")
print(" fce_membership_curves.png / fce_matrix_heatmap.png / "
"fce_factor_bars.png / fce_result_dist.png")
七、结果解读与注意事项
7.1 运行输出解读(以教学质量评价示例为例)
运行第六节代码(MPLBACKEND=Agg python fce_demo.py,避免交互窗口阻塞),控制台输出如下:
==================================================================
1. 专家投票票数矩阵(每行 20 票):
[[15 3 2 0 0]
[10 7 2 1 0]
[15 4 1 0 0]
[12 6 1 1 0]]
隶属度矩阵 R(每行归一化,行和 = 1):
[[0.75 0.15 0.1 0. 0. ]
[0.5 0.35 0.1 0.05 0. ]
[0.75 0.2 0.05 0. 0. ]
[0.6 0.3 0.05 0.05 0. ]]
==================================================================
2. AHP 权重(方根法):A = [0.4231 0.2274 0.1222 0.2274] (权重和 = 1.0 )
一致性检验:λmax = 4.0104,CI = 0.0035,CR = 0.0039(CR < 0.1,通过)
==================================================================
3. 两种合成算子的综合评价向量对比:
M(·,+) 加权平均型 B = [0.6591 0.2357 0.0825 0.0227 0. ] (分量和 = 1.0 )
M(∧,∨) 取小取大型 B = [0.4231 0.2274 0.1 0.05 0. ] (分量和 = 0.8005 )
→ M(∧,∨) 的分量和仅为 0.800,不等于 1:它只保留了每个等级上最被看重的因素,大量投票信息被丢弃,结论偏保守。竞赛推荐使用 M(·,+)。
==================================================================
4. 结果判定(采用 M(·,+) 算子的 B):
综合评价向量 B = [0.6591 0.2357 0.0825 0.0227 0. ]
最大隶属度原则:β = 0.6591(等级“优秀”),次大分量 γ = 0.2357,比值 β/γ = 2.796
最大隶属度原则有效性指标 α = 1.2174(α ≥ 0.5,原则有效,结论可信)
加权平均综合得分 S = 90.31 分 → 对应等级:“优秀”
最终结论:该教师教学质量评定为“优秀”(综合得分 90.31 分,两种判定方式结论一致)
==================================================================
5. 定量指标示例:及格率 x = 92% 经半梯形隶属函数映射:
各等级隶属度 r = [0.7 0.3 0. 0. 0. ]
(92% 介于 85~95 之间:以 0.7 属于“优秀”、0.3 属于“良好”,其余为 0——同一个值同时隶属两个相邻等级,正是“模糊”的含义)
单因素评价向量 B = [0.7 0.3 0. 0. 0. ]
综合得分 S = 92.00 分(0.7×95 + 0.3×85 = 92,恰好还原原指标值)
==================================================================
模糊综合评价结果汇总(教学质量评价示例)
==================================================================
因素权重 A(AHP 方根法): [0.4231 0.2274 0.1222 0.2274]
综合评价向量 B(M(·,+)) : [0.6591 0.2357 0.0825 0.0227 0. ]
综合评价向量 B(M(∧,∨)) : [0.4231 0.2274 0.1 0.05 0. ]
最大隶属度等级 : 优秀(β = 0.6591,γ = 0.2357,β/γ = 2.796,α = 1.2174)
综合得分 : 90.31 分(对应等级:优秀)
4 张图已保存到 figures/ 目录:
fce_membership_curves.png / fce_matrix_heatmap.png / fce_factor_bars.png / fce_result_dist.png
逐项解读:
- 隶属度矩阵 R:每行之和都是 1(行归一化检查通过)。"教学内容"与"教学态度"两行第一列高达 0.75(15/20 位专家投优秀),说明这两项公认出色;"教学方法"一行相对分散(0.50/0.35/0.10/0.05),还出现了 5% 的"及格"票,是该教师相对的短板——单因素向量(指标 3.4)的短板诊断结论。
- AHP 权重:,教学内容最被看重(42.3%),教学方法与教学效果并列第二,教学态度最轻。,判断矩阵一致性良好,权重可信。
- 两种算子的对比: 给出 ,分量和为 1; 给出 ,分量和仅 0.8005——"优秀"分量被最大权重 0.4231 直接封顶,中等、及格的投票信息几乎被抹平。结论相同但信息量天差地别,这正是竞赛要求使用加权平均型的理由。
- 最大隶属度原则: 对应"优秀";,有效度 ,原则有效,结论可信。
- 综合得分: 分,落在 分数带 → "优秀",与最大隶属度结论一致(两种判定方式互相印证,结论稳健)。
- 定量指标示例:及格率 92% 经半梯形隶属函数映射为 ——"92% 以 0.7 的程度属于优秀、以 0.3 的程度属于良好"。单因素合成后综合得分 分,恰好还原原指标值 92(隶属函数构成模糊划分时的一般性质),说明整个"隶属化 → 评价 → 赋分"回路没有信息失真。
7.2 四张图的解读(本例)
- 图①:5 条隶属曲线相邻重叠、覆盖 全区间无空档;虚线标出 的位置,读图可得 、,与第 5 段输出一致。
- 图②:颜色最深的格子都在第一列(优秀)附近,"教学内容/教学态度"两行最深(0.75);行和均为 1;整体呈"向优秀倾斜"的形态,预示最终结论为优秀。
- 图③:每组 5 根柱高低分明,"教学方法"组(第二组)的蓝色"良好"柱与浅色柱相对突出,直观暴露短板因素。
- 图④:条形图最高柱(优秀,0.659)以绿色高亮,其余灰色;饼图剔除零扇区后显示"优秀 65.9% / 良好 23.6% / 中等 8.3% / 及格 2.3%"。分布单峰且尖峭,结论明确。
若任一图出现 4.2 节描述的异常特征(行和不为 1、空档、双峰等),回到第二节检查清单排查数据与隶属函数。
7.3 常见坑与应对
- 合成算子选错(最常犯):用了 取小取大却不自知——分量和小于 1、次要因素信息全部丢失,结论偏保守甚至与事实相反。应对:论文中明确写"选用加权平均型算子 ",并可用两种算子对比展示信息丢失(本文代码即如此)。
- 隶属度矩阵行未归一化:专家票数直接当隶属度(行和为 20 而不是 1),或定量指标直接代原值(如把 92 当隶属度)。应对:每行除以行和;隶属函数法务必让 。竞赛数据预处理段写一句"对隶属度矩阵按行归一化"即可。
- 等级赋分随意:赋分 拍脑袋(如 ),导致综合得分与最大隶属度结论经常打架。应对:赋分取各等级区间代表值(如 ),并在论文中说明赋分依据;赋分改变会影响 但不影响 与最大隶属度结论,可在灵敏度分析中展示。
- 最大隶属度原则失效时仍强行判定: 呈双峰(如 )时,0.02 的差距下结论没有说服力。应对:先算有效度 (或 ); 时改用加权平均综合得分判定,并在论文中说明原因。
- 隶属函数出现空档或重叠过度:某段指标区间没有任何等级的隶属度大于 0(评价"卡死"),或两等级曲线几乎重合(区分度为零)。应对:绘制图①目视检查;调整拐点使曲线覆盖全区间且相邻重叠约一半。
- AHP 不做一致性检验:判断矩阵自相矛盾(专家说 A 比 B 重要、B 比 C 重要、C 又比 A 重要)还照用权重。应对:必报 、、, 才用;不通过就请专家重新打分。
- 评语集不统一/等级过多:不同因素用了不同的评语集导致 无法拼合;等级设到 7 级以上专家分不清相邻等级。应对:全指标体系统一评语集,等级数 3~5 个。
- 权重只来自一个人拍脑袋:单个专家给出的权重说服力弱。应对:多位专家分别构造判断矩阵,取几何平均(或特征向量平均)得到群决策权重;或并用熵权法做客观对照。
- 与客观方法不互验:模糊综合评价主观成分多,仅凭一个方法下结论容易被质疑。应对:与 TOPSIS、熵权法、灰色关联等交叉验证,排序大体一致即写"结论稳健"。
- 指标未同向化:逆向指标(如污染浓度越低越好)直接套"越大越好"的隶属函数。应对:逆向指标取倒数或"满分减原值"转正向后,再构造隶属函数。
7.4 竞赛论文写作建议(话术模板)
建模段(先讲为什么用、再讲五要素、再报结果;括号内为可替换内容):
由于(教学质量/满意度/水质等级)的评价涉及多个定性指标,且各等级之间不存在明确的数值界限,具有典型的模糊性,故采用模糊综合评价方法。建立因素集 与评语集 ;通过(专家投票/隶属函数/频率统计)构造单因素评价矩阵 ;采用层次分析法确定因素权重,利用模糊综合评价对(教师教学质量)进行评价。选用加权平均型算子,综合评价向量 ,按最大隶属度原则判定为"优秀",综合得分 87.6 分。
本例填充版(数字与第六节输出一致):
采用层次分析法确定因素权重,利用模糊综合评价对高校教师教学质量进行评价。判断矩阵一致性比率 ,权重向量 。选用加权平均型算子 ,综合评价向量 。最大隶属度 对应"优秀",有效度 ,原则有效;按最大隶属度原则判定为"优秀",综合得分 90.31 分,两种判定方式结论一致。
算子选择与对比段(加分点):
本文选用加权平均型算子 ,其能充分利用全部单因素评价信息且综合评价向量分量和为 1;若改用主因素决定型算子 , 变为 ,分量和仅 0.8005,大量投票信息被丢弃,进一步说明加权平均型的合理性。
灵敏度分析段(回应主观性质疑,评审加分):
对模型中的主观设定进行灵敏度分析:当各因素权重在 ±10% 范围内扰动时,综合评价向量 的最大分量始终为"优秀"且有效度 保持大于 0.5;当等级赋分由 调整为 时,综合得分由 90.31 变为 94.07,但对应等级仍为"优秀"。模型结论对主观设定不敏感,稳健性良好。
注:,供撰写灵敏度分析时参考;写论文前请用自己的实际运行数值替换。
八、延伸阅读
- 多级模糊综合评价:因素超过 6~8 个时把指标体系分层,自底向上逐层合成 。竞赛中"大指标体系"题目(如城市竞争力、企业绩效)的标准做法,能输出各准则层的中间评价结果,论文层次感更强。参考谢季坚《模糊数学方法及其应用》。
- 模糊层次分析法(FAHP):把 AHP 的 1-9 精确标度换成三角模糊数 ("大约 3 倍重要"),构造模糊判断矩阵,经去模糊化得到权重。解决"专家两两比较时说不清确切倍数"的问题,常与多级模糊综合评价搭配。可学习模糊数运算(三角模糊数的加法、乘法、去模糊化重心法)。
- 灰色综合评价:基于灰色关联度的评价方法,适合少数据、贫信息场景(样本只有几个评价对象)。与模糊综合评价形成互补:模糊处理"等级边界模糊",灰色处理"数据量不足",两者并列做交叉验证是竞赛常用写法。
- 直觉模糊集评价:直觉模糊集用隶属度 、非隶属度 与犹豫度 三个参数描述评价,比普通模糊集多刻画了"专家说不清、弃权"的信息,适合投票中有大量犹豫/弃权的情形,是模糊评价的前沿推广。
- 模糊 TOPSIS:把隶属度矩阵当作决策矩阵,在模糊环境中计算到正负理想解的距离并排序,实现"模糊评价"与"精确排序"的结合,是 FCE 与 TOPSIS 的直接融合,适合需要给出多个对象最终名次的题目。
- 推荐资源:谢季坚《模糊数学方法及其应用》(中文入门经典,隶属度与模糊综合评价推导完整);司守奎《数学建模算法与应用》("模糊综合评价"章节有竞赛化模板);姜启源《数学模型》(综合评价章节);韩中庚《数学建模方法及其应用》(评价方法横向对比);全国大学生数学建模竞赛历年优秀论文中评价类题目(搜索"模糊综合评价 优秀论文",重点看其隶属度矩阵与权重的构造细节)。