Logo Passei Direto
Buscar

Aula_01_Agentes

User badge image
Ian Kessler

em

Ferramentas de estudo

Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Inteligência Artificial
Aula 01 - Agentes Inteligentes
Rogério Pereira Junior
rogeriopereirajunior@gmail.com
5 de setembro de 2025
IES
Santa Catarina
São José
Definição de Agente
Artefato equipado de sensores com capacidade para perceber o ambiente e agir sobre ele
por meio de atuadores
Um agente é uma entidade que:
Percebe o ambiente através de sensores.
Toma decisões com base em um processo de raciocínio (regra, modelo ou aprendizado).
Age sobre o ambiente utilizando atuadores.
1 / 90
Analogia com o corpo humano
Sensores (Percepção):
Órgãos dos sentidos: olhos (visão),
ouvidos (audição), nariz (olfato), pele
(tato), língua (paladar).
Exemplo de IA: uma câmera, um
microfone, sensores de temperatura,
GPS
Atuadores (Ação)
Partes do corpo que realizam ações:
mãos, pernas, boca, cordas vocais.
Exemplo em IA: motores de um robô,
braços robóticos, sintetizador de voz.
Exemplifiquem sensores e atuadores para um Agente de Software
2 / 90
Exemplo prático de comparação
Humano:
Olhos veem uma bola ->
cérebro decide chutar -> pernas
chutam.
Agente IA (robô de futebol):
Câmera detecta a bola ->
algoritmo decide ação -> motor
da perna robótica chuta a bola.
3 / 90
Estrutura do Funcionamento de um Agente Inteligente
Sensores -> Percepção do
ambiente
Captam sinais (visão, som,
temperatura, etc.).
Exemplo: uma câmera detecta
um objeto na frente do robô.
Processamento -> Raciocínio /
tomada de decisão
O agente interpreta os sinais
recebidos.
Pode envolver algoritmos de IA
(regras, heurísticas,
aprendizado de máquina).
Exemplo: decidir se o objeto
detectado é um obstáculo ou
um alvo.
4 / 90
Estrutura do Funcionamento de um Agente Inteligente
Memória -> Histórico de
percepções
O agente não deve reagir
apenas ao presente, mas
também usar a sequência de
percepções passadas.
Exemplo: um aspirador
inteligente lembra por onde já
passou para não limpar o
mesmo lugar repetidamente.
Atuadores -> Ação no
ambiente
O agente executa sua decisão.
Exemplo: mover-se para a
esquerda para evitar o
obstáculo.
5 / 90
Exemplo Prático - Carro autônomo
Carro autônomo
Sensores: câmeras, radar, LIDAR.
Percepções: posição dos carros,
pedestres, sinais de trânsito.
Memória: trajetória percorrida, limites
de velocidade já lidos, padrões de
tráfego.
Processamento: interpretar a situação e
prever movimentos de outros veículos.
Ação: acelerar, frear ou desviar.
6 / 90
Mapeando percepções em ações
O comportamento de um agente é definido pela sua função.
A função agente tem o objetivo de mapear as possiveis ações por
meio das sequencias de percepções disponíveis no armazenamento
desse agente.
Formalmente, pode ser vista como:
f : P∗ → A
Onde:
P∗ = conjunto de todas as sequências possíveis de percepções;
A = conjunto de ações possíveis.
O programa do agente é uma implementação concreta da função
do agente
Agente = arquitetura + programa
7 / 90
Exemplo: O mundo do aspirador de pó
Percepções: Local e Estado
[A, Sujo]
Ações: Esquerda, Direita, Aspirar, NoOp
8 / 90
Tabulação parcial da função do agente aspirador de pó
Um função de agente pode ser implementada por meio de uma tabela de possíveis ações
relacionadas a uma sequencia de percepções
9 / 90
Programa do agente aspirador de pó
10 / 90
Atividade 1
Faça uma implementação simples em python do agente aspirador de
pó
11 / 90
Atividade 1 - Gabarito
class Ambiente:
def __init__(self):
self.estado = {"A": "sujeira", "B": "limpo"}
class Aspirador:
def __init__(self):
self.local = "A"
def perceber(self, ambiente):
return ambiente.estado[self.local]
def agir(self, ambiente):
percepcao = self.perceber(ambiente)
if percepcao == "sujeira":
ambiente.estado[self.local] = "limpo"
print(f"Limpando posição {self.local}")
else:
self.local = "B" if self.local == "A" else "A"
print(f"Movendo para posição {self.local}")
# Teste
ambiente = Ambiente()
aspirador = Aspirador()
for _ in range(4):
aspirador.agir(ambiente)
12 / 90
Atividade 1 - Gabarito
class Ambiente:
def __init__(self):
self.estado = ["sujeira", "limpo"]
def mostrar(self):
print(f"Ambiente: {self.estado}")
class Aspirador:
def __init__(self):
self.posicao = 0 # Começa na posição A (índice 0)
def perceber(self, ambiente):
return ambiente.estado[self.posicao]
def agir(self, ambiente):
percepcao = self.perceber(ambiente)
if percepcao == "sujeira":
ambiente.estado[self.posicao] = "limpo"
print(f"Limpando posição {'A' if self.posicao == 0 else 'B'}")
else:
print(f"Nada para limpar em {'A' if self.posicao == 0 else 'B'}")
self.mover()
def mover(self):
self.posicao = 1 if self.posicao == 0 else 0
print(f"Movendo para posição {'A' if self.posicao == 0 else 'B'}")
ambiente = Ambiente()
aspirador = Aspirador()
print("Estado inicial:")
ambiente.mostrar()
for _ in range(4):
aspirador.agir(ambiente)
print("\nEstado final:")
ambiente.mostrar()
13 / 90
Exemplo de agentes com sequencia de percepções
Agente Com apenas percepção atual Com sequência de percepções (me-
mória)
Robô aspirador Fica preso em ciclos, limpando o
mesmo canto repetidamente.
Constrói um mapa mental da casa,
evita áreas já limpas e cobre todo o
ambiente.
Carro autônomo Só reage ao semáforo no momento,
podendo frear bruscamente ou errar a
rota.
Lembra estados anteriores (verde →
amarelo → vermelho), prevê rotas e
evita acidentes.
Assistente virtual de
voz
Interpreta “E amanhã?” sem contexto,
dando resposta incoerente.
Lembra a pergunta anterior sobre o
clima e responde corretamente sobre
“amanhã”.
Agente financeiro Compra/vende baseado no preço
atual, sem entender tendências.
Analisa histórico de preços, identifica
padrões de alta/queda e decide de
forma estratégica.
Robô de resgate Busca apenas onde o sensor aponta
agora, podendo revisitar áreas vazias.
Lembra áreas já exploradas e integra
sinais para prever riscos estruturais.
Tabela: Comparação entre agentes com e sem memória de percepções.
14 / 90
Dificuldade central
Dificuldade em definir e implementar funções de agente que
consigam lidar com ambientes de alta complexidade, onde:
As percepções são numerosas e variadas.
Espaço de ações possíveis é gigantesco.
O agente deve tomar decisões eficazes em tempo hábil.
Exemplo: Xadrez
Um agente inteligente dedicado ao jogo de xadrez deve ter sua função
de agente limitada, de modo que não leve milhões de anos para fazer
uma jogada e que tenha memoria suficiente para armazenar jogadas
possíveis, considerando um horizonte de poucas jogadas a frente
15 / 90
Dificuldade central - Exemplo Xadrez
Horizonte de busca limitado
O agente considera apenas um número
finito de jogadas à frente (por exemplo,
4 ou 6 movimentos).
Isso é chamado de profundidade de
busca.
Memória controlada
Em vez de armazenar todas as partidas
possíveis, o agente guarda apenas as
jogadas mais promissoras (heurísticas)
e posições já avaliadas (tabelas de
transposição);
16 / 90
Dificuldade central - Exemplo Xadrez
Agente inteligente
Assim, a função agente no xadrez é projetada para:
Limitar o horizonte de busca;
Reduzir a explosão combinatória;
Manter memória suficiente, mas não infinita;
Tomar decisões em tempo hábil (segundos ou milissegundos, não séculos).
17 / 90
Agentes Racionais
18 / 90
Racionalidade x Onisciência x Autonomia
Racionalidade -> faz o melhor possível com a informação que tem.
Onisciência -> teria toda a informação possível (utopia, usado só
como referência).
Autonomia -> capacidade de aprender e agir por conta própria, sem
depender de instruções externas.
19 / 90
Medida de Desempenho
PEAS
Ao projetar um agente, a primeira etapa deve ser sempre
especificar o ambiente de tarefa
Performance = Medida de Desempenho
Environment = Ambiente
Actuators = Atuadores
Sensors = Sensores
20 / 90
PEAS
Robô aspirador de pó
Medida de desempenho: uma pontuação para cada quadrado
limpo em um periodo de tempo (9 quadrados limpos a cada minuto)
O ambiente do robô é previamente conhecido, ainda que a sujeira
possa variar de quadro a quadro
As ações que o robô pode executar são: mover-seà esquerda,
mover-se à direita, aspirar e parar.
Percepções: o robô identifica o quadrado onde se encontra e
verifica se ele tem sujeira ou não
21 / 90
PEAS
Exemplo (Sala de aula)
Desempenho: Notas dos alunos;
Ambiente: Grupo de alunos;
Atuadores: Exercícios, avaliações, aparelhos eletrônicos;
Sensores: Sentidos.
22 / 90
Robô de seleção de peças
Medida de desempenho: ????
Ambiente: ????
Atuadores: ????
Sensores: ????
23 / 90
Robô de seleção de peças
Medida de desempenho: porcentagem de peças em bandejas
corretas
Ambiente: esteira transportadora com peças, bandejas
Atuadores: braço e mão articulados
Sensores: câmeras e sensores de posicionamento
24 / 90
Agente racional - Exemplos
25 / 90
Agente racional - Exemplos
26 / 90
Comprar Dólar
Agente
class Agente:
def __init__(self, estado=None, funcaoAgente=None):
self.estado = estado
self.funcaoAgente = funcaoAgente
self.historicoPercepcoes = []
def mostraEstado(self):
return str(self.estado)
def vivo(self):
return hasattr(self, 'vivo') and self.vivo
def percepcao(self):
entrada = input("Entre com dados: ") # Percepções
self.historicoPercepcoes.append(entrada)
def __str__(self):
return self.__class__.__name__
a = Agente()
a.percepcao()
a.historicoPercepcoes
27 / 90
Ambiente
class Ambiente:
def __init__(self, estadoInicial = None):
self.estado = estadoInicial
self.objetosNoAmbiente = []
self.agentes = []
def percepcao(self, agente):
# Define as percepções do agente
return None
def adicionaAgente(self, agente):
self.agentes.append(agente)
def adicionaObjeto(self, obj):
self.objetosNoAmbiente.append(obj)
am = Ambiente()
am.adicionaAgente(a)
28 / 90
Agente de compra e venda de dolares
# Caso pratico: Agente de compra e venda de dolares
serieHistoricoDolar = [] # São nossas percepções
with open('bcdata.sgs.10813.csv', encoding='utf−8') as arquivo:
linhas = arquivo.readlines()
for linha in linhas[1:]:
partes = linha.strip().split(';')
valor_str = partes[1].replace('"', '').replace(',', '.')
valor_float = float(valor_str)
serieHistoricoDolar.append(valor_float)
import matplotlib.pyplot as plt
x = [i for i in range(len(serieHistoricoDolar))]
y = list(reversed(serieHistoricoDolar))
plt.plot(x,y)
plt.xlabel('Periodo (dias)')
plt.ylabel('Valor do dolar em Reais')
plt.title('Variação do dolar de Jan−2023 a Jun−2023')
plt.show()
29 / 90
Média Móvel
Média móvel é uma técnica estatística usada para suavizar flutuações
em séries temporais e destacar tendências ao longo do tempo. Em vez
de olhar para cada ponto isoladamente, ela calcula uma média que se
"move"conforme novos dados são adicionados.
def mediasMoveis(serie):
medias = []
for i,v in enumerate(serie):
if i == 0:
m = v
medias.append(m)
else:
m = m + (v − m)/ (i +1)
medias.append(m)
return medias
plt.plot(x,y)
plt.plot(x, mediasMoveis(y), label = 'Média Móvel')
plt.xlabel('Periodo (dias)')
plt.ylabel('Valor do dolar em Reais')
plt.title('Variação do dolar de Dez−2024 a Jun−2025')
plt.show()
30 / 90
funcaoAgenteCompraDolar
NOSSO AGENTE INTELIGENTE VAI DECIDIR ENTRE COMPRAR E VENDER DÓLARES
AQUI ESTAMOS ENCAPSULANDO O CONHECIMENTO A RESPEITO DO ASSUNTO
def funcaoAgenteCompraDolar(media, valor):
## Regras/tabela de decisão
if valor >= media:
return False, valor, media
else:
return True, valor, media
31 / 90
Agente Cambio
class AgenteCambio(Agente):
def __init__(self, estadoInicial = None, funcaoAgente = None):
super().__init__(estadoInicial, funcaoAgente)
self.observacao = 0
self.mediaAtual = 0
self.medias = []
def atualizaEstado(self,valor):
self.observacao +=1
if self.observacao == 1:
self.mediaAtual = valor
else:
self.mediaAtual = self.mediaAtual + (valor − self.mediaAtual)/(self.observacao +1)
self.estado.append(valor) # seria as cotações
self.medias.append(self.mediaAtual)
def percepcao(self, valorAtual): # a partir de uam cotação fazer a analise
self.atualizaEstado(valorAtual)
def saida(self):
return self.funcaoAgente(self.medias[−1], self.estado[−1]) # A ultima
ac = AgenteCambio([], funcaoAgenteCompraDolar)
for i in y[:10]:
ac.percepcao(i)
print(ac.saida(), end=", ")
32 / 90
AgenteCambioDesempenho
Sera que podemos ganhar dinheiro com esse agente ?
Precisamos ter alguma medida de desempenho (qual lucro que estamos tendo?)
class AgenteCambioDesempenho(AgenteCambio):
def __init__(self, estadoInicial=None, funcaoAgente=None, saldoR = 0, saldoD = 0):
super().__init__(estadoInicial, funcaoAgente)
self.saldoReal = saldoR
self.saldoDolar = saldoD
self.evolucaoReal = []
def comprar(self): # Ação comprar
if self.saldoReal > 0:
self.saldoDolar += self.saldoReal/self.estado[−1]
self.saldoReal = 0
def vender(self):
if self.saldoDolar > 0:
self.saldoReal += self.saldoDolar ∗ self.estado[−1]
self.saldoDolar = 0
self.evolucaoReal.append(self.saldoReal)
def desempenho(self):
print("DESEMPENHO")
return self.evolucaoReal[−1] − self.evolucaoReal[0]
33 / 90
AmbienteFinanceiro
class AmbienteFinanceiro(Ambiente):
def __init__(self, estadoInicial):
super().__init__(estadoInicial)
# def percepcao(self, agente):
# for i in self.estado: # estado é a cotação do dollar
# for ag in agentes: # para cada agente vamos perceber o estado do ambiente
# ag.percebe(i)
# return
def executaAmbiente(self):
for gst in self.estado:
for ag in self.agentes:
ag.atualizaEstado(gst)
acaoComprar = ag.saida()
if acaoComprar[0] == True:
ag.comprar()
else:
ag.vender()
def desempenhoAgentes(self):
desempenho = []
for i, ag in enumerate(self.agentes):
desempenho.append((i,ag.desempenho()))
return desempenho
34 / 90
Botando nosso agente para trabalhar
# Botando nosso agente para trabalhar
ag = AgenteCambioDesempenho([], funcaoAgenteCompraDolar, 1000, 0) # considerando investimento de 1000
reais
amb = AmbienteFinanceiro(y)
amb.adicionaAgente(ag)
amb.executaAmbiente()
desempenho = amb.desempenhoAgentes()
print("Desempenho geral: (Agente, Lucro) ", desempenho)
# Evolução real
x2 = list(range(len(ag.evolucaoReal)))
plt.plot(x2, ag.evolucaoReal)
plt.xlabel("Transações Efetuadas")
plt.ylabel("Saldo em reais")
plt.title("Evolução do investimento no periodo")
plt.show()
35 / 90
Aspirador 2.0
Aspirador
36 / 90
Aspirador
37 / 90
Aspirador
38 / 90
Atividade 2
Aumentar número de posições (por exemplo, 5 ou 10) e adaptar o
movimento para esquerda/direita com limites.
Adicionar obstáculos ou posições inacessíveis.
Implementem um contador de energia que diminui a cada ação.
Criem um agente com memória que evita visitar posições já limpas.
39 / 90
Atividade 2
import random
class Ambiente:
def __init__(self, tamanho=10):
self.estado = []
for _ in range(tamanho):
# 70% chance de sujeira, 20% limpo, 10% obstáculo
valor = random.choices(["sujeira", "limpo", "obstáculo"], [0.7, 0.2, 0.1])[0]
self.estado.append(valor)
def mostrar(self):
print("Ambiente:")
for i, estado in enumerate(self.estado):
print(f"Posição {i}: {estado}")
40 / 90
Atividade 2
class Aspirador:
def __init__(self, tamanho_ambiente):
self.posicao = 0
self.energia = 20
self.memoria = set()
self.tamanho = tamanho_ambiente
def perceber(self, ambiente):
return ambiente.estado[self.posicao]
def agir(self, ambiente):
if self.energiaprint(f" Movendo para posição {self.posicao}")
else:
print(f" Movimento bloqueado. Mantendo posição {self.posicao}")
# Inicialização
ambiente = Ambiente(tamanho=10)
aspirador = Aspirador(tamanho_ambiente=10)
print(" Estado inicial do ambiente:")
ambiente.mostrar()
# Ciclo de ações
while aspirador.agir(ambiente):
pass
print("\n Estado final do ambiente:")
ambiente.mostrar()
42 / 90
Natureza dos ambientes
Natureza dos ambientes
Dificuldade para a construção de agentes inteligentes: quão
completa pode ser a descrição de seu comportamento
Como vimos anteriormente:
robô aspirador: função de agente bem delimitada
robô destinado a jogar xadrez: apresenta um desafio, pois a quantidade de jogadas possíveis
chega a valores astronômicos
A caracterização do ambiente onde o agente atuará vai determinar o
sucesso de sua execução.
43 / 90
Completamente Observável x Parcialmente Observável
Completamente observável: o agente tem acesso a todas as informações relevantes do
ambiente no momento da decisão.
Parcialmente observável: o agente só vê parte do ambiente, precisando estimar ou
lembrar o resto.
Completamente observável: Jogo de xadrez no computador (o tabuleiro inteiro é visível ao
jogador e ao agente).
Parcialmente observável: Games
44 / 90
Determinístico x estocástico
Determinístico: a ação do agente leva a um resultado sempre previsível.
Estocástico: existe incerteza no resultado da ação, mesmo que o agente saiba o que fez.
Determinístico: Jogo da velha (os movimentos têm efeito fixo)
Estocástico: Carro autônomo (mesmo com análise, há fatores aleatórios que influenciam o
resultado)
45 / 90
Episódico x sequencial
Episódico: cada decisão do agente é independente das anteriores.
Sequencial: as ações influenciam estados futuros e decisões seguintes.
Episódico: Braço Mecânico (colocar a peça agora não afeta a próxima vez em que aparecer
outra peça)
Sequencial: Jogo de tabuleiro (Cada jogada feita influencia diretamente as jogadas futuras).
46 / 90
Estático x dinâmico
Estático: o ambiente não muda enquanto o agente decide sua ação.
Dinâmico: o ambiente pode mudar durante o processo de decisão, exigindo reação rápida.
Estático: O estado do jogo só muda quando o jogador ou agente faz uma jogada. Não há
mudanças externas imprevisíveis.
Dinâmico: Jogos, transito em uma cidade ((o ambiente muda a cada segundo)
47 / 90
Discreto x Continuo
Discreto: estados, percepções e ações são finitos e contáveis.
Contínuo: há uma infinitude de valores possíveis, exigindo aproximações.
Discreto: Jogo de tabuleiro (número limitado de movimentos e casas no tabuleiro).
Contínuo: Robô que controla um braço mecânico (ângulos, forças e posições variam em
infinitas possibilidades).
48 / 90
Individual x Multiagente
Individual: o agente atua sozinho, sem outros agentes competindo ou cooperando.
Multiagente: há outros agentes no mesmo ambiente, podendo ser aliados ou adversários.
Individual: Aplicativo de aprendizado (apresenta tarefas, correções adequados para o
aluno)
Multiagente: Jogo de futebol de robôs, onde os agentes precisam cooperar com colegas e
competir contra adversários.
49 / 90
Natureza dos ambientes
Ambientes completamente observáveis,
determinísticos, estáticos, discretos,
episódicos e individuais -> fáceis de
projetar agentes.
Ambientes parcialmente observáveis,
estocásticos, dinâmicos, contínuos,
sequenciais e multiagente -> muito mais
desafiadores e exigem agentes
avançados (aprendizagem, raciocínio
probabilístico, cooperação).
50 / 90
Natureza dos ambientes
51 / 90
Estruturas de agentes
Estruturas de agentes
Até agora fizemos referência aos agentes descrevendo o comportamento – a ação
executada após qualquer sequência de percepções específica.
Agora, teremos de seguir em frente e descrever o funcionamento interno desses agentes.
agente = arquitetura + programa.
abordagem orientada a tabelas para construção de agentes está
condenada ao fracasso
52 / 90
Programas de agentes
Ex: Imagine um aspirador simples em uma sala com 2 quadrados
(Esquerda e Direita):
Se a casa tivesse N posições (digamos 100), seriam necessárias 2100
combinações possíveis
O desafio fundamental da IA é descobrir como escrever programas
que, na medida do possível, produzam um comportamento racional a
partir de um pequeno programa em vez de uma grande tabela.
53 / 90
Reativo Simples
Toma decisões com base apenas na percepção atual do ambiente
Resposta imediata: A ação é diretamente ligada à percepção atual.
54 / 90
Reativo Simples
Como funciona:
Baseia-se apenas na percepção atual,
sem considerar o passado.
Age de acordo com regras condicionais:
“SE condição ENTÃO ação”.
Vantagem: rápido e simples.
Limitação: pode se perder em situações
mais complexas (não tem memória).
Exemplo real:
Aspirador de pó que suga se encontrar
sujeira.
Sensor de luz que acende uma lâmpada
quando está escuro.
Motorista do táxi automatizado: se
carro-da-frente-está-freando então
começar-a-frear.
55 / 90
Reativo Simples
56 / 90
Reativo baseado emmodelo
Mantém um modelo interno do mundo (memória).
57 / 90
Reativo baseado emmodelo
Considera histórico de percepções para decidir.
Vantagem: mais inteligente que o reativo simples.
Limitação: precisa de um modelo correto.
Definição
Um agente que tem o conhecimento de “como o mundo funciona” apresenta o que se
denomina modelo do mundo.
58 / 90
Reativo baseado emmodelo
Exemplo real:
Aspirador que lembra onde já limpou
para não repetir.
Carro que registra se passou por uma
rua antes.
59 / 90
Baseado em Objetivos
O fato de um agente ter conhecimento do estado atual do ambiente não é condição
suficiente para que ele decida o que fazer.
é necessário que obtenha alguma informação quanto aos objetivos relacionados a
situações ou cenários desejáveis.
60 / 90
Baseado em Objetivos
Como funciona: Age em função de
objetivos definidos.
Ele decide quais ações aproximam do
estado desejado.
Exemplo real:
GPS que traça rota até o destino.
Jogo da velha: o agente tenta ganhar
(objetivo).
Aspirador
O objetivo desse robô é executar sua
tarefa considerando o custo de
operação e o consumo de energia.
No decorrer do tempo, ele pode calcular
a frequência com que as limpezas são
feitas e entrar em modo de economia
de energia durante os intervalos, a fim
de alcançar um resultado mais
satisfatório.
61 / 90
Baseados na Utilidade
Quantificar o mapeamento de um estado ou uma sequência de estados em um número
que descreve o grau de “felicidade” alcançado
62 / 90
Baseados na Utilidade
Como funciona: Além do objetivo,
escolhe a ação que maximiza utilidade
(preferências, custo/benefício).
Diferente do agente baseado em
objetivo, que só verifica se um estado
satisfaz ou não o objetivo, o agente de
utilidade consegue comparar diferentes
estados possíveis.
Exemplo real:
Carro autônomo que escolhe entre 2
rotas: mais curta ou mais segura.
Investimento que escolhe ação com
maior retorno esperado.
63 / 90
Diferença para o Baseado em Objetivo
Baseado em Objetivo:
Pergunta: “Isso me leva ao meu objetivo?”
Resposta: Sim / Não.
Exemplo: GPS quer só chegar ao destino (não importa o caminho).
Baseado em Utilidade:
Pergunta: “Quão bom é este caminho comparado a outros?”
Resposta: Escolhe o melhor entre vários.
Exemplo: GPS avalia rotas considerando tempo, eficiência do
combustível, pedágio, segurança, conforto.
64 / 90
Agentes com aprendizagem
Até agora: agentes criados
com conhecimento
previamente definido e fixo.
Seria possível imaginar uma situação em que o agente atuasse em um
ambiente inicialmente desconhecido e ao longo do tempo adquirisse
conhecimento?
65 / 90
Agentes com aprendizagem
Um agente com aprendizagem vai além do conhecimento inicial,
adquirindo experiência com o ambiente para melhorar seu
desempenho ao longo do tempo.
Exemplo real:
Aspirador robô que melhora rotas com o tempo.
Assistente virtual que entende cada vez melhor o usuário.
Agente de investimento que aprende recompensas
Citem outros exemplos
66 / 90Agentes com aprendizagem
“Um agente de aprendizado pode ser dividido em quatro componentes conceituais”
(Russell; Norvig, 2004, p. 51). Em suma, são eles:
1 Elemento de desempenho - é a parte considerada até agora sobre o estudo dos
agentes anteriores, que recebe as percepções e decide qual ação executar;
2 Elemento crítico -informa ao elemento de aprendizado como o agente está se
comportando em relação a um padrão fixo de desempenho;
3 Elemento de aprendizado -utiliza a informação proveniente do crítico para
modificar o elemento de desempenho para obtenção de um melhor
funcionamento no futuro;
4 Gerador de problemas - é o elemento responsável pela sugestão de novas
regras e ações que podem levar a novas experiências
67 / 90
Agentes com aprendizagem
68 / 90
Resumo
Reativo simples -> só reage.
Baseado emmodelo -> lembra estados passados.
Baseado em objetivo -> busca metas.
Baseado em utilidade -> escolhe a melhor meta/ação
considerando preferências.
Aprendizagem -> melhora sozinho ao longo do tempo.
69 / 90
Qual é a função da IA nos agentes
Ideia
A função da IA é projetar um programa agente que implemente a função de agente (o
mapeamento das percepções em ações)
A ideia é criar um algoritmo (ou programa) que, ao receber uma sequência de percepções
do ambiente, decida qual a próxima ação a ser tomada para atingir determinado objetivo.
Chamamos essa função de:
função de agente: percepção(s) -> ação
Mas, na prática, não programamos diretamente essa “função matemática”. Em vez disso:
Criamos um sistema de decisão (baseado em regras, lógica, aprendizado ou otimização);
Esse sistema implementa a função de agente, por meio de estruturas de controle, aprendizado,
planejamento etc.
70 / 90
Qual é a função da IA
Exemplo Prático
Imagine um agente que joga xadrez:
Percepção: o estado atual do tabuleiro.
Ação: o próximo movimento.
Função de agente: algoritmo que mapeia o estado do jogo em ummovimento ideal.
Isso pode ser feito via:
Árvores de busca com heurísticas (como o algoritmo minimax),
Ou redes neurais treinadas em milhões de partidas (como o AlphaZero da DeepMind).
71 / 90
Resumindo
Resumindo
Um agente é algo que percebe e age em um ambiente. A função do agente
especifica a ação executada pelo agente em resposta a qualquer sequência de
percepções.
A medida de desempenho avalia o comportamento do agente em um ambiente.
Um agente racional age para maximizar o valor esperado da medida de
desempenho, dada a sequência de percepções recebida até o momento.
Uma especificação de ambiente de tarefa inclui a medida de desempenho, o
ambiente externo, os atuadores e os sensores. Ao projetar um agente, o primeiro
passo sempre deve ser especificar o ambiente de tarefa da maneira mais
completa possível.
Os ambientes de tarefas variam ao longo de diversas dimensões significativas.
Eles podem ser completa ou parcialmente observáveis, agente único ou
multiagente, determinísticos ou não determinísticos (ou estocásticos), episódicos
ou sequenciais, estáticos ou dinâmicos, discretos ou contínuos e conhecidos ou
desconhecidos.
72 / 90
Resumindo
Em casos em que a medida de desempenho é desconhecida ou difícil de ser
especificada corretamente, existe um risco significativo de o agente otimizar o
objetivo errado. Nesses casos, o projeto do agente deverá refletir a incerteza
quanto ao objetivo verdadeiro.
O programa do agente implementa a função do agente. Existem diversos
projetos básicos de programas de agentes, refletindo o tipo de informação
explicitada e usada no processo decisório. Os projetos variam em eficiência,
síntese e flexibilidade. O projeto apropriado do programa do agente depende da
natureza do ambiente.
Agentes reativos simples respondem diretamente a percepções, enquanto
agentes reativos baseados em modelos mantêm o estado interno para monitorar
aspectos do mundo que não estão evidentes na percepção atual. Agentes
baseados em objetivos agem para alcançar seus objetivos, enquanto agentes
baseados em utilidade tentam maximizar sua própria “felicidade” esperada.
Todos os agentes podem melhorar seu desempenho por meio do aprendizado.
73 / 90
Questões para revisão
1 O que é um agente inteligente?
2 O que significa sensor e atuador?
3 . O que significa sequência de percepções?
4 De acordo com o que você estudou, defina função do agente.
5 Dê um exemplo de agente inteligente e caracterize-o de acordo com os
elementos que determinam um agente (percepção, ação, etc.).
6 Do que depende a racionalidade do agente inteligente?
7 Defina o ambiente de tarefa de um agente
8 Dê um exemplo de ambiente de tarefa e caracterize-o de acordo com suas
propriedades.
9 O que são agentes reativos simples?
10 O que são agentes reativos com base em modelo?
11 O que são agentes com base em objetivos?
12 O que são agentes com base na utilidade?
13 O que é agente de aprendizagem e quais são seus elementos conceituais?
74 / 90
Exemplo 1 - Agente que navega em uma grade
Implemente um agente que se move em uma grade 5x5 do ponto
(0,0) até (4,4). O agente deve:
Perceber sua posição atual.
Mover-se na direção do objetivo.
Evitar obstáculos definidos como uma lista de coordenadas.
75 / 90
Exemplo 1 - Agente que navega em uma grade
class AmbienteGrade:
def __init__(self, tamanho, objetivo, obstaculos):
self.tamanho = tamanho
self.objetivo = objetivo
self.obstaculos = obstaculos
def posicao_valida(self, pos):
x, y = pos
return (0rato = RatoAgente(labirinto, inicio)
rato.executar()
80 / 90
Exemplo 3 - Jogo de velha
Um agente que jogue jogo da velha com você
Percepção do ambiente (espaços vazios, espaços com pelas do
adversário)
Ação (movimentos)
Sensores (posição atual)
Atuadores (movimentação)
81 / 90
Exemplo 3 - Jogo da velha
import random
from google.colab import output
def print_tabuleiro(tabuleiro):
print(" 0 1 2") # Cabeçalho das colunas
for i, linha in enumerate(tabuleiro):
print(f"{i} {' | '.join(linha)}") # Adiciona o número da linha à esquerda
if i

Mais conteúdos dessa disciplina