Sistemas Multi-Agentes - OSIM 0001

Transcrição

Sistemas Multi-Agentes - OSIM 0001
Sistemas Multi-Agentes - OSIM 0001
Rogério Eduardo da Silva - [email protected]
Universidade do Estado de Santa Catarina
Departamento de Ciência da Computação
5 de março de 2015
Conteúdo Programático
Apresentação da Disciplina
Revisão de Conceitos
Programação orientada a objetos em C++
Documentação de Código - Doxygen
Computação Gráfica - OPENGL
PROLOG
Introdução aos Agentes Inteligentes
O que são agentes?
Ambientes
Representação do Conhecimento
Agentes
Agentes Reativos
Agentes
Agentes
Agentes
Agentes
Agentes
Puramente Reativos
com Gatilhos
baseados em Objetivos
baseados em Utilidade
Qualquer Tempo
Agentes Deliberativos
Agentes BDI
Agentes EBDI
Abordagens Multi-Agentes
Storytelling Interativo
Psicologia Computacional
Atitudes Mentais: Emoção
2 of 173
Atitudes Mentais: Personalidade
Tomada de Decisão
Objetivo da Disciplina
Permitir ao aluno desenvolver habilidades de modelagem e criação de
agentes e sistemas multi-agentes;
Estudar problemas que possam ser mais facilmente resolvidos através de
Inteligência Artificial distribuı́da;
Desenvolver uma aplicação-exemplo completa através da utilização de
SMA;
3 of 173
Domı́nio sugerido pelo professor: Storytelling Digital Interativo
Método de Ensino
Aulas expositivas em sala e em laboratório
Listas de exercı́cios teóricos e práticos
Atendimento presencial (sala do professor) e/ou através da lista de emails
da disciplina [email protected]
4 of 173
Avaliações
Serão realizadas 3 avaliações:
[Byl, 2004, Iurgel and Marcos, 2007, Perlin and Seidman, 2008]1
1 prova teórica (peso: 30%):
1. Agentes (conceitos, taxonomia, implementações) e Abordagens
Multi-agentes.
2. Conceitos de Psicologia Computacional
Implementação de um agente reativo (peso: 35%)
Projeto de Implementação de um Sistema de Storytelling Interativo
(peso: 35%)
Exame Final (caso média semestral < 7.0)
Data prevista: 07 de Julho de 2015
1
E vários outros artigos a serem apresentados durante o semestre
5 of 173
Bibliografia Básica Sugerida
Byl, P. B.-d. (2004).
Programming Believable Characters for Computer Games.
Charles River Media.
Iurgel, I. A. and Marcos, A. F. (2007).
Employing personality-rich virtual persons–New tools required.
Computers & Graphics, 31(6):827–836.
Perlin, K. and Seidman, G. (2008).
Autonomous digital actors.
In Motion in Games, volume 5277/2008 of Lecture Notes in Computer Science,
pages 246–255. Springer Verlag.
6 of 173
Figura 1: Personagem “Sonny” do filme “Eu, Robô” de 2004 (20th Century Fox)
7 of 173
Video “Sonny”: 3m30s
8 of 173
Figura 2: Assistente de Compras online (Amazon Prime)
9 of 173
Figura 3: Robôs Industriais em Linhas de Produção
10 of 173
Figura 4: Brinquedos Eletrônicos Interativos
11 of 173
Figura 5: Personagens Autônomos (adversários ou não) em Jogos Eletrônicos
12 of 173
Figura 6: Figuração Virtual em Filmes (Digital Extras)
13 of 173
Figura 7: Assistentes Virtuais
14 of 173
Video “Eureka: S.A.R.A.H.”: 2m12s
15 of 173
Video “SEMAINE project”: 2m12s
16 of 173
Revisão de Conceitos
Programação Orientada a Objetos (C++)
Computação Gráfica (OpenGL)
Lógica Matemática (Prolog)
17 of 173
Programação Orientada a Objetos (C++)
Classe & Objeto Classes são descrições expandidas de estruturas de dados
que podem conter membros: atributos e métodos. Objetos
são instanciações das classes. Objetos podem ser estáticos ou
dinâmicos.
Polı́ticas de Acesso são identificadores que definem o escopo de acesso aos
membros de uma classe. Podem ser públicos, privados ou
protegidos.
Construtores & Destrutor Construtor é um método especial que é chamado
no momento em que um objeto é criado. Destrutor é o
método chamado no momento em que um objeto é
desalocado da memória.
Uma classe pode conter vários construtores (polimorfismo)
porém apenas um destrutor.
18 of 173
Programação Orientada a Objetos (C++)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Circle
{
private :
int raio ;
float centro x , centro y ;
public :
Circle ();
Circle ( float , float , int );
Circle (const Circle &);
Circle ( Circle ∗);
//
//
//
//
default
inicializador
clonagem
clonagem dinamica
˜ Circle ();
void setRadius( int );
void setCenter( float , float );
};
...
Circle circle , circle1 (1.0 f,−2.0f, 5), circle2 ( circle1 );
19 of 173
Programação Orientada a Objetos (C++)
Ponteiros para Classes referenciação dinâmica a objetos de uma classe. Uso
dos operadores new e delete.
Referenciação dinâmica através do operador ‘->’.
Parâmetro Default permite especificar um valor inicial a um parâmetro de
um método caso um valor formal não seja fornecidos no
momento da sua chamada.
Métodos inline método que não produz desvio de execução nas chamadas
(substituição de código).
20 of 173
Programação Orientada a Objetos (C++)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Circle
{
private :
int raio ;
float centro x , centro y ;
public :
Circle ();
// default
Circle ( float , float , int = 1); // inicializador aceita 2 ou 3 parametros
Circle (const Circle &);
// clonagem
Circle ( Circle ∗);
// clonagem dinamica
˜ Circle ();
void setRadius( int );
inline int getRadius() { return this −>raio; }
void setCenter( float , float );
};
...
Circle ∗ ptrCircle = new Circle (), circle (−1,−1);
ptrCircle −>setRadius(10);
(∗ ptrCircle ). setCenter(−1.0f, 3.4 f );
...
delete ptrCircle ;
21 of 173
Programação Orientada a Objetos (C++)
Cabeçalho & Implementação abordagem popular para especificação do
código-fonte em um programa C++.
Etapas:
1. Criar um projeto (geralmente uma Console Application)
2. Incluir nos arquivos de cabeçalhos (*.h) apenas os protótipos
para a classe, exceto nos casos de funções inline e descrição de
templates.
Importante :! os cabeçalhos devem ser envolvidos por uma
diretiva de compilação #ifndef CONST e #endif a fim de
evitar erros de duplicidade de compilação.
3. Descrever nos arquivos de implementação (*.cpp) as
implementações para os métodos declarados nos protótipos
Pré-inicializadores em C++ é possı́vel efetuarmos inicializações de atributos
mesmo antes da execução do construtor. Para tal declara-se
na implementação do construtor uma seção com o operador
‘:’ seguido de uma lista de variáveis e seus respectivos valores
entre parênteses
22 of 173
Programação Orientada a Objetos (C++)
circle.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
circle.cpp
#ifndef CIRCLE H
#define CIRCLE H
class Circle
{
private :
int raio ;
float centro x , centro y ;
public :
Circle ();
Circle ( float , float , int = 1);
Circle (const Circle &);
Circle ( Circle ∗);
˜ Circle ();
void setRadius( int );
inline int getRadius()
{ return this −>raio; }
void setCenter( float , float );
};
#endif
23 of 173
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include ” circle .h”
Circle :: Circle () :
raio (0),
centro x (0.0 f ),
centro y (0.0 f )
{ }
...
void Circle :: setRadius( int raio )
{
this −>raio = raio;
}
...
Programação Orientada a Objetos (C++)
Sobrecarga & Polimorfismo definição de múltiplas funcionalidades para um
mesmo membro da classe. Dois tipos: método ou operador.
24 of 173
Na sobrecarga de operador, redefine-se a funcionalidade
de um operador (existente na linguagem C). Por exemplo:
operador atribuição para a classe Circle
Através do polimorfismo de método é possı́vel se definir
métodos que executem diferentes ações em diferentes
contextos.
Programação Orientada a Objetos (C++)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Circle
{
private :
int raio ;
float centro x , centro y ;
public :
Circle ( float = 0.0f, float = 0.0f, int = 1); // inicializador
Circle (const Circle &);
// clonagem
Circle ( Circle ∗);
// clonagem dinamica
˜ Circle ();
Circle
bool
};
25 of 173
operator = (const Circle &);
operator == (const Circle &);
aceita ate 3 parametros
Programação Orientada a Objetos (C++)
Herança especificação de uma hierarquia de classes onde uma
classe-pai compartilha seus membros públicos e protegidos
com suas classes subordinadas.
Um classe-pai pode ter mais de uma classe subordinada, bem
como uma classe pode estar subordinada a mais de uma
classe-pai, porém não pode haver ambiguidade de herança
(ciclos).
Tipos de herança:
Pública os membros (públicos e protegidos) da classe-pai
serão todos herdados e a polı́tica de acesso será
mantida
Protegida os membros (públicos e protegidos) da classe-pai
serão todos herdados porém usando acesso
protegido
Privada os membros (públicos e protegidos) da classe-pai
serão todos herdados porém usando acesso
privado.
26 of 173
Programação Orientada a Objetos (C++)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Mother {
public :
Mother ()
{ cout << ”Mother: no parameters\n”; }
Mother (int a)
{ cout << ”Mother: int parameter\n”; }
};
class Daughter : public Mother {
public :
Daughter (int a)
{ cout << ”Daughter: int parameter\n\n”; }
};
class Son : public Mother {
public :
Son ( int a) : Mother (a)
{ cout << ”Son: int parameter\n\n”; }
};
27 of 173
Programação Orientada a Objetos (C++)
Membros Estáticos (ou variáveis de classe) são membros que podem ser
consultados externamente porém só podem ser modificados
pelos próprios métodos da classe
Membros e Classes Constantes não podem ser modificados, apenas
consultados
28 of 173
Programação Orientada a Objetos (C++)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Dummy {
public :
static int n;
Dummy () { n++; };
˜Dummy () { n−−; };
};
int Dummy::n=0;
int main () {
Dummy a;
Dummy b[5];
Dummy ∗ c = new Dummy;
cout << a.n << ’\n’;
delete c;
cout << Dummy::n << ’\n’;
return 0;
}
29 of 173
1
2
3
4
5
6
7
8
9
10
11
int main() {
const MyClass foo(10);
// invalido : x nao pode ser modificado
// foo .x = 20;
// ok: os membros da classe podem ser acessados
cout << foo.x << ’\n’;
return 0;
}
Programação Orientada a Objetos (C++)
Templates permitem a especificação de tipos parametrizáveis para
classes e membros
30 of 173
Programação Orientada a Objetos (C++)
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
template <class T>
class mypair {
T a, b;
public :
mypair (T first , T second)
{a= first ; b=second;}
T getmax ();
};
31 of 173
1
2
3
4
5
6
7
template <class T>
T mypair<T>::getmax ()
{
T retval ;
retval = a>b? a : b;
return retval ;
}
1
2
3
4
5
int main () {
mypair <int> myobject (100, 75);
cout << myobject.getmax();
return 0;
}
Gerador de Documentação de Código
Ferramenta sugerida: DOXYGEN
http://www.doxygen.org/
Originalmente proposta para C++, hoje permite suporte a múltiplas
linguagens: C, Objective-C, C#, PHP, Java, Python, IDL, Fortran,
VHDL, Tcl
Suporte a Windows, Mac OS X e Linux
Três possı́veis aplicações:
1. Gerador online de documentação (HTML) e offline (LATEX, RTF, PS, PDF,
CHM, man pages)
2. Visualizador de relações entre os arquivos não documentados do
código-fonte
3. Gerador de documentação normal
32 of 173
Gerador de Documentação de Código
Uso do Doxygen para C++:
A documentação é realizada dentro de blocos especiais de comentários
definidos por:
/**
...
*/
Alternativamente, pode-se adotar o comentário por linha, como em
/// ...
//! ...
//< ...
33 of 173
Gerador de Documentação de Código
\file
\class
\brief
\param
\sa (see also)
\struct
\union
\enum
\fn (function)
\def (#define)
\typedef
\namespace
34 of 173
Gerador de Documentação de Código
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/∗∗
\ file Application .h
\ brief Definicao do prototipo da classe Application para gerencimento do IDS<p>
Desenvolvido por <b>Rogerio Eduardo da Silva</b><br>
Fevereiro , 2015. Universidade do Estado de Santa Catarina (UDESC)
∗/
#include <string>
using namespace std;
/∗∗
\ class Application
\ brief Classe responsavel por
∗/
class Application
{
private :
string
strAppName,
strCurrentFPS;
unsigned int uiWindowWidth,
uiWindowHeight,
uiFrames;
double
dCounterTimer;
controlar o ambiente grafico e gerenciamento do ambiente IDS.
//! nome do titulo da janela da aplicacao
//! valor corrente ( convertido em texto) do FPS disponivel para execucao da aplicacao
//! largura da janela da aplicacao
//! altura da janela da aplicacao
//! contador de frames para o calculo do FPS
//! contador de tempo para o calculo do FPS
void setWindowSize( unsigned int , unsigned int );
/∗∗
\ brief Retorna o valor corrente da largura da janela da aplicacao
\return unsigned int o valor da largura da janela
∗/
...
35 of 173
Gerador de Documentação de Código
36 of 173
Gerador de Documentação de Código
37 of 173
Computação Gráfica (OpenGL)
1. Inicialização do ambiente GLUT
2. Inicialização do ambiente OPENGL
3. Especificação das funções de callback = tratamento de eventos
4. Execução do loop principal
Função importante! Time-based Rendering
Controle do tempo transcorrido entre duas chamadas consecutivas das
rotinas GLUT
38 of 173
Computação Gráfica (OpenGL)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int main( int argc , char ∗∗ argv )
{
// inicializacao do ambiente da GLUT
glutInit ( &argc, argv );
glutInitWindowSize( 1027, 768 );
glutInitDisplayMode ( GLUT RGBA | GLUT DOUBLE | GLUT DEPTH );
glutCreateWindow( ”OSIM 2015” );
OnStartGL();
// define as funcoes callback do sistema
glutDisplayFunc( OnRenderEvent );
glutReshapeFunc( OnReshapeEvent );
glutKeyboardFunc( OnKeyboardEvent );
glutSpecialFunc ( OnSpecialKeyboardEvent );
glutMouseFunc( OnMouseButtonEvent );
glutMotionFunc( OnMouseMotionEvent );
glutIdleFunc ( OnIdleEvent );
glutMainLoop();
return 1;
}
39 of 173
main.cpp
Computação Gráfica (OpenGL)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <time.h>
clock t LastTime = clock(); // armazena o clock da maquina no inicio da execucao do loop
...
// armazena o clock da maquina novamente na proxima execucao do loop ...
clock t currTime = clock();
// ... e calcula a diferenca de tempo entre 2 chamadas consecutivas
double elapsedTime = (( double) ( currTime − LastTime )) / CLOCKS PER SEC;
// o novo valor do clock passa a ser antigo para o calculo da proxima iteracao
LastTime = currTime;
40 of 173
Computação Gráfica (OpenGL)
41 of 173
Computação Gráfica (OpenGL)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Application
{
private :
string
strAppName,
strCurrentFPS;
unsigned int uiWindowWidth,
uiWindowHeight,
uiFrames,
cor ;
double
dCounterTimer;
//! nome do titulo da janela da aplicacao
//! valor corrente ( convertido em texto) do FPS disponivel para execucao da aplicacao
//! largura da janela da aplicacao
//! altura da janela da aplicacao
//! contador de frames para o calculo do FPS
//! contador de tempo para o calculo do FPS
void CalculateFPS( double );
public :
Application ( string = ”OSIM 2015” );
˜Application ();
void setWindowSize( unsigned int , unsigned int );
inline unsigned int getWidth() { return this −>uiWindowWidth; }
inline unsigned int getHeight() { return this −>uiWindowHeight; }
inline string getTitle () { return this −>strAppName + ” − [” + this−>strCurrentFPS + ”]”; }
int Execute( double );
void RenderFrame();
};
Application.h
42 of 173
Computação Gráfica (OpenGL)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void OnRenderEvent()
{
ptrApp−>RenderFrame();
}
void OnIdleEvent()
{
clock t currTime = clock();
double elapsedTime = (( double) ( currTime − LastTime )) / CLOCKS PER SEC;
LastTime = currTime;
ptrApp−>Execute( elapsedTime );
glutSetWindowTitle( ptrApp−>getTitle().c str() );
glutPostRedisplay ();
}
main.cpp
43 of 173
Computação Gráfica (OpenGL)
44 of 173
Computação Gráfica (OpenGL)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Application :: Aplication () {
this −>ptrCurrentCamera = new Camera();
this −>ptrCurrentCamera−>setTranslate( Vector3( 25.0f, 5.0f, 35.0f ) );
this −>ptrCurrentCamera−>LookAt( Vector3( 0.0f, 2.0f, 0.0f ) );
}
void Application :: LoadContent()
{
BRep∗ ptrBRepFarm = new BRep( ”Farm” );
ptrBRepFarm−>LoadfromFile( string( ”obj/farm.obj” ) );
this −>addEntity( ptrBRepFarm );
BRep∗ ptrBRepCrate = new BRep( ”Crate” );
ptrBRepCrate−>LoadfromFile( string( ”obj/crate.obj” ) );
ptrBRepCrate−>setTranslate( Vector3( −3.0f, −3.8f, 2.0f ) );
ptrBRepCrate−>setRotate( Vector3( 0.0f, 60.0f, 0.0 f ) );
this −>addEntity( ptrBRepCrate );
BRep∗ ptrCrate2 = new BRep( ptrBRepCrate );
ptrCrate2−>setID( ”Crate2” );
ptrCrate2−>setTranslate( Vector3( 7.0f, −3.8f, −8.0f ) );
ptrCrate2−>setScale( Vector3( 0.75f, 0.75f , 0.75f ) );
this −>addEntity( ptrCrate2 );
}
Application.cpp
45 of 173
Computação Gráfica (OpenGL)
46 of 173
Computação Gráfica (OpenGL)
47 of 173
PROLOG
1. Inicialização do ambiente SWI-Prolog
2. Carregamento de uma base de conhecimento
3. Construção de uma base de conhecimento (*.pl) com fatos e regras
O que são predicados dinâmicos ?
4. Operações de Assert e Retract
5. Consultas à base de conhecimento
48 of 173
PROLOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// inicializa o ambiente PROLOG
putenv( ”SWI HOME DIR=C:\\Program Files (x86)\\pl\\” );
ptrPrologEngine = new PlEngine( ”C:\\Program Files (x86)\\pl\\” );
loadPL( ”kb. pl ” );
...
assertPL( ”fato (barata , nojento )” ); // adiciona fatos na base de conhecimento ativa
retractPL( ”fato (bola , divertido )” ); // remove fatos da base de conhecimento ativa
...
// consulta um fato na base de conhecimento ativa
PlTermv t(2);
PlQuery Consult( ”acao ”, t );
while ( Consult. next solution () )
{
// DO SOMETHING HERE!
printf ( ”%s %s\n”, ( char∗ )t [0], ( char∗ )t [1] );
}
PrologEngine.cpp
49 of 173
PROLOG
1
2
3
4
5
6
7
8
9
10
11
% define um fato dinamico. Fatos dinamicos podem ser modificados via operaoes de
% ASSERT e RETRACT
:−dynamic(fato/2).
fato (casa, grande).
fato (bola , divertido ).
acao( fugir , QUEM) :− fato(QUEM, nojento).
acao(pegar, QUEM) :− fato(QUEM, divertido).
acao(olhar , QUEM) :− fato(QUEM, grande).
kb.pl
50 of 173
Agentes Inteligentes
Introduç~
ao
51 of 173
O que são agentes?
52 of 173
O que são agentes?
“Agentes autônomos são sistemas computacionais que habitam um
ambiente dinâmico e complexo, onde percebem e agem
autonomamente neste ambiente e, fazendo isso, executam uma série
de tarefas ou objetivos para os quais foram projetados.”
53 of 173
O que são agentes?
“Um agente é qualquer coisa que possa perceber um ambiente através
de sensores e atuar nele através de atuadores”
54 of 173
Para que servem agentes?
Resolver problemas simples de forma autônoma e eficiente.
Exemplos de aplicações:
Animações Digitais - Digital Extras, Atores Digitais Autônomos
Jogos Computacionais - Non-Player Characters
Robótica - Brinquedos eletrônicos
Automação e Controle - Monitoramento de Máquinas, Serviços,
Indústria, etc.
Assistentes Virtuais - Sites de Compras, Buscas Online, ...
55 of 173
Para que servem Sistemas Multi-Agentes?
Resolução de problemas complexos através da coordenação de múltiplos
esforços individuais de um(vários) grupo(s) de agentes.
Exemplos:
56 of 173
Simulação
Automação e controle
Sistemas distribuı́dos
Video “Robotcup”: 9m23s
57 of 173
Agentes Inteligentes
Ambientes
58 of 173
Tipos de Agentes
Reativos: estı́mulo ⇒ resposta
Deliberativos: estı́mulo ⇒ inferência ⇒ seleção ⇒ resposta
59 of 173
Ambientes
É uma memória compartilhada por todos os agentes que de forma ativa e
independente torna possı́vel a coordenação decentralizada de ações.
É qualquer especificação (fı́sica ou virtual) que age como produtora de
estı́mulos e receptora de ações.
Algumas dimensões de representação de ambientes:
60 of 173
Dinâmicos vs. Estáticos
Persistentes vs. Amnésicos
Fı́sicos vs. Virtuais
Acessı́vel vs Inacessı́vel
Determinı́stico vs Não-determinı́stico
Ambientes
Dinâmicos vs. Estáticos
Um ambiente (E ) é dito ser estático em relação a um agente (A) se os
estı́mulos recebidos por A a partir de E dependem exclusivamente das
ações realizadas por A em E .
Ambientes dinâmicos mudam autonomamente (não dependente da ação
do agente).
Exemplo:
estático Acionamento de uma lâmpada através de um botão
dinâmico Acionamento de uma lâmpada através de um sensor de
luminosidade
61 of 173
Ambientes
Persistente/Amnésico
Um ambiente (E ) é dito ser persistente se os estı́mulos produzidos por E
não dependem somente das ações imediatamente anteriores recebidas em
E.
Exemplo:
persistente Acionamento de uma lâmpada através de um botão
amnésico Cantar para um auditório
62 of 173
Ambientes
Fı́sico/Virtual
Um ambiente (E ) é dito ser fı́sico se somente pode ser observador por
sensores analógicos e virtual se pode ser digitalmente acessado.
63 of 173
Ambientes
Acessı́vel/Inacessı́vel
Um ambiente (E ) é dito ser acessı́vel a um agente (A) se este puder
produzir ações/receber estı́mulos sobre todo o ambiente (E ), e inacessı́vel
se apenas puder fazê-lo sobre parte deste.
Exemplo:
acessı́vel Ser o motorista de um carro.
inacessı́vel Ser o passageiro de um carro.
64 of 173
Ambientes
Determinı́stico/Não-determinı́stico
Um ambiente (E ) é dito ser determinı́stico se for possı́vel a um agente
(A) prever a resposta produzida por (E ) para um dada ação.
Exemplo:
determinı́stico Cair ao andar além da borda de um penhasco.
não-determinı́stico Passar de fase ao andar além da borda de um
penhasco.
65 of 173
Interação com Ambientes
Interação é a troca de dados entre participantes (agentes ou ambientes)
de tal forma que a resposta de cada participante possa afetar seus futuros
estı́mulos.
Exemplos:
interativo Controlar um personagem em um ambiente de jogo
não-interativo Falar com a personagem da TV
Aspecto essencial para o entretenimento digital
66 of 173
Interação com Ambientes
Tipos de Interação
Direta Diz-se que dois participantes A e B estão involvidos em
interação direta quando uma ação produzida por um dos
participantes seja a causa primária da reação produzida no
outro
Indireta Ocorre quando um participante A produz reações em outro
participante B através da ação aplicada em um terceiro
participante C (intermediário)
Exemplos:
A empurra B e este cai no chão
A abre a porta e B entra na sala
A atira em B e B morre
AMBIENTES PRECISAM SER PERSISTENTES PARA PERMITIR
INTERAÇÃO INDIRETA
67 of 173
Interação com Ambientes
Formas de Interação
Sequencial Ocorre quando um único fluxo de interação
(estı́mulos/respostas) é produzido entre dois participantes
Assı́ncrono Ocorre quando múltiplos participantes geram fluxos de
interação entre si e com o ambiente
68 of 173
Ambientes - Exercı́cios
Classifique os ambientes abaixo em função das 5 dimensões vistas:
1. Jogo de xadrez
2. Jogo de video-game
3. Assistir a um filme
4. Sortear números em uma roleta
69 of 173
Ambientes - Exercı́cios
Classifique os ambientes abaixo em função das 5 dimensões vistas:
1. Jogo de xadrez
Dinâmico, Persistente, Fı́sico, Acessı́vel, Determinı́stico, Interativo
2. Jogo de video-game
Dinâmico, Persistente, Virtual, Inacessı́vel, Determinı́stico, Interativo
3. Assistir a um filme
Estático, Persistente, Virtual, Inacessı́vel, Não-Determinı́stico,
Não-Interativo
4. Sortear números em uma roleta
70 of 173
Estático, Amnésico, Fı́sico, Acessivel, Determinı́stico, Não-Interativo
Representação de Ambientes
Descrição computacional do ambiente em termos de seus componentes,
estados correntes, atributos e métodos (funções).
Discretos descreve o ambiente como um conjunto de ‘células’ que
contêm um elemento (ou parte de) do ambiente.
Tabuleiros (Boards)
Baseados em ‘azulejos’ (Tile-based)
Baseados em sub-volumes (Voxel-based)
Contı́nuos descreve o ambiente através de informações
semânticas/gráficas/geométricas dos elementos que o
compõe.
Modelagem Hierárquica
Particionamento Espacial Binário (Binary-Space Partition BSP)
Quadtree e Octree
71 of 173
Representação de Ambientes - Discretos
72 of 173
Representação de Ambientes - Discretos
Representação: Tile-based
73 of 173
Representação de Ambientes - Contı́nuos
74 of 173
Representação de Ambientes - Contı́nuos
Representação: Modelagem Hierárquica
1. Casa: [Posição (0, 0, 0); Dimensões (100, 100, 100)]
1.1 Sala: [Posição (0, 0, 0); Dimensões (10, 10, 5)]
1.1.1 Sofá: [Posição (1, 1, 0); Dimensões (2, 1, 1)]
1.1.2 Mesa de Centro: [Posição (5, 1, 0); Dimensões (1, 0.5, 0.5)]
1.2 Quarto: [Posição (10, 0, 0); Dimensões (10, 10, 5)]
1.2.1 Cama: [Posição (1, 0, 0); Dimensões (1.8, 2.2, 0.8)]
1.2.2 Guarda-Roupa: [Posição (9, 1, 0); Dimensões (3, 1, 3)]
75 of 173
Representação de Ambientes
Gerenciamento de Processos
1. initializeEnvironment()
2. displayEnvironment()
3. while( not endOfExecution )
3.1
3.2
3.3
3.4
getSystemMessages()
processSystemMessages()
processAgents()
displayEnvironment()
4. finalizeEnvironment()
76 of 173
Representação do Conhecimento
“Representação do Conhecimento e Raciocı́nio é a área da Inteligência
Artificial dedicada à como conhecimento pode ser representado
simbolicamente e manipulado de formas autônomas através de programas
de raciocı́nio”
Alguns exemplos clássicos:
77 of 173
Lógica de Primeira Ordem
Regras em Sistemas de Produção
Representação Orientada a Objetos
Lógica Nebulosa
Vetores de Classificação
Representação do Conhecimento
Lógica de Primeira Ordem conhecimento é representado através de fatos e
regras. Exemplo:
printColor(X) :- color(X,Y), !, write("It’s "), write(Y), write(".").
printColor(X) :- write("Beats me").
color(snow, white).
color(sky, blue).
color(X,Y) :- madeof(X,Z), color(Z,Y).
madeof(grass, vegetation).
color(vegetation, green).
78 of 173
Representação do Conhecimento
Regras em Sistemas de Produção conhecimento é representado através de
regras da forma
Se condição Então Ação
O processo é dividido em três etapas:
1. Reconhecimento: etapa onde cada uma das regras é avaliada a fim de se
encontrar aquelas ‘aplicáveis’ ao contexto corrente
2. Resolução de Conflito: escolher, entre as regras ativadas na etapa
anterior, aquela que deve ser executada
3. Ação: executar a regra selecionada, alterando os estados corrente da
memória
79 of 173
Representação do Conhecimento
Representação Orientada a Objetos conhecimento é representado através de
hierarquia de classes e objetos por operações como
associações, especializações e generalizações.
Exemplo: Transporte
Transporte Aéreo
Avião
Balão de Ar Quente
Transporte Fluvial
Canoa
Navio
Paraglider
Jet-sky
Transporte Terrestre
Por estrada
Carro
Caminhão
Motocicleta
Por trilho
Trem
Metrô
80 of 173
Representação de Conhecimento
Lógica Nebulosa lógica na qual se permite a categorização de atributos em
conjuntos de forma a modelar a incerteza através de conjuntos
nebulosos (ou Fuzzy Sets). Essa teoria define que um dado
atributo α apresenta grau de pertinência (δ) a certo conjunto
nebuloso através de uma função dada por:
δ = µ(α)
◦
Exemplo: a temperatura 30 C pode ser categorizado como
δ = {0/frio; 0.3/morno; 0.3/quente} conforme demonstrado pela
figura abaixo:
81 of 173
Representação de Conhecimento
Lógica Nebulosa o processo para se raciocinar a partir de lógica nebulosa
segue quatro passos:
1. Fuzzificação: determina-se o grau de pertinência das variáveis de interesse δ = µ(α)
para cada conjunto nebuloso
2. Avaliação: utilizando os graus de pertinência obtidos, avalia quais regras na base de
conhecimento são ativadas. Uma regra nebulosa é da forma
se saude é baixo e armadura é mdio então risco é alto
onde cada par atributo é valor é substituı́do por seu respectivo grau de pertinência.
Operações lógica “e” representa o mı́nimo entre os operadores, enquanto que a
operação “ou” representa o máximo entre eles.
3. Composição: dado os resultados da avaliação das regras, utiliza-se o grau de
pertinência do atributo de saı́da como ‘linha de corte’ no gráfico do conjunto Fuzzy
produzindo um novo polı́gono de saı́da (ver Figura no próximo slide)
4. Defuzzificação: encontra-se o centro de gravidade do polı́gono resultante por
Pb
µ(x)x
G = Px=a
b
x=a µ(x)
82 of 173
Representação de Conhecimento
83 of 173
Vetores de Classificação
84 of 173
Memórias
Memória Episódica também chamada de autobiográfica permite o
armazenamento das situações experimentadas, seus efeitos e
recorda situações semelhantes. Está associada a lugares e
momentos particulares. Exemplo: “assisti um filme na minha
casa semana passada comendo pipoca”
Memória Semântica organiza o conhecimento de sı́mbolos verbais, regras,
fórmulas, algoritmos, inferência, generalização, entre outros.
A memória semântica é responsável por manipular e dar
sentido às informações episódicas. Exemplo: “o nome do
diretor do filme era Martin Scorsese” ou “o que significa
‘chuva’ ?”
Memória Procedural representa o conhecimento acerca do repertório de
ações do agente, ou seja: “como fazer” determinadas ações.
Exemplo: “para caminhar mova as pernas e os braços de
forma sincronizada e alternada”
85 of 173
Agentes Reativos
Arquiteturas
86 of 173
Agentes Reativos
A forma mais simples de representação de agentes (também chamados de
reflexivos)
Mecanismo de funcionamento: estı́mulo = resposta
Não possui qualquer tipo de armazenamento de informação = sem
memória
Tem por objetivo modelar reações instintivas ao invés de pensamento
crı́tico
Construção de agentes baseados em quatro módulos principais:
Percepção responsável por detectar estı́mulos do ambiente, através de
sensores
Inferência responsável por determinar um conjunto de ‘ações
plausı́veis’ como resposta ao estı́mulo detectado
Seleção determina a ordem de prioridade de execução entre as
ações produzidas na inferência
Ação executa as ações no ambiente (através de atuadores)
87 of 173
Agentes Reativos
88 of 173
Agentes Reativos - Módulo: Percepção
1. Capta estı́mulos do ambiente
2. Analisa caracterı́sticas do estı́mulo detectado
3. Compara com uma base de conhecimento de experiências prévias
4. Determina a experiência prévia mais similar ao estı́mulo sob análise
5. Associa a informação da experiência prévia ao estı́mulo
6. Produz um novo percept (estı́mulo + informações semânticas)
7. Envia o percept para o módulo de inferência
Exemplo: estı́mulo = “criatura de quatro patas, 2 orelhas, rabo balançante,
porte pequeno”
Americano: percept = dog
Brasileiro: percept = c~
ao
Criança de 2 anos: percept = vaca
89 of 173
Agentes Reativos - Módulo: Percepção
Emulação de Sensores: simulação de um campo visual (distância e
ângulo) onde, caso uma entidade seja detectada, é considerado ‘sentido’
pelo agente
Tipos clássicos de sensores: visão, audição
Exemplo de percept: see( dog )
90 of 173
Agentes Reativos - Módulo: Inferência
É um conjunto de regras da forma “if percept then action” que
representam o conhecimento do agente
Uma ação é relativa às capacidades do agente de executar ações através
de seus atuadores: andar, piscar, emitir sons, alterar estados internos, etc.
Exemplo:
if see(dog) then action(run)
Um agente pode ativar múltiplas ações a cada instante de tempo, em
função de diferentes percepts ou de diferentes abordagens para responder
a um mesmo percept.
A lista de ações inferidas por este módulo é denominada “lista de ações
plausı́veis” e é posteriormente enviada ao módulo de seleção
91 of 173
Agentes Reativos - Módulo: Seleção
Implementa algum critério de tomada de decisão em relação às
múltiplas ações plausı́veis escolhidas pelo módulo anterior
Em um agente reativo um critério simples como FIFO - First-in First-out
pode ser adotado
Alternativamente, uma escolha aleatória pode ser realizada
Critérios mais sofisticados serão estudados posteriormente.
92 of 173
Agentes Reativos - Módulo: Ação
Executa a ação seleciona pelo módulo anterior
Abordagem tradicional em aplicações interativas: procedures
Cada ação é pré-implementada como um procedimento parametrizável.
Por exemplo: andar(X, Y)
A execução de uma ação pode acarretar dois tipos de consequências:
Internas quando apenas estados internos ao agente são modificados
Externas quando o ambiente no qual o agente está inserido é
modificado
No caso de ações externas, o agente envia uma mensagem de requisição
de alteração ao ambiente, que processa esta requisição e devolve uma
resposta ao agente (p.ex.: a nova configuração do ambiente).
93 of 173
Agentes Reativos - Implementação
94 of 173
Agentes Reativos - Implementação com Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Agent:
distance = 1
angle = 60
position = [10, 4]
direction = [1, 0]
def Sensors( self , env ):
percept = {}
for entity in env. listOfEntities :
if distance ( self , entity ) < distance and dotProduct(vecToEntity, direction ):
percept = { ’type ’: ’ vision ’, ’ value ’: entity . type }
return percept
def Inference ( self , percept ):
listOfPlausibleActions = []
if percept [’ type ’] == ’vision’ and percept [’ value ’] == ’dog’:
listOfPlausibleActions .append( ’run’ )
return listOfPlausileActions
def Selection ( self , listOfPlausibleActions
return listOfPlausibleActions [0]
):
def Action( self , selectedAction ):
if selectedAction == ’run’:
run()
def Update( self , env ):
Action( Selection ( Inference ( Sensor( env )))
95 of 173
Agentes Reativos - Implementação com Blender
96 of 173
Agentes Reativos - Implementação com Blender
97 of 173
Agentes Reativos - Implementação com Blender
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import bge
import random
def getWaypoints(scene):
list = []
for obj in scene . objects :
if ’wp’ in obj :
list .append(obj)
return list
def main():
cont = bge.logic . getCurrentController ()
own = cont.owner
sens
sens
sens
sens
actu
onWaypoint = cont.sensors [’ onWaypoint’]
onRedPortal = cont.sensors [’ onRedPortal’]
onGreenPortal = cont.sensors [’ onGreenPortal ’]
onBluePortal = cont.sensors [’ onBluePortal ’]
seekWaypoint = cont.actuators [’ seekWaypoint’]
if sens onWaypoint. positive :
wpList = getWaypoints(bge.logic.getCurrentScene())
idx = random.randint(0,len(wpList)−1)
actu seekWaypoint.target = wpList[idx ]
cont. activate (actu seekWaypoint)
if sens onRedPortal. positive :
own.color = [1,0,0,1]
if sens onGreenPortal . positive :
own.color = [0,1,0,1]
if sens onBluePortal . positive :
own.color = [0,0,1,1]
main()
98 of 173
Agentes Reativos com Gatilhos
Ou Trigger-based Agents são agentes reativos com estados internos que
funcionam como uma espécie de ‘memória primitiva’
Tem por objetivo modelar reações instintivas com base em estados
correntes (máquina de estados finitos - FSM)
Mecanismo de funcionamento: estı́mulo + FSM = resposta
Construção de agentes baseados em quatro módulos principais:
Percepção responsável por detectar tanto estı́mulos do ambiente
(através de sensores) quanto internos (através de query)
Inferência idem ao anterior porém consideram também os estados
internos
Seleção idem ao anterior
Ação permitem tanto ações internas (mudanças do estado
corrente) quanto externas (requisições ao ambiente)
99 of 173
Agentes Reativos com Gatilhos
Exemplo de regra com gatilhos:
if hear(noise) and state(awake) then action(run)
100 of 173
Agentes Reativos com Gatilhos
101 of 173
Agentes com Gatilhos - Implementação com Blender
102 of 173
Agentes com Gatilhos - Implementação com Blender
103 of 173
Agentes com Gatilhos - Implementação com Blender
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
maxEnergyLevel = 1000
generateWP = bEmergency = False
own[’energy ’] = own[’energy’] − 1
if sens isRunningLow. positive :
bEmergency = True
own.color ∗= own[’energy’]/maxEnergyLevel
powersource = getObjectsWithProp(bge.logic.getCurrentScene(), ’powersource’)
actu seekWaypoint.target = powersource[0]
cont. activate (actu seekWaypoint)
if sens onPowerSource. positive :
own[’energy ’] = maxEnergyLevel
own.color = [1,1,1,1]
generateWP = True
bEmergency = False
if not bEmergency and sens onWaypoint.positive or generateWP:
wpList = getObjectsWithProp(bge.logic.getCurrentScene(), ’wp’)
idx = random.randint(0,len(wpList)−1)
actu seekWaypoint.target = wpList[idx ]
cont. activate (actu seekWaypoint)
if not bEmergency and sens onRedPortal.positive :
own.color = [1,0,0,1]
if not bEmergency and sens onGreenPortal.positive :
own.color = [0,1,0,1]
if not bEmergency and sens onBluePortal. positive :
own.color = [0,0,1,1]
104 of 173
Agentes baseados em Objetivos
ou Goal-based Agents definem estados internos preferenciais
denominados objetivos.
Escolhe uma sequência de ações (plano) que fazem o agente ir do estado
corrente para o estado preferencial.
Exemplo:
Regra #1: se ouvir(som) então objetivo(avisar outros)
Regra #2: se objetivo(avisar outros) então objetivo(ativar alarme)
Regra #3: se objetivo(avisar outros) então objetivo(usar radio)
Regra #4: se objetivo(ativar alarme) então plano(localizar alarme,
andar ate alarme, acionar alarme)
Regra #5: se objetivo(usar radio) então plano(pegar radio,
selecionar frequencia, chamar ajuda)
Regra #6: se plano(X,Y,Z) então ação(X), ação(Y), ação(Z)
Regra #7: se ouvir(alarme) então não objetivo(ativar alarme)
105 of 173
Agentes baseados em Objetivos
106 of 173
Agentes baseados em Objetivos
107 of 173
Agentes baseados em Objetivos
108 of 173
Agentes baseados em Objetivos
Tipos de Objetivos:
Perform Goals: especifica ações a serem executadas.
Possı́veis estados:
Falha = nenhuma ação no plano pode ser executada
Em Andamento = um plano está em execução
Sucesso = um plano foi concluı́do
Exemplos:
Patrulhar ambiente
Cumprimentar agente
109 of 173
Agentes baseados em Objetivos
Tipos de Objetivos:
Achieve Goals: representa objetivos no sentido tradicional, ou seja, estados
futuros desejáveis.
É definido por uma target condition que indica quando
desejar o objetivo e uma failure condition que indica quando
desistir de um objetivo.
Exemplos:
Limpar a casa
110 of 173
target condition = casa está suja;
failure condition = nı́vel da bateria baixo
Agentes baseados em Objetivos
Tipos de Objetivos:
Query Goals: usado para verificar informação sobre um tema especı́fico.
Tı́pica ação em um plano para consulta é “coletar informação
sobre. . . ”
Exemplos:
Quanta bateria me resta?
Onde fica o cesto de lixo mais próximo?
111 of 173
Agentes baseados em Objetivos
Tipos de Objetivos:
Maintain Goals: tenta manter o agente em uma dada condição desejada.
Diferente dos outros objetivos, o objetivo manutenção assume
apenas dois estados:
Inerte quando a condição desejada é válida
Ativo caso contrário.
Não existe falha.
Exemplos:
Manter carga da bateria acima de 20
112 of 173
Agentes baseados em Objetivos
113 of 173
Agentes baseados em Utilidade
114 of 173
Agentes baseados em Utilidade
Utilidade significa associar valor a coisas.
O que vale mais: procurar comida ou fugir de predadores?
utility (objeto) = valor
Maximum Expected Utility
MEU(opcoes) = escolha
Onde utilizar o critério da MEU?
Escolha do melhor objetivo a seguir
Escolha do melhor plano para atingir um objetivo
Problema! utility-based agents podem (se muito complexos) demorar para
avaliar o melhor plano a seguir, até lá o ambiente pode já ter mudado e a
escolha se tornar inaplicável.
115 of 173
Agentes Qualquer Tempo
116 of 173
Agentes Deliberativos
Arquiteturas
117 of 173
Agentes Deliberativos
Agentes Deliberativos (ou cognitivos) se baseiam no fato de que
consideram aspectos da cognição humana (metáforas computacionais) no
processo de decisão
Processo deliberativo:
Percepção detecção de informações do mundo e/ou do próprio agente
Atitudes Mentais (em substituição à inferência + seleção) representa um
conjunto de etapas intermediárias formuladas pelo agente,
responsável por construir uma metáfora computacional ao
processo do raciocı́nio simbólico
Ação execução de ações que afetam tanto o agente em si,
quanto o ambiente no qual ele está inserido.
118 of 173
Agentes Deliberativos
119 of 173
Agentes Deliberativos
Atitudes Mentais são o conjunto de modelos computacionais que
pretendem modelar metáforas computacionais para determinados
aspectos da cognição humana, livremente inspirados nas teorias da
Psicologia Computacional
120 of 173
Agentes Deliberativos - Exemplos
Personalidade padrões de pensamento, atitudes e comportamentos que são
permanentes ou, ao menos, variam muito lentamente
Emoção reações psico-fisiológicas resultantes da avaliação do contexto
Tomada de Decisão define processos/critérios para avaliação de situações,
riscos e consequências para definição de estados mais
adequados a um objetivo especı́fico
Aprendizagem modelos para incorporação de novos conhecimentos à base de
conhecimento do agente. Tipos: supervionada,
não-supervisiona e por reforço
Memória modelos para armazenamento/recuperação do conhecimento
do agente. Tipos: episódica, semântica e procedimental
121 of 173
Agentes BDI
Um exemplo de agente deliberativo que se baseia na composição de três
atitides mentais:
Crenças (Beliefs) representa o conjunto de informações
armazenadas pelo agente acerca do ambiente e do
problema sendo resolvido
Desejos (Desires) representa o conjunto de estados-objetivos
(goals) que motivam o agente a agir de uma forma
especı́fica
Intenções (Intentions) representa o conjunto de ações (deliberações)
produzidas pelo agente afim de alcançar determinados
objetivos (com base no seu conjunto atual de crenças)
122 of 173
Agentes BDI - Crenças
Representa um conjunto de estados e/ou eventos que descrevem o
ambiente (em um dado momento) no qual o agente está inserido
Este conjunto apresenta uma correlação direta com os percepts
provenientes das rotinas de percepção (tanto externas quanto internas)
Crenças são subdividas em três tipos:
Objetos descreve caracterı́sticas e/ou estados de um objeto
Agentes descreve caracterı́sticas e/ou estados de um agente (que
pode ser self)
Eventos detecta a ocorrência de um evento
Exemplos de crenças:
Nı́vel de energia da bateria é igual a 28
Última posição conhecida do objeto bola é (5, 0, 0)
O agente ’policial’ entrou na delegacia
Foi detectado o acionar de um alarme no ambiente
123 of 173
Agentes BDI - Desejos
Funciona de forma análoga aos agentes baseados em objetivos
(goal-based agents) vistos anteriormente
Um desejo é um estado especial ao qual o agente ’deseja’ alcançar e para
tal, pode vir a definir um plano de ações
Importante: não existe a obrigatoriedade de satisfazer todos os desejos de
um agente
Desejos também podem ser classificados em: achieve, perform, query e
maintain
Exemplos de desejos:
Ir para a sala de televisão
Conversar com o agente ’policial’
Pegar o objeto bola no chão
Manter o nı́vel de energia acima de 100
124 of 173
Agentes BDI - Intenções
São estados especiais do agente aos quais (devido a algum processo
deliberativo) ele se compromete a alcançar
Intenções são o resultado da combinação das crenças atuais do agente
com seus desejos
Inew = B × D × Icurrent
Uma abordagem clássica é representar o processo deliberativo como uma
árvore de decisão, onde os estados internos representam as crenças do
agente e as folha representam seus objetivos. Nessa estrutura, o ramo
selecionado da árvore representa uma intenção a ser executada
Importante: a cada objetivo está associado um (ou até mais) planos de
ações
125 of 173
Agentes BDI - Algoritmo
1
2
3
4
5
6
7
8
9
10
11
initialize state ()
repeat
options = options−generation(event queue)
selected options = deliberate (options)
update intentions ( selected options )
execute()
get new external events ()
drop successfull attitudes ()
drop impossible attitudes ()
end−repeat
126 of 173
Agentes BDI - Exercı́cio
Construir um programa (em Blender3D) sobre um agente ’Pessoa’
vivendo em uma vila
A vila é composta por:
Casa
Restaurante
Praça
Cinema
local
local
local
local
onde o agente vai para descansar e/ou procurar abrigo
o agente vai para se alimentar
onde o agente passa seu tempo para se divertir
alternativo onde o agente vai para se divertir
O agente possui os seguintes desejos: ’divertir-se’, ’alimentar-se’,
’descansar’, ’estar protegido’
Repertório sugerido de ações2 : ’caminhar na praça’, ’entrar no
restaurante’, ’comer’, ’entrar no cinema’, ’assistir filme’, ’entrar em casa’
O ambiente controla: dia/noite (intervalos regulares), sol/chuva
(intervalos aleatórios)
2 Novas
127 of 173
ações podem ser sugeridas pelo aluno se necessário
Agentes BDI - Exercı́cio - Ontologia
1. Lista de crenças - B
2. Lista de desejos - D
3. Lista de intenções - I
4. Descrição comportamental
128 of 173
Agentes BDI - Exercı́cio - Ontologia
1. Lista de crenças - B
1.1
1.2
1.3
1.4
1.5
O agente está cansado
O agente está com fome
O agente está entediado
Está chovendo?
É dia
2. Lista de desejos - D
3. Lista de intenções - I
4. Descrição comportamental
129 of 173
Agentes BDI - Exercı́cio - Ontologia
1. Lista de crenças - B
1.1
1.2
1.3
1.4
O agente está cansado
O agente está com fome
O agente está entediado
Está chovendo?
1.5 É dia
2. Lista de desejos - D
2.1
2.2
2.3
2.4
Estar descansado
Estar seguro
Estar saciado
Não estar entediado
3. Lista de intenções - I
4. Descrição comportamental
130 of 173
Agentes BDI - Exercı́cio - Ontologia
1. Lista de crenças - B
1.1
1.2
1.3
1.4
O agente está cansado
O agente está com fome
O agente está entediado
Está chovendo?
1.5 É dia
2. Lista de desejos - D
2.1 Estar descansado
2.2 Estar seguro
2.3 Estar saciado
2.4 Não estar entediado
3. Lista de intenções - I
3.1
3.2
3.3
3.4
O
O
O
O
agente
agente
agente
agente
vai
vai
vai
vai
descansar
se proteger
comer
se divertir
4. Descrição comportamental
131 of 173
Agentes BDI - Exercı́cio - Ontologia
1. Lista de crenças - B
1.1
1.2
1.3
1.4
O agente está cansado
O agente está com fome
O agente está entediado
Está chovendo?
1.5 É dia
2. Lista de desejos - D
2.1 Estar descansado
2.2 Estar seguro
2.3 Estar saciado
2.4 Não estar entediado
3. Lista de intenções - I
3.1 O agente vai descansar
3.2 O agente vai se proteger
3.3 O agente vai comer
3.4 O agente vai se divertir
4. Descrição comportamental
4.1 I1 → D1 ∧ ((B1 ∧ ∼ B2 )∨ ∼ B5 )
4.2 I2 → D2 ∧ (B4 ∨ ∼ B5 )
4.3 I3 → D3 ∧ B2
4.4 I4 → D4 ∧ (∼ B1 ∧ ∼ B2 ∧ B3 )
132 of 173
Agentes EBDI
Uma limitação aos agentes BDI é o fato de apenas considerar o aspecto
decisório, desconsiderando por completo outras atitudes mentais naturais
da cognição humana.
Um exemplo são as emoções
Os agentes EBDI representam um melhoramento aos agentes BDI, dado
que incorporam emoções ao modelo já estudado.
Emoções são reações cognitivas para situações familiares ao agente.
Podem ser classificadas em dois grupos:
Emoções Primárias emoções reativas que agem como “filtros” ajustando
a prioridade das crenças do agente
Emoções Secundárias são as emoções que resultam de processos mais
elaborados de avaliação cognitiva, onde experiências
prévias do agente, bem como atitudes mentais de mais
alta ordem (como personalidade) são consideradas
133 of 173
Agentes EBDI
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
E = E0
B = B0
I = I0
// initial emotions
// initial beliefs
// initial intentions
while true
Bp = brf−see( Environment )
Bm = brf−msg( Content )
E = euf1( E, I , Bp + Bm )
B = brf−in( E, I , B + Bp + Bm )
D = options( B, I )
I = filter ( E, B, D, I )
E’ = E
E = euf2( E, I , B )
if time permits and E != E’ then
B = brf−in( E, I , B )
D = options( B, I )
I = filter ( E, B, D, I )
end−if
P = plan( I , Ac )
execute( P )
end−while
134 of 173
Agentes EBDI
brf-see mapeia as percepções provenientes do ambientes em crenças
brf-msg mapeia mensagens de comunicação recebidas pelo agentes em
crenças
euf1 define as emoções primárias com base nas crenças produzidas
anteriormente
brf-in função de revisão da base de crenças iniciais em relação às
novas atitudes mentais produzidas
options relaciona as crenças com as intenções para definir novos
desejos a serem alcançados
filter filtra a base de regras de intenções em função das atitudes
mentais atualizadas
euf2 define as emoções secundárias
plan constroi um plano de ações com base nas intenções ativas e
no repertório de ações (Ac) do agente
execute executa as ações no plano ativo
135 of 173
Abordagens Multi-Agentes
136 of 173
Sistemas Multi-Agentes
Problemas complexos geralmente demandam a execução de um grande
número de passos, envolvendo a aplicação de uma grande diversidade de
conhecimentos especı́ficos.
Sistemas multi-agentes (SMA) trabalham através da coordenação de
múltiplos agentes criados para resolver problemas especı́ficos ⇒ “Role
playing strategy”
Duas grandes abordagens
1. SMA descentralizado
2. SMA centralizado
137 of 173
SMA Descentralizado
Cada agente é capaz de comunicar-se com outros agentes próximos
através de um protocolo de comunicação previamente estabelecido.
138 of 173
SMA Centralizado
Agem colaborativamente através do compartilhamento de recursos
Memória: todos os agentes apresentam um único modelo mental do
ambiente.
Modelo deliberativo: a deliberação de ações é feita ou por um agente
central ou por um processo colaborativo.
139 of 173
SMA Centralizado - Blackboard
Analogia a um quadro negro = ‘o que um escreve, todos vêem’
Cada agente tem seu conjunto de sensores do ambiente, porém,
compartilham uma memória relativamente ao processo cognitivo
Deliberação única a partir da composição dos percepts de todos
140 of 173
SMA Centralizado - Deliberador Central
Implementa o conceito de ‘agente chefe’
Cada agente tem seu conjunto de sensores que (quando requisitados)
alimentam o modelo mental de um agente centralizador que delibera para
o grupo
O agente centralizador também pode ter seu próprio conjunto de sensores
141 of 173
SMA Centralizado - Leilão
Uma variante ao modelo de deliberação central onde todos os agentes
podem ‘dar um lance’
Cada agente tem seu conjunto de sensores e modelos mentais
O agente centralizador é responsável por propor planos alternativos e
contabilizar os lances dados e definir o ‘vencedor’
142 of 173
SMA Centralizado - Votação
Nesta abordagem a deliberação é descentralizada.
Cada agente pode sugerir um plano de ação a ser tomado pelo grupo
Todos os agentes ‘votam’ nos planos
O agente centralizador é responsável por contabilizar os votos dados e
definir o ‘vencedor’
143 of 173
Aplicação de Estudo
Storytelling Interativo
144 of 173
Psicologia Computacional
Emoção
Personalidade
Tomada de Decisão
Representação de Conhecimento
145 of 173
O que é Psicologia Computacional?
É uma nova área interdisciplinar de pesquisa que envolve estudar os
modelos das ‘ciências cognitivas’: filosofia, psicologia experimental,
linguı́stica, antropologia, neurociência e aplicá-los a áreas da computação
como inteligência artificial
Envolve aspectos amplos como:
Paradigmas da Modelagem Cognitiva Conexionista, Modelos Bayesianos,
Sistemas Dinâmicos, Modelos Declarativos (baseados em
lógica), Restrições
Modelos Cognitivos Memória Episódica, Memória Semântica, Categorização,
Tomada de Decisão, Raciocı́nio Indutivo,
Raciocı́nio Dedutivo (atitudes mentais), Competências e
Habilidades, Modelos de Aprendizagem Implı́cita, Modelos de
Atenção e Foco, Psicologia do Desenvolvimento,
Psico-linguı́stica, Personalidade e Desenvolvimento Social,
Processamento da Informação Visual, Controle Motor, etc.
146 of 173
Emoções
Computação Afetiva é definida como “a parte da computação que se relaciona
com, surge das, ou deliberadamente influencia as emoções”
Emoção reação fisiológica/cognitiva à interpretação de estı́mulos externos
(fisiologia vs cognição)
Agentes Afetivos são agentes capazes de manter um conjunto de estados internos
(chamados emoções) a partir da interpretação/avaliação de
situações
Estados internos não são perceptı́veis externamente; estes porém,
afetam a fisiologia dos agentes de forma a exteriorizá-los
Emoções vs Sentimentos alguns autores fazem a distinção, sugerindo que
sentimentos estão apenas relacionados com reações fisiológicas,
mesmo quando nenhuma cognição está envolvida: dor, fome,
cansaço, etc.
147 of 173
Emoções
Teoria Primitiva origens na Filosofia do final do século XIX e inı́cio do século XX com Darwin,
McDougall e outros
Teoria Fenomenológica como o nome sugere, estuda o ‘fenômeno’ da emoção, ao invés de tentar
definı́-la
Teoria Comportamentalista se baseia no estudo do comportamento emocional, ou seja, aquilo que
pode ser observado e medido
Teoria Fisiológica estudo das reações fisiológicas que ocorrem no corpo humano quando um indivı́duo
está experimentando emoções
Teoria Cognitiva estudo das relações entre o processo emocional e as faculdades cognitivas do
indivı́duo
Teoria Ambiciosas engloba um conjunto de autores que tentaram desenvolver ‘modelos completos’
com o intuito de explicar emoções
Teorias das Emoções Especı́ficas a ideia aqui é tentar explicar cada emoção separadamente por uma
teoria própria
Teoria Desenvolvimentalista teoriza que emoções são o resultado do processo natural do
desenvolvimento humano
Teoria Social alega que emoções são fruto de relações sociais, ou seja, reações ao convı́vio com
outros indivı́duos
Teoria Clı́nica estuda emoções sob o ponto de vista das psicopatias e terapias
Teoria do Indivı́duo, Ambiente e Cultura é uma teoria que tenta separar as reações emocionais como
tendo um de três possı́veis origens
Teorias fora da Psicologia com origens na Filosofia, História, Antropologia, Sociologia, Cultura, etc.
148 of 173
Metáforas Computacionais para Emoções
Appraisal representam a classe de arquiteturas que consideram que
emoções resultam da avaliação cognitiva da situação corrente
comparativamente as experiência prévias do indivı́duo
Dimensional são as arquiteturas que modelam emoções como um espaço
de dimensões (2 ou 3) contı́nuas
Anatômicas se baseiam nas teorias fisiológicas da Psicologia
Racional usa um modelo inspirado no comportamento emocional ao
invés de tentar apresentar ‘detalhes de implementação’
computacional
149 of 173
Metáforas Computacionais para Emoções
150 of 173
Modelo OCC
O modelo proposto por Ortony, Clore & Collins se tornou um dos
modelos mais populares entre os pesquisadores da computação
O OCC se baseia em cinco passos:
1 Classificação avalia a situação corrente (evento, agente ou objeto)
especificando a qual categoria emocional este afeta
2 Quantificação determina a intensidade de emoção sendo experimentada
3 Interação valida as relações da nova percepção com o estado
emocional corrente do indivı́duo
4 Mapeamento inicialmente o OCC categoriza 22 possı́veis emoções às
quais podem ser mapeadas em um conjunto menor se
necessário
5 Expressão é a realização da emoção sob a forma de um
comportamento fı́sico (p.ex. expressão facial)
151 of 173
Modelo OCC
152 of 173
Modelo OCC - Classificação
A fim de permitir que uma situação corrente seja apropriadamente
avaliada em estados emocionais, o agente faz uso de três bases de
conhecimento:
Attitudes descreve as relações emocionais do agente com os objetos.
P.ex.: o agente 007 gosta de frutas
Standards desvreve as relações sociais do agente com outros agentes.
P.ex.: o agente 007 é amigo da agente M
Goals descreve os objetivos do agente no ambiente. P.ex.: não
passar fome
Qual a reação emocional do agente 007 ao receber um pacote de maçãs
da agente M ?
153 of 173
Modelo OCC - Classificação
A fim de permitir que uma situação corrente seja apropriadamente avaliada em
estados emocionais, o agente faz uso de três bases de conhecimento:
Attitudes descreve as relações emocionais do agente com os objetos.
P.ex.: o agente 007 gosta de frutas
Standards desvreve as relações sociais do agente com outros agentes.
P.ex.: o agente 007 é amigo da agente M
Goals descreve os objetivos do agente no ambiente. P.ex.: não passar
fome
Qual a reação emocional do agente 007 ao receber um pacote de maçãs da
agente M ?
Avaliando as consequência do evento para outros: Pena (pity) com relação
ao agente M (que agora não tem mais o pacote de maçãs)
Avaliando as consequências do evento para si: satisfação (satisfaction) por
ter recebido as frutas
Em seguida, o agente avalia as ações do agente, resultando em: admiração
(admiration)
E por fim, avalia aspectos do objeto, resultando em amor (love)
154 of 173
Modelo OCC - Quantificação
O cálculo da intensidade dos estados emocionais é realizado
separadamente para eventos, agentes e objetos
Para eventos: é determinado em função do quanto o agente deseja que
aquele evento ocorra (desirability)
Para ações de agentes: é determinado em função do quanto o agente
valoriza aquela ação(praiseworthiness)
Para objetos: é determinado em função do quanto aquele objeto atrai a
atenção do agente (appealingness)
155 of 173
Modelo OCC - Interação
A avaliação do novo estado emocional do agente deve levar em
considerações seu estado emocional corrente. Por exemplo:
Imagine que o agente está irritado por não ter conseguido realizar uma
ação num passado recente
De repente, alguém lhe oferece uma fruta
Tal evento não deve fazer o agente mudar para o estado ‘contente’
porém certamente deveria fazê-lo diminuir a intensidade de seu estado
corrente ‘irritado’
156 of 173
Modelo OCC - Mapeamento
Muito frequentemente o agente possui mais estados emocionais do que
sua capacidade fı́sica de expressá-los
Neste caso, estados emocionais ‘complexos’ devem ser mapeados para
outros estados (em função do repertório do agente)
Uma alternativa: usar o modelo das sete emoções básicas de Paul Ekman
(raiva, nojo, desprezo, alegria, tristeza, surpresa e medo)
Outro aspecto a considerar: emoções ‘positivas’ e ‘negativas’
157 of 173
Modelo OCC - Expressão
Por definição, cada agente possui um conjunto de atuadores
O processo de expressão, consiste em utilizar esses atuadores para
representar ações que serão interpretadas como reações emocionais
Exemplo: animação de expressões faciais (FACS)
Outro exemplo: comportamento da postura corporal
A lista de possı́veis comportamentos depende das capacidade do agente
em si e deve ser considerada caso por caso
158 of 173
Modelo OCC - Exercı́cio
Projetar e implementar um sistema de storytelling que contenha 2
personagens (herói e vilão)
Descrever o ambiente onde esses personagens habitam. Incluir prédios,
objetos, ações possı́veis e eventos externos
Implementar cada agente para avaliar a situação (modelo EBDI) de
forma autônoma
159 of 173
Personalidade
Personalidade compreende certos padrões de comportamentos que são
permanentes ou que, pelo menos, variam muito lentamente
Teorias modernas defendem que uma definição de personalidade deve
considerar (pelo menos) os seguintes aspectos:
A forma como o indivı́duo é visto pela sociedade
Caracterı́sticas comportamentais estáveis e duradouras
Individualidade
Gênero e Etnia
Valores culturais e costumes
160 of 173
Personalidade
A descrição da personalidade deve responder a três perguntas básicas:
Descrição da Personalidade medidas de comparação entre diferenças
individuais. Abordagens: categorização, traços ou fatores.
Dinâmica da Personalidade descreve os mecanismos como uma
personalidade é expressa, com foco nas motivações para
um dado comportamento
Desenvolvimento da Personalidade descreve como e quando ocorrem
mudanças em uma personalidade
161 of 173
Personalidade - Teorias
Teoria Psicanalı́tica o inconsciente define processos mentais que determinam
o desenvolvimento da personalidade (ex.: Sigmund Freud)
Teoria Behaviorista a personalidade é o resultado de estı́mulos aprendidos.
Personalidade = Comportamento (ex.: Ivan Pavlov)
Teoria de Traços associam-se ‘adjetivos’ a indivı́duos como indicativos de
seu comportamento (ex.: Gordon Allport)
Teoria Humanista enfatiza personalidade como resultado de valores
aprendidos e de experiências positivas (em detrimento das
negativas) (ex.: Abraham Maslow)
Teoria Social-Cognitiva extensão da teoria behaviorista com a adição de
uma componente cognitiva (ex.: Alfred Bandura)
Teoria Biológica defende que ‘traços’ são o resultado de processos biológicos
(como a evolução natural) (ex.: Jean Piaget)
162 of 173
Personalidade - Modelos
Cognitive Styles “cada indivı́duo é capacidado com um conjunto único de qualidades
mentais para interagir com o mundo. Essas capacidades se manifestam
como comportamentos, maneirismos e produtos especı́ficos, que são
denominados coletivamente como estilo”. Os quatro estilo dominantes
são:
Concrete Sequential (CS) pontual, trabalhador pesado, um pouco rı́gido
Abstract Sequential (AS) aquele que ‘vive em sua mente’, distraı́do,
imaginativo
Abstract Random (AR) aquele que tem paixão por tudo o que faz,
religioso, com ‘conexões cósmicas’
Concrete Random (CR) criativo, centrado, muito intuitivo, divertido
163 of 173
Personalidade - Modelos
Modelo OCEAN defende a existência de cinco traços universais (Big Five):
Openness inventivo/curioso vs consistente/cauteloso
Conscientiousness eficiente/organizado vs
despreocupado/descuidado
Extraversion extrovertido/energético vs solitário/reservado
Agreeableness amigável/compassivo vs frio/rude
Neuroticism sensı́vel/nervoso vs seguro/confiante
http://www.outofservice.com/bigfive/
164 of 173
Personalidade - Modelos
16 Basic Desires Steven Reiss defende que o comportamento humano é motivado por 16
‘necessidades psicológicas’ (chamados de desejos básicos):
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
165 of 173
Power: desejo por liderança, influência, poder
Independence: desejo por liberdade e autoconfiança
Curiosity: desejo por conhecimento
Acceptance: desejo por uma auto-imagem positiva e auto-estima
Order: desejo por organização, ordem, limpeza, estabilidade
Saving: desejo de colecionar posses
Honor: desejo de apoiar valores morais, lealdade
Idealism: desejo por igualdade e justiça
Social Contact: desejo por amizades e diversão
Family: desejo de formar famı́lia, casar, ter filhos
Status: desejo por saúde, atenção, prêmios, tı́tulos
Vengeance: desejo por vencer, competir
Romance: desejo por afeição e sexo
Eating: desejo por comida, nutrição
Physical Exercise: desejo por estar em boa forma, saudável
Tranquility: desejo por relaxamento e segurança
Tomada de Decisão
Tomada de decisão autônoma envolve o processo de: (1) coleta de
informações acerca do problema; (2) elicitação de um conjunto de
soluções alternativas; (3) avaliação (mensuração da qualidade) de cada
possı́vel solução; (4) escolha de uma solução em particular e (5) execução
da solução.
Existem diversas teorias que permitem modelar tomada autônoma de
decisão. Algumas delas são:
166 of 173
Tomada de Decisão
Maximum Expected Utility permite modelar raciocı́nio sobre incerteza de maneira a
associar a cada opção o resultado de uma função de avaliação de
qualidade (chamada utilidade) E (U); onde U é a utilidade de uma opção
P
especı́fica, dada por N
i=1 U(Wi )pi , onde pi é a probabilidade de um
dado resultado i ocorrer e Wi é o valor dado pelo agente decisor caso o
resultado i seja realizado.
Prospect Theory é uma variante da MEU realizada em duas etapas:
1. na etapa de edição, uma lista de possibilidades é produzida através
de heurı́sticas, de forma a classificar cada possı́vel solução em
ganhos ou perdas
2. e então, na etapa de avaliação um clássico processo de utilidade é
executado
Fast & Frugal é um processo de tomada de decisão com incerteza, utilizando para isso
restrições na busca, conhecimento e tempo. A ideia aqui é imitar o
processo de tomada de decisão em processos crı́ticos (aqueles onde “o
pior que pode acontecer é não acontecer nada”, ou seja, qualquer
decisão, mesmo que incorreta ou imprecisa é melhor do que decisão
nenhuma).
São exemplos de processos crı́ticos: auxı́lio a controle de tráfego aéreo,
apoio a emergências médicas, etc.
167 of 173
Tomada de Decisão
168 of 173
Exercı́cio Final
Montar um agente capaz de:
1. Andar pelo cenário via comandos do usuário do tipo Faça:Nome da Ação
2. Enxergar objetos no chão
3. Enxergar outros agentes
4. Trocar mensagens com outros agentes:
Está ocorrendo algum evento?
Onde fica <objeto>?
169 of 173
Projeto Final
170 of 173
Projeto Final
Objetivo Fomentar a prática para fortalecer os conceitos teóricos
aprendidos
Descrição Implementar um SMA com base em algum dos modelos
vistos durante o semestre
Projetar um ambiente dinâmico, virtual, persistente, povoado
por múltiplos agentes que co-habitam e respondem de forma
inteligente a estı́mulos coletados no ambiente
O ambiente pode ser modificado pelos próprios agentes (ao
executarem ações) ou por comandos externos provenientes do
usuário
O resultado deve ser apresentado na forma de uma animação
interativa 3D
171 of 173
Projeto Final
Equipes de 2 alunos
O projeto deverá ser entregue em duas etapas:
1. Especificação textual/gráfica do ambiente, agentes e objetivos da simulação
(Design)
2. Protótipo que valida a especificação proposta na fase anterior
(Implementação)
A fase de design deverá ser entregue no dia 28/05/2014 com
apresentação em sala de aula e corresponderá a 15% da nota do Projeto
Final
A fase de implementação deverá ser entregue no dia 25/06/2014 com
apresentação em sala de aula e corresponderá a 85% da nota do Projeto
Final
172 of 173
Projeto Final
Sugestões de Temas:
cada agente precisa atender suas necessidades básicas (alimentação,
abrigo, reprodução) e devem lidar com estı́mulos externos (chuva, frio,
calor)
Savana Virtual diversos tipos de animais co-existem num ambiente (plantas, herbı́voros,
carnı́voros, etc.);
Residência uma famı́lia de agentes deve conviver em uma residência cumprindo as tarefas
usuais do dia-a-dia (pai, mãe, filhos, pets, etc.)
Praça Pública pessoas convivendo em ambiente público (cliente, vendedor, funcionário banco,
etc.)
Mars Rover conjunto de robôs treinados para exploração de minérios em um planeta distante
(explorador, escavador, coletor, etc.)
Conto de Fadas conjunto de personagens fictı́cios cooperam com o usuário para a contação de
estórias animadas (prı́ncipe, princesa, bruxa, ogro, etc.)
173 of 173

Documentos relacionados