模糊数学模型Matlab 实验
1、画出下面这些模糊隶属函数的图形(要求:从下面三种分布类型的隶属函数中各选一个用Matlab 画出它们的图形)
偏小型梯形分布隶属函数:
令a=1,b=2
偏小型Г分布隶属函数:
令a=1,k=0.5,得:
x a b x A x a x b b a x b
1,(),0,<⎧⎪-⎪=≤≤⎨-⎪>⎪⎩
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
k x a x a A x e x a k ()1,(),(0)--<⎧=⎨≥>⎩
偏小型正态分布隶属函数:
令a=1, σ=2
00.20.40.60.81 1.2 1.4 1.6 1.82
0.65
0.7
0.75
0.8
0.85
0.9
0.95
x a x a A x e x a 2
()1,(),--σ≤⎧⎪=⎨⎪>⎩
2、用Matlab 编程计算下面两个矩阵A 和B 的模糊合成,得到矩阵C ,其中}1)max{(s k b a c kj ik ij ≤≤∧=
⎪⎪⎪⎭
⎫ ⎝⎛=⎪⎪⎭⎫ ⎝⎛=6.04.02.05.03.01.0,3.06.02.05.01.04.0B A 1运行matlab ,先将模糊合成的函数synt 编写成M 文件
function ab=synt(a,b);
m=size(a,1);n=size(b,2);
for i=1:m
for j=1:n
ab(i,j)=max(min([a(i,:);b(:,j)']));
end
end
之后再在matlab 中输入如下:
A=[0.4,0.5,0.6;0.1,0.2,0.3]; %输入A 矩阵
B=[0.1,0.2;0.3,0.4;0.5,0.6]; %输入B 矩阵
C=synt(A,B) %A 、B 矩阵进行模糊合成C 矩阵
运行后得到如下结果:
C =
00.20.40.60.81 1.2 1.4 1.6 1.82
0.10.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0.5000 0.6000
0.3000 0.3000
3、用Matlab 编程计算下面这个模糊关系矩阵的0.8—截集矩阵得到8.0A
⎪⎪⎪⎪⎪⎭
⎫ ⎝
⎛=18.03.008.011.02.03.01.015.002.05.01A
在matlab 中运行如下程序:
A=[1,0.5,0.2,0;0.5,1,0.1,0.3;0.2,0.1,1,0.8;0,0.3,0.8,0.1];
for i=1:4
for j=1:4
if A(i,j)>=0.8
A(i,j)=1;
else A(i,j)=0;
end
end
end
A
运行后得到结果: 8.0A =
1 0 0 0
0 1 0 0
0 0 1 1
0 0 1 0
4、大气环境质量的模糊综合评价
实验过程:
1、按照题目要求,先编写四个隶属函数,并分别存为ri1,ri2ri3,ri4四个M 文件,以备之后运算需要(即将题目中所给的函数编码化)
ri1:
function Ri1=ri1(x1,a1,a2);
if x1<=a1
Ri1=1
elseif x1>a1&&x1<a2
Ri1=(a2-x1)/(a2-a1);
else Ri1=0;
end
ri2:
function Ri2=ri2(x1,a1,a2,a3)
if x1<a2&&x1>a1
Ri2=(x1-a1)/(a2-a1);
elseif x1<a3&&x1>a2
Ri2=(a3-x1)/(a3-a2);
else Ri2=0;
end
ri3:
function Ri3=ri3(x1,a2,a3,a4);
if x1<a3&&x1>a2
Ri3=(x1-a2)/(a3-a2);
elseif x1<a4&&x1>a3
Ri3=(a4-x1)/(a4-a3);
else Ri3=0;
end
ri4:
function Ri4=ri3(x1,a3,a4);
if x1<=a3
Ri4=0;
elseif x1<a4&&x1>a3
Ri4=(x1-a3)/(a4-a3);
else Ri3=1;
end
2、做Fuzzy_Relational_Matrix主函数,主程序如下:
function R=Fuzzy_Relational_Matrix(SO2,TSP,NOx,CO,PM1,O3)
R=zeros(6,4); %建立6行4列空矩阵R
S=[0.05 0.15 0.25 0.5;0.12 0.30 0.5 1;0.1 0.1 0.15 0.3;4 4 6 10;0.05 0.15 0.25 0.5;0.12 0.16 0.2 0.4]; %大气污染物评价标准
T=zeros(1,6); %建立1行6列空矩阵
T(1,1)=SO2;T(1,2)=TSP;T(1,3)=NOx;T(1,4)=CO;T(1,5)=PM1;T(1,6)=O3;
for i=1:6 %将6种污染物的实际值填入表中
R(i,1)=ri1(T(i),S(i,1),S(i,2));
R(i,2)=ri2(T(i),S(i,1),S(i,2),S(i,3));
R(i,3)=ri3(T(i),S(i,2),S(i,3),S(i,4));
R(i,4)=ri4(T(i),S(i,3),S(i,4)); %将6种污染物数值带入隶属函数进行评价end
2、将以上4个分函数和1个主函数都编写好存成M文件后,在matlab主画面输入:
R=Fuzzy_Relational_Matrix(0.07,0.2,0.123,5,0.08,0.14)
得到综合评判矩阵:
R =
0.8000 0.2000 0 0
0.5556 0.4444 0 0
0 0.5400 0.4600 0
0 0.5000 0.5000 0
0.7000 0.3000 0 0
0.5000 0.5000 0 0
3、用Matlab编程将用层次分析法得到的各种污染物相对重要性权重向量
A=(0.1,0.2,0.3,0.3,0.05,0.05)
去和上面得到的模糊关系矩阵R做模糊合成。
借用实验二的结果直接进行模糊合成
A=[0.1 0.2 0.3 0.3 0.05 0.05];%各污染物权重
C=synt(A,R); %A和R进行模糊合成
B=C./sum(C) %对模糊合成的矩阵进行归一化
运行后得到如下结果:
B =
0.2500 0.3750 0.3750 0
根据最终得到B矩阵我们可以分析出最大隶属度的值在第二级和第三级之间。
实验后的反思
一、本题在课件中已给出答案,但经过实际试验操作后发现与课件上答案不同,课
件上的B=(0.252 0.478 0.27 0),最开始认为二者差异是由于综合评价矩阵小数点保留位数不同造成的(实验中综合评价矩阵小数点后保留4位,课件中仅保留了2位),但当把小数点修改到相同后发现试验结果未发生变化,之后又仔细检查了整个程序,未发现问题,所以可以认为应该是课件上所给的答案是错误的
二、进行本题实验时总共编写了5个M文件,过于琐碎,如在这方面进行优化相
信实验会更加完美。