模糊综合评价法详细讲解+Python代码实现

news2024/9/27 13:15:47

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+


目录

模型引出

模糊数学

模型原理

经典集合基本概念

模糊集合和隶属函数

模糊集合的表示方法

模糊集合的分类

隶属函数的确定方法

评价问题概述

一级模糊综合评价模型

多层次模糊综合评价模型

Python代码实现


模型引出

模糊数学

  • 如果我们问一个人的性别、身高、体重,可能很容易的得到答案,性别一般而言非男即女,身高和体重是可以精确测量的,这些是确定性概念。
  • 但是如果问到大与小,长与短,美与丑等概念,就不好确定了,多大算大?多小算小?多长算长?怎么界定美丑?这种问题感觉有点儿抬杠似的,不过正是因为没有一个精确的范围,我们只能发出这样的疑问,这些就是模糊性概念。

        模糊是指客观事物差异的中间过渡中的“不分明性”或“亦此亦彼性”。如高个子与矮个子、年轻人与老年人、热水与凉水、环境污染严重与不严重等。在决策中,也有这种模糊的现象,如选举一个好干部,但怎样才算一个好干部?好干部与不好干部之间没有绝对分明和固定不变的界限。这些现象很难用经典的数学来描述。

        实际中,我们处理现实的数学模型可以分成三大类:第一类是确定性数学模型,即模型的背景具有确定性,对象之间具有必然的关系。第二类是随机性的数学模型,即模型的背景具有随机性和偶然性。第三类是模糊性模型,即模型的背景及关系具有模糊性。

        1965 年,美国著名计算机与控制专家查德(L.A.Zadeh)教授提出了模糊的概念,并在国际期刊《Information and Control》发表了第一篇用数学方法研究模糊现象的论文“Fuzzy Sets”(模糊集合)开创了模糊数学的新领域。

模型原理

经典集合基本概念

集合:具有相同属性的事物的集体。例如:自然数集、实数集、颜色等。
集合的基本属性:

  • 1)互斥性:若a∈A,b∈A,则a≠b
  • 2)确定性:a∈A,a∉A有且仅有之一发生(非此即彼)

数学上对于经典集合的刻画特征函数:f_{A}:U→{0,1}        U:论域       f_{A}表示A集合的特征函数

模糊集合和隶属函数

模糊集合:用来描述模糊性概念的集合(美、丑、高、矮、年轻、年长)

与经典集合相比,模糊集合承认亦此亦彼

数学上对于模糊集合的刻画:

举一个简单的例子,我们要衡量“年轻”的概念A=“年轻”,X=(0,150)表示年龄的集合

在这里我们不好直接在0-150之间画个线把年轻和不年轻区分开,我们应该给一个隶属函数来进行描述。

        对于X中的每一个元素,均对应A中的一个隶属度,隶属度介于[0,1],越大表示越属于这个集合。当年龄在0-20岁之间,它隶属度为1,意思就是当年龄小于20岁时,该年龄百分百属于年轻这个集合;当年龄在20-40岁之间,可以看出这是一个关于x的线性函数且单调递减,意思就是随着年龄的升高,它属于年轻的程度越来越低;当年龄x大于40岁时,隶属度为0,那就是完全属于不年轻的概念了。右边是两个隶属函数的图像,当x属于20-40之间,我们不仅可以用线性也可以用非线性来表示,但是大概趋势就是那样,毕竟是模糊的,我们很难去准确的描述。

        上面的隶属函数,只是为了方便理解随意构造出来的,并不等同于真实的调查结果,但是依然反映了构造者的主观想法。事实上,隶属函数也不是唯一的,不同的人,不同大小的样本,得出的隶属函数很可能是不同的。简单来说,我理解的隶属度,就是元素属于某个模糊集合的程度,而隶属函数就是用来确定隶属度的函数。

模糊集合的表示方法

当论域为有限集时,以身高为例:

当论域为无限集时,

模糊集合的分类

        模糊集合主要有三类,分别为偏小型,中间型和偏大型。其实也就类似于TOPSIS方法中的极大型、极小型、中间型、区间型指标。

        举个例子,“年轻”就是一个偏小型的模糊集合,因为岁数越小,隶属度越大,就越“年轻”;“年老”则是一个偏大型的模糊集合,岁数越大,隶属度越大,越“年老”;而“中年”则是一个中间型集合,岁数只有处在某个中间的范围,隶属度才越大。总结来说,就是考虑“元素”与“隶属度”的关系,再类比一下,就是考虑隶属函数的单调性。

下图可以代表“年轻”、“中年”、“年老”这三个模糊集合的隶属函数图像:

不管模糊集合是哪一种类型,隶属度越大,属于这个集合的程度也越大。

隶属函数的确定方法

1)模糊统计法

        模糊统计法的原理是,找多个人对同一个模糊概念进行描述,用隶属频率去定义隶属度例如我们想知道30岁相对于“年轻”的隶属度,那就找来n个人问一问,如果其中有m个人认为30岁属于“年轻”的范畴,那m/n就可以用来作为30岁相对于“年轻”的隶属度。 n越大时,越符合实际情况,也就越准确。这个方法比较符合实际情况,但是往往需要通过发放问卷或者其他手段进行调查。

2)借助已有的客观尺度

        对于某些模糊集合,我们可以用已经有的指标去作为元素的隶属度。例如“小康家庭”这个模糊集合,就可以用“恩格尔系数(食品支出总额/家庭总支出)”衡量相应的隶属度。显而易见,家庭越接近小康水平,其恩格尔系数应该越低,那“1-恩格尔系数”就越大,我们便可以把“1-恩格尔系数”看作家庭相对于“小康家庭”的隶属度。注意:隶属度是在[0,1]之间的。如果找的指标不在,可以进行归一化处理。

3)指派法

        指派法是一个主观性比较强的方法,即凭主观意愿,在确定模糊集合的所属分类后,给它指派一个隶属函数,得到元素的隶属度。这是最常用的方法之一,只需进行选择,便可得到隶属函数。下图是常用的模糊分布:

        可以看出,对于偏小型模糊集合,隶属函数总体上递减,也就是元素的某个特征越大,隶属度越小;对于偏大型集合,隶属函数总体上递增,也就是元素的某个特征越大,隶属度越大;对于中间型集合,隶属函数总体上先递增后递减,中间一部分或是某个点取到最大值。
        以上就是确定隶属函数的几种方法了。还有一些其他的方法,比如德尔菲法,二元对比排序法,综合加权法等等,有兴趣可以自己查阅。

评价问题概述

        模糊评价问题是要把论域中的对象对应评语集中一个指定的评语或者将方案作为评语集并选择一个最优的方案。
在模糊综合评价中,引入三个集合:

例:评价一名学生的表现

U ={专业排名、课外实践、志愿服务、竞赛成绩}
V={优、良、差}
A={0.4、0.2、0.1、0.3}

模糊综合评价模型就是给定对象,用因素集的指标进行评价,从评语集中找到一个最适合它的评语。如果评语集中是方案的话,就是选出一个最恰当的方案。那这种“合适”用什么来衡量呢?显而易见嘛,就是隶属度,隶属于某个模糊集合的程度。

一级模糊综合评价模型

例1:在对企业员工进行考核时,在指标个数较少的考核中,可以运用一级模糊综合评判。

1)确定因素集:评判的因素构成的评价指标体系集合称为因素集

对员工的表现,需要从多个方面进行综合评判,如员工的工作业绩、工作态度、沟通能力、政治表现等记为 U={u1,u2,…,un}。这里取因素集 U={政治表现u1、工作能力u2、工作态度u3、工作成绩u4}

2)确定评语集:由各种不同决断构成的集合称为评语集

评价往往有不同的等级,对员工评价可能有好、较好、中等、较差、很差等记为 V={v1,v2,…,vn}这里取评语集 V={优秀v1、良好v2、一般v3、较差v4、差v5}

3)确定各因素的权重:因素集中各因素的评价中作用不同,需要确定权重,它是U上的模糊向量

判断权重的方法很多,如Delphi法等,也可以用我们讲过过的层次分析法和熵权法来确定权重记为 A=[a1,a2,…,an]。这里取 A=[0.25,0.2,0.25,0.3]

4)确定模糊综合判断矩阵

对指标u_{i}来说,对各个评语的隶属度为V上的模糊子集,对指标u_{i}的评判记为 R_{i}=[r_{i1},r_{i2},...,r_{in}]  各指标的模糊综合判断矩阵为:

这是一个从U到V的模糊关系矩阵。
对员工的评定如果由模糊统计法来确定:

①u1比如由群众打分确定

r1=[0.1,0.5,0.4,0,0]上式表示,参与打分的群众中,10%的人认为该员工政治表现优秀,50%的人认为其政治表现良好等。

②u2,u3由部门领导打分来确定

r2=[0.2,0.5,0.2,0.1,0]          r3=[0.2,0.5,0.3,0,0]

③u4由单位考核组成员打分来确定

r4=[0.2,0.6,0.2,0,0]

形成以R_{i}为第i行构成评价矩阵(模糊综合判断矩阵)

5)模糊综合评判,进行矩阵合成运算:

所有这里我们采用第四种方法进行矩阵相乘运算

得到的B行向量就是该员工对于评语集的一个隶属度,取数值最大的评语作为综合评判结果,则评判结果为“良好”。

例2:某露天煤矿有五个边坡设计方案,其各项参数根据分析计算结果得到边坡设计方案如下表:

据勘探,该矿探明储量8800吨,开采总投资不超过8000万元,试做出各方案的优劣排序,选出最佳方案。

分析:对于这个问题,我们首先要找到各个参数的隶属度,上个例题我们选择的是打分法,那这里打分法显然没那么合适,所以我们可以去构造隶属函数。

1)首先确定可采矿量的隶属函数

因为勘探的储量为8800吨(越多越好,为偏大型),故可用资源的利用函数作为隶属函数

\mu _{A}(x)=\frac{x}{8800}

2)基建投资的隶属函数

投资约束是8000万元(越少越好,为偏小型),所以隶属函数为

\mu _{B}(x)=1-\frac{x}{8000}

3)采矿成本的隶属函数

根据专家意见,采矿成本a_{1}≤5.5元/吨为低成本,a_{2}=8.0元/吨为高成本,故

4)不稳定费用的隶属函数

从前面的表数据可知,最大的不稳定费用为200万元,故

\mu _{D}(x)=1-\frac{x}{200}

5)净现值的隶属函数

取上限1500万元,下限50万元,采用线性隶属函数

\mu _{E}(x)=\frac{x-50}{1500-50}=\frac{x-50}{1450} 

6)根据各个隶属函数计算出5个方案所对应的不同隶属度

接着把表格转为矩阵形式,即确定单因素评判矩阵

根据专家评价,诸因素在决策中占的权重为A=(0.25,0.20,0.20,0.10,0.25)

注:没有专家可以用熵权法、层次分析法等。

7)综合评价

B=A·R=(0.7435,0.5919,0.6789,0.3600,0.3905)

由此可知:方案1最佳,方案3次之,方案4最差。

多层次模糊综合评价模型

1)给出被评价的对象集合X={x1,X2,…,Xk}

2)确定因素集(亦称指标体系)U ={u,uz,…,un}

若因素众多,往往将U={u1,u2,…,un}按某些属性分成s个子集

3)确定评语集V = {v1,V2,…,vm}

4)由因素集U_{i}与评语集V,可获得一个评价矩阵

5)对每一个U_{i},分别作出综合决策

6)将每个U_{i}视为一个元素,记U ={U,U2,…,Us},于是U又是单因素集,U的单因素判断矩阵为

每个U_{i}作为U的一部分,反映了U的某种属性,可以按他们的重要性给出权重分配
A =(a1,a2,.,as)
于是得到二级模糊综合评价模型为:
B=A·R=(b1,b2,…,bm)
若每个子因素U_{i}(i=1,2,…,s)仍有较多因素,则可将U_{i}再划分,于是有三级或更高级模型。

这里我们还是结合例题进行讲解

例:对某陶瓷厂生产的6种产品的销售前景进行评判

1)影响评判对象因素集的选取

从产品情况、销售能力、市场需求三个方面考虑,根据专家评判法,得到评判对象因素集及子因素组成下图,因素后面数据表示权重

2)备择集V={1,2,3,4,5,6}代表6种不同的陶瓷产品

3)一级模糊综合评价

“运行费用”下属的三级指标是定量指标,有具体数据,对这些数据归一化即求出各种产品的该指标与总指标的比重,得到单因素隶属度;由于其他因素均为定性指标,通过市场调查,把消费者的满意度作为单因素的隶属度,6种产品的单因素隶属度如下表:

影响运行费用的各因素的单因素评价矩阵为:

权重分配为:A_{23}=[0.20,0.15,0.10,0.10,0.20 ,0.15, 0.10],则运行费用的一级评判为:

B_{23}=A_{23}\cdot R_{23}=[0.1910,0.1565,0.1595,0.1465,0.1505, 0.1960]

4)二级模糊综合评判

对产品情况、销售能力、市场需求下属的单因素指标进行二级评判

产品情况的二级评判如下:

将运行费用的一级评判结果作为二级评判的单因素评价值,即评判矩阵的第三行,则销售能力二级评判如下:

市场需求的二级评判:

5)三级模糊综合评价

将二级评判结果B_{1},B_{2},B_{3}作为行,组成三级评判的单因素评判矩阵

权重及A=[0.40,0.30,0.30]

B=A·R=[0.1480,0.1428,0.1562,0.1863,0.1575,0.2093]

由结果可知,产品6得分最高,可加大投资,产品1、2得分较低,应减少投资。

Python代码实现

这里我们以多层次模糊综合评价模型里的例题进行代码演示,代码里的运算很简单,主要为矩阵之间的乘法,将对应的评价矩阵和权重给出即可。

import numpy as np
# 1、一级模糊综合评判
# 影响运行费用的各因素的单因素评价矩阵为:
R23 = np.array([
    [0.18,0.14,0.18,0.14,0.13,0.23],
    [0.15,0.20,0.15,0.25,0.10,0.15],
    [0.25,0.12,0.13,0.12,0.18,0.20],
    [0.16,0.15,0.21,0.11,0.20,0.17],
    [0.23,0.18,0.17,0.16,0.15,0.11],
    [0.19,0.13,0.12,0.12,0.11,0.33],
    [0.17,0.16,0.15,0.08,0.25,0.19]])
# 权重分配为
A23 = np.array([0.20,0.15,0.10,0.10,0.20,0.15,0.10])
# 评价结果
# np.dot是Numpy库中的一个函数,用于计算两个数组的点积。对于一维数组,它计算的是这两个效组的内积。
# 对于二维效组(矩阵),它计算的是阵乘法。
B23 = np.dot(A23,R23)
print('B23=',B23)
# 2、二级模糊综合评判
# 产品情况的二级评判如下,
R1 = np.array([
    [0.12,0.18,0.17,0.23,0.13,0.17],
    [0.15,0.13,0.18,0.25,0.12,0.17],
    [0.14,0.13,0.16,0.18,0.20,0.19],
    [0.12,0.14,0.15,0.17,0.19,0.23],
    [0.16,0.12,0.13,0.2,0.18,0.16]])
A1 = np.array([0.15,0.40,0.25,0.10,0.10])
B1 = np.dot(A1,R1)
print('B1=',B1)
# 销售能力二级评判如下,
R2 = np.array([
    [0.13,0.15,0.14,0.18,0.16,0.25],
    [0.12,0.16,0.13,0.17,0.19,0.23],
    B23,
    [0.14,0.13,0.15,0.16,0.18,0.24],
    [0.16,0.15,0.15,0.17,0.18,0.19]])
A2 = np.array([0.2,0.15,0.25,0.25,0.15])
B2 = np.dot(A2, R2)
print('B2=',B2)
# 市场需求的二级评判
R3 = np.array([
    [0.15,0.14,0.13,0.18,0.14,0.26],
    [0.16,0.15,0.18,0.14,0.16,0.21]])
A3 = np.array([0.55,0.45])
B3 = np.dot(A3,R3)
print('B3=',B3)
# 3、三级模糊综合评判
R = np.array([B1,B2,B3])
A = np.array([0.4,0.3,0.3])
B = np.dot(A,R)
print('B=',B)

运行结果:

可以发现结果与上面的例题是一样的,最终还是产品6得分最高。

资料获取,更多粉丝福利,关注下方公众号获取

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2170089.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

敏捷开发与DevOps的有机结合

在当今快速变化的技术环境中,软件开发团队面临着前所未有的挑战。客户需求不断变化,市场竞争激烈,技术更新速度加快,这些因素都要求开发团队具备高度的敏捷性和高效的运营能力。为了应对这些挑战,越来越多的企业选择将…

性能调优知识点(mysql)一

Mysql 索引 索引介绍 1.索引是排好序的数据结构。他的目的是为了提升查询效率。 2.mysql存储引擎分为innodb和myisam。它是用来形容表的。 innodb支持事务、外键、行锁 myisam不支持事务、外键 3.myisam使用3个文件来存储每张表数据,每个文件名以表名开头&#x…

智能硬件语音交互接入大模型知识库的排错指引

前言 前篇讲了把大模型知识库接入到聆思CSK6大模型开发板的文章,这篇讲一下配置失败时该怎么去定位问题和解决。 阅读这篇文章前建议先看:三步把知识库接到智能语音硬件上-CSDN博客 一、排错流程顺序参考 二、云端鉴权问题处理 原因1:聆思平…

css动态边框

参考&#xff1a; Clip-path实现按钮流动边框动画_在线clip-path-CSDN博客 https://www.5axxw.com/questions/simple/9ju5yt#google_vignette <div class"bottom-top-item-centent bottom-top-item-left"><vue-seamless-scroll :data"listLeftData&q…

稿件生产业务并发竞争场景下的安全性保障

一. 背景 视频业务作为B站内容生态的心脏&#xff0c;承载了海量的视频内容和用户互动。它不仅是用户获取信息、享受娱乐的窗口&#xff0c;更是UP主展示创意、分享知识的舞台。在设计和实现视频系统时&#xff0c;我们致力于平衡用户体验、内容分发的效率&#xff0c;同时确保…

H5支付 两种成熟方案

H5支付&#xff0c;对前端来讲并不算难。主要工作量都在后端&#xff0c;需要对接支付宝API文档配置大量参数与商户信息。 前端需要做的是正常调取支付接口&#xff0c;拿到配置好的支付信息&#xff0c;触发后续流程&#xff0c;再利用本地存储拿支付订单号判断支付结果即可【…

SpringBoot使用EasyPoi根据模板导出word or pdf

1、导出效果 1.1 wrod 1.2 pdf 2、依赖 <!--word--><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.3.0</version></dependency><dependency><groupId>cn.…

leetcode968. 监控二叉树

给定一个二叉树&#xff0c;我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。 计算监控树的所有节点所需的最小摄像头数量。 示例 1&#xff1a; 输入&#xff1a;[0,0,null,0,0] 输出&#xff1a;1 解释&#xff1a;如图所示&#x…

回归预测|基于卷积神经网络-支持向量机的数据回归预测Matlab程序CNN-SVM 卷积提取特征与原始特征进行融合预测

回归预测|基于卷积神经网络-支持向量机的数据回归预测Matlab程序CNN-SVM 卷积提取特征与原始特征进行融合预测 文章目录 一、基本原理原理流程总结 二、实验结果三、核心代码四、代码获取五、总结 回归预测|基于卷积神经网络-支持向量机的数据回归预测Matlab程序CNN-SVM 卷积提…

有关若依登录过程前端的对应处理学习

导言 在用C#搞完个后端后想用若依的前端做对接&#xff0c;不过很久没搞过若依了&#xff0c;想趁这个二次开发的过程记录熟悉一下登录的过程 过程 验证&#xff0c;在permission.js的路由守卫&#xff0c;这里在用户发起api请求时会验证用户的请求是否有token&#xff0c;对…

网络编程(10)——json序列化

十、day10 今天学习如何使用jsoncpp将json数据解析为c对象&#xff0c;将c对象序列化为json数据。jsoncp经常在网络通信中使用&#xff0c;也就是服务器和客户端的通信一般使用json&#xff08;可视化好&#xff09;&#xff1b;而protobuf一般在服务器之间的通信中使用 json…

C# 委托(Delegate)二

一.委托的多播&#xff08;Multicasting of a Delegate&#xff09;&#xff1a; 委托对象&#xff0c;使用 "" 运算符进行合并&#xff0c;一个合并委托调用它所合并的两个委托。使用"-" 运算符从合并的委托中移除组件委托。 注&#xff1a;只有相同类型…

使用 Napkins.dev 将草图转换为应用程序

在现代前端开发中&#xff0c;快速将设计草图转换为实际的应用程序代码是一个巨大的优势。Napkins.dev 是一个利用人工智能将网站设计草图转换成实际应用程序的平台。本文将介绍如何使用 Napkins.dev 进行这一过程。 什么是 Napkins.dev&#xff1f; Napkins.dev 是一个开源平…

机器学习-TopicModel

概率图模型基础概率潜在语义分析&#xff08;PLSA&#xff09;LDA 概率图模型基础 猜球游戏 有两个信封&#xff0c;其中一个装有一个红球&#xff0c;一个黑球。另一个信封有两个黑球。 。 假设红球价值100元&#xff0c;黑球价值1元。 你随机从其中拿起一个信封&#xff0c;从…

Linux高阶IO之select多路转接

文章目录 select多路转接timeoutfd_set返回值执行过程总结 select多路转接 多路转接有三种方案,分别是select,poll和epoll,我们都会讲解和介绍 select的函数原型是这样的 他一共有五个参数,但是可以分为三组 nfds:需要监视的最大的文件描述符值1readfds:可读文件描述符集合 …

C#邮件发送:实现自动化邮件通知完整指南!

C#邮件发送性能怎么优化&#xff1f;使用C#发送邮件的设置步骤&#xff1f; 无论是用于客户服务、内部沟通还是项目管理&#xff0c;自动化邮件通知都能显著提高效率和响应速度。AokSend将详细介绍如何使用C#邮件发送功能来实现自动化邮件通知系统。 C#邮件发送&#xff1a;配…

二、词法分析,《编译原理》(本科教学版),第2版

文章目录 一、词法分析器1.1 词法分析器的作用1.2 词法分析器的设计方法1.3Antlr 词法分析器生成器1.3.1 环境准备1.3.2 词法分析器自动生成初体验&#xff08;需了解少许正则表达式概念&#xff09;1.3.2.1 创建工程1.3.2.2 空白符逻辑1.3.2.3 实现INT类型1.3.2.4 实现单行注释…

ClkLog常见问题-埋点集成篇Sec. 2

本篇将继续解答ClkLog使用过程中【埋点集成】阶段的常见问题。 1.【埋点集成】 问&#xff1a;receiver数据接收是不是一定要有ssl证书&#xff1f; 答&#xff1a;不是。 2.【埋点集成】 问&#xff1a;接收服务地址从哪里获取&#xff1f; 答&#xff1a;接收服务地址参考&am…

死磕P7: JVM垃圾回收那点事,轻松拿捏不是事儿(一)

这是「死磕P7」系列第 003 篇文章&#xff0c;欢迎大家来跟我一起 死磕 100 天&#xff0c;争取在 2025 年来临之际&#xff0c;给自己一个交代。 上两篇介绍了 JVM 内存区域划分&#xff0c;简单记忆一下就可以了&#xff0c;后面再不断深入吧。 死磕P7: JVM内存划分必知必会…

Spring邮件发送:配置与发送邮件详细步骤?

Spring邮件发送教程指南&#xff1f;怎么用Spring邮件发送服务&#xff1f; Spring框架提供了强大的邮件发送支持&#xff0c;使得开发者能够轻松地在应用程序中集成邮件发送功能。AokSend将详细介绍如何在Spring应用中配置和发送邮件&#xff0c;帮助开发者快速掌握这一关键技…