随机一致性指标
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
随机一致性指标求解
(一)实验目的:
1)掌握用matlab求解随机一致性指标的方法
2)加深对随机一致性指标概念的理解
(二)实验内容:
用matlab或C++编写程序分别计算n=2-30时的n阶矩阵的随机一致性检验指标的值RI。
为保证随机性,要求每阶创造1000个矩阵。
(三)实验原理及分析:
层次分析发建模问题中,需要用到对矩阵A的一致性检验,然而对于一般的问题,尤其当考虑实际因素比较多时,很难保证判断
之时,需要矩阵A为一致矩阵,因此在计算矩阵A的最大特征值m ax
检验矩阵A的一致程度。
令:
称CI为一致性指标。
显然CI=0是矩阵A为一致矩阵的必要条件。
可以看出CI值越大,A的不一致程度越严重。
但是对于一个具体的矩阵来书,很难说其一致性指标CI到底是很大还是很小,Saaty针对上述定义的不严格性,提出了用随机一致性指标RI来检验判断矩阵A是否具有满意的一致性。
RI是按照下面的方式选取的:
对于固定的n,随机构造正互反矩阵'A,他的元素'
a是从1~9
ij
及其倒数中随机选取的,因此'A的一致性一般都是很差的,取充分大的子样儿得到'A最大特征值的平均值k,定义:
CR称为随机一致性比率。
RI称为随机一致性指标。
当CR<0.1时,一般认为矩阵A的不一致程度再容许范围之内,可以用其特征向量作为权向量。
(四)问题求解:
根据以上原理分析可得随机一致性指标值RI的求解方法,结合题目要求,求解如下:
1、求RI
代码如下:
function RI=ri(n)
% 定义函数
% 输入n值
n=ceil(n);
if n<=0, error('n必须为正数
end
if n==0 || n==1, RI=0;
return;
end
% 初始化
times=1000;
A=zeros(n);
lamda=zeros(times,1);
% 产生1000组随机正互反矩阵
for num=1:times
rank=ceil(17*rand(n));
% 产生一组n阶正互反矩阵
for i=1:n
for j=i:n
A(i,j)=scaler(rank(i,j));
A(j,i)=1/A(i,j);
A(i,i)=1;
end
end
rigenvector=eig(A); %求最大特征值
lamda(num)=max(rigenvector); %求1000组最大特征值平均值
end
lamda_average=sum(lamda)/times;
RI=(lamda_average-n)/(n-1);
%求RI的值
2、求n=2~30的随机一致性指标值
编写程序:
for n=2:30
RI(n)=ri(n);
RI(n)
执行结果如下:ans =
ans =
0.5189
ans =
0.8638
ans =
1.0959
ans =
1.2550
ans =
1.3390
ans =
1.3954
ans =
1.4338
ans =
1.4901
ans =
1.5118
ans =
1.5383
ans =
1.5550
ans =
1.5808
ans =
1.5848
ans =
1.5958
ans =
1.6044
ans =
1.6103
ans =
1.6251
ans =
1.6244
ans =
1.6344
ans =
1.6426
ans =
1.6459
ans =
1.6444
ans =
1.6543
1.6606
ans =
1.6624
ans =
1.6659
ans =
1.6715
ans =
1.6720
本次实验通过实践学习了Matlab编程的基本规则以及自定义函数的调用方法。
强化了层次分析法中权向量求解的概念,进一步掌握了随机一致性指标求解方法以及随机一致性检验的方法。