Apresentação - IA - Matemática Discreta

9
"Inteligência é julgar bem, compreender bem, raciocinar bem" (Alfred Binet - P edagogo e psicólogo francês que ficou conhecido por sua contribuição no campo da psicometria, sendo considerado o inventor do primeiro teste de inteligência, a base dos atuais testes de QI.) "A história da ascensão da Máquina e do declínio do Homem, que paradoxalmente coincide com a descoberta da roda... é um alerta de que o seu breve domínio desse planeta provavelmente terminará, porque o Homem tentou criar o Robô à sua própria imagem." (Alan Parsons - I Robot - 1977) O que é? Inteligência Artificial (I.A.) é uma área de pesquisa da ciência da computação dedicada a buscar métodos ou dispositivos computacionais que possuam ou simulem a capacidade racional de resolver problemas, pensar ou, de forma ampla, ser inteligente. Podemos identificar diferenças entre a sua aplicação na pesquisa e na indústria de games. A I.A. para jogos tem por objetivo criar a ilusão, realidade e desafio para o jogador. Devemos sempre ter em mente que uma I.A. “perfeita” não é real. Lembre-se: “Jogadores não estão interessados em saber se o jogo utiliza uma rede neural, uma máquina de inferência ou uma máquina de estados finitos. Estão interessados em como o jogo aparenta ser inteligente.” 1 - Pontos de Atuação de um Algoritmo de IA Os algoritmos de Inteligência Artificial em Jogos Digitais podem ser divididos em três grandes blocos, também relacionados com a respectiva área de atuação. Movimento Como movimentar uma personagem, desde o local onde se encontra até ao local onde deverá desenrolar a sua atividade (seja atacar o adversário, acender uma luz, dar o alarme, atender um cliente, etc.). Implica o cálculo do percurso, detectando salas e portas, e evitando obstáculos. Tomada de Decisão Cada personagem tem habitualmente um conjunto de estados ou atividades possíveis, seja manter-se parado, atacar o adversário, fugir, patrulhar a área, comer um quadro, etc. Para que a tomada de decisão seja possível a personagem deverá analisar o contexto, e se o assim entender, escolher determinado processo. Este processo escolhido pode ser simplesmente alterar a animação atual, ativar um algoritmo de

description

inteligencia artificial

Transcript of Apresentação - IA - Matemática Discreta

"Inteligncia julgar bem, compreender bem, raciocinar bem"(Alfred Binet - Pedagogo e psiclogo francs que ficou conhecido por sua contribuio no campo da psicometria, sendo considerado o inventor do primeiro teste de inteligncia, a base dos atuais testes de QI.)

"A histria da ascenso da Mquina e do declnio do Homem,queparadoxalmente coincide com a descoberta da roda... umalertade que o seu breve domnio desse planeta provavelmenteterminar,porque o Homem tentou criar o Rob sua prpria imagem."(Alan Parsons - I Robot - 1977)

O que ?Inteligncia Artificial (I.A.) uma rea de pesquisa da cincia da computao dedicada a buscar mtodos ou dispositivos computacionais que possuam ou simulem a capacidade racional de resolver problemas, pensar ou, de forma ampla, ser inteligente.Podemos identificar diferenas entre asua aplicao na pesquisa e na indstria de games. A I.A. para jogos tem por objetivo criar a iluso, realidade e desafio para o jogador. Devemos sempre ter em mente que uma I.A. perfeita no real. Lembre-se:Jogadores no esto interessados em saber se o jogo utiliza uma rede neural, uma mquina de inferncia ou uma mquina de estados finitos. Esto interessados em como o jogo aparenta ser inteligente.

1 - Pontos de Atuao de um Algoritmo de IAOs algoritmos de Inteligncia Artificial em Jogos Digitais podem ser divididos em trs grandes blocos, tambm relacionados com a respectiva rea de atuao.

MovimentoComo movimentar uma personagem, desde o local onde se encontra at ao local onde dever desenrolar a sua atividade (seja atacar o adversrio, acender uma luz, dar o alarme, atender um cliente, etc.). Implica o clculo do percurso, detectando salas e portas, e evitando obstculos.

Tomada de DecisoCada personagem tem habitualmente um conjunto de estados ou atividades possveis, seja manter-se parado, atacar o adversrio, fugir, patrulhar a rea, comer um quadro, etc. Para que a tomada de deciso seja possvel a personagem dever analisar o contexto, e se o assim entender, escolher determinado processo. Este processo escolhido pode ser simplesmente alterar a animao atual, ativar um algoritmo de movimento, ou alterar um estado interno (por exemplo, num jogo tipo Civilization, alterar o estado de conquista de determinado pas).

EstratgiaEmbora muitos jogos sejam desenvolvidos apenas com os dois tipos de IA referidos anteriormente, cada vez mais surgem jogos em que os personagens trabalham em grupo ou equipe. Nestes casos existe um algoritmo principal que dever controlar todas as personagens. No entanto, cada personagem ter (opcionalmente) a sua prpria tomada de deciso, podendo ou no seguir as sugestes do grupo.

1.2 - Tipos de IA em Jogos

Por vezes a implementao de um algoritmo de IA demasiado complicada, ou gasta demasiados recursos. E na grande maioria das vezes, esses algoritmos mais complexos no trazem grandes vantagens jogabilidade.Podemos dividir o tipo de implementao de IA em jogos em trs grandes grupos, dois dos quais so dificilmente classificados como IA:

HacksO exemplo tpico de um hack como implementao de IA a implementao de como os fantasmas, no Pac-Man, decidem ou no seguir a sua vtima. Em vez de se decidir a seguir sempre (o que tornaria o jogo difcil se no impossvel de jogar), a cada interseco calculado um nmero aleatrio, e de acordo com esse nmero decidido se o fantasma ir, ou no, fazer o seu ataque.Este procedimento simples foi fcil de implementar nos sistemas computacionais da poca, e ainda hoje levam alguns jogadores a comentrios como Ah! Consegui engan-lo! ou mesmo Estes fantasmas fizeram uma armadilha!

HeursticasUma heurstica , tambm, uma simplificao de um algoritmo, que embora no seja implementado de forma correta, funciona na maior parte das situaes.Como exemplo de uma heurstica volte-se aos fantasmas do Pac-Man. Em vez de usarem um algoritmo complicado para o clculo do caminho mais curto para intersectar a sua vtima, calculada a menor distncia (direta, haja caminho ou no) e esse o caminho seguido.

AlgoritmosPodem ser implementados a diferentes nveis, com resultados mais ou menos precisos, tendo em considerao os recursos disponveis.

2 - Algoritmos de MovimentoOs algoritmos de movimento tm como principal objetivo, dada uma posio inicial e um destino pr calculado, determinar a rota (percurso) que dever ser seguido.A resoluo deste problema depende em muito do tipo de jogo de que estivermos a falar, e da liberdade de movimento que a personagem que se ir movimentar ter: Podemos ter movimento totalmente 2D, por exemplo, num jogo de simulao automvel, ou no velho Pac-Man; Podemos ter movimento pseudo-2D, em que embora o personagem se movimente num mundo 3D est sujeito gravidade, e portanto o seu movimento ser muito semelhante ao 2D; Finalmente, movimento completamente 3D, como na simulao aeronutica ou espacial;Inicialmente iremo-nos centrar nos dois primeiros tipos de movimento, considerando o espao D, descrito em seguida, que facilmente generalizvel para o espao bidimensional puro. Mais tarde analisaremos algoritmos de movimento em ambiente 3D.

2.1 - Espao 2 D

O espao denominado 2 D o usado na maioria dos jogos. tpico que os personagens se movimentem num ambiente 3D mas estejam sujeitas gravidade, e portanto, o seu movimento principal seja 2D (nos eixos x e z). Se a este movimento adicionarmos a possibilidade da personagem saltar, estaremos perante o espao 2 D.Para representar a posio de um personagem num mundo tridimensional, e embora a personagem tenha uma altura e largura associada, tpico usar-se uma coordenada tridimensional (x,y,z) , com y sendo o eixo vertical. Os sistemas de fsica usaro a informao de largura para simular colises, mas do ponto de vista de movimento s nos interessa ter noo da posio da personagem.Alm da posio da personagem, importante saber para onde ela est virada. tpico considerar que, por omisso, um objeto colocado num ambiente tridimensional est olhando na direo do eixo z positivo. Considerando o nosso ambiente 3D sujeito gravidade podemos defender que importante saber qual a rotao do personagem em relao ao eixo dos y (para onde est olhando, que dever ser na direo em que se desloca) mas que a inclinao do personagem em relao ao eixo dos x ou dos y irrelevante (embora se possa usar uma animao da personagem inclinada durante uma queda, ou ligeiramente inclinada para a frente durante a corrida, estes detalhes so apenas grficos, e em nada contribuem para a movimentao da personagem).A imagem abaixo representa a informao crtica para o posicionamento de uma personagem num espao 2 D: as coordenadas (x,y,z) em que se encontra, e a rotao (tipicamente em radianos) calculada a partir do eixo positivo dos z, em sentido contrrio ao dos ponteiros do relgio.

Em alguns casos iremos querer transformar a orientao da personagem representada como um ngulo, para um vetor unitrio que nos indique a direo do personagem. Para isso, e tendo em considerao a descrio do mundo 3D.

3 - Clculo de Caminhos

Para que um personagem se movimente em um jogo necessrio que se saiba para onde o personagem deve se deslocar. O clculo de caminhos responsvel por esta tarefa.Em relao ao modelo de Inteligncia Artificial definido anteriormente, o clculo de caminhos sobrepe o mdulo de movimento e de tomada de deciso: preciso saber para onde se movimentar, e preciso que se saiba quais os destinos atingveis, para que o mdulo de tomada de deciso possa decidir para onde se deslocar.Infelizmente no possvel analisar a posio dos objetos no ambiente de jogo para que se possam calcular os caminhos. necessrio descrever estes caminhos numa estrutura de dados que seja consultvel em tempo real de forma eficiente.

Grafos para CaminhosGrafo o nome usado para se referir a uma estrutura matemtica composta por dois tipos de elementos: nodos (tambm chamados de vrtices) e conexes (tambm chamados de arcos).

Chama-se grafo pesado se, a cada conexo, houver associado um peso (tambm chamado de custo), e grafo orientado se as conexes definirem uma orientao (ou seja, a ligao unidirecional). Na figura podem ver-se trs tipos distintos de grafos.No contexto de jogos, os grafos vo representar ligaes entre salas, ou zonas de uma sala ou de um corredor. Os pesos correspondem ao custo de um personagem se deslocar entre salas (quanto tempo demora, por exemplo). A orientao, corresponde possibilidade, ou no, de o personagem se deslocar naquela direo (por exemplo, possvel saltar de um telhado, mas no possvel levantar voo para esse mesmo telhado; os prprios custos podem ser diferentes: demora mais tempo subir uma rampa do que desc-la).

4 - Tomada de Deciso

Quando falamos em inteligncia artificial em jogos a um jogador ele ir pensar imediatamente em algoritmos de tomada de deciso, que permitam a um personagem decidir o que fazer. Executar essa ao (um movimento, uma animao, etc.) tido como garantido.Na verdade, a tomada de deciso uma parte muito pequena de todo o esforo de construir um bom mdulo de inteligncia artificial para um jogo. Grande parte dos jogos usam sistemas de tomada de deciso simples, como rvores de deciso. Os sistemas baseados em regras so raros, mas importantes.Tcnicas vindas da inteligncia artificial, como a lgica fuzzy ou as redes neuronais, tm ganho algum interesse por parte de programadores de jogos, mas ainda no adotada totalmente porque pode ser complicado funcionar devidamente.A tomada de deciso o componente que se articula com o movimento, implementado em cada personagem, e que permite que ele tome decises.Todos os algoritmos de tomada de deciso podem ser vistos funcionando do mesmo modo. O personagem processa um conjunto de informao e usa-a para gerar uma ao que quer desenvolver. Os dados para o sistema de tomada de deciso o conhecimento que o personagem possui, e o resultado um pedido de ao. O conhecimento pode ainda ser dividido em conhecimento interno ou conhecimento externo. Este ltimo a informao que o personagem tem sobre o ambiente sua volta: a posio de outros objetos, o mapa, se determinado boto foi apertado, a direo de que surge um som, etc. O conhecimento interno informao sobre o estado interno do personagem, ou os seus processos de pensamento: a sua sade, o seu objetivo principal, o que andou fazendo uns segundos atrs, etc.

rvores de DecisoAs rvores de deciso implementam um conceito usado mesmo antes dos computadores, conhecidas por tabelas dicotmicas: um conjunto de perguntas encadeadas, em que respondendo apenas sim/no se obtm determinada classificao.So fceis de implementar, e simples de compreender. So a tcnica de tomada de deciso mais simples.

rvores de deciso no AlgoritmoUma rvore de deciso constituda por um conjunto de pontos de deciso interligados. A rvore tem uma deciso inicial (na raiz da rvore) e, para cada deciso, existe um novo conjunto de opes que podem ser escolhidas.Cada escolha realizada com base no conhecimento do personagem. Uma vez que as rvores de deciso so habitualmente usadas como mecanismos rpidos e simples, os personagens costumam aceder diretamente ao estado global do jogo, em vez de aceder apenas representao do seu prprio conhecimento.A rvore contm folhas que so aes a fazer (ou folhas nulas, que indicam que nenhuma ao dever ser feita), e os seus nodos internos so pontos de deciso, que com base num conjunto de valores tomam uma deciso de qual caminho seguir.A maior parte das rvores de deciso implementadas so binrias (em cada nodo de deciso s possvel verificar se determinada condio seja verdadeira ou falsa). A figura apresenta a mesma rvore, representando do lado direito um caminho at determinada ao.

4.4 Sistemas de MarkovPor vezes o estado (ou parte do estado) do nosso jogo pode ser representado como um conjunto de valores. Por exemplo, podemos ter um conjunto de valores de prioridade, que representam qual equipa de ataque deve realizar primeiro o seu ataque, ou ento termos um conjunto de valores que nos indicam para cada uma das posies em que determinado personagem pode disparar em modo sniper a sua segurana.4.4.1 Processos de Markov O vector de estado no mais que um vector unidimensional em que cada posio armazena o estado ou valor de determinada situao (por exemplo, a segurana de cada uma das vrias posies que o sniper pode usar).No existem restries no contedo do vector. Os valores devem fazer sentido para a aplicao que os usa, mas parte desses quaisquer valores servem. Em matemtica os Processos de Markov so quase sempre preocupados com a distribuio de variveis, e portanto muita da literatura assume que os valores do vector de estado somam 1.Os valores do vector de estado mudam de acordo com uma matriz de transio. As matrizes de transio so sempre quadradas, e os elementos nas posies representam a proporo do elemento no estado anterior que adicionado ao elemento no novo estado. Assim, uma iterao de um processo de Markov no mais que a multiplicao do vector estado pela matriz de transio. habitualmente assumido que a mesma matriz de transio ser aplicada ao longo do tempo ao vector estado. Este processo iterativo forma uma cadeia de Markov.Considerando de novo o exemplo do sniper, suponhamos que temos um vector de estado que representa a segurana de um disparo em quatro posies diferentes, com soma 4.0:

Se o personagem disparar da primeira posio, ir alertar o inimigo da sua existncia. Assim, a segurana dessa posio ir diminuir. Enquanto o inimigo se preocupa com essa posio, as outras posies ficaro ligeiramente mais seguras. Seria possvel usar a seguinte matriz de transio:

Aplicando-a ao vector estado, obtemos novos valores de segurana:

Repare que a soma deste novo vetor 3.4. Isto pode significar que a segurana do nosso personagem se tornou mais frgil.Passado algum tempo, nenhuma posio ser segura. Embora isto possa ser realista, num jogo podemos querer que os valores de segurana subam ao longo do tempo se nenhum disparo for dado. Para isso podemos usar uma matriz, que seria multiplicada todos os minutos que passam sem fogo.