设计洗衣机洗涤时间的模糊控制。 已知规则: 1)如果污泥多,油脂多,则洗涤时间长; 2)如果污泥适中,油脂适中,则洗涤时间适中; 如果污泥少,油脂少,则洗涤时间适中。设计洗衣机洗涤时间的模糊控制。 已知规则: 1)如果污泥多,油脂多,则洗涤时间长; 2)如果污泥适中,油脂适中,则洗涤时间适中; 如果污泥少,油脂少,则洗涤时间适中。
时间: 2023-06-02 10:07:23 浏览: 85
根据已知规则和洗衣机的工作原理,我们可以设计如下模糊控制:
1. 输入变量:污泥和油脂的程度,可以用模糊变量来表示,如{少,适中,多}。
2. 输出变量:洗涤时间,也可以用模糊变量表示,如{短,适中,长}。
3. 设计规则库:
- Rule1: if 污泥多 and 油脂多 then 洗涤时间长
- Rule2: if 污泥适中 and 油脂适中 then 洗涤时间适中
- Rule3: if 污泥少 and 油脂少 then 洗涤时间适中
4. 进行模糊推理:根据输入变量和规则库,计算出每个规则的匹配度,然后对输出变量进行模糊求解,得到洗涤时间的模糊结果。
5. 解模糊化:最后将模糊结果转换为具体的洗涤时间,可以采用各种方法,如平均值法、重心法等。
相关问题
设计洗衣机洗涤时间的模糊控制。 已知规则: 如果污泥多,油脂多,则洗涤时间长; 如果污泥适中,油脂适中,则洗涤时间适中; 如果污泥少,油脂少,则洗涤时间适中。 其中,污泥:{SD(污泥少), MD(中等污泥), LD(污泥多)};油脂:{NG(无油脂), MG(中等油脂), LG(油脂多)};洗涤时间:{VS(很短), S(短), M(中等), L(长), VL(很长)}。 假设污泥、油脂、洗衣机洗涤时间的论域分别是[0, 100]、[0, 100]和 [0, 120]。 假定当前传感器测得的信息为(污泥)x0=60,(油脂) y0=70,采用模糊决策,给出python代码
代码如下:
```python
import numpy as np
# 设定论域和隶属函数
x = np.arange(0, 101, 1)
y = np.arange(0, 101, 1)
z = np.arange(0, 121, 1)
# 隶属函数
sd = np.where(x <= 30, 1, 0)
md = np.where((x >= 20) & (x <= 60), (x-20)/40, np.where((x >= 60) & (x <= 80), (80-x)/20, 0))
ld = np.where(x >= 70, 1, 0)
ng = np.where(y <= 30, 1, 0)
mg = np.where((y >= 20) & (y <= 60), (y-20)/40, np.where((y >= 60) & (y <= 80), (80-y)/20, 0))
lg = np.where(y >= 70, 1, 0)
vs = np.where(z <= 20, 1, 0)
s = np.where((z >= 10) & (z <= 50), (z-10)/40, np.where((z >= 50) & (z <= 70), (70-z)/20, 0))
m = np.where((z >= 60) & (z <= 100), (z-60)/40, np.where((z >= 100) & (z <= 110), (110-z)/10, 0))
l = np.where((z >= 100) & (z <= 120), (z-100)/20, np.where(z >= 120, 1, 0))
vl = np.where(z >= 100, 1, 0)
# 规则库
rule1 = np.fmin(np.fmin(sd, ld), l)
rule2 = np.fmin(np.fmin(md, mg), m)
rule3 = np.fmin(np.fmin(sd, ng), vs)
# 输出结果
result = np.fmax(np.fmax(rule1, rule2), rule3)
time = np.sum(z * result)/np.sum(result)
print("洗涤时间为:", time)
```
解释:
首先,我们假定污泥、油脂、洗衣机洗涤时间的论域分别是 `[0, 100]`、`[0, 100]` 和 `[0, 120]`,也就是说,它们的取值范围是 0 到 100 或 120。
然后,我们要设定各个变量的隶属函数。以污泥为例,假设污泥少(SD)的隶属函数是一个上升的三角形,其中污泥值小于等于 30 时隶属度为 1,而大于等于 60 时隶属度为 0。中等污泥(MD)的隶属函数是一个类似于梯形的隶属函数,其中污泥值从 20 到 60 之间会随着污泥值的增加而上升,而从 60 到 80 之间会随着污泥值的增加而下降。污泥多(LD)的隶属函数是一个下降的三角形,其中污泥值大于等于 70 时隶属度为 1,而小于等于 30 时隶属度为 0。其他变量的隶属函数的设定与此类似。
接下来,我们需要设计模糊规则以决定洗涤时间。根据已知规则可得,如果污泥多、油脂多,则洗涤时间长;如果污泥适中、油脂适中,则洗涤时间适中;如果污泥少、油脂少,则洗涤时间适中。因此,我们可以设定三条模糊规则:
- 如果污泥多且油脂多,则洗涤时间长。
- 如果污泥适中且油脂适中,则洗涤时间适中。
- 如果污泥少且油脂少,则洗涤时间适中。
最后,我们将三个模糊规则组合起来,得到一个最终的模糊输出。
在代码中,我们首先用 `numpy` 库中的 `arange` 函数生成论域,然后用 `where` 函数设定隶属函数。接着,我们使用 `fmin` 函数实现模糊推理的三个规则,并用 `fmax` 函数将它们组合起来得到最终的模糊输出。最后,我们计算加权平均值,得到洗涤时间。
设计洗衣机洗涤时间的模糊控制。 已知规则: 1)如果污泥多,油脂多,则洗涤时间长; 2)如果污泥适中,油脂适中,则洗涤时间适中; 3)如果污泥少,油脂少,则洗涤时间适中。 模糊控制规则如表1所示。 表 1 洗衣机模糊控制规则表 NG MG LG SD VS M L MD S M L LD M L VL 其中,污泥:{SD(污泥少), MD(中等污泥), LD(污泥多)};油脂:{NG(无油脂), MG(中等油脂), LG(油脂多)};洗涤时间:{VS(很短), S(短), M(中等), L(长), VL(很长)}。 假设污泥、油脂、洗衣机洗涤时间的论域分别是[0, 100]、[0, 100]和 [0, 120]。 假定当前传感器测得的信息为(污泥)x0=60,(油脂) y0=70,采用模糊决策,给出模糊推理结果。
根据表1可以得到三个模糊规则:
1)如果污泥多,油脂多,则洗涤时间长(LDMLVL);
2)如果污泥适中,油脂适中,则洗涤时间适中(M);
3)如果污泥少,油脂少,则洗涤时间适中(M)。
对于当前传感器测得的信息,可以用三个隶属度函数来描述:
1)污泥中等(MD)的隶属度为0.4,污泥多(LD)的隶属度为0.6;
2)油脂中等(MG)的隶属度为0.3,油脂多(LG)的隶属度为0.7;
3)洗涤时间中等(M)的隶属度为1。
根据模糊推理原理,同时考虑到三个模糊规则和三个隶属度函数,可以得到以下计算过程:
1)对于规则1,求出它的隶属度,即“污泥多”和“油脂多”的隶属度的最小值,为0.6。然后用这个隶属度去乘以洗涤时间的隶属度“VL”,得到0.6×1=0.6;
2)对于规则2和规则3,求出它们的隶属度,即“污泥适中”和“油脂适中”的隶属度的最小值,分别为0.4和0.3。然后用这两个隶属度各自去乘以洗涤时间的隶属度“M”,得到0.4×1+0.3×1=0.7;
3)将结果进行归一化,即将各种洗涤时间的隶属度加权平均,得到 (0.6×VL+0.7×M)/(0.6+0.7)=0.94M。
因此,模糊推理结果为洗涤时间很长(VL)的隶属度为0,短(S)的隶属度为0,中等(M)的隶属度为0.94,长(L)的隶属度为0,很长(VL)的隶属度为0。