31
UNIVERSIDADE KATYAVALA BWILA INSTITUTO SUPERIOR POLITECNICO DO LOBITO LICENCIATURA EM INFORMÁTICA TEMA:

Trabalho de Inteligecia Artificial Agentes de Procura

Embed Size (px)

Citation preview

Page 1: Trabalho de Inteligecia Artificial Agentes de Procura

UNIVERSIDADE KATYAVALA BWILAINSTITUTO SUPERIOR POLITECNICO DO LOBITO

LICENCIATURA EM INFORMÁTICA

TEMA:

BENGUELA/2012

UNIVERSIDADE KATYAVALA BWILA

Page 2: Trabalho de Inteligecia Artificial Agentes de Procura

INSTITUTO SUPERIOR POLITECNICO DO LOBITOLICENCIATURA EM INFORMÁTICA

TEMA:

ELABORADO POR:

DAVID CANDELE CHIYELU CHITUNDA

ERNESTO PEDRO TCHIWALE

JOÃO ABEL MARTINS DA SILVA

JOAQUIM TCHIPILICA

JOSÉ DANILSON ALBERTO

ORNÊLO SAMUEL PAULO KAMBONGA

VENÂNCIO JOSÉ COSTANTINO

O PROFESSOR:WALDEMAR RAIMUNDO WAFUNGA

BENGUELA/2012

DEDICATÓRIA

Page 3: Trabalho de Inteligecia Artificial Agentes de Procura

Dedicamos este trabalhos com muita vénia e consideração a todos os colegas da UKB especialmente do ISP, e não só aos nossos familiares e a todos leitores que lhes sirva de guia de aprendizagem nesta cadeira de Inteligência Artificial de formas a progredirem termos de conhecimento cientifico.

Page 4: Trabalho de Inteligecia Artificial Agentes de Procura

AGRADECIMENTO

Em primordial instância queremos agradecer a DEUS TODO-PODEROSO pelo fôlego de vida, aos nossos familiares pelo sustento, e a todos aqueles que directas ou indirectamente contribuíram na elaboração deste trabalho.

Page 5: Trabalho de Inteligecia Artificial Agentes de Procura

PENSAMENTO

A reconciliação é o princípio de pacificação de duas cidades em guerra.

“David”

Page 6: Trabalho de Inteligecia Artificial Agentes de Procura

ÍNDICE

INTRODUÇÃO

PROCURA CEGA

- EM LARGURA PRIMEIRO

- EM PROFUNDUDADE PRIMEIRO

- PROFUNDUDADE LIMITADA

PROCURA HEURÍSTICA

- PROCURA SÔFREGA

- TREPA COLINAS

- PROCURA TABU

CONCLUSÃO

BIBLIOGRAFIA

Page 7: Trabalho de Inteligecia Artificial Agentes de Procura

INTRODUÇÃO

Historicamente, a procura de métodos genéricos de resolução de problemas foi uma das primeiras áreas de teste para os investigadores em inteligência artificial. Os ambientes em que ocorrem os problemas são tipicamente acessíveis, geralmente deterministas e estáticos. As diferentes estratégias serão agrupadas em função do grau de conhecimento que o agente tem sobre o domínio do problema. Será feito ainda um estudo da complexidade das diferentes propostas e serão apresentados princípios heurísticos para escolha da estratégia mais adequada.

Agentes de procura é assim denominado devido as analise das diferentes estratégias possíveis agrupados em função do grau de conhecimento que o agente tem para resolução de problemas.

Page 8: Trabalho de Inteligecia Artificial Agentes de Procura

PROCURA CEGA

Quando não existe nenhuma informação sobre o problema que nos permita ajudar no processo de geração e teste dos nós, teremos de nos socorrer de uma estratégia dita cega. O que essas estratégias fazem basicamente é definir um modo Sistemático de navegação na árvore de procura. Existem fundamentalmente duas possibilidades, cada uma com variantes: Uma consiste em analisar repetidamente um sucessor do último nó analisado; outra baseia-se na análise de todos os sucessores de dado nó, antes de passar para a análise de todos os sucessores dos sucessores. Vejamos os algoritmos de forma mais detalhada.

EM LARGURA PRIMEIRO

Numa árvore de procura cada nó tem um nível. Assim a raiz tem nível 0, os seus sucessores têm nível 1, os sucessores dos sucessores têm nível 2, etc. A estratégia de procurar em largura primeiro caracteriza-se pelo facto de os nós do nível n serem todos analisados antes dos nós do nível n+1. Vamos aos exemplos de umas das estradas de Portugal e admitimos de novo que pretendemos ir de Coimbra para Faro. A árvore de procura irá passando sucessivamente pelas etapas seguinte.

Inicialmente a árvore de procura terá apenas um nó correspondente a Coimbra o estado inicial. Como Coimbra não corresponde ao objectivo (Faro), o nó correspondente ira ser expandido, aparecendo então os nós do nível seguinte e que são os vizinhos de Coimbra.

Aveiro

Viseu

Coimbra

Leiria

C. Branco

O algoritmo em largura primeiro irá analisar sucessivamente estes nós. Uma vez mais nenhum deles é a solução, passará para os nós do nível 2, como se indica na figura abaixo, processo de expansão e análise continuaria até se alcançar o objectivo Faro.

Page 9: Trabalho de Inteligecia Artificial Agentes de Procura

Do pondo de vista algorítmico, se estivermos a resolver um problema em que apenas interessa a solução, então não será necessário manter guardada toda a árvore de procura, mas sim a sua fronteira. Caso nos interesse o caminho como no exemplo presente teremos de manter todos os caminhos que ligam a raiz da árvore aos na fronteira.

Para assegurar que a estratégia tem o comportamento indicado, a fronteira deverá ser guardada numa fila, os elementos á cabeça da fila serão os primeiros a ser analisados e os sucessores de um nó gerados pela estratégia serão introduzidos no fim da fila associado a uma fila, existe um conjunto de funções. As funções FazFila, VaziaFila, RetiraFila e InseriFila são as usuais para o tipo de dados abstracto fila, permitindo respectivamente a construção de uma fila, o teste de filas vazias retirar um elemento da frente da fila ou acrescentar elementos no fim da fila. Esta última é a responsável pelo efeito de procura em largura, aparecendo aqui passada como argumento.

Podemos descrever o algoritmo:

Porto

Viseu

Aveiro Leiria Coimbra Aveiro Guarda Porto Coimbra Viseu V.Real Coimbra Aveiro Leiria Coimbra Santarém Lisboa Coimbra C.Branco Portalegre Évora Guarda

Page 10: Trabalho de Inteligecia Artificial Agentes de Procura

EM PROFUNDIDADE PRIMEIRO

Procura em Profundidade primeiro segue a filosofia completamente distinta dos dois algoritmos anteriormente apresentados. Na realidade partindo da raiz, o algoritmo vai expandir um nó, escolher um dos seus sucessores, expandi-lo por sua vez. Continuando o processo até que eu encontre a solução ou nó não possa ser mais expandido. Neste ultimo caso, continua o processo com um irmão do último nó analisado, caso exista, ou regressa ao nível anterior para continuar o processo. Tentemos então ir de Coimbra a Faro. Comecemos por Coimbra, que não sendo a solução vai originar a expansão do nó.

Coimbra

Aveiro Viseu Leiria C. Branco

Fig. Árvore de procura após expandir Coimbra.

Admitamos que o algoritmo opta por Escolher C. Branco para analisar. O facto de não ser a Solução, vai originar a sua expansão (fig 3.21).

Função ProcuraLarguraPrimeiro(problema,InserirFila):Solução ou falha1.I_nós«=Faz_Fila(EstadoInicial(problema))2.Repete 2.1.Se vaziaFila(I_nós) Então 2.1.1.Devolve falha Fim_de_se 2.2.nó«=RetiraFila(I_nós) 2.3.Se TesteObjectivo(nó) Então 2.3.1.devolve nó Senão 2.3.2.InsereFila(I_nós,expansão(nó,operadores(problema))) Fim_de_se Fim_de_RepeteFim_de_Função

Page 11: Trabalho de Inteligecia Artificial Agentes de Procura

Coimbra

Aveiro Viseu Leiria C. Branco

Guarda Portalegre Évora Coimbra

Fig. – Árvore de procura após ter expandido Castelo Branco

Suponhamos que a análise se faz com o Portalegre, que não sendo a solução, origina a sua expansão crescendo a arvore mais um nível.

Coimbra

Aveiro Viseu Leiria C. Branco

Guarda Portalegre Évora Coimbra C. Branco Évora

Fig. – Árvore de procura depois da escolha e expansão de Portalegre

Para garantir que o nosso algoritmo se comporte conforme indicado, basta que a fronteira da árvore seja guardada numa pilha. Os objectos pilhas são manipuladas pelas funções usuais: Fazpilha, Vaziapilha, RetiraPilha e InserePilha, que criam uma pilha, testam se uma pilha não tem elementos, retiram o elemento à cabeça da pilha e inserem elementos à cabeça da pilha, respectivamente. A função mais importante é a função InserePilha, que determina o efeito de procura em profundidade. Assim o algoritmo mantém o aspecto genérico já anteriormente apresentado.

Page 12: Trabalho de Inteligecia Artificial Agentes de Procura

Algoritmo – Algoritmo de procura em profundidade Primeiro

O algoritmo tem um comportamento análogo ao da procura em largura primeiro, começando por formar uma pilha contendo apenas o estado inicial (1). Entra depois o ciclo (2) e, caso a pilha não esteja vazia, sinal de que analisou todos os nós, (2.1), retira o elemento a cabeça da pilha (2.2) e analisa-o, relativamente ao teste objectivo (2.3); se, por acaso não existirem mais elementos na pilha termina falhando (2.1.1). Se o elemento retirado for solução, devolve-o (2.3.1), senão determina os seus sucessores de acordo com os operadores que lhes são aplicáveis os quais são inseridos a cabeça da pilha (2.3.2).

Vejamos como evolui o conteúdo da variável l_nós, ao longo das primeiras iterações do algoritmo.

ITERAÇÃ

O

l_nós

0 [Coimbra]

Função ProcuraProfundidadePrimeiro (problema, InserePilha): solução ou falha 1. l_nós«=Fazpilha (Estadoinicial(problema)) 2. Repete 2.1 Se Vaziapilha(l_nós) Então 2.1.1 Devolva falha Fim_de_Se 2.2. nó«=RetiraPilha(l_nós) 2.3. Se TesteObjectivo(nó) Então 2.3.1. Devolva nó Senão 2.3.2. InserePilha(l_nós, Expansão(operadores(problema))) Fim_de_se Fim_de_RepeteFim_de_Função

Page 13: Trabalho de Inteligecia Artificial Agentes de Procura

1 [C. Branco, Aveiro, Viseu, Leiria,]2 [Portalegre, Évora, Guarda, Coimbra, Aveiro, Viseu, Leiria]3 [Évora, C. Branco, Évora, Guarda, Coimbra, Aveiro, Viseu, Leiria]

Tab. – O conteúdo da pilha ao longo das primeiras iterações do algoritmo

Olhando para Tab. 3.5, verificamos que os nós dos níveis mais pequenos que são escolhidos vão ficando para trás da pilha, sendo por isso analisado posteriormente àqueles que se encontram mais afundo na arvore de procura. Verificamos também a possibilidade de existência de ciclos. Finalmente, o número de nós na pilha aparenta não crescer tão rapidamente como no caso das estratégias em largura primeiro. Podemos avaliar de forma mais precisa estes aspectos e as suas consequências?

A primeira conclusão da estratégia é de que não é completa, mesmo que o espaço de procura seja finito. Na realidade, basta que exista um ciclo no caminho de aprofundamento escolhido pelo algoritmo para ele não mais terminar. Por exemplo, se o sucessor de C. Branco escolhido fosse Coimbra, entraríamos num ciclo infinito que gerava o caminho Coimbra – C. Branco – Coimbra – C. Branco – etc.

Também não é discriminadora. Com efeito podem existir duas soluções, uma num nível alto e outra num nível baixo, que o algoritmo pode seguir pelo caminho que leva à primeira. Caso os custos associados aos caminhos sejam não negativos, é lógico que a solução de menor custo não será encontrada. Por exemplo, pode acontecer que para ir de Coimbra a C. Branco a opção seja pelo caminho Coimbra – Viseu – Guarda – C. Branco, percorrendo um total de 287 quilómetros em vez de 159 se optasse pelo caminho directo.

Que vantagens poderá apresentar está estratégia? Voltemo-nos para o problema da economia. Qual será a complexidade temporal do algoritmo? Admitamos de novo um factor de ramificação constante e igual a r. Quantos nós são analisados quando estamos no nível n? A análise em um pouco mais complicado do que no caso da procura em largura primeiro. No entanto existem pelo menos duas coisas que são certas: no melhor dos casos se a solução estiver no ramo mais a esquerda no nível n, n+1 nós; se a solução estiver no ramo mais à direita e no último nível, teremos o caso menos favorável, semelhante à procura em largura primeiro pelo que o resultado é idêntico ao apresentado na equação 3.1. O valor concreto será um valor entre esses dois extremos. Podemos considerar o valor médio? Podemos, embora a explicação esteja fora do objectivo deste livro.

r n+1 – 1 + (n+1)r-1 = r n+1 – 1- +r-2 2 2(r-1)

Equação – Complexidade temporal: valor médio

Page 14: Trabalho de Inteligecia Artificial Agentes de Procura

EM PROFUNDIDADE LIMITADA

Acabamos de ver na secção anterior que um dos grandes problemas da procura em profundidade primeiro se prende com a sua incapacidade em líder com caminhos infinitos. O algoritmo de procura em profundidade limitada procura evitar este problema.É claro que não é muito difícil alterar o algoritmo para que o problema dos ciclos seja evitado. Deixamos esta questão como exercício para o leitor.

Fixando o nível máximo da procura. O algoritmo exige apenas uma pequena modificação ao algoritmo geral já apresentado.

Esta alteração consiste essencialmente em supor que faz parte da descrição do estado o nível a que se encontra, podendo apenas ser aplicados os operadores caso o nível do nó seja inferior ao máximo escolhido (ponto 2.3.2 do algoritmo).

O problema que se coloca é o de saber qual o valor máximo para o nível que deve ser usado. Infelizmente, nem sempre é possível determinar esse

Função ProcuraProfundidadeLimitada (problema, InserePilha, nível_max): soluçãom ou falha 1.I_nós ← FazPilha(EstadoInicial (problema)) 2. Repete 2.1. Se VaziaPilha(nós) Então

2.1.1. Devolve falha Fim_de_Se 2.2. nó←RetiraPilha(I_nós) 2.3. Se TesteObjectivo(nó) Então

2.3.1. Devolve nó Senão

2.3.2.InserePilha(I_nós.Expansão(nó,operadoresNmx(problema)))

Fim_de_Se Fim_de_RepeteFim_de_Fuñção

Page 15: Trabalho de Inteligecia Artificial Agentes de Procura

valor e, quando tal é possível, isso depende do problema. A referir que no exemplo que temos vindo a usar, sabemos que existem 18 cidades, pelo que o comprimento máximo de uma solução (um caminho entre duas cidades) será 17. Do mesmo modo, na charada cripto-aritmética ilustrada, existem dez letras distintas devendo cada uma receber algarismo entre 0 e 9. Se os operadores efectuaram a atribuição de um algarismo a uma letra, a profundidade máxima de qualquer solução estará ao nível 10.

Admitindo que é possível definir um limite máximo, então o algoritmo de procura em profundidade limitada será completo. Continua pelas razões já anteriormente explicadas a não ser discriminador. A complexidade temporal assimptótica será de ordem O(r1) e a espacial O(1*r), sendo 1 o valor do limite máximo. Será assim econômico do ponto de vista do espaço, mas não o será do ponto de vista temporal.

PROCURA HEURÍSTICA

Até agora admitimos a inexistência de conhecimento que nos pudesse auxiliar relativamente à travessia do espaço de procura. O melhor que conseguimos foi usar a função g (n) que nos dava o custo do caminho desde o estado inicial até ao estado n. Nos algoritmos que se seguem, vamos admitir que possuímos informação adicional que nos torna capaz de estimar o custo do caminho do nó corrente até ao nó solução. Essa informação é dada por uma função h (n). No exemplo que temos vindo a utilizar, a função h (n) será simplesmente a distância quilométrica em linha recta entre as diferentes cidades e Faro.

Faro

Aveiro 366

Braga 454

Bragança 487

Beja 99

Page 16: Trabalho de Inteligecia Artificial Agentes de Procura

C. Branco 280

Coimbra 319

Évora 157

Faro 0

Guarda 352

Leiria 278

Lisboa 195

Portalegre 228

Porto 418

Santarém 231

Setúbal 168

Viana 473

V. Real 429

Viseu 363

Tab. Distâncias quilométricas em linha recta

Os algoritmos que iremos apresentar podem ser distinguidos por vários aspectos. Por exemplo, o modo como o próximo operador é escolhido: Num caso, escolhe-se o melhor à luz de uma heurística global, noutros casos a heurística é puramente local. Podemos também catalogar os algoritmos de acordo com o modo como a memória é, ou não, limitada. Finalmente, podemos ainda considerar o modo como as componentes de custo, g (n) e h (n), são utilizadas.

PROCURA SÔFREGA

Na procura sôfrega o princípio consiste em escolher o nó na fronteira da árvore de procura que aparenta ser o mais promissor de acordo com o valor estimado por h (n).

Page 17: Trabalho de Inteligecia Artificial Agentes de Procura

Assim o nosso algoritmo limita-se a manter a fronteira da árvore de procura ordenada pelos valores de h (n), sendo sempre escolhido o nó de valor mais baixo, isto é, aquele que está a hipoteticamente mais próximo da solução.

Vejamos um exemplo concreto com as estradas de Portugal. Admitamos de novo que o nosso problema se resume a ir de Coimbra a Faro. Começando em Coimbra podemos ir para Aveiro, Leiria, Viseu e Castelo Branco. Na Fig. 3.28, essas possibilidades foram ordenadas pela distância, estimada em linha recta, das cidades vizinhas de Coimbra a Faro. Os arcos que ligam a Faro as quatro cidades estão anotados com o valor estimado das distâncias.

Coimbra

Leiria C. Branco Viseu Aveiro

(278) (280) (363) (366)

Faro

Fig. -Primeira expansão da árvore de procura

Em função destes valores, a próxima cidade a ser visitada será Leiria. Como não é o ponto de chegada, temos de calcular os seus descendentes e respectivas distâncias estimadas a Faro. A nova fronteira terá de ser ordenada.

Coimbra

Leiria C.Branco Viseu Aveiro

(280) (319) (363) (366) Lisboa Santarém

(195) (231)

Faro

Fig.- Expansão do nó Leiria

Com estes resultados a próxima cidade a ser escolhida seria Lisboa. O processo continuava até ser encontrado um caminho.

O algoritmo pode ser descrito de forma simples como nos casos anteriores.

Page 18: Trabalho de Inteligecia Artificial Agentes de Procura

Algoritmo de procura Sôfrega

A estrutura de dados usada neste caso é uma lista ordenada. O nome das funções é auto-explicativo. A variável I_nós irá manter a lista ordenada pela heurística dos nós ainda por visitar. A heurística aparece aqui passada como argumento da função, o que torna o algoritmo mais genérico.

Podemos simular algumas interacções.

Função ProcuraSôfrega(problema, InsereListaOrdenada,Heurística): solução ou falha 1. I_nós←FazListaOrdenada(EstadoInicial(problema)) 2. Repete 2.1. Se VaziaListaOrdenada(I_nós) Então 2.2.1.Devolve falha Fim_de_se 2.2. nó←RetiraListaOrdenada(I_nós) 2.3. Se TesteObjectivo(nó) Então 2.3.1. Devolve nó Senão 2.3.2.InsereListaOrdenada(I_nós,

Heurística (Expansão(nó,Operadores(problema)))

Fim_de_se Fim_de_RepeteFim_de_Função

Page 19: Trabalho de Inteligecia Artificial Agentes de Procura

Podemos verificar o reaparecimento de nós já visitados, como é o caso de Coimbra.

Quais serão as características desta estratégia? É evidente que não é, em geral, completa. Basta notar que podem aparecer, como no exemplo anterior, nós repetidos que podem originar caminhos infinitos. Também não é discriminadora. Consideremos o exemplo da figura abaixo. Admitimos que queremos ir de Aveiro para Vila Real e usamos as distâncias em linha recta, assinaladas na figura, como heurística.

É evidente que o nosso algoritmo começará por expandir Aveiro em Viseu e Porto, optando por Viseu por ter a distancia mais curta a V. Real. Ao expandirmos Viseu encontraremos a solução. Na realidade, o caminho Aveiro - Viseu - V.Real significa percorrer 205 quilómetros, enquanto o caminho não escolhido Aveiro-Porto-V.real obrigaria a percorrer apenas 184 quilómetros.

E como se comporta a estratégia do ponto de vista da complexidade? Se reparamos bem para a filosofia desta estratégia, os nós vão sendo expandidos num modo híbrido entre uma procura em profundidade e uma procura em largura. Assim, pode acontecer que, no pior caso, todos os nós tenham de ser expandidos e visitados o que significa uma complexidade temporal da ordem de O (r) com r o factor de ramificação e n o nível da solução. Como a fronteira terá de ser mantida toda em memória. E atendendo ao modo como ela evolui, teremos também no limite uma complexidade espacial da ordem de O (rn).

TREPA COLINAS

Tab. -Conteudo de I_nós

(72) PortoV.Real

(99) Avero Viseu (66)Fig. - Ligações a Vila Real

Page 20: Trabalho de Inteligecia Artificial Agentes de Procura

Vimos no início, que existem problemas relativamente aos quais o mais importante é encontrar o caminho que conduz dom estado inicial ao estado final, enquanto para outros problemas é a solução propriamente dita que interessa e não tanto o modo como foi obtida. Pertence a este último tipo de questões o problema das n-rainhas. Para os resolver, é possível a partir de uma solução candidata e ir tentando melhorá-la passo a passo. No caso das n-rainhas, por exemplo podemos partir de um tabuleiro com as n-rainhas colocadas em posições aleatórias e procurar movimentar uma delas de cada vez, de tal modo que o número de ataques diminua. Este tipo de abordagem tem uma natureza tipicamente local e envolve ir melhorando progressivamente a solução candidata. O algoritmo trepa colinas baseia-se nesta filosofia. Para além disso, o algoritmo ”deita fora” todos os vizinhos menos o melhor. Vejamos como funcionaria no caso da nossa hipotética viagem de Coimbra até Faro.

A distância real desta solução é de 576. Do que foi dito resulta que o algoritmo é extremamente simples.

Tab. - Conteúdo da Lista Nó_corrente

Função TrepaColinas (problema): soluçãonó_corrente← EstadoInicial(problema) 1. Repete 2.1 nó_seguinte← Melhor(h,Expansão(nó_corrente,Operadore(problema))) 2.2 Se h(nó_seguinte) > h(nó_corrente) Então 2.2.1. Devolve nó_corrente Fim_de_Se 2.3. nó_corrente← nó_seguin Fim_de_RepeteFim_de_Função

Algoritmo - Algoritmo da procura da Trepa Colina

Page 21: Trabalho de Inteligecia Artificial Agentes de Procura

Tentemos agora analisar as características desta estratégia. É vidente que não é completa. Não é difícil imaginar situações nas quais uma transição inicialmente promissora nos conduz para um estado que não qua não é a solução e cujos descendentes não melhoram o resultado dado pela função de avaliação.

Na figura, o nó C encontra-se mais perto da solução D do que o nó B. Deste modo será o seleccionado e B será descartado. Não havendo ligação directa de C a D, o algoritmo termina sem encontrar a solução.

Igualmente não é óptima. No exemplo anterior a solução Coimbra-Leiria-Lisboa-Évora-Beja-Faro tem uma distância real de apenas 495 quilómetros.

Estas duas situações podem ser descritas visualmente por aquilo que se costuma designar pelo problema dos máximos locais (ver figura abaixo).

Admitamos que o nosso problema se resume a alcançar o ponto mais alto numa montanha. Partindo do Ponto A, aleatoriamente escolhido, o algoritmo consegue ir melhorando progressivamente a solução até alcançar o ponto B. Nessa altura é impossível melhorar a solução e chegar ao ponto D. Claro que se tivéssemos partido inicialmente de C, a solução seria encontrada.

Page 22: Trabalho de Inteligecia Artificial Agentes de Procura

Passamos agora a avaliar a natureza económica desta abordagem. Comecemos pelo espaço. Este algoritmo apenas guarda um estado pelo que a sua complexidade espacial é constante, ou seja, da ordem O(k) em que k é uma constante. Do ponto de vista temporal a sua complexidade é semelhante à de uma procura em profundidade primeira. Assim, se tivermos um factor de ramificação r e a solução se encontrar no nível n, então a complexidade temporal será da ordem de O(r*n). A utilização deste algoritmo depende bastante da “natureza do terreno”. Para além do problema dos máximos locais já referido, também a existência de planaltos pode dificultar o funcionamento do algoritmo, pois, tendo este apenas uma visão local do terreno, se a função de avaliação devolver valores idênticos para todos os vizinhos, a escolha será então aleatória (ver figura abaixo).

Existem soluções para estes problemas. Uma das possibilidades de tratar dos máximos locais seria retomar o algoritmo a partir de uma nova posição. Do ponto de vista da complexidade, o algoritmo deixaria de ser tão apelativo. No caso dos planaltos, uma solução possível seria deixar o algoritmo ter uma vizinhança maior, isto é, poder analisar o que se passa depois de usar mais do que um operador em cadeia. Deixamos neste caso de ter um algoritmo tão simples e ao mesmo tempo não sabemos qual deve ser a dimensão do “olhar para frente”

PROCURA TABU

A procura tabu (Glover, 1989), (Glover, e Laguna 1997) é um algoritmo heurístico, que procura melhorar progressivamente uma solução através de uma pesquisa local. O facto que distingue este algoritmo dos restantes, nomeadamente do trepa colinas, é a existência de uma memória, designada normalmente por lista tabu, e que se destina a evitar ciclos, explorar zonas promissoras ou a forçar a visita a novas zonas do espaço de procura. Esse efeito é conseguido, pois a lista tabu contém ou soluções que foram testadas ou os operadores que foram utilizados. O conteúdo da lista é usado fundamentalmente para inibir o teste de soluções ou evitar operadores.

Page 23: Trabalho de Inteligecia Artificial Agentes de Procura

A memória pode ter várias dimensões, de que salientamos as que medem o momento da ocorrência de um dado evento (uso de um operador, por exemplo) ou, ainda, a frequência com que determinado evento ocorreu. Na primeira dimensão, porque são guardadas as ocorrências mais recentes, podemos dizer que estamos perante uma memória de curto termo, enquanto na segunda dimensão, ao guardarmos situações mais antigas, podemos falar de memória de longo termo. Na procura tabu a memória pode ser utilizada segundo diferentes estratégias: para intensificar a busca na vizinhança de soluções de boa qualidade ou para diversificar a busca para regiões do espaço de procura ainda visitados.

O algoritmo que a seguir se descreve em pseudocódigo é formado por dois ciclos principais. No ciclo externo, controla-se o número de vezes que se tenta melhorar uma solução. No ciclo interno, estabelece-se o modo de produzir a nova solução candidata a partir da solução corrente, recorrendo aos vizinhos desta e à informação contida na memória tabu.

Page 24: Trabalho de Inteligecia Artificial Agentes de Procura

CONCLUSÃO

Em suma o agente de procura esta destinado a criar estratégias, para solução de um determinado problema passando por diversos caminho, que lhe leve a solucionar parcialmente ou completamente o problema proposto, superando obstáculos, de profundidades, longitude, limites, aplicando os diversos métodos de procura e princípios heurísticos.

Page 25: Trabalho de Inteligecia Artificial Agentes de Procura

BIBLIOGRAFIA

Obtida a partir do manual de Inteligência Artificial.

Autores: Ernesto da Costa e Anabela Simões.

2ª Edição

Páginas 71 - 111