AHP_function(r, n, m, dados){ # cat("************************************************************************************************************************", fill=T) cat("Analise Hierarquica (Saaty,1977, 1991) para mais de um julgador", fill=T) cat("Macro: AHP", fill=T) cat("Versao: 1.0 ",fill=T) cat("Ano: 2005", fill=T) cat("Autores: Giselle Silva de Carvalho (Bacharelanda em Estatistica)", fill=T) cat(" Sueli Aparecida Mingoti (Profa. Adjunta- UFMG - Depto. de Estatistica - orientadora)", fill=T) cat( , fill=T) cat("Descricao do programa: Este programa implementa a analise hierarquica de acordo com o proposto por Saaty (1991). Permite que ") cat("o usuario faça a analise hierarquica para mais de um julgador. A analise hierarquica e feita para cada julgador e os ") cat("resultados sao impressos para cada um separadamente, isto e a consistencia da matriz reciproca positiva amostral ") cat("correspondente e a estimacao dos pesos dos atributos e a classificacao dos objetos em avaliacao (no caso de consistencia).", fill=T) cat( , fill=T) cat("Nota: Este programa funciona em S-Plus versoes 2000 ou superior.", fill=T) cat( , fill=T) cat("Referencias Bibliograficas:", fill=T) cat( , fill=T) cat("Saaty, T. L. (1977) A scaling method for priorities in hierarchical structures. Journal of Mathematical Psychology 15,234-281.", fill=T) cat( , fill=T) cat("Saaty, T. L. (1991) Metodo de analise hierarquica. MacGraw-Hill, Sao Paulo.", fill=T) cat("************************************************************************************************************************", fill=T) cat( , fill=T) cat( , fill=T) #r e o numero de repeticoes, ou seja, o tamanho da amostra de julgadores. cat( , fill=T) if (r==1){ cat("************************************************************************************************************************", fill=T) AnaHier(n, m, dados) cat("************************************************************************************************************************", fill=T) } else if (r<1){ cat("!!!!!! NUMERO DE JULGADORES INVALIDO!!!!!!", fill=T) } else { for (k in seq(1, r*m, by=m)){ dadosN_dados[k:(k+(m-1)), 1:(m+(n*m))] AnaHier(n, m, dadosN) cat("************************************************************************************************************************", fill=T) } } } AnaHier_function(n, m, dados){ #n é o número de itens e m é o números de atributos. W_c() TN_c() v_c() X_c() XN_array(dim=c(n, m)) RC_0 R_c() S_0 nm_m+(n*m) dados1_dados[1:m,1:m] dados2_dados[1:n,(m+1):nm] cat("****AVALIACAO DA CONSISTENCIA DA MATRIZ DOS ATRIBUTOS****", fill=T) cat( , fill=T) #indice de consistencia randomico: CR_c(0, 0, 0.58, 0.9, 1.12, 1.24, 1.32, 1.41, 1.45) #Cálculo do autovetor TN (normalizado): for (i in 1:m){ W[i]_(prod(dados1[i,]))^(1/m) } TN_W/(sum(W)) #cálculo do autovalor Lâmbda: for (i in 1:m){ v[i]_sum(dados1[,i]) } lambda_TN%*%v #Cálculo do Índice de consistência: IC_(lambda-m)/(m-1) #cáculo da razão de consistência: if (m==1||m==2) { RC_IC/CR[1] } else if (m==3) { RC_IC/CR[3] } else if (m==4) { RC_IC/CR[4] } else if (m==5) { RC_IC/CR[5] } else if (m==6) { RC_IC/CR[6] } else if (m==7) { RC_IC/CR[7] } else if (m==8) { RC_IC/CR[8] } else if (m==9) { RC_IC/CR[9] } else { cat("NAO E POSSIVEL CALCULAR A RAZAO DE CONSISTENCIA!!!", fill=T)} #testando a consistencia da matriz: if (RC==0) { if (IC>=0.10){ cat("A MATRIZ DE COMPARACAO DOS ATRIBUTOS NAO E CONSISTENTE, POIS O INDICE DE CONSISTENCIA É MAIOR QUE 0.10!!!", fill=T) cat( , fill=T) cat("****COMPARACOES DOS ATRIBUTOS (DOIS-A-DOIS):****", fill=T) cat( , fill=T) cat("Autovetor (normalizado):", fill=T) print(TN) cat( , fill=T) cat("Autovalor Lambda:", lambda, fill=T) cat( , fill=T) cat("Indice de consistencia:", IC, fill=T) cat( , fill=T) } else { cat("A MATRIZ DE COMPARACAO DOS ATRIBUTOS E CONSISTENTE!!!", fill=T) #Análise dos ítens em relação a cada atributo: #calculo dos autovetores (normalizados): for (j in 1:m){ for (i in seq(1, (n*m), by=n)){ for (k in i:(i+(n-1))) { X[k]_(prod(dados2[k,]))^(1/n) } S_S+1 XN[,S]_X[i:(i+(n-1))]/(sum(X[i:(i+(n-1))])) } } R_TN%*%XN cat( , fill=T) cat("****COMPARACOES DOS ATRIBUTOS (DOIS-A-DOIS):****", fill=T) cat( , fill=T) cat("Autovetor (normalizado):", fill=T) print(TN) cat( , fill=T) cat("Autovalor Lambda:", lambda, fill=T) cat( , fill=T) cat("Indice de consistencia:", IC, fill=T) cat( , fill=T) cat("Razao de consistencia:", RC, fill=T) cat( , fill=T) cat("****COMPARACOES DOS ITENS, COM RELACAO A CADA ATRIBUTO:****", fill=T) cat( , fill=T) cat("Autovetores (normalizados):", fill=T) print(XN) cat( , fill=T) cat("Vetor da ordenacao final dos itens:", R, fill=T) cat( , fill=T) } } else if (RC>0.10) { cat("A MATRIZ DE COMPARACAO DOS ATRIBUTOS NAO E CONSISTENTE, POIS A RAZAO DE CONSISTENCIA E MAIOR QUE 0.10!", fill=T) cat( , fill=T) cat("****COMPARACOES DOS ATRIBUTOS (DOIS-A-DOIS):****", fill=T) cat( , fill=T) cat("Autovetor (normalizado):", fill=T) print(TN) cat( , fill=T) cat("Autovalor Lambda:", lambda, fill=T) cat( , fill=T) cat("Indice de consistencia:", IC, fill=T) cat( , fill=T) cat("Razao de consistencia:", RC, fill=T) cat( , fill=T) } else { cat("A MATRIZ DE COMPARACAO DOS ATRIBUTOS E CONSISTENTE!!!", fill=T) #Análise dos ítens em relação aos atributos: #calculo dos autovetores (normalizados): for (j in 1:m){ S_0 for (i in seq(1, (n*m), by=n)){ c_i p_i+(n-1) for (k in 1:3) { X[k]_(prod(dados2[k,c:p]))^(1/n) } S_S+1 XN[,S]_X/(sum(X)) } } R_XN%*%TN cat( , fill=T) cat("****COMPARACOES DOS ATRIBUTOS (DOIS-A-DOIS):****", fill=T) cat( , fill=T) cat("Autovetor (normalizado):", fill=T) print(TN) cat( , fill=T) cat("Autovalor Lambda:", lambda, fill=T) cat( , fill=T) cat("Indice de consistencia:", IC, fill=T) cat( , fill=T) cat("Razao de consistencia:", RC, fill=T) cat( , fill=T) cat("****COMPARACOES DOS ITENS, COM RELACAO A CADA ATRIBUTO:****", fill=T) cat( , fill=T) cat("Autovetores (normalizados):", fill=T) print(XN) cat( , fill=T) cat("Vetor da ordenacao final dos itens:", R, fill=T) cat( , fill=T) } }