Publicado por: sadeckgeo | maio 18, 2015

Tomada de decisão com AHP

AHP

Considerações sobre a AHP

Thomas Saaty desenvolveu a AHP em 1971 e apontou que a teoria da AHP reflete o método natural de funcionamento da mente humana, ou seja, diante de um grande número de elementos a mente os agrega em grupos segundo propriedades comuns.

Logo, a AHP pode ser entendida como uma abordagem para a tomada de decisão que envolve a estruturação de critérios de escolha múltipla em uma hierarquia, para avaliar a importância relativa desses critérios, comparar alternativas para cada critério e determina um ranking geral das alternativas, minimizando suas falhas.

Esse processo de hierarquização deve ser feito com o máximo de detalhamento possível para representar o problema, mas não deve alterar a sensibilidade dos elementos, lembre-se que esse é um método de tomada de decisões e identificar questões que solucionem o problema é fundamental. Equipes multidisciplinares ou profissionais com esse perfil e que devem estar cientes da complexidade do problema faram a hierarquização de forma mais “justa” (Ad Hoc). Não entraremos aqui no pensamento científico, mas se você não estiver seguro com a AHP e quiser um pouco de filosofia leia o livro Against Method do Feyerabend.

A hierarquização servirá a dois propósitos, fornece uma visão geral das relações complexas inerente à situação; e ajuda o interprete a avaliar se as questões em cada nível são da mesma ordem de grandeza, de modo que ele pode comparar esses elementos homogêneos com precisão. Neste procedimento, os diferentes fatores que influenciam a tomada de decisão são comparados dois-a-dois, e um critério de importância relativa é atribuído ao relacionamento entre estes fatores, conforme uma escala pré-definida (SPRING, 1996).

ScreenShot116

Nas Geotecnologias esse método tem sido usado para tomada de decisão em problemas de risco a deslizamentos de terras, zoneamentos, avaliação de vulnerabilidade, entre outros. Se quiser se aprofundar procure um livro chamado “The Analytic Hierarchy Process in Natural Resource and Environmental” É um pouco velho, mas é bem legal.

Bem, ainda nas geotecnologias esse tipo de análise pode ser feito nos principais softwares da área como ArcGIS, SPRING e QGIS cada qual com as suas especificidades.

AHP_Software

No entanto o processo é muito simples e pode ser até mesmo aplicado pelo Excel como nesse documento.

O assunto é bastante amplo e em outra oportunidade poderemos falar mais dele com tutoriais e outros.

Deixo aqui pra vocês também um código que desenvolvemos em MatLab, o amigo Marcos Adami e eu para subsidiar suas pesquisas e para que possa ser usado e melhorado.

% Sadeck AHP
% usando como referência o artigo
%Ye et al.
%(http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4664667)
 
%% definição da matriz de preferência 
% usando os seguintes critérios para o dado de uso do solo
%   pior    melhor
%                 pior  melhor                  
% igual           1,00  1,00                    
% um pouco        0,50  2,00          
% algo            0,33  3,00              
% moderadamente   0,25  4,00    
% melhor/pior     0,20  5,00                  
% bem             0,17  6,00              
% muito           0,14  7,00            
% criticamente    0,13  8,00      
% absolutamente   0,11  9,00            
 
%classes
% AREA_NAO_OBSERVADA   
% DESFLORESTAMENTO_2010
% FLORESTA             
% HIDROGRAFIA          
% MINERACAO            
% NAO_FLORESTA         
% PASTO_LIMPO          
% REFLORESTAMENTO      
% REGENERACAO_COM_PASTO
% VEGETACAO_SECUNDARIA 
% Agricultura           
% Area urbana           
% MOSAICO_DE_OCUPACOES  
% OUTROS                
% PASTO_COM_SOLO_EXPOSTO
% PASTO_SUJO    
 
clear all
close all
clc
 
pref=      [1.00    9.00    9.00    9.00    9.00    9.00    9.00    9.00    9.00    9.00    9.00    9.00    9.00    9.00    9.00    9.00;...
            0.11    1.00    9.00    9.00    0.11    5.00    2.00    6.00    8.00    7.69    2.00    2.00    2.00    5.00    6.00    2.00;...
            0.11    0.11    1.00    1.00    0.11    0.14    0.11    0.11    0.11    0.17    0.11    0.11    0.11    0.11    0.11    0.11;...
            0.11    0.11    1.00    1.00    0.11    0.14    0.11    0.11    0.11    0.17    0.11    0.11    0.11    0.11    0.11    0.11;...
            0.11    9.00    9.00    9.00    1.00    8.00    8.00    8.00    8.00    8.00    8.00    8.00    8.00    8.00    8.00    8.00;...
            0.11    0.20    7.00    7.00    0.13    1.00    0.17    0.33    0.50    5.00    0.25    0.25    0.25    0.50    0.20    0.50;...
            0.11    0.50    9.00    9.00    0.13    6.00    1.00    7.00    6.00    8.00    1.00    0.50    1.00    1.00    0.33    2.00;...
            0.11    0.17    9.00    9.00    0.13    3.00    0.14    1.00    2.00    3.00    0.25    0.20    0.50    1.00    0.17    0.33;...
            0.11    0.13    9.00    9.00    0.13    2.00    0.17    0.50    1.00    3.00    0.20    0.17    0.20    0.20    0.14    0.25;...
            0.11    0.13    6.00    6.00    0.13    0.20    0.13    0.33    0.33    1.00    0.14    0.13    0.14    0.14    0.13    0.17;...
            0.11    0.50    9.00    9.00    0.13    4.00    1.00    4.00    5.00    7.00    1.00    0.50    1.00    2.00    0.33    2.00;...
            0.11    0.50    9.00    9.00    0.13    4.00    2.00    5.00    6.00    8.00    2.00    1.00    2.00    3.00    1.00    4.00;...
            0.11    0.50    9.00    9.00    0.13    4.00    1.00    2.00    5.00    7.00    1.00    0.50    1.00    0.33    0.25    2.00;...
            0.11    0.20    9.00    9.00    0.13    2.00    1.00    1.00    5.00    7.00    0.50    0.33    3.00    1.00    0.50    2.00;...
            0.11    0.17    9.00    9.00    0.13    5.00    3.00    6.00    7.00    8.00    3.00    1.00    4.00    2.00    1.00    6.00;...
            0.11    0.50    9.00    9.00    0.13    2.00    0.50    3.00    4.00    6.00    0.50    0.25    0.50    0.50    0.17    1.00];
% pref=[1 7 1/3; 1/7 1 1/9; 3 9 1]
 
%% autovalores e autovetores
   
  x=eig(pref);
  autovetor=x(1);
   
  media_linha=mean(pref,2);
  soma_coluna=sum(pref);
  
  scaling=media_linha./(max(media_linha));
  
  normaliza=scaling./sum(scaling);
  
%% interações
  scaling1=zeros(length(media_linha),10);
  normaliza1=zeros(length(media_linha),10);
  
   
  intera=pref*media_linha;
  scaling1(:,1)=intera./max(intera);
  normaliza1(:,1)= scaling1(:,1)./sum( scaling1(:,1));
  
  for i =2:30
      intera=pref*scaling1(:,(i-1));
      scaling1(:,i)=intera./max(intera);
      normaliza1(:,i)=scaling1(:,i)./sum(scaling1(:,i));
      check(i)=sum(( normaliza1(:,i)- normaliza1(:,(i-1))).^2);
  end
  
  t=size(normaliza1);
  
  
  for i=1:length(pref)-1
     for j=(i+1):length(pref)
         cgi(i,j)=(log(pref(i,j))-log(normaliza1(i,t(2))/normaliza1(j,t(2)))).^2;
     end
  end
  
  cgi2=(2.*sum(sum(cgi)))./(length(pref)-1)./(length(pref)-2);
  
  rc=(autovetor-(length(pref)))./((2.7699.*(length(pref))-4.3513)-(length(pref)));

Um grande abraço.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Categorias

%d blogueiros gostam disto: