模糊综合评价模型 ——第二部分,隶属函数的三种确定方法

本文探讨了模糊统计法在科研论文中的应用,介绍了如何通过隶属频率定义模糊集合如‘年轻人’,并详细讲解了借助客观尺度(如设备完好率、恩格尔系数等)和指派法来构建隶属函数。实例涵盖了柯西分布和不同领域的指标选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.模糊统计法

数模比赛中很少用,要设计发散问卷,可能来不及,但实际做研究用的较多(做科研发论文)

原理:找多个人去对同一个模糊概念进行描述,用隶属频率去定义隶属度

例:定义“年轻人”的隶属函数

(1)定义人的年龄为论域U,调查n个人

(2)让这n个人仔细考虑好“年轻人”的含义后,给出他(她)们认为的最合适的年龄区间

(3)对于任意一个确定的年龄,例如25岁,若这n个人中有m个人的年龄区间包含有25,则称\frac{m}{n}为25岁对于“年轻人”的隶属频率

(4)以此类推,我们可以找出所有年龄对于“年轻人”的隶属频率

(5)若n很大时,隶属频率会趋于稳定,此时我们可将其视为隶属度,进而得到隶属函数

2.借助已有的客观尺度(需要有合适的指标,并能收集到数据)

例如:

论域模糊集隶属度
设备设备完好

设备完好率

产品质量稳定正品率
家庭小康家庭恩格尔系数

注:这里我们找的指标必须介于0和1之间(隶属度的范围)(如果不是,则可归一化\frac{x_{i}}{\sum x_{i} }(x_{i}\geqslant 0)

恩格尔系数(%)=食品支出总额/家庭或个人消费支出总额×100%

随着家庭和个人收入增加,收入中用于食品方面的支出比例将逐渐减小(恩格尔定律)

3.指派法(根据问题的性质直接套用某些分布作为隶属函数,主观性较强)

查看源图像

查看源图像

其中,梯形分布最常用。 

例1.试用柯西分布确定“年轻人”的隶属函数

 例2. 

### Python 中实现隶属函数 在模糊逻辑和数据分析领域,隶属函数用于描述元素属于某个模糊集合的程度。Python 可以通过多种方式实现隶属函数,通常涉及定义不同类型的隶属度曲线,如三角形、梯形或高斯型。 #### 定义基本的隶属函数 对于简单的隶属函数,可以直接编写自定义函数来计算给定输入值对应的隶属度: ```python def triangular_membership(x, a, b, c): """ 计算三角形隶属函数的值 参数: x (float): 输入变量 a (float): 左端点 b (float): 峰值位置 c (float): 右端点 返回: float: 隶属度值 """ if x <= a or x >= c: return 0 elif a < x <= b: return (x - a) / (b - a) else: return (c - x) / (c - b) # 测试示例 print(triangular_membership(50, 0, 50, 100)) # 输出应接近于1.0[^3] ``` 此代码片段展示了一个典型的三角形隶属函数实现方法。该函数接受四个参数:`x` 是待评估的数据点;而 `a`, `b`, 和 `c` 则分别代表左边界、峰值以及右边界的位置。 为了更灵活地创建不同的隶属形状,还可以利用现有的第三方库,比如 `scikit-fuzzy` 或者自己构建更为复杂的模型。这些工具提供了丰富的内置功能和支持多样的隶属函数形式。 #### 使用 scikit-fuzz 库简化过程 如果希望减少工作量并获得更多的灵活性,则推荐采用专门设计用于处理模糊系统的软件包——例如 `skfuzzy`: 安装命令: ```bash pip install scikit-fuzzy ``` 具体应用案例如下所示: ```python import numpy as np import skfuzzy as fuzz # 创建均匀分布的一维数组作为测试样本 universe = np.linspace(-2, 2, num=100) # 构建三个标准的三角形隶属函数 low = fuzz.trimf(universe, [-2, -2, 0]) medium = fuzz.trimf(universe, [-1, 0, 1]) high = fuzz.trimf(universe, [0, 2, 2]) # 绘制图形表示各组隶属程度变化趋势 from matplotlib import pyplot as plt plt.figure(figsize=(8, 6)) plt.plot(universe, low, label='Low') plt.plot(universe, medium, label='Medium') plt.plot(universe, high, label='High') plt.legend() plt.show() ``` 上述脚本不仅实现了三种常见的隶属模式(低、中、高等),还借助 Matplotlib 将其可视化出来以便直观理解各个区间的特征表现[^4]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值