资源描述
1. 模糊聚类分析模型
环境区域的污染情况由污染物在4个要素中的含量超标程度来衡量。设这5个环境区域的污染数据为=(80, 10, 6, 2), =(50, 1, 6, 4), =(90, 6, 4, 6), =(40, 5, 7, 3), =(10, 1, 2, 4). 试用模糊传递闭包法对X进行分类。
解 :
由题设知特性指标矩阵为:
数据规格化:最大规格化
其中:
构造模糊相似矩阵: 采用最大最小法来构造模糊相似矩阵,
利用平方自合成方法求传递闭包t(R)
依次计算, 由于,所以
,=
选取适当的置信水平值, 按截矩阵进行动态聚类。把中的元素从大到小的顺序编排如下: 1>>>062>053. 依次取=1, , , 062, 053,得
,此时X被分为5类:{},{},{},{},{}
,此时X被分为4类:{},{,},{},{}
,此时X被分为3类:{,,},{},{}
,此时X被分为2类:{,,,},{}
,此时X被分为1类:{}
Matlab程序如下:
%数据规格化MATLAB 程序
a=[80 10 6 2
50 1 6 4
90 6 4 6
40 5 7 3
10 1 2 4];
mu=max(a)
for i=1:5
for j=1:4
r(i,j)=a(i,j)/mu(j);
end
end
r
%采用最大最小法构造相似矩阵
r=[
];
b=r';
for i=1:5
for j=1:5
R(i,j)=sum(min([r(i,:);b(:,j)']))/sum(max([r(i,:);b(:,j)']));
end
end
R
%利用平方自合成方法求传递闭包t(R)
矩阵合成的MATLAB 函数
function rhat=hech(r);
n=length(r);
for i=1:n
for j=1:n
rhat(i,j)=max(min([r(i,:);r(:,j)']));
end
end
求模糊等价矩阵和聚类的程序
R=[
];
R1=hech (R)
R2=hech (R1)
R3=hech (R2)
bh=zeros(5);
bh(find(R2>)=1
2. 模糊综合评判模型
某烟草公司对某部门员工进行的年终评定,关于考核的具体操作过程,以对一名员工的考核为例。如下表所示,根据该部门工作人员的工作性质,将18个指标分成工作绩效()、工作态度()、工作能力()和学习成长()这4各子因素集。
员工考核指标体系及考核表
一级指标
二级指标
评 价
优秀
良好
一般
较差
差
工作绩效
工作量
0
0
工作效率
0
工作质量
0
0
计划性
工作态度
责任感
0
团队精神
学习态度
0
工作主动性
360度满意度
工作能力
创新能力
0
自我管理能力
沟通能力
0
协调能力
执行能力
学习成长
勤情评价
0
技能提高
培训参与
0
工作提供
0
请专家设定指标权重,一级指标权重为:
二级指标权重为:
对各个子因素集进行一级模糊综合评判得到:
这样,二级综合评判为:
根据最大隶属度原则,认为该员工的评价为良好。同理可对该部门其他员工进行考核。
3. 层次分析模型
你已经去过几家主要的摩托车商店,基本确定将从三种车型中选购一种,你选择的标准主要有:价格、耗油量大小、舒适程度和外观美观情况。经反复思考比较,构造了它们之间的成对比较判断矩阵。
A=
三种车型(记为a,b,c)关于价格、耗油量、舒适程度和外表美观情况的成对比较判断矩阵为
价格 a b c 耗油量 a b c
舒适程度 a b c 外表 a b c
根据上述矩阵可以看出四项标准在你心目中的比重是不同的,请按由重到
轻顺序将它们排出。
解:用matlab求解
层次总排序的结果如下表
准则
价格
耗油量
舒适程度
外表
总排序权值
准则层权值
方案层
单排序
权值
a
b
c
Matlab程序如下:
clc,clear
n1=4;
n2=3;
a=[1 3 7 8
1/3 1 5 5
1/7 1/5 1 3
1/8 1/5 1/3 1];
b1=[1 2 3
1/2 1 2
1/3 1/2 1 ];
b2=[1 1/5 1/2
5 1 7
2 1/7 1 ];
b3=[1 3 5
1/3 1 4
1/5 1/4 1 ];
b4=[1 1/5 3
5 1 7
1/3 1/7 1];
ri=[0,0,,,,,,,]; % 一致性指标RI
[x,y]=eig(a); %x为特征向量,y为特征值
lamda=max(diag(y));
num=find(diag(y)==lamda);
w0=x(:,num)/sum(x(:,num));
w0 %准则层特征向量
CR0=(lamda-n1)/(n1-1)/ri(n1) %准则层一致性比例
for i=1:n1
[x,y]=eig(eval(char(['b',int2str(i)])));
lamda=max(diag(y));
num=find(diag(y)==lamda);
w1(:,i)=x(:,num)/sum(x(:,num)); %方案层的特征向量
CR1(i)=(lamda-n2)/(n2-1)/ri(n2); %方案层的一致性比例
end
w1
CR1, ts=w1*w0, CR=CR1*w0 %ts为总排序的权值,CR为层次总排序的随机一致性比例
% 当CR小于时,认为总层次排序结果具有较满意的一致性并接受该结果,否则对判断矩阵适当修改
4. 灰色预测GM(1,1)模型
某地区年平均降雨量数据如表
某地区年平均降雨量数据
年份
1
2
2
3
4
5
6
7
8
降雨量
412
320
553
310
561
年份
10
9
11
12
13
14
15
16
17
降雨量
300
632
540
576
规定hz=320,并认为<=hz为旱灾。预测下一次旱灾发生的时间
解:
初始序列如下
=,412,320,,,,553,310,561,300,632,540,,,576,,
由于满足<=320的为异常值,易得下限灾变数列为
= (320,310,300,,
其对应的时刻数列为
t = (3,8,10,14,17)
建立GM(1,1)模型
(1) 对原始数据t做一次累加,即
t(1) = (3,11,21,35,52)
(2) 构造数据矩阵及数据向量
(3) 计算a,b
a=,b=
(4) 建立模型
y=+*exp(.253610*t)
(5) 模型检验
年份
原始值
模型值
残差
相对误差
级比偏差
3
3
0
0
8
8
10
10
14
14
17
17
(6) 通过计算可以预测到第六个数据是
由于 与17 相差,这表明下一次旱灾将发生在五年以后。
计算的 MATLAB 程序如下:
clc,clear
a=[,412,320,,,,553,310,561,300,632,540,,,576,,]';
x0=find(a<=320);
x0=x0';
n=length(x0)
lamda=x0(1:n-1)./x0(2:n)
range=minmax(lamda)
x1=cumsum(x0)
for i=2:n
z(i)=*(x1(i)+x1(i-1));
end
B=[-z(2:n)',ones(n-1,1)];
Y=x0(2:n)';
u=B\Y
x=dsolve('Dx+a*x=b','x(0)=x0');
x=subs(x,{'a','b','x0'},{u(1),u(2),x1(1)});
yuce1=subs(x,'t',[0:n-1]);
digits(6),y=vpa(x)
yuce=[x0(1),diff(yuce1)]
epsilon=x0-yuce
delta=abs(epsilon./x0)
rho=1-*u(1))/(1+*u(1))*lamda
yuce1=subs(x,'t',[0:n]);
yuce=[x0(1),diff(yuce1)]
5. Verhulst预测模型
在实际问题中,常遇到原始数据本身呈 S形的过程,这时,可取原始数据为,
其一次累减生成(1—IAGO)为,建立Verhulst模型,直接对进行预测(模拟)。现以中国道路交通事故死亡人数为例,建立交通事故死亡人数Verhualst 预测模型。由《中国交通年鉴》、《中国汽车工业年鉴》等可得近年来中国道路交通事故死亡人数统计资料,见表14。
表14 道路交通事故死亡人数统计
年份
1990
1991
1992
1993
1994
1995
1996
1997
死亡人数(万人)
年份
1998
1999
2000
2001
2002
2003
2004
死亡人数(万人)
解:1990~2003 年中国道路交通事故死亡人数曲线见图2,可见曲线呈S 形,故可建立Verhulst 模型进行预测,其建模过程如下。
(1)设为1990~2003 年死亡人数的原始数据序列,即
(2)对x(1)作一次累减生成(1—IAGO),由
得
(3) 对作紧邻均值生成,令
得
(4) 对参数列
进行最小二乘估计,得
(5)Verhulst模型为
(6) 模型精度检验(过程略)
平均相对误差Δ = %,则模型精度为二级;同时算得绝对关联度g为,
均方差比值C 为,则模型精度为一级,可见模型精度较高,可用于事故预测。
Matlab编程如下
clc,clear
x1=[ ];
n=length(x1);
nian=1990:2003;
plot(nian,x1,'o-');
x0=diff(x1);
x0=[x1(1),x0]
for i=2:n
z1(i)=*(x1(i)+x1(i-1));
end
z1
B=[-z1(2:end)',z1(2:end)'.^2]
Y=x0(2:end)'
abhat=B\Y
x=dsolve('Dx+a*x=b*x^2','x(0)=x0'); x=subs(x,{'a','b','x0'},{abhat(1),abhat(2),x1(1)}); yuce=subs(x,'t',0:n-1);
digits(6); x=vpa(x)
x1_all=x1;
epsilon=x1_all-yuce
delta=abs(epsilon./x1_all)
delta_mean=mean(delta)
x1_all_0=x1_all-x1_all(1);
yuce_0=yuce-yuce(1);
s0=abs(sum(x1_all_0(1:end-1))+*x1_all_0(end));
s1=abs(sum(yuce_0(1:end-1))+*yuce_0(end));
tt=yuce_0-x1_all_0;
s1_s0=abs(sum(tt(1:end-1))+*tt(end));
absdegree=(1+s0+s1)/(1+s0+s1+s1_s0)
c=std(epsilon,1)/std(x1_all,1)
yuce=subs(x,'t',0:n)
(2,1)模型
1996~2001 年上海市上网户数数据序列为
在互联网发展初期,增长势头十分强劲。因此,定理5 引入的一阶缓冲算子弱化该序列
的增长趋势,一阶缓冲序列仍记为,=(41,49,61,78,96,104),试以该序列为基础建立GM(2,1)模型
解:
的1-AGO序列和1-IAGO序列分别为
=(41, 90,151, 229, 325, 429)
=(0, 8,12,17,18, 8)
的紧邻均值生成序列
=(0, ,,190, 277, 377)
B= ,Y==
可得,GM(2,1)时间响应式
=*exp(.865973*t)+*exp(.226223*t)
所以预测的数据为(41, 51, 63, 77, 92,104)
误差分析
实际数据
模拟数据
残差
相对误差
49
61
78
96
104
Matlab程序如下
clc,clear
x0=[41,49,61,78,96,104];
n=length(x0);
x1=cumsum(x0) %x1为累加数列
a_x0=diff(x0);
a_x0=[0,a_x0] % a_x0为累减数列
for i=2:n
z(i)=*(x1(i)+x1(i-1));
end
B=[-x0(2:end)',-z(2:end)',ones(n-1,1)];
Y=a_x0(2:end)';
u=B\Y %a1,a2,b的值
x=dsolve('D2x+a1*Dx+a2*x=b','x(0)=c1,x(5)=c2');
x=subs(x,{'a1','a2','b','c1','c2'},{u(1),u(2),u(3),x1(1),x1(6)});
yuce=subs(x,'t',0:n-1);
digits(6),x=vpa(x) %x为时间响应式
x0_hat=[yuce(1),diff(yuce)] %预测的数据
epsilon=x0-x0_hat %计算残差
delta=abs(epsilon./x0) %计算相对误差
7.波形预测模型
上海证券交易所综合指数的波形预测。
根据上海证券交易所综合指数的周收盘指数数据,从1997年2月21日到1998年10月31日的周收盘指数曲线如图所示:
解:
取9条等间隔的等高线,分别为
=1140,=1170,=1200,=1230,=1260,=1290,=1320,=1350,=1380
的等高时刻序列分别为
对应于=1140,
=(,,,41,,,)
对应于=1170,
=(,,23,,,,,,,76,,)
对应于=1200,=1230,=1260,=1290,=1320,=1350,=1380
分别为
=(,,,,,,,,,,)
=(,,,,,,,,,85)
=(7,,,,,,)
=(,,,,)
=(,,,,,)
=(,,,,,)
=(,,,69)
对(i=1,2,3,…9)序列,进行GM(1,1)预测,起响应时分别为
y1=+*exp*t)
y2=+*exp*t)
y3=+*exp(.166865*t)
y4=+*exp(.159938*t)
y5=+*exp(.446077*t)
y6=+*exp(.550388*t)
y7=+*exp(.191636*t)
y8=+*exp(.185059*t)
y9=+*exp(.488018*t)
对在1998年11月到2000年3月这5个月进行预测,可得等高时刻的预测序列
=(,)
=(,,)
=(,,)
=(,,)
=(,)
=()
=(,,)
=(,,)
=()
据此可以画出上海证券交易所综合指数1998年11月到2000年3月的预测波形图
如下
Matlab程序如下:
%GM(1,1)函数
function gm11(x0,t)
n=length(x0);
x1=cumsum(x0);
lamda=x0(1:n-1)./x0(2:n);
for i=2:n
z(i)=*(x1(i)+x1(i-1));
end
B=[-z(2:n)',ones(n-1,1)];
Y=x0(2:n)';
u=B\Y;
x=dsolve('Dx+a*x=b','x(0)=x0');
x=subs(x,{'a','b','x0'},{u(1),u(2),x1(1)});
yuce1=subs(x,'t',[0:n-1]);
digits(6),y=vpa(x)
yuce1=subs(x,'t',[0:n-1+t]);
yuce=[x0(1),diff(yuce1)]
%预测数据
clc,clear
x1=[,,,41,,,];
x2=[,,23,,,,,,,76,,];
x3=[,,,,,,,,,,];
x4=[,,,,,,,,,85];
x5=[7,,,,,,];
x6=[,,,,];
x7=[,,,,,];
x8=[,,,,,];
x9=[,,,69];
gm11(x1,4)
gm11(x2,4)
gm11(x3,4)
gm11(x4,4)
gm11(x5,4)
gm11(x6,4)
gm11(x7,4)
gm11(x8,4)
gm11(x9,4)
展开阅读全文