1 motivação técnicas clássicas e otimizações transformação do espaço de busca pathfinding...

46
1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

Upload: internet

Post on 22-Apr-2015

105 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

1

Motivação Técnicas clássicas e otimizações

Transformação do espaço de busca

Pathfinding

Geber Ramalho

Page 2: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

2

Pathfinding

Definição

Obtenção de um melhor caminho de um ponto

inicial para um objetivo de acordo com um ou

mais critérios Ex.: tempo, distância, periculosidade dos inimigos,

velocidade, ocupação do mapa, etc. diferente steering behaviors...

É um dos poucos consensos em termos de AI

Engine

Page 3: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

Pathfinding: motivações

Aplicável para o cálculo de rotas Cidadão comum: GPS, Google maps, etc.

Meio empresarial: Problemas de logística

Meio militar: Problemas táticos

Jogos digitais Deslocamento dos NPCs

Análise de terreno e situação

Um dos poucos consensos em termos de AI Engine

3

Page 4: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

4

Pathfinding: jogos

Ainda não é um problema resolvido Dave Pottinger: “AOE2 gasta 60-70% do tempo de

simulação fazendo pathfinding”

Dificuldades Evitar obstáculos, sobretudo os largos e côncavos Levar em conta os pesos (tipos de terreno) Diferentes critérios (mais curto, mais seguro, etc.) Memória e tempo de processamento em função de

tamanho do terreno número de unidades número de jogadores

Page 5: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

5

Pathfinding: Exemplo

Napoléon en Russie - V. Corruble (LIP6) Caminho mais curto

início

objetivo

Page 6: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

6

Pathfinding: Exemplo

Napoléon en Russie - V. Corruble (LIP6) caminho menos visível

Page 7: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

7

Pathfinding: Exemplo

Napoléon en Russie - V. Corruble (LIP6) caminho mais seguro

Page 8: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

8

Path-Finding - Estratégias

Reativas (online: executa enquanto procura) Campos potenciais Aleatórias Traçado simples e robusto

Busca/planejamento (offline: busca e depois excuta) Não Informadas (busca cega) Informadas (busca heurística)

Page 9: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

9

Campos potenciais

Usa o princípio de campo gravitacional para determinar a direção do movimento Alvo tem campo gravitacional atrativo Obstáculos têm campo gravitacional repulsivo

Duas abordagens para Soma vetorial (Attractor-repulsor)

online Potential fields ou método gradiente

Pré-calculado e marcado no terreno

Page 10: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

10

Attractor-repulsor

Soma vetorial Vetor do alvo: linha do alvo até o ponto em

questão Vetores dos campos dos obstáculos: a partir dos

centros geométricos

Cálculo da direção e movimento Intensidades dos campos são inversamente

proporcionais às distâncias entre as entidades e o ponto em questão

Direção resultante em um ponto é a soma vetorial dos campos atrativo e repulsivo

Esta direção resultante é calculada a cada ciclo de tempo T segundos

A entidade se move na direção calculada por T segundos

Page 11: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

11

t0=0

t1=Tt2=2T

t3=3T

t4=4Tt5=5T

Obstáculo

Alvo

Cálculo da resultante

Attractor-repulsor

Obs Caro, pois calcula tudo na hora, mas

adaptativo Pode ficar preso em mínimos locais

Page 12: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

12

Potential Fields

Método discreto Cada tile do terreno tem um valor de

potencial determinado pela influencia de destino = potencial baixo obstáculo e ponto de partida =

potencial alto O elemento “escorrega” para o

potencial mais baixo Obs

Barato, pois pré-calcula tudo, mas ruim se obstáculos se movimentam (recalcular)

Pode ficar preso em mínimos locais Combinar informação local e global

via propagação

Page 13: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

13

Path-Finding reativo (online)

Idéia se movimentar em direção ao objetivo e pegar

outra direção quando esbarrar nos obstáculos

Tecnicas Aleatória Tracing Robust tracing

Page 14: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

14

Path-Finding reativo (online)

Direção aleatória ao esbarrar, move em direção aleatoriamente

e tenta de novo problema: obstáculos grandes e côncavos

Page 15: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

15

Path-Finding reativo (online)

Simple Tracing ao esbarrar, segue, em uma direção fixa,

“tateando” o obstáculo até contorná-lo Problema: quando parar de tatear?

Quando mudar de direção, testa se pode andar na direção do alvo sem voltar por onde já passou

Nem sempre funciona...

Tateando sempre à direita

Page 16: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

16

Path-Finding reativo (online)

Robust tracing Uma vez começado a tatear, se o ponto inicial de

bloqueio está entre o objetivo e o agente, ao cruzar com a semi-reta traçada entre a posição original e o objetivo, não para de tatear

Caso volte à posição original, aborta problema: pode tomar muito tempo fazendo tracing

Page 17: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

17

Path-Findingonline

Solução Usar simple trace de cara Quando um loop é detectado, mudar para

Robust tracing

Infelizmente, há situações onde é preciso uma busca

inteligente em particular para tratar “pesos de regiões”

(estradas, rios, florestas, campos,...)

Page 18: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

18

Path-FindingBuscas Não-Informadas (offline)

Estratégias: Busca em largura (Breadth-first search) Busca em profundidade (Depth-first search) Busca em profundidade limitada Busca de custo uniforme (Dijkstra’s search) Busca em profundidade iterativa

Direção Início para meta Meta para início Bidirecional

Page 19: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

19

Path-FindingBuscas Informadas (offline)

Estratégias: A* Combina a busca de custo uniforme (Dijkstra) com

best-first f(x) = g(x) + h(x), onde g = o que custou até agora h = função heurística (o que provavelmente ainda

vai custar) Heurística determina eficiência: quanto mais

próximo do real, embora sempre otimista, melhor Completo, ótimo e correto Listas Closed (já visitados) e Open (a visitar -

fronteira)

Page 20: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

Melhor Primeiro: Busca Gulosa

Page 21: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

Melhor Primeiro: Busca A*

Page 22: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

22

Adaptações de A*

Mesmo sendo a melhor técnica, A* ainda tem limitações devido aos Requisitos de tempo real Limitações de memória disponível Ineficiência dos algoritmos de manipulação das

listas Open e Close Qualidade da função h(n)

Page 23: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

23

Adaptações de A*

Alternativas para melhorias Ajustes para melhorar desempenho/memória

(visto em SI) Iterative Deepening A* Beam Search – Simplified Memory A* Alterações na função h(x) Algoritmo de Floyd-Warshall

Estruturas de dados Representação do campo do jogo Dados do estado da busca Melhorias na manipulação das listas

Transformação do espaço de busca

Page 24: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

24

Estrutura de dadosRepresentação do mapa do jogo

Representação das áreas acessíveis de cada ponto e dos esforços para a movimentação Diretamente no mapa, em uma estrutura separada, ou calculadas quando necessário

Representação das características na área Diretamente no mapa, ou em uma estrutura separada

Page 25: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

25

Estrutura de dados Dados do Estado da Busca

Pode-se incluir no nós, além da estrutura de busca básica,... Coordenadas da posição do mapa Atributos relevantes da entidade, como orientação

e velocidade Custo estimado até o objetivo (ou até o objetivo

mais próximo) Referências adicionais para outros nós

próximo elemento, elemento anterior ,“esquerda”, “direita”, ...

Page 26: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

26

Melhorias Estéticas

Obter trajetórias mais macias... Ver demo de Marco Pinter

Page 27: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

27

Transformação do espaço de busca

Page 28: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

28

Transformação do espaço de busca

Idéia básica: Busca realizada com “menos estados” para reduzir

a complexidade da busca inicial

Técnicas Hierarquização e agregação de células (ambiente

discreto) Discretização de ambientes contínuos

Page 29: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

29

Hierarquização e Agregação

Idéia decompor busca inicial em sub-buscas mais

simples => agrupar células (quadradinhos) em áreas

maiores e fazer a busca hierarquicamente do maior para os menores

Divisão do mapa Mapa deve ser dividido em grandes áreas

contíguas cujas conectividades são conhecidas Um ou dois “quadradinhos” (células) da borda

entre cada par de áreas adjacentes são escolhidos

Page 30: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

30

Hierarquização e Agregação

Uma sucessão de buscas irá ser realizada A primeira busca irá ser realizada em cima deste

novo “espaço com menos quadradinhos” As buscas sucessivas, em espaços transformados

com mais “quadradinhos”, evitam iterações desnecessárias determinadas pelas buscas anteriores

Page 31: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

31

Hierarquização e Agregação

Exemplo: determinar a melhor rota terrestre entre Madri e Atenas utilizando o mapa da Europa Cada país pode ser considerado uma área Pontos nas bordas (fronteiras) dos países são

definidos para a primeira busca Melhor rota na primeira iteração: Espanha - França

- Itália - Iugoslávia - Grécia A primeira iteração evita que a bota

correspondente à Itália seja incluída nos próximos passos da sequência hierárquica de buscas

Page 32: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

32

Hierarquização e Agregação

Page 33: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

33

Discretização de Espaço Contínuo

E se o jogo for em um espaço contínuo (não baseado em tiles)?

2 abordagens vindas do planejamento de movimento de robôs Cell decomposition Skeletomization

Page 34: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

34

Discretização de Espaço Contínuo

Cell decomposition discretização em células menores (idênticas ou

não) e fixação de spots (pontos no “centro” das células) que serão ligados formando um grafo de caminhamento

exemplos: tiles, tiras, células cilíndricas, quadtrees,...

Page 35: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

35

Discretização de Espaço Contínuo

Tiles Dividir o espaço em “ladrilhos” de resolução pré-

definida Ladrilhos inseridos total ou parcialmente em

obstáculos são marcados como bloqueados Permite movimento sem risco de colisão Problema: difícil ajustar a granularidade

Page 36: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

36

Discretização de Espaço Contínuo

Tiles (ladrilhos)

Page 37: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

37

Discretização de Espaço Contínuo

Quadtrees O espaço é dividido em quadrados (tiles) Cada quadrado que não é suficientemente

homogêneo é recursivamente dividido em quatro quadrados

Os centros dos quadrados homogêneos que não estão em obstáculos são usados pela busca (spots)

Regiões das bordas dos obstáculos são consideradas bloqueadas

Page 38: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

38

Discretização de Espaço Contínuo

Quadtrees

Subdivisão do espaço

Grafo (azul)

Page 39: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

39

Discretização de Espaço Contínuo

Tiras verticais ou horizontais a dimensão em um dos eixos (x ou y) se expande

até “esbarrar” em um obstáculo problema: sobram espaços que, no entanto, não

podem ser usados para manobras

Page 40: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

40

Discretização de Espaço Contínuo

Skeletomization superposição de um grafo de caminhamento

diretamente em função dos obstáculos As buscas consideram apenas os caminhos do

grafo exemplos: manual (waypoints), grafo de

visibilidade, polígonos convexos, diagrama de Voronoi, ...

Page 41: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

41

Discretização de Espaço Contínuo

Pontos de visibilidade São os pontos críticos (quinas dos obstáculos) mas

com uma folga para evitar colisões Os caminhos possíveis (conexões) definidos entre

os pontos críticos visíveis entre si ou seja... não deve existir obstáculos entre estes

pontos

Page 42: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

42

Discretização de Espaço Contínuo

Pontos de Visibilidade

Grafo (azul)

Page 43: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

43

Discretização de Espaço Contínuo

Polígonos convexos Passo inicial

Quebrar o espaço (sem obstáculos) em polígonos convexos

A partir daí define os spots segundo 2 técnicas C-Cells: cada vértice é conectado ao ao vértice

mais próximo subdividindo o espaço em polígonos cujos centroides serão os spots

Maximum-area decomposition: similar mas os spots estão no meio das arestas que ligam os vértices

Page 44: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

44

Discretização de Espaço Contínuo

Polígonos Convexos

Subdivisão do espaço

Grafo (azul) segundo “Maximum-area decomposition”

Page 45: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

45

Colaboração

Eduardo Calabria ([email protected]) Eduardo Laureano ([email protected]) Charles Madeira ([email protected])

Page 46: 1 Motivação Técnicas clássicas e otimizações Transformação do espaço de busca Pathfinding Geber Ramalho

46

Bibliografia & Links

Russel & Norvig: AIMA (cap 4, 5 e 25)

Bryan Stout, Smart Moves: Intelligent Path-Finding http://www.gamasutra.com/features/programming/080197/pathfinding.htm demo: ftp://ftp.gdmag.com/pub/src/oct96.zip

Game AI: The State of Industry http://www.gamasutra.com/features/20001101/woodcock_pfv.htm

Stefan Baert, Motion Planning Using Potential Fields http://www.gamedev.net/reference/articles/article1125.asp

Amit Patel, Amit´s Thoughts on Pathfinding http://theory.stanford.edu/~amit/GameProgramming/index.html

Marco Pinter, Toward More Realistic Pathfinding http://www.gamasutra.com/features/200103014/pinter_01.htm

Paul Tozour, Influence Mapping, in (ed) Mark Deloura, Game Programming Gems II.