Baixe o app para aproveitar ainda mais
Prévia do material em texto
SE ESSE ARQUIVO TE AJUDOU, DEIXE UM QUE ME AJUDA MUITO!!!! (Comentar também ajuda! não precisa escrever textão, pode comentar só com um “valeu” mesmo que já ajuda!. O meu passeidireto.com só é de graça se várias pessoas derem like nos meus materiais) - - - Apresentação Inteligência Artificial Aplicada Aula 1: Introdução O objetivo dessa aula é abordar os conceitos de Inteligência Artificial (IA), mostrando por que ela é estudada, quais são as diferenças entre a IA fraca e a forte, o que são agentes, quais são seus tipos e o que é um ambiente. Além disso, essa aula visa explicar a IA direcionada para jogos e mostrar de maneira genérica as três técnicas básicas usadas em agentes: as técnicas de movimentação, as técnicas de tomada de decisão para onde se mover e as técnicas de pensar de forma estratégica e tática. Por fim, serão abordadas as diferenças e o que é incorporado entre a IA acadêmica e a IA em jogos. Aula 2: Técnicas de Movimentação – Parte 1 O objetivo dessa aula é abordar os conceitos de técnicas para movimentação de agentes em jogos digitais e desenvolver alguns de seus algoritmos. As técnicas abordadas nessa aula serão: Movimentação básica: a respeito dessa técnica, serão abordados os conceitos e o desenvolvimento dos algoritmos das movimentações Seguir (Seek) e Fugir (Flee); Steering Behaviors (Boids): a respeito dessa técnica, serão abordados os conceitos e o desenvolvimento dos algoritmos de Seguir (Seek), Fugir (Flee), Aproximar-se (Arrive), Vagar (Wander), Perseguir (Porsuit), Evadir-se (Evade), Desviar-se de Objetos (Obstacle Avoidance), Seguir um Líder (Leader Following). O que difere a movimentação básica dos Steering Behaviors (Boids) é exatamente a forma com que os cálculos de movimentação são realizados. Nos algoritmos de Steering Behaviors, a movimentação é bem mais fluida. Aula 3: Técnicas de Movimentação – Parte 2 O objetivo dessa aula é abordar os conceitos de técnicas para movimentação de agentes em jogos digitais e desenvolver alguns de seus algoritmos. A técnica abordada nessa aula será: Pathfinding: a respeito dessa técnica, será abordado o algoritmo A*, cujo objetivo é encontrar o melhor caminho entre dois pontos A e B. Para que o entendimento desse algoritmo seja mais fácil, é importante que o conceito e o estudo dos grafos sejam revisados. Aula 4: Técnicas de Movimentação – Parte 3 O objetivo dessa aula é abordar os conceitos de técnicas para movimentação de agentes em jogos digitais e desenvolver alguns de seus algoritmos. A técnica abordada nessa aula será: Flocking: a respeito dessa técnica, será abordado o algoritmo de Flocking e como ele é utilizado para controlar o comportamento da movimentação de um grupo de agentes nos jogos. Aula 5: Técnicas de Tomada de Decisão – Parte 1 O objetivo dessa aula é abordar e aplicar os conceitos do algoritmo de máquina de estados, presente na técnica de tomada de decisão. A máquina de estados é considerada um modelo básico de Inteligência Artificial e muito utilizada nos jogos. Ela consiste em um conjunto de estados conectados em um grafo por suas arestas. Um agente, em um jogo com um estado inicial e de acordo com eventos que vão acorrendo no jogo, vai verificando as condições e mudando de estado. Aula 6: Técnicas de Tomada de Decisão – Parte 2 O objetivo dessa aula é estudar e aplicar os conceitos dos algoritmos de árvores de decisão e árvores de comportamento, presentes na técnica de tomada de decisão. A árvore de decisão é uma das técnicas de tomada de decisão mais simples de ser implementada. Ela é muito utilizada para controlar a lógica de tomada de decisão, como também para controlar a troca de sprites ou modelos 3D em uma animação do agente. A árvore de comportamento é um padrão utilizado para representar e controlar a lógica da tomada de decisão dos agentes inteligentes em jogos. Tornou-se muito conhecida quando foi aplicada em jogos AAA, como HALO. Aula 7: Técnicas de Tomada de Decisão – Parte 3 O objetivo dessa aula é estudar e aplicar os conceitos do algoritmo de Lógica Fuzzy, presente na técnica de tomada de decisão. Na maioria das técnicas de tomada de decisão, uma condição é observada e uma ação é realizada a partir de um valor verdadeiro ou falso. Já na Lógica Fuzzy, o resultado é uma aproximação de valores, e não valor binário verdadeiro ou falso. Aula 8: Técnicas Avançadas – Aprendizado O objetivo dessa aula é estudar e aplicar alguns algoritmos de aprendizado de máquina e redes neurais. Aprendizado é a forma de o agente adaptar o seu comportamento a cada jogador, aprendendo seus truques e técnicas e, assim, fornecendo um maior desafio. É uma maneira de criar agentes com comportamentos e tomadas de decisões cada vez mais realistas, agentes que aprendem sobre o ambiente em que estão inseridos e usam isso a seu favor. - - - - AULA 01 Introdução APRESENTAÇÃO A Inteligência Artificial (IA) está relacionada a utilizar métodos baseados no comportamento inteligente de humanos e outros animais para solucionar problemas complexos. A IA nos jogos não é novidade; suas primeiras aplicações ocorreram em jogos de tabuleiro, como damas, xadrez e jogo da velha. No entanto, hoje em dia praticamente em todos os jogos desenvolvidos há alguma técnica de IA. A IA se tornou uma parte essencial dos jogos de computador. À medida que os jogos se tornam mais complexos e os consumidores exigem personagens e oponentes controlados por computador cada vez mais sofisticados, os programadores têm de colocar maior ênfase no desenvolvimento da IA de seus jogos. No jogo, a IA é aplicada nos agentes. Um agente é uma entidade (objeto de jogo) que possui algoritmos de IA para modelar sua movimentação, ou sua tomada de decisão, ou seu aprendizado em um jogo; com isso, ele deixa suas ações menos aleatórias e mais inteligentes. Essa entidade (objeto de jogo) pode ser um personagem, uma criatura, um veículo ou qualquer outra coisa. Ela é autônoma e executa as técnicas e os algoritmos que aprenderemos com esta disciplina. Os algoritmos de IA para jogos que abordaremos nesta disciplina podem ser separados em uma estrutura-modelo para AI. Essa estrutura classifica os métodos e algoritmos que aprenderemos em: Técnicas de Movimentação; Técnicas de Tomada de Decisão; e Técnicas de Aprendizagem e Redes Neurais. Técnicas de Movimentação: nelas estão os métodos e algoritmos que realizarão a movimentação do agente no ambiente em que ele estiver. Movimentações como: Seguir Determinada Entidade (i.e., qualquer objeto) do jogo; Fugir; Perseguir; Aproximar-se; Vagar pelo Ambiente; Seguir um líder; e Desviar-se de Objetos. A maioria desses algoritmos segue o conceito da técnica de Comportamentos Direcionais (Steering Behaviors), criado por Craig Reynolds na década de 1990; Técnicas de Tomada de Decisão: nelas estão os métodos e algoritmos que ajudarão o agente a tomar alguma decisão em relação a certa ação em determinado jogo, a saber: Algoritmos como Máquina de Estados, que, por meio de um grafo e de condições predeterminadas, fazem o agente realizar suas ações dependendo das condições pré- estabelecidas; Árvores de Decisão, que, por uma estrutura de árvore e condições pré-estabelecidas, alteram as ações dos agentes; Árvores de Comportamento, que trabalham com tarefas e comportamentos para modelar as ações dos agentes; Por fim (e não menos importante) a Lógica Fuzzy, que diferente das outras técnicas de tomada de decisão pois não trabalha com uma condição binária verdadeiro ou falso, e sim com um valor intervalado para realizar e alterar as ações dos agentes; Técnicas Avançadas (Aprendizagem e Redes Neurais): nelas estão os métodos e algoritmos que farão os agentes começarem a aprender com suas próprias ações e começarem a realizar uma tomada de decisão mais inteligente. Esses algoritmos fazem os agentes se adaptarem a cada jogador e forneceremuma maior interação e desafio. É um meio de criar agentes com comportamentos e tomadas de decisões cada vez mais realistas. Entendendo o funcionamento das técnicas e seus algoritmos, é importante compreender como o ambiente é disposto para os agentes. A IA classifica vários tipos de ambientes, entre eles: totalmente observável, parcialmente observável, estático, dinâmico, determinístico e não determinístico. Com essa crescente complexidade envolvida na implementação dos jogos e os consumidores cada vez mais exigentes, a elaboração de algoritmos para o desenvolvimento de comportamentos direcionais e a busca por melhor caminho para agentes em jogos digitais podem ser muito interessantes e desafiadoras. Questão 1 Segundo a Inteligência Artificial, um agente é: ************************************************************ (_CORRETA_) => a) Todo aquele que consegue interagir com o ambiente à sua volta a partir de sensores e atuadores. (_EXPLICACAO_) => O agente precisa perceber seu ambiente por meio de sensores e atuar no ambiente a partir da sua percepção, com seus atuadores. b) Todo aquele que não consegue perceber o ambiente à sua volta a partir de sensores. c) Todo aquele que não consegue agir no ambiente à sua volta a partir de atuadores. d) Algo que não possui relevância na Inteligência Artificial. e) Todo aquele que não possui nenhuma ação. . . . . . . .Questão 2 A partir da definição: “O agente pode perceber todo o estado do ambiente, ou seja, tomar a melhor decisão em qualquer ponto do ambiente”, qual ambiente está relacionado a esse conceito? ************************************************************ a) Parcialmente observável. b) Estático. c) Discreto. (_CORRETA_) => d) Completamente observável. (_EXPLICACAO_) => No ambiente completamente observável, o agente pode perceber todo o estado do ambiente e, assim, tomar a melhor decisão para determinada ação. e) Benigno. . . . . . . .Questão 3 Os algoritmos estudados nas técnicas de tomada de decisão são: ************************************************************ (_CORRETA_) => a) Máquina de Estados Finitos; Árvores de Decisão; Árvores de Comportamento; Lógica Fuzzy. (_EXPLICACAO_) => Os algoritmos de decisão são os mais complexos, como Máquina de Estados Finitos, Árvores de Decisão, Árvores de Comportamento e Lógica Fuzzy. Esses algoritmos precisam mapear as decisões que os agentes tomarão durante o jogo e executá-las seguindo regras predefinidas. b) Máquina de Estados Finitos; Fugir; Perseguir, Árvores de Comportamento. c) Árvores de Decisão, Aproximar-se; Vagar pelo Ambiente; Lógica Fuzzy. d) Árvores de Decisão; Árvores de Comportamento; Lógica Fuzzy; Fugir. e) Perseguir; Fugir; Desviar-se de Obstáculos; Vagar pelo Ambiente. . . . . . . .Questão 4 O Ambiente é _______________ se as ações do agente geram situações aleatórias no ambiente, ou seja, não se pode determinar com a máxima certeza se determinada ação irá gerar o efeito desejado no ambiente. ************************************************************ a) Estático. b) Parcialmente observável. c) Discreto. d) Completamente observável. (_CORRETA_) => e) Estocástico. (_EXPLICACAO_) => O ambiente é estocástico se as ações do agente geram situações aleatórias no ambiente, ou seja, não se pode determinar com a máxima certeza se determinada ação irá gerar o efeito desejado no ambiente. . . . . . . . AULA 02 Técnicas de Movimentação – Parte 1 APRESENTAÇÃO Uma das principais técnicas de um agente, a movimentação é, na verdade, fundamental para que alguns agentes alcancem seus objetivos. Os algoritmos de movimentação podem classificar-se em três, a saber: Tomada de decisão; A ação de movimentação; Desvio de obstáculos. Os algoritmos básicos de movimentação estão relacionados ao decremento das distâncias no plano cartesiano entre as coordenadas do agente e seu alvo. Os tipos de movimentações criadas com esses algoritmos são: fazer um agente seguir um alvo; fugir de outro agente; seguir com alguma linha de visão, entre outros. No entanto, seus cálculos de movimentação não são tão eficientes nem deixam a movimentação fluída. Já as técnicas de movimentações de comportamentos direcionais (Steering Behaviors), criadas por Craig Reynolds na década de 1980, adotam uma ideia mais elaborada para calcular as movimentações, criada com base na observação dos comportamentos dos pássaros. Essas técnicas podem ser usadas para refinar o caminho gerado pelos algoritmos de busca por melhor caminho, visto que alguns algoritmos de Steering Behaviors podem ser usados para seguir a rota de waypoints gerados por esses algoritmos. No entanto, os Steering Behaviors também podem ser adotados para comportamentos mais reativos, como fugir ou perseguir um inimigo nas proximidades, evitar colisão com paredes, bem como controlar a movimentação de grupo de indivíduos. Esses movimentos podem ser definidos em três etapas, bem parecidas com as dos algoritmos de movimentação básica, a saber: Seleção da ação: é a parte em que o agente escolhe o objetivo e qual plano seguir; Direcionamento: é a parte responsável por calcular a direção que o agente deverá seguir; Locomoção: é a parte responsável por definir os mecanismos de locomoção do agente (BUCKLAND, 2005). Os Steering Behaviors utilizam o conceito de forças para determinar a direção dos agentes. Essas forças são representadas por vetores 2D ou 3D, que alteram a direção e a velocidade do agente em direção a um alvo selecionado. Como essa ilustrada na Figura 2 da Apostila, também são usados alguns conceitos de Física para controlar os comportamentos. Questão 1 Qual das alternativas a seguir possui o conceito da movimentação Seek? ************************************************************ (_CORRETA_) => a) Faz o agente mover-se em direção ao alvo. b) Faz o agente mover-se em direção contrária ao alvo. c) Faz o agente movimentar-se aleatoriamente no ambiente. d) Faz o agente seguir um caminho predefinido no ambiente. e) Faz o agente desviar-se de obstáculos. . . . . . . .Questão 2 A movimentação que faz o agente movimentar-se aleatoriamente no ambiente é: ************************************************************ a) Seek. b) Flee. (_CORRETA_) => c) Wander. (_EXPLICACAO_) => A movimentação Wander produz vetores direcionais randômicos, dando impressão de que o agente está movimentando-se em um caminho aleatório no ambiente. d) Evade. e) Pursuit. . . . . . . . Qual a diferença entre as movimentações Seek e Arrive? ************************************************************ a) Seek persegue um alvo; já Arrive se distancia do alvo. b) Seek e Arrive perseguem determinado alvo no ambiente; no entanto, a movimentação Seek reduz sua velocidade à medida que se aproxima do alvo. c) Seek e Arrive têm o mesmo comportamento. d) Arrive anda aleatoriamente, e Seek persegue o personagem. (_CORRETA_) => e) Seek e Arrive perseguem determinado alvo no ambiente; no entanto, a movimentação Arrive reduz sua velocidade à medida que se aproxima do alvo. (_EXPLICACAO_) => O comportamento Arrive é bem parecido com o Seek. A única diferença é que o Arrive, quando vai aproximando-se do alvo, reduz a velocidade até parar. . . . . . . .Questão 4 As movimentações que fazem o agente fugir de um alvo são: ************************************************************ (_CORRETA_) => a) Flee e Evade. (_EXPLICACAO_) => As movimentações que fazem o agente fugir de um alvo no ambiente são Flee e Evade. b) Wander e Seek. c) Flee e Arrive. d) Pursuit e Obstacle Avoidance. e) Evade e Wander. . . . . . . . AULA 03 Técnicas de Movimentação – Parte 2 APRESENTAÇÃO A técnica de Pathfinding busca o melhor caminho entre dois pontos definidos em um grafo. No entanto, antes de abordarmos o algoritmo A*, é importante que se entenda a Teoria de Grafos. O estudo de grafos, nesta aula,é de extrema importância, pois, para que a movimentação ou busca por melhor caminho seja implementada, é necessário que, por baixo delas, exista um grafo cobrindo a área do ambiente. Um grafo é composto por dois tipos diferentes de elemento: vértices (nós), que, muitas vezes, são desenhados como círculos ou pontos e servem para definir pontos no caminho das decisões; e arestas (conexões), representadas como linhas e usadas para interligar os nós. Os grafos são simplesmente representados como a combinação de um conjunto de nós interligados por várias conexões e que se localizam na extremidade de cada uma delas conexão. Dependendo da aplicação, os grafos podem ter ou não direção; nesse caso, o grafo não apresenta direção em suas conexões. Para uso dos grafos no Pathfinding, cada nó normalmente representa uma região do nível de jogo, como uma sala, uma seção do corredor, uma plataforma ou uma pequena região do espaço ao ar livre. Ligações mostram quem está conectado. Se um quarto é adjacente a um corredor, então o nó que representa o quarto terá uma conexão com o nó que representa o corredor. Dessa maneira, o nível do jogo inteiro é dividido em regiões ligadas entre si. Além do estudo da Teoria dos Grafos, é necessario entender como funcionam os grafos ponderados e os grafos ponderados direcionais. O algoritmo A* é muito importante, tanto para IA tradicional quanto para a IA para jogos. O A* (pronuncia-se “A estrela”) é um algoritmo admissível; logo, para qualquer grafo, ele encontrará um caminho ótimo entre os estados inicial e final, caso exista um caminho entre esses estados. Para utilizar o A* em jogos, dividimos o terreno de um cenário ou mapa em pequenos quadrados de igual tamanho (matriz, sendo cada quadrado uma posição na matriz) e consideramos cada quadrado como sendo um nó no grafo. A distância total a ser percorrida no Pathfinding corresponde ao número de quadrados percorridos pela unidade do ponto (estado) inicial ao final. Os nós-filho de cada nó são representados pelos quadrados adjacentes ao quadrado em questão, conforme exemplificado na Figura 1. O A* mantém duas listas: a de nós abertos e a de nós fechados. A primeira armazena todos os quadrados que precisam ser verificados, sendo que um deles será escolhido como o próximo nó-destino da entidade segundo uma estratégia de escolha; já a segunda armazena os nós que não precisam mais ser verificados no momento. No algoritmo A* é escolhido na lista aberta o nó com o menor valor de custo total estimado – valor esse que é encontrado calculando-se a seguinte função: f(x) = g(x) + h(x) Em que: f(x) é o custo estimado total; g(x) é a soma em cada interação do valor de cada conexão de saída, conhecido em Dijkstra como custo total; h(x) é a heurística usada para encontrar o caminho. Questão 1 A partir da definição: “conjunto de nós (vértices) interligados por várias conexões (arestas)”, selecione a alternativa correta: ************************************************************ a) Essa é uma definição de grafos ponderados. b) Essa é uma definição de grafos direcionais. (_CORRETA_) => c) Essa é uma definição de grafos. (_EXPLICACAO_) => Os grafos são simplesmente representados como a combinação de um conjunto de nós interligados por várias conexões. d) Essa é a definição do algoritmo A*. e) Essa é a definição de um ambiente dinâmico. . . . . . . .O que é uma heurística no problema de busca? ************************************************************ a) A soma de todos os nós de um grafo. (_CORRETA_) => b) Um valor aproximado da posição do agente até a posição do destino. (_EXPLICACAO_) => Em problema de busca, a heurística é um valor aproximado da posição do agente até a posição do destino. c) Um valor absoluto da posição do agente até a posição do destino. d) O valor atual de um nó do grafo. e) O custo total estimado. . . . . . . .Questão 3 Qual a aplicação do algoritmo A* em jogos digitais? ************************************************************ (_CORRETA_) => a) Calcular a melhor rota entre um ponto de origem e um ponto de destino no ambiente. (_EXPLICACAO_) => Nos jogos, o algoritmo A* é utilizado para calcular a melhor rota entre um ponto de origem e um ponto de destino no ambiente b) Movimentar o agente entre um caminho predefinido. c) Movimentar o agente em sentido contrário ao alvo. d) Apenas desviar o agente de obstáculos. e) Calcular rotas aleatórias para um agente. . . . . . . .Questão 4 A função f(x) = g(x) + h(x) representa a maneira de selecionar os nós na lista aberta do algoritmo A* durante a graduação do caminho. O que f(x) representa na graduação do caminho? ************************************************************ a) O último nó do caminho. b) A heurística usada para encontrar o caminho. c) A soma em cada interação do valor de cada conexão de saída. (_CORRETA_) => d) O custo total estimado. (_EXPLICACAO_) => f(x) é o custo estimado total. e) A multiplicação total de todos as arestas. . . . . . . . AULA 04 Técnicas de Movimentação – Parte 3 APRESENTAÇÃO A movimentação de agentes em grupos é muito importante para alguns tipos de jogos, principalmente nos de estratégia RPG. Os grupos podem ser formados por animais, pessoas, unidades de combate, navios, entre outros. Com o algoritmo de Flocking, todos os agentes são controlados por um único script> – não sendo, portanto, necessário criar um script para cada agente e, assim, tornar essa tarefa mais complexa. Em 1987, Craig Reynolds apresentou um algoritmo básico de flocking em um artigo intitulado Flocks, Herds and Schools – a distributed behavioral model. O algoritmo tinha como ideia principal fazer agentes (NPCs; do inglês, Non-Player Characters) se moverem de maneira coesa, como se todos tivessem um objetivo em comum, ao contrário de se terem vários agentes (NPCs) movendo-se de maneira independente e sem coordenação alguma. Para que a direção e a movimentação do grupo de agentes ocorram de maneira coesa, o algoritmo de Flocking mantém informações sobre outros agentes em um raio circular de tamanho predefinido, centrado na própria unidade. Esse raio é chamado de raio de vizinhança (neighborhood radius). O Flocking não só é utilizado em jogos, mas também é muito empregado na computação gráfica de filmes, como O Senhor dos Anéis. O algoritmo Flocking é representado por três regras: separação, alinhamento e coesão de uma unidade (grupo de agentes). • Separação: é uma força de repulsão cujo objetivo é fazer com que os agentes que estiverem se movimentando em um mesmo grupo se mantenham a uma certa distância uns dos outros, evitando colisões com seus vizinhos, conforme ilustrado na Figura 4.1. FIGURA 4.1 Exemplo de Separação Flocking. FONTE: Reynolds. • Alinhamento: mantém a direção da movimentação alinhada entre todos os agentes de um grupo, cada agente alinhando a sua direção com a do seu vizinho. Para isso, é necessário que se calcule a média dos vetores de direção de cada vizinho e depois subtraia essa média da direção atual da unidade como um todo. O resultado é a direção que a unidade (grupo de agentes) deve seguir, conforme ilustrado na Figura 4.2. FIGURA 4.2 Exemplo de Alinhamento Flocking. FONTE: Reynolds. • Coesão: para que a movimentação do grupo fique mais fluida e realista, é necessário que os agentes se dirijam ao centro de massa (posição média) de seus vizinhos, conforme ilustrado na Figura 4.3. FIGURA 4.3 Exemplo de Coesão Flocking. Questão 1 Qual a função do algoritmo Flocking na inteligência artificial para jogos digitais? ************************************************************ (_CORRETA_) => a) Movimentar um grupo de agentes pelo ambiente. (_EXPLICACAO_) => A movimentação em grupo implementada com o algoritmo Flocking elimina a necessidade da criação de um script para cada agente do grupo, tornandopossível que todos os agentes sejam controlados por um único script. b) Movimentar um único agente pelo ambiente. c) Calcular a melhor rota entre um ponto A e um ponto B, para vários agentes. d) Verificar a melhor decisão para um agente. e) Fazer o agente aprender com suas próprias ações. . . . . . . .Questão 2 Para implementar o algoritmo Flocking, é importante conhecer três importantes conceitos. Um deles tem a seguinte definição: “força que mantém a distância entre cada agente do grupo”. Que conceito é assim definido? ************************************************************ a) Coesão. b) Alinhamento. (_CORRETA_) => c) Separação. (_EXPLICACAO_) => Separação: um vetor de força que mantém a distância entre cada agente do grupo, evitando assim colisões entre os agentes. d) Movimentação. e) Tomada de Decisão. . . . . . . .Questão 3 Qual conceito de coesão é aplicado ao algoritmo de Flocking? ************************************************************ a) Força que mantém a distância entre cada agente do grupo. (_CORRETA_) => b) Força que faz o agente se dirigir ao centro de massa (posição média) de seus vizinhos. (_EXPLICACAO_) => Faz o agente se dirigir ao centro de massa (posição média) de seus vizinhos. Essa média é calculada recebendo como parâmetro o vetor da posição de seus vizinhos – obtendo, assim, o vetor resultante do centro de massa de todo o grupo e indicando a posição para a qual o agente deve se dirigir. c) Força que alinha a direção de cada agente com o seu vizinho no grupo. d) Força que direciona o agente para fora do grupo. e) Força que mantém o agente na primeira posição do grupo. . . . . . . .Questão 4 A técnica de ______________ usa um vetor de força que mantém a distância entre cada agente do grupo, evitando assim colisões entre os agentes. ************************************************************ a) Colisão. b) Coesão. (_CORRETA_) => c) Separação. (_EXPLICACAO_) => A separação usa um vetor de força que mantém a distância entre cada agente do grupo, evitando assim colisões entre os agentes. d) Alinhamento. e) Sobreposição. . . . . . . . AULA 05 Técnicas de Tomada de Decisão – Parte 1 APRESENTAÇÃO Esta aula apresentará o conceito de máquina de estados finitos. Nos jogos, as máquinas de estados são implementas para representar a tomada de decisão de um agente. Seu objetivo é dividir essa tomada de decisão em uma estrutura lógica, na qual o comportamento do agente é divido em vários estados, com transições entre eles. Para uma melhor aplicação dos conceitos de máquina de estados finitos, é importante que se tenha um prévio conhecimento de autômatos finitos e determinísticos e grafos. Assim, a tomada de decisão do agente poderá ser exposta com mais detalhes. Questão 1 As máquinas de estados finitos são formadas por: ************************************************************ a) Estados, tarefas, eventos e condições. b) Estados, transições, subtarefas e condições. c) Tarefas, transições, eventos e condições. d) Estados, transições, eventos e subtarefas. (_CORRETA_) => e) Estados, transições, eventos e condições. . . . . . . .Questão 2 Qual a definição dos estados de uma máquina de estados finitos? ************************************************************ a) A ligação entre os estados. b) Ações que ocorrem de maneira externa ao agente. c) Regras que representam a troca de estados. (_CORRETA_) => d) Comportamentos que o agente poderá assumir durante a sua execução. (_EXPLICACAO_) => Estados: são os comportamentos que o agente poderá assumir durante a sua execução. e) Regras que representam a permanência em determinado estado. . . . . . . .Questão 3 Em uma máquina de estados, as/os ______________ são as ligações entre os estados, podem ser uni ou bidirecionais e ocorrem quando determinada condição é ativada. ************************************************************ a) Estados. (_CORRETA_) => b) Transições. (_EXPLICACAO_) => Transições: são as ligações entre os estados; elas podem ser uni ou bidirecionais e ocorrem quando determinada condição é ativada. c) Eventos. d) Condições. e) Animações. . . . . . . .Questão 4 _________________ são estruturas lógicas formadas por um conjunto de estados e um conjunto de regras de transição entre os estados. ************************************************************ (_CORRETA_) => a) Máquina de estados. (_EXPLICACAO_) => Máquinas de estados são estruturas lógicas formadas por um conjunto de estados e um conjunto de regras de transição entre os estados. b) Máquina de comportamento. c) Máquina de decisão. d) Condições. e) Animações. . . . . . . . AULA 06 Técnicas de Tomada de Decisão – Parte 2 APRESENTAÇÃO Esta aula abordará os conceitos de árvores de decisão e árvores de comportamento. As árvores de decisão (decision threes) são técnicas que podem ajudar um agente a tomar determinada decisão. Dado um conjunto de estímulos, o agente precisa gerar uma ação correspondente a partir de um conjunto de possíveis ações. Já as árvores de comportamento são baseadas em tarefas (tasks). Uma tarefa para um agente pode ser simplesmente procurar um valor de determinada variável nos jogos, como também trocar suas animações. As tarefas são compostas de subárvores, que representam as ações mais complexas da tomada de decisão. Cada uma dessas ações pode ser composta por comportamentos de alto nível. É essa interoperabilidade que provê grande funcionalidade. Para uma melhor aplicação dos conceitos de árvores de decisão e árvores de comportamento, é importante que se tenha um prévio conhecimento de máquina de estados finitos e a estrutura árvore em computação. Assim, o conceito ensinado e a tomada de decisão do agente poderão ser expostos com mais detalhes. Questão 1 A respeito de uma árvore de decisão, NÃO é correto afirmar: ************************************************************ a) Uma árvore de decisão é composta por conexões de pontos de decisão. b) Uma árvore de decisão possui uma raiz, que é o ponto inicial da decisão. c) Para se chegar à sua decisão, a árvore de decisão precisa passar por uma sequência de testes. (_CORRETA_) => d) Uma árvore de decisão não possui conexões de pontos de decisão. (_EXPLICACAO_) => Uma árvore de decisão é composta por conexões de pontos de decisão e) A árvore de decisão possui nós-folha que representam as ações a serem executadas pelo agente. . . . . . . Questão 2 As árvores de comportamento são baseadas em: ************************************************************ a) Pontos de decisão. (_CORRETA_) => b) Tasks (Tarefas). (_EXPLICACAO_) => Uma árvore de comportamento é baseada em tarefas (tasks). Uma tarefa para um agente pode ser simplesmente procurar um valor de determinada variável nos jogos, como trocar suas animações. c) Arestas. d) Vértices. e) Decisões. . . . . . . .Questão 3 A respeito das árvores de comportamento, é CORRETO afirmar que: ************************************************************ a) Uma árvore de comportamento não é baseada em tarefas (tasks). (_CORRETA_) => b) As tarefas de uma árvore de comportamento não são compostas em subárvores. c) As tarefas de uma árvore de comportamento não possuem a mesma estrutura básica. d) Cada tarefa da árvore de comportamento pode ser qualquer comportamento que o programador desejar aplicar a um agente. e) As árvores de comportamento são implementadas para auxiliar na movimentação do agente. . . . . . . .. AULA 07 Técnicas de Tomada de Decisão – Parte 3 APRESENTAÇÃO A lógica Fuzzy (nebulosa) nos jogos pode ser utilizada para construir um sistema baseado em regras ou em máquina de estados finitos. Exemplo de lógica Fuzzy: Neste exemplo o agente realiza a sua tomada decisão de acordo com o estado atual do jogador; esse estado é calculado de acordo com a lógicaFuzzy. Se (vida_forte) então fugir; Se (vida_média) então atacar; Se (vida_baixa) então atacar. No exemplo, vida_forte, vida_media e vida_baixa são funções Fuzzy. Para usar a lógica Fuzzy, é necessário entender suas etapas: Entrada (fuzzificação), Saída (saída Fuzzy) e quantização (deFuzzyficação). Questão 1 Por que utilizar a lógica Fuzzy (nebulosa) nos jogos? ************************************************************ a) Para movimentar o agente no ambiente. (_CORRETA_) => b) Para implementar a tomada de decisão de um agente. c) Para implementar a movimentação de um grupo de agentes. d) Para fazer o agente aprender com suas ações. e) Para implementar a detecção de colisão entre agentes. . . . . . . .Questão 2 Na lógica Fuzzy, a etapa que mapeia os dados de entrada em dados nebulosos é chamada: ************************************************************ a) Operadores Fuzzy. (_CORRETA_) => b) Fuzzificação. (_EXPLICACAO_) => Nessa etapa, os dados de entrada passados para o algoritmo são mapeados em dados nebulosos. Esse mapeamento busca encontrar o grau de associatividade entre os dados de entrada observados e os conjuntos de valores Fuzzy predefinidos. c) Defuzzificação. d) Saída Fuzzy. e) Funções de associatividade. . . . . . . .Questão 3 As funções de associatividade na lógica Fuzzy servem para: ************************************************************ a) Realizar as transições entre os estados. b) Realizar as ações que ocorrem de maneira externa ao agente. c) Associar valores de entrada para as transições de estados. (_CORRETA_) => d) Associar um valor de entrada a determinada ação de saída do agente. (_EXPLICACAO_) => A função de associatividade, como o próprio nome já diz, irá associar um valor de entrada a determinada ação de saída do agente. Qualquer função pode ser usada como uma função de associatividade; a escolha vai depender da precisão que se deseja alcançar e da facilidade de implementação. e) Realizar os cálculos para movimentação do agente. . . . . . . .Questão 4 Quando se deseja uma saída quantitativa, o que é necessário utilizar para que a saída seja um número do sistema nebuloso? ************************************************************ a) Funções de Associatividade. b) Saída Fuzzy. (_CORRETA_) => c) Desfuzzificação. (_EXPLICACAO_) => Quando se deseja uma saída quantitativa, é necessário utilizar a desfuzzificação; assim, a saída será um número do sistema nebuloso. Por exemplo, se um agente estiver perseguindo o jogador (player), um sistema Fuzzy pode indicar ao agente um valor quantitativo que recomenda uma mudança de direção para direita ou para esquerda a fim de interceptar o jogador. d) Operador de Conjunção. e) Fuzzificação. . . . . . . . AULA 08 Técnicas Avançadas – Aprendizado APRESENTAÇÃO O aprendizado está ligado diretamente à inteligência, pois, se um sistema é capaz de aprender a realizar determinada tarefa, merece então ser chamado de inteligente. O aprendizado de máquina nada mais é que um aprendizado por experiência; à medida que a tarefa é executada, o programa aprende a melhor maneira de resolver o problema. O campo de aprendizado de máquina costuma distinguir três subcampos: o supervisionado, o não supervisionado e o por reforço. O foco desta aula é mostrar um pouco de cada um deles e um algoritmo que utiliza aprendizado supervisionado para representar sua forma de aprender, as redes neurais. Aprendizagem supervisionada: como o próprio nome sugere, faz o agente necessitar de supervisão de dados externos, mais especificamente um instrutor. A partir desses dados, o agente aprende uma função que mapeia os valores de entrada para os de saída. Durante o treinamento, o instrutor fornece ao agente os dados corretos para que o objetivo seja alcançado; assim, esse método se torna muito eficiente, pois o sistema pode trabalhar diretamente com informações corretas. Se os valores forem discretos, o problema é categorizado como classificação. No entanto, se forem contínuos, o problema é categorizado como regressão. Esse método é muito utilizado em agentes para classificação, regressão e estimação de probabilidade condicional; Aprendizagem não supervisionada: nesse tipo de aprendizagem, não são fornecidas saídas para as entradas das funções de aprendizado do agente; com isso, há a incerteza sobre a saída da função de aprendizagem do agente. Com essa ausência dos parâmetros de entrada, esse tipo de arendizagem usado puramente não fornece condições para o agente decidir sobre a ação adequada ou o estado desejado. Assim, são utilizados muitos métodos probabilísticos para simular essa experiência não vivida – um deles é a aprendizagem bayesiana (ou redes bayesianas); Aprendizagem por reforço: nesse método, em vez de o agente ser informado sobre o que fazer por um instrutor, o agente de aprendizagem por reforço deve aprender a partir de reforços fornecidos em cima de suas ações realizadas no ambiente e, com isso, fazer uma hipótese e determinar se ela foi boa ou ruim, pois os reforços podem significar recompensa ou punição. As redes neurais fazem parte de um aprendizado supervisionado. O objetivo dos algoritmos de redes neurais é simular o modelo de ligação e comunicação dos neurônios existentes nos seres vivos. Um neurônio possui um núcleo, um corpo celular, um axônio e dendritos. Questão 1 De acordo com Russell e Norvig, o campo de aprendizado de máquina costuma distinguir três subcampos. Quais são eles? ************************************************************ a) Supervisionado, por ação, não supervisionado. b) Condicional, supervisionado, por reforço. c) Por reforço, condicional, não supervisionado. (_CORRETA_) => d) Supervisionado, não supervisionado e por reforço. e) Por reforço, por ação, condicional. . . . . . . . Questão 2 Por que utilizar algoritmos de aprendizado em jogos? ************************************************************ a) Para movimentar os agentes em jogos. (_CORRETA_) => b) Porque os algoritmos de aprendizado fazem os agentes aprenderem com suas ações e se tornarem menos previsíveis. (_EXPLICACAO_) => Os algoritmos de aprendizado nos jogos fazem o agente se adaptar a cada jogador ou ambiente, aprendendo seus truques e técnicas, assim fornecendo um desafio mais consistente e sem previsibilidade. Com essa técnica, podemos criar agentes mais próximos da realidade, capazes de se adaptarem a tudo à sua volta no ambiente do jogo. c) Para deixar as tomadas de decisões menos complexas. d) Porque eles fazem os agentes agirem sobre suas próprias ações, sem nenhuma aprendizagem. e) Para tornar os agentes em jogos mais previsíveis. . . . . . . .Questão 3 Qual o objetivo dos algoritmos de redes neurais? ************************************************************ (_CORRETA_) => a) Simular o modelo de ligação e comunicação dos neurônios existentes nos seres vivos. (_EXPLICACAO_) => O objetivo dos algoritmos de redes neurais é simular o modelo de ligação e comunicação dos neurônios existentes nos seres vivos. Um neurônio possui um núcleo, um corpo celular, um axônio e dendritos. b) Simular o comportamento de movimentação do ser humano. c) Simular a ligação e comunicação das células humanas. d) Simular os estados de um autômato finito. e) Simular as ligações entre as árvores de decisão. . . . . . . .Questão 4 A aprendizagem ________________ faz o agente necessitar de uma supervisão de dados externos, mais especificamente um instrutor. A partir desses dados, o agente aprende uma função que mapeia os valores de entrada para os de saída. ************************************************************ (_CORRETA_) => a) Supervisionada. (_EXPLICACAO_) => A aprendizagem supervisionada, como o próprio nome sugere, faz o agente necessitar de uma supervisão de dados externos, mais especificamente um instrutor. A partir desses dados, o agenteaprende uma função que mapeia os valores de entrada para os de saída. b) Não supervisionada. c) Por instrução. d) Reforço. e) Elementar. . . . . . . .
Compartilhar