虽然 Saaty 的 AHP 书中给出了 平均随机一致性指标 RI 的值,也给出了它的计算方法(不是很详细,我看不到过程),根据我的理解,我写了一个 R 的函数,想重现他的结果,但结果却有很大差别。我想可能是我的理解有问题,但我也找不到他的方法的原始文献,这里的牛牛们给看看吧,谢谢了。
<br />
ahp.ri <- function(m,n)<br />
{<br />
x <- m * (m - 1) * n<br />
a <- c(1:9)<br />
y <- sample(a, x, replace = TRUE)<br />
rec <- matrix(0, m, m)<br />
ri <- numeric(length = n)<br />
for (i in 1:n)<br />
{<br />
for (j in 1:m)<br />
{<br />
for (k in 1:m)<br />
{<br />
if (j == k) rec[j,k] <- 1<br />
if (j < k)<br />
{<br />
rec[j,k] <- y[1]<br />
y <- y[-1]<br />
}<br />
if (j > k) rec[j,k] <- 1 / rec[k,j]<br />
}<br />
}<br />
ri[i] <- (eigen(rec)$values[1] - m) / (m -1)<br />
}<br />
ri.ave <- mean(ri)<br />
return(ri.ave)<br />
}<br />
运行结果,如,当阶数为 3,运行 500 次
<br />
ahp.ri(3,500)<br />
[1] 0.190372<br />
而 Saaty 的书中,这个值约为 0.58
请帮忙看看吧,谢谢啦!