MACRO #template AnalHier A.1-A.N; sub B.1-B.L. ##A.1-A.N é a matriz de comparação dos atributos dois-a-dois. ##B.1-B.M é a matriz de comparação dos ítens, com relação à cada atributo. #variáveis: MCOLUMN A.1-A.N W1 Z.1-Z.N v T B.1-B.L X.1-X.N ord MCONSTANT i j k m n c p a1 a2 b1 somaW1 somaZk somaZ1 lambda IC CR RC # NOTE ************************************************************************** NOTE Análise Hierárquica (Saaty,1977, 1991) para um único julgador NOTE Macro: AnalHier NOTE Versão: 1.0 NOTE Ano: 2005 NOTE Autores: Giselle Silva de Carvalho (Bacharelanda em Estatística) NOTE Sueli Aparecida Mingoti (Profa. Adjunta-UFMG-Depto.de Estatística-orientadora) NOTE # NOTE Descrição do programa: Este programa implementa a análise hierárquica de NOTE acordo com o proposto por Saaty (1991). Permite que o usário faça a NOTE análise hierárquica para um único julgador avaliando a consitência da NOTE matriz recíproca positiva amostral, a estimação dos pesos dos atributos NOTE e a classificação dos objetos em avaliação . NOTE # NOTE Nota: Este programa funciona em Minitab versões 13 ou 14. NOTE # NOTE Referências Bibliográficas: NOTE # NOTE Saaty,T.L.(1977) A scaling method for priorities in hierarchical structures. NOTE Journal of Mathematical Psychology 15,234-281. NOTE # NOTE Saaty, T.L. (1991) Método de análise hierárquica. MacGraw-Hill, São Paulo. NOTE ************************************************************************** NOTE # NOTE # # let m=count(A.1) let n=count(B.1) let a2=0 let lambda=0 let RC=0 # ##Análise dos atributos: NOTE *******ANÁLISE DA CONSISTÊNCIA DA MATRIZ DE ATRIBUTOS: ******* NOTE # # ##Calculando o autovetor T (normalizado): do i=1:m let a1=1 do j=1:m let a1=a1*A.j(i) enddo let W1(i)=(a1**(1/m)) enddo let somaW1=sum(W1) let T=W1*(1/somaW1) # ##Calculando o autovalor Lambda: do i=1:m let a2=sum(A.i) let v(i)=a2 enddo do i=1:m let lambda=lambda+(T(i)*v(i)) enddo # ##Calculando o Indice de consistência let IC=(lambda-m)/(m-1) # ##calculando a razão de consistência if m=3 let CR=0,58 let RC=IC/CR elseif m=4 let CR=0,9 let RC=IC/CR elseif m=5 let CR=1,12 let RC=IC/CR elseif m=6 let CR=1,24 let RC=IC/CR elseif m=7 let CR=1,32 let RC=IC/CR elseif m=8 let CR=1,41 let RC=IC/CR elseif m=9 let CR=1,45 let RC=IC/CR else NOTE !!!!NÃO É POSSIVEL CALCULAR A RAZAO DE CONSISTÊNCIA!!!! endif # ##Testando a consistência da matriz: if RC=0 if IC>0,10 NOTE !!! A matriz analisada não é consistente!!!! #resultados: NOTE # NOTE *******COMPARAÇÕES DOS ATRIBUTOS (dois-a-dois)******* Note # NOTE AUTOVALOR (lambda máx): print lambda Note # NOTE AUTOVETOR NORMALIZADO (T): print T Note # NOTE ÍNDICE DE CONSISTÊNCIA: print IC EXIT else NOTE !!! A Matriz é consistente!!!! # ##Análise dos ítens em relação aos atributos: # ##Calculando os autovetores (normalizados) V's: # do i=1:n let b1=1 do j=1:n let b1=b1*B.j(i) enddo let Z.1(i)=(b1**(1/n)) enddo let somaZ1=sum(Z.1) let X.1=Z.1*(1/somaZ1) # let c=n+1 let p=c+(n-1) do k =2:m do i=1:n let b1=1 do j=c:p let b1=b1*B.j(i) enddo let Z.k(i)=(b1**(1/n)) enddo let c=c+n let p=c+(n-1) let somaZk=sum(Z.k) let X.k=Z.k*(1/somaZk) enddo # #ordenação final dos itens em estudo: do i=1:n let ord(i)=0 do j=1:m let ord(i)=ord(i)+T(j)*X.j(i) enddo enddo # #resultados NOTE # NOTE *******COMPARAÇÕES DOS ATRIBUTOS (dois-a-dois)******* Note # NOTE AUTOVALOR (lambda máx): print lambda Note # NOTE AUTOVETOR NORMALIZADO (T): print T Note # NOTE ÍNDICE DE CONSISTÊNCIA E RAZÃO DE CONSISTÊNCIA:: print IC RC NOTE # NOTE *******COMPARAÇÕES DOS ITENS COM RELAÇÃO A CADA ATRIBUTO******* NOTE AUTOVETORES NORMALIZADOS: print X.1-X.n NOTE # NOTE ORDENAÇÃO FINAL DOS ITENS: print ord endif elseif RC>0,10 NOTE !!! A matriz analisada NÃO é consistente, pois a razão de consistencia é maior que 0,10 !!! #resultados NOTE # NOTE *******COMPARAÇÕES DOS ATRIBUTOS (dois-a-dois)******* Note # NOTE AUTOVALOR (lambda máx): print lambda Note # NOTE AUTOVETOR NORMALIZADO (T): print T Note # NOTE ÍNDICE DE CONSISTÊNCIA E RAZÃO DE CONSISTÊNCIA: print IC RC EXIT else NOTE !!! A Matriz é consistente!!!! # ##Análise dos ítens em relação aos atributos: # ##Calculando os autovetores (normalizados) V's: # do i=1:n let b1=1 do j=1:n let b1=b1*B.j(i) enddo let Z.1(i)=(b1**(1/n)) enddo let somaZ1=sum(Z.1) let X.1=Z.1*(1/somaZ1) # let c=n+1 let p=c+(n-1) # do k =2:m do i=1:n let b1=1 do j=c:p let b1=b1*B.j(i) enddo let Z.k(i)=(b1**(1/n)) enddo let c=c+n let p=c+(n-1) let somaZk=sum(Z.k) let X.k=Z.k*(1/somaZk) enddo # #ordenação final dos itens em estudo: do i=1:n let ord(i)=0 do j=1:m let ord(i)=ord(i)+T(j)*X.j(i) enddo enddo # #resultados NOTE # NOTE *******COMPARAÇÕES DOS ATRIBUTOS (dois-a-dois)******* Note # NOTE AUTOVALOR (lambda máx): print lambda Note # NOTE AUTOVETOR NORMALIZADO (T): print T Note # NOTE ÍNDICE DE CONSISTÊNCIA E RAZÃO DE CONSISTÊNCIA: print IC RC NOTE # NOTE *******COMPARAÇÕES DOS ITENS COM RELAÇÃO A CADA ATRIBUTO******* Note # NOTE AUTOVETORES NORMALIZADOS: print X.1-X.M NOTE # NOTE ORDENAÇÃO FINAL DOS ITENS: print ord # endif ENDMACRO