Você está na página 1de 5

AspiradorIA

October 19, 2021

Exercício Prático 1 - Simulador e Agente Reativo Simples em ambiente Parcialmente Observável O


exercício deve ser feito em linguagem Python.
Ex. 2.7: Implemente um simulador de ambiente de medição de desempenho para o mundo do
aspirador de pó (Figura 22 e também página 37). Sua implementação deve ser modular, de forma
que os sensores, os atuadores e as características do ambiente (tamanho, localização da sujeira, …
) possam ser alterados com facilidade.
pág 37.
a) Medida de Desempenho A medida de desempenho oferece o prêmio de um ponto para cada
sala limpa em cada período de tempo ao longo de uma duração de mil períodos de tempo.
b) Conhecimento a priori A geografia do ambiente não é conhecida a priori (Figura 2.2), a
distribuição da sujeira e a posição inicial do agente não são previamente conhecidas. O
ambiente para o agente é parcialmente observável. A aspiração limpa o quadrado atual. As
ações esquerda e direita movem o agente para a esquerda e para a direita, exceto quando isso
tenta levar o agente para fora do ambiente; nesse caso, o agente permanece onde está.
c) Ações do agente Esquerda, Direita, Limpar e NoOp (fazer nada).
d) Percepções O agente percebe corretamente sua posição e se esta posição contém sujeita.
fig 2.7
Ambiente um mundo do aspirador de pó com apenas duas salas. Estas que por sua vez, podem
estar limpas ou não conforme o tempo passa. A sujeira pode surgir de modo espontâneo por fins
de simulação.
Agora, implemente um agente reativo simples para este ambiente. Execute o simulador de ambiente
com este agente para todas as configuraçoes iniciais possíveis de sujeira e posições do agente.
Registre a pontuação de desempenho do agente para cada configuração e sua pontuação média
global.

[101]: import random

estadoPiso = {
0: "Limpo",
1: "Sujo"
}

acoesAgente = {

1
0: "Esquerda",
1: "Direita",
2: "Limpar",
3: "NoOp"
}

#tamanhoSala = 5

print("\n\nSala antes Limpeza ")


salaAmbiente = [0,0,0,1,0,1,1,0,1,0,1,0,1,1,0]
print(salaAmbiente, "\n\n")

posicaoInicial = random.randint(0, len(salaAmbiente))


print("Posicao Inicial ", posicaoInicial, " de ", len(salaAmbiente) )

##Percorrendo Sala
print("Robô Limpando a sala... \n ")
counter = posicaoInicial

while (1):

##Limpando os Pisos
if salaAmbiente[counter] == 0:
print(counter, " - Piso Limpo Detectado ")
if(direcao == -1):
print("Andando para Esquerda <-- \n")
else:
print("Andando para Direita --> \n")
else:
print(counter, " - ### |Piso Sujo Detectado| ### \nLimpando o Piso... ")
if(direcao == -1):
print("Andando para Esquerda <-- \n")
else:
print("Andando para Direita --> \n")
salaAmbiente[counter] = 0

##Andando Esquerda e Direita


counter = counter + direcao;

if counter == (len(salaAmbiente)-1):
print("\n\nVOLTANDO!!!\n\n")
direcao = -1;
if counter == 0:
print("\n\nAVANÇANDO!!!\n\n")
direcao = 1;

2
if max(salaAmbiente) == 0:
print("\n\nLIMPEZA COMPLETA!!!\n\n")
break

print("\n\nSala apos Limpeza ")


print(salaAmbiente, "\n\n")

Sala antes Limpeza


[0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0]

Posicao Inicial 5 de 15
Robô Limpando a sala…

5 - ### |Piso Sujo Detectado| ###


Limpando o Piso…
Andando para Esquerda <--

4 - Piso Limpo Detectado


Andando para Esquerda <--

3 - ### |Piso Sujo Detectado| ###


Limpando o Piso…
Andando para Esquerda <--

2 - Piso Limpo Detectado


Andando para Esquerda <--

1 - Piso Limpo Detectado


Andando para Esquerda <--

AVANÇANDO!!!

0 - Piso Limpo Detectado


Andando para Direita -->

1 - Piso Limpo Detectado


Andando para Direita -->

2 - Piso Limpo Detectado

3
Andando para Direita -->

3 - Piso Limpo Detectado


Andando para Direita -->

4 - Piso Limpo Detectado


Andando para Direita -->

5 - Piso Limpo Detectado


Andando para Direita -->

6 - ### |Piso Sujo Detectado| ###


Limpando o Piso…
Andando para Direita -->

7 - Piso Limpo Detectado


Andando para Direita -->

8 - ### |Piso Sujo Detectado| ###


Limpando o Piso…
Andando para Direita -->

9 - Piso Limpo Detectado


Andando para Direita -->

10 - ### |Piso Sujo Detectado| ###


Limpando o Piso…
Andando para Direita -->

11 - Piso Limpo Detectado


Andando para Direita -->

12 - ### |Piso Sujo Detectado| ###


Limpando o Piso…
Andando para Direita -->

13 - ### |Piso Sujo Detectado| ###


Limpando o Piso…
Andando para Direita -->

VOLTANDO!!!

LIMPEZA COMPLETA!!!

4
Sala apos Limpeza
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Você também pode gostar