6 Resolvendo o AHP em ambiente Scilab

Documentos relacionados
Analytic Hierarchy Process (AHP)

Determinação numérica de autovalores e autovetores: Método de Jacobi

MATRIZES - PARTE Definição e Manipulação de Matrizes AULA 21

Método de Newton. Podemos escrever este problema na forma vetorial denindo o vetor x = [x 1, x 2,..., x n ] T e a função vetorial

INTRODUÇÃO À COMPUTAÇÃO - EPET006 -

Introdução aos Métodos Numéricos

Introdução aos Métodos Numéricos

G4 de Álgebra Linear I

P3 de Álgebra Linear I

G3 de Álgebra Linear I

1 Complexidade de Algoritmos em Álgebra Linear

G3 de Álgebra Linear I

AUTOVALORES E AUTOVETORES

Introdução aos Métodos Numéricos

MATLAB Avançado. Melissa Weber Mendonça

Introdução a Matrizes

P4 de Álgebra Linear I

Introdução aos Métodos Numéricos

Determinação numérica de autovalores e autovetores: Método das Potências Inversas

Autovalores e Autovetores

G3 de Álgebra Linear I

NÍVEL BÁSICO CAPÍTULO II

MAT2458 ÁLGEBRA LINEAR PARA ENGENHARIA II 2 a Prova - 2 o semestre de T ( p(x) ) = p(x + 1) p(x), (a) 8, (b) 5, (c) 0, (d) 3, (e) 4.

2 Revisão do método AHP

Inteligência Computacional Aula 2 - Introdução ao MatLab Graduação /2

G2 de Álgebra Linear I

Álgebra Linear I - Aula 22

1. TÉCNICA BASEADA NA TEORIA SOBRE FUZZY SETS

Método de Newton modificado

Álgebra Linear Teoria de Matrizes

Ajuste de Splines a um Conjunto de Dados

Aula 5 - Produto Vetorial

Sistemas de Equações Lineares

GAAL - Exame Especial - 12/julho/2013. Questão 1: Considere os pontos A = (1, 2, 3), B = (2, 3, 1), C = (3, 1, 2) e D = (2, 2, 1).

Álgebra Linear Semana 04

INTRODUÇÃO AO SCILAB

Álgebra Linear II - Poli - Gabarito Prova SUB-tipo 00

Regra para calcular o determinante de matrizes quadradas de ordem 2x2:

Primeiro Exercício programa: Como o Google ordena páginas. MAP-2121 para EPUSP

Determinação numérica de autovalores e autovetores: Método das Potências Inversas

Modelagem Computacional. Parte 6 2

Álgebra Linear I - Aula Matrizes simultaneamente ortogonais e simétricas

Murilo F. Tomé ICMC-USP

Lista de exercícios 9 Mudanças de Bases

Álgebra Linear e Aplicações - Lista para Primeira Prova

Unidade 3: Linguagem de programação

Map05 - Métodos Matriciais Computacionais Mat Álgebra Matricial Computacional Primeiro Exercicio Computacional, entregar ao Prof: 22/10/2012

Introdução aos Métodos Numéricos. Instituto de Computação UFF

Renato Martins Assunção

3 a. Lista de Exercícios

Álgebra Linear I - Lista 11. Autovalores e autovetores. Respostas. 1) Calcule os autovalores e autovetores das matrizes abaixo.

Laboratório de Simulação Matemática. Parte 6 2

Sistemas Lineares - Métodos Iterativos : Jacobi e Gauss-Seidel. Profa. Cynthia de O. Lage Ferreira Métodos Numéricos e Computacionais I - SME0305

Álgebra Linear Contra-Ataca

Tabela 32: Critérios sugeridos. CRITÉRIOS SUGERIDOS

a 11 a m1 A ou [ A] ou A ou A A = a ij para i = 1 m e j = 1 n A=[ Os elementos da diagonal principal são: a ij para i = j

Resolução de sistemas de equações lineares: Método de eliminação de Gauss - estratégias de pivotamento

Métodos Numéricos e Estatísticos Parte I-Métodos Numéricos

INTRODUÇÃO AOS MÉTODOS NUMÉRICOS. Solução de Sistemas Lineares

MP-208: Filtragem Ótima com Aplicações Aeroespaciais

SISTEMAS LINEARES PROF. EDÉZIO

Geometria Analítica e Álgebra Linear

O método AHP revisão conceitual e proposta de simplificação

a m1 A ou [ A] ou A ou A A = a ij para i = 1 m e j = 1 n A=[ Os elementos da diagonal principal são: a ij para i = j

Cálculo Numérico BCC760

Sistemas de Equações Lineares e Equações Vectoriais Aula 2 Álgebra Linear Pedro A. Santos

Breve Introdução à Programação em Scilab 6.0

Universidade Federal de Alagoas UFAL Centro de Tecnologia - CTEC Programa de Pós-Graduação em Engenharia Civil - PPGEC

P4 de Álgebra Linear I de junho de 2005 Gabarito

Introdução aos Métodos Numéricos

5. Seja A uma matriz qualquer. Assinale a afirmativa

Resolução de Sistemas Lineares. Ana Paula

Álgebra Linear I - Aula Forma diagonal de uma matriz diagonalizável

Autovalores e Autovetores

6 Estudo de Caso Conceitos utilizados no Estudo de Caso

AVALIAÇÃO DE SOLUÇÕES

Métodos Computacionais Aplicados à Estatística

Método prático para extrair uma base de um conjunto de geradores de um subespaço de R n

Exercício: Identifique e faça um esboço do conjunto solução da. 3x xy + y 2 + 2x 2 3y = 0

5. Seja R : R 3 R 3 uma rotação em torno do eixo gerado por (0, 0, 1). Suponha que R mande o vetor

1. Noções de Programação

Análise Numérica DCC033. Renato Assunção Departamento de Ciência da Computação UFMG

CM005 Álgebra Linear Lista 3

Algoritmos Numéricos 2 a edição

3.DETERMINAÇÃO NUMÉRICA DE AUTO VALORES E AUTO VETORES

Projeto de Tópicos de Álgebra Linear: Resolução do problema de quadrados mínimos discrtos lineares utilizando a decomposição QR

MATRIZES - PARTE Mais exemplos Multiplicação de duas matrizes AULA 26

CSE-020 Revisão de Métodos Matemáticos para Engenharia

Introdução ao Scilab 3.0 Parte 3

Método da Potência. Gabriela Reis Afonso Paiva Neto 30/05/2014. Gabriela Reis, Afonso Paiva Neto Método da Potência

Escalonamento. Sumário. 1 Pré-requisitos. 2 Sistema Linear e forma matricial. Sadao Massago a Pré-requisitos 1

LIMITES E DERIVADAS COM O SOFTWARE MATHEMATICA 10.3

MATRIZES E DETERMINANTES

Introdução aos Sistemas Lineares

Matemática para jogos 1 Aula 2 Matrizes: Tipos, operações e propriedades Mark Joselli

Engenharia Básica Tópicos de Matemática Aplicada - TMA

Transcrição:

6 Resolvendo o AHP em ambiente Scilab Uma boa ferramenta a se empregar na metodologia AHP, que permite calcular de maneira exata os autovetores e autovalores dos problemas, e a fazer alguns cálculos para análises de sensibilidade, é o pacote computacional Scilab. O Scilab é um software francês de computação numérica semelhante ao mais conhecido Matlab, de grande aplicação na área de engenharia, e é distribuído gratuitamente pela internet. O exemplo do Capítulo 5 da escolha da casa, neste capítulo ajuda a ilustrar algumas funções de álgebra linear do Scilab e a mostrar como se pode manipular matrizes inconsistentes até que se tornem quase consistentes. A representação de uma matriz no Scilab é feita entre colchetes, por linhas, separando cada uma da próxima por ponto e vírgula (;) e os elementos uns dos outros por vírgula (,). É possível escrever cada linha da matriz em uma linha de comando, para facilitar a visualização. Quando a última linha de comando contém ponto e vírgula no final, os dados são apenas guardados pelo programa. Se não houver ponto e vírgula, o programa retorna alguma resposta. Representando a matriz original do problema: -->A=[1,5,3,7,6,6,1/3,1/4; -->1/5,1,1/3,5,3,3,1/5,1/7; -->1/3,3,1,6,3,4,6,1/5; -->1/7,1/5,1/6,1,1/3,1/4,1/7,1/8; -->1/6,1/3,1/3,3,1,1/2,1/5,1/6; -->1/6,1/3,1/4,4,2,1,1/5,1/6; -->3,5,1/6,7,5,5,1,1/2; -->4,7,5,8,6,6,2,1]

39 O retorno é: A = 1. 5. 3. 7. 6. 6..3333333.25.2 1..3333333 5. 3. 3..2.1428571.3333333 3. 1. 6. 3. 4. 6..2.1428571.2.1666667 1..3333333.25.1428571.125.1666667.3333333.3333333 3. 1..5.2.1666667.1666667.3333333.25 4. 2. 1..2.1666667 3. 5..1666667 7. 5. 5. 1..5 A função que extrai um vetor de autovalores e também os autovetores (se existirem) da matriz é a função spec. A entrada da função será a matriz A, e é preciso nomear as duas saídas. Vamos chamar de x os autovetores resultantes e de c o conjunto de vetores de autovalores. -->[x,c]=spec(a) c = column 1 to 4 9.6688873 -.9545952 + 3.1931413i -.9545952-3.1931413i.463379 + 2.3694481i

4 column 5 to 8.463379-2.3694481i -.2276361 +.3654739i -.2276361 -.3654739i -.22512 x = column 1 to 4 -.377854.1888771 +.3752729i.1888771 -.3752729i.1224379 +.19199i -.1178768 -.14761 -.24341i -.14761 +.24341i -.1743943 +.586i -.418114 -.62251 -.62251.1415575 +.41147i -.382353.95593 -.67886i.95593 +.67886i.225484 -.384256i -.67796.1784 +.71692i.1784 -.71692i.329 -.68195i -.793235.25858 -.133876i.25858 +.133876i -.7735 -.73522i -.3643457.1622133 -.3496132i.1622133 +.3496132i -.993979 +.126843i -.7276467.426676 +.3325719i.426676 -.3325719i.8278997 column 5 to 8.1224379 -.19199i -.1635849 +.24965i -.1635849 -.24965i -.281498 -.1743943 -.586i -.192655 -.266485i -.192655 +.266485i.173365.1415575 -.41147i -.93549 +.9374i -.93549 -.9374i -.1281186.225484 +.384256i -.52594 -.6843i -.52594 +.6843i -.9775.329 +.68195i -.3975 +.1369817i -.3975 -.1369817i.1875855 -.7735 +.73522i.1434757 +.5983i.1434757 -.5983i -.813212 -.993979 -.126843i -.227721 +.583831i -.227721 -.583831i.1548.8278997.878269.878269.917291 Observando os valores de c, a primeira coluna é a que contém o maior valor. O elemento não-nulo é o autovalor máximo da matriz em questão, ou seja, λ max. Então pega-se essa coluna onde o elemento não-nulo é o maior, usandose a propriedade de indicar a linha por (:) e a coluna por 1. O uso dos dois pontos simboliza que não se quer tomar uma linha específica, e sim todas. Especificando a coluna, tem-se como resultado todo o vetor, isto é, toda a coluna. Nomeamos como λ (lambda) o novo vetor.

41 --> lambda=c(:,1) lambda = 9.6688873 Ou, alternativamente, toma-se de uma vez o elemento da primeira linha e primeira coluna, como λ max. -->lambdamax=c(1,1) lambdamax = 9.6688873 Por ser a primeira coluna de c a que contém o autovalor máximo, a primeira coluna de x será o autovetor principal da matriz. -->x=x(:,1) x = -.377854 -.1178768 -.418114 -.382353 -.67796 -.793235 -.3643457 -.7276467

42 Como queremos ter um vetor de prioridades em que a soma dos valores é igual a 1, normalizamos o vetor x, utilizando a função sum do Scilab e depois uma divisão simples. -->soma=sum(x) soma = - 2.183886 -->xnorm=x/soma xnorm =.173175.539757.188113.17579.31437.363222.1668337.333189 Vamos chamar, como nos outros capítulos, o autovetor de w : -->w=xnorm; Após encontrar o vetor de prioridades w, queremos saber se os julgamentos são consistentes. Para saber a ordem da matriz, é possível usar a função size, e como ela retorna duas colunas iguais, toma-se a primeira. -->n=size(a); -->N=n(1) N = 8. Aplica-se simplesmente a fórmula do índice de inconsistência CI:

43 -->CI=(lambda-N)/(N-1) CI =.2384125 Retira-se da tabela de Saaty e Mariano o valor de RI: -->RI=1.4; E finalmente calcula-se a razão de inconsistência CR. -->CR=CI/RI CR =.172946 Fica comprovado, assim, que a matriz não tem um nível de consistência aceitável. Continuamos no exemplo para demonstrar os métodos de melhoria de consistência utilizando o Scilab. O primeiro método era baseado em encontrar o elemento que causa maior variação no λ max através do uso de derivadas parciais. Para isto, além do w era necessário calcular v, o autovetor da matriz A transposta. A matriz transposta T A é: -->AT=A' AT = 1..2.3333333.1428571.1666667.1666667 3. 4. 5. 1. 3..2.3333333.3333333 5. 7. 3..3333333 1..1666667.3333333.25.1666667 5. 7. 5. 6. 1. 3. 4. 7. 8. 6. 3. 3..3333333 1. 2. 5. 6. 6. 3. 4..25.5 1. 5. 6..3333333.2 6..1428571.2.2 1. 2..25.1428571.2.125.1666667.1666667.5 1. Da mesma maneira que se calcula w, procede-se para calcular v, chegando a:

44 -->v=xtnorm v =.46859.1168184.52582.3494764.192822.165679.59599.197668 Tendo n, A, w e v, utiliza-se a fórmula (7) (página 32). Para isto, cria-se a função deriva. -->function[matder]=deriva(n,a,w,v) -->for i=1:n-1 do -->for j=i+1:n do -->matder(i,j)=v(i)*w(j)-a(j,i)*a(j,i)*v(j)*w(i) -->end -->end -->endfunction Considerando que A, w e v já estão definidos, aplica-se a função deriva com n = 8. -->der=deriva(8,a,w,v) der =..1728.78139 -.4136.542.958 -.841479 -.39171.. -.33142.1297.24853.32495 -.6257 -.133568... -.9147 -.2361 -.57.83765 -.756132.... -.191339 -.337173.76377.942929..... -.136617 -.1495.41391...... -.259888.293554........6487

45 Foi observado que o elemento com maior derivada parcial era o a 48, e em seguida apresentado o outro método, de Harker. No método de Harker, calculava-se a perturbação de cada elemento em relação à matriz consistente. Para isto, é necessário criar a função perturba. -->function[epsilon]=perturba(n,a,w) -->for i=1:n do -->for j=1:n do -->epsilon(i,j)=a(i,j)*w(j)/w(i) -->end -->end -->endfunction Com a função perturba, constrói-se a matriz de perturbações. -->epsilon=perturba(8,a,w) epsilon = 1. 1.5598335 3.2616984.78345 1.765512 1.259621.3214197.4814383.64194 1. 1.1616975 1.6218317 1.7254264 2.18885.618188.8818492.365887.86893 1..5584351.495877.7723596 5.3213577.3542485 1.411755.6165868 1.797183 1..591418.5186544 1.3612932 2.3788475.9288922.5795669 2.198441 1.6919278 1..585172 1.748313 1.7888171.793915.4953417 1.2947337 1.92866 1.793513 1..9186321 1.5288584 3.111197 1.6176498.187922.7345956.933786 1.88575 1..9985662 2.77194 1.133987 2.8228768.423716.559287.654828 1.14358 1. Neste passo, observou-se que o elemento com a maior perturbação é o a 37. De acordo com o método, o elemento a 37 e seu complementar a 73 devem ser substituídos por e os elementos opostos a eles ( a 33 e a 77 ) por 2. Rebatizamos a matriz A de A mod if ( A modificada), para depois modificar cada um dos quatro termos. -->Amodif=A Amodif =

46 1. 5. 3. 7. 6. 6..3333333.25.2 1..3333333 5. 3. 3..2.1428571.3333333 3. 1. 6. 3. 4. 6..2.1428571.2.1666667 1..3333333.25.1428571.125.1666667.3333333.3333333 3. 1..5.2.1666667.1666667.3333333.25 4. 2. 1..2.1666667 3. 5..1666667 7. 5. 5. 1..5 Basta dizer ao programa o novo valor de um determinado elemento, e ele retorna a matriz completa com apenas aquele elemento modificado. Por exemplo: -->Amodif(3,7)= Amodif = 1. 5. 3. 7. 6. 6..3333333.25.2 1..3333333 5. 3. 3..2.1428571.3333333 3. 1. 6. 3. 4...2.1428571.2.1666667 1..3333333.25.1428571.125.1666667.3333333.3333333 3. 1..5.2.1666667.1666667.3333333.25 4. 2. 1..2.1666667 3. 5..1666667 7. 5. 5. 1..5 Fazendo as quatro modificações, o último retorno é: Amodif = 1. 5. 3. 7. 6. 6..3333333.25.2 1..3333333 5. 3. 3..2.1428571.3333333 3. 2. 6. 3. 4...2.1428571.2.1666667 1..3333333.25.1428571.125.1666667.3333333.3333333 3. 1..5.2.1666667.1666667.3333333.25 4. 2. 1..2.1666667 3. 5.. 7. 5. 5. 2..5

47 Com as mesmas funções utilizadas inicialmente na matriz original, para a matriz modificada encontramos λ ' 8, 811 e temos um novo w. max = wmodif =.174377.6257.12813.19332.338274.412316.2225585.3446154 É a partir desse novo w que calculamos os a 37 e a 73 definitivos utilizando a relação wi ' a ij ' =. w ' j -->a37=wmodif(3,:)/wmodif(7,:) a37 =.4586718 -->a73=wmodif(7,:)/wmodif(3,:) a73 = 2.18281 Saaty sugere que no método AHP os elementos da matriz sejam arredondados para.5 e 2. Define-se a matriz A final. -->Afinal=A; -->Afinal(3,7)=1/2 Afinal =

48 1. 5. 3. 7. 6. 6..3333333.25.2 1..3333333 5. 3. 3..2.1428571.3333333 3. 1. 6. 3. 4..5.2.1428571.2.1666667 1..3333333.25.1428571.125.1666667.3333333.3333333 3. 1..5.2.1666667.1666667.3333333.25 4. 2. 1..2.1666667 3. 5..1666667 7. 5. 5. 1..5 -->Afinal(7,3)=2 Afinal = 1. 5. 3. 7. 6. 6..3333333.25.2 1..3333333 5. 3. 3..2.1428571.3333333 3. 1. 6. 3. 4..5.2.1428571.2.1666667 1..3333333.25.1428571.125.1666667.3333333.3333333 3. 1..5.2.1666667.1666667.3333333.25 4. 2. 1..2.1666667 3. 5. 2. 7. 5. 5. 1..5 A seguir, se o tomador de decisão estiver de acordo com a modificação nos julgamentos, calculam-se o autovetor principal de e a inconsistência, com as mesmas funções já demonstradas. A final, o autovalor máximo