Está en la página 1de 4

# -*- coding: utf-8 -*-

"""
Spyder Editor

This is a temporary script file.


"""
import numpy as np
import matplotlib.pyplot as plt
import random
# Função que exibe o ambiente na tela
def exibir(I):
global posAPAx
global posAPAy

# Altera o esquema de cores do ambiente


plt.imshow(I, 'gray')
plt.nipy_spectral()

# Coloca o agente no ambiente


plt.plot([posAPAy],[posAPAx], marker='o', color='r', ls='')

plt.show(block=False)

# Pausa a execução do código por 0.5 segundos para facilitar a visualização


#plt.pause(0.5)
plt.clf()

tmz = 6
sala = np.zeros((tmz,tmz))

for x in range(0,(len(sala))):
for y in range(0,(len(sala[0]))):
if (x == 0):
sala[x][y] = 1
if (x == (len(sala)-1)):
sala[x][y] = 1
if (y == 0) :
sala[x][y] = 1
if (y == (len(sala[0])-1)):
sala[x][y] = 1

posAPAy = 1
posAPAx = 1
sugeiraO = 0
for x in range(1,(len(sala)-1)):
for y in range(1,(len(sala[0])-1)):
sala[x][y] = random.randint(0,1)*2

for x in range(1,(len(sala)-1)):
for y in range(1,(len(sala[0])-1)):
if sala[x][y] == 2:
sugeiraO += 1
cont = 0
teste01 = sala.copy()
print(teste01)

exibir(sala)
respostateste = []
resposta = []
respostaO = []
#1 baixa
#2 sobe
#3 esquerda
#4 direita
#5 limpa
aCao = 9999
aCaoNOK = 1
posAPAx1 = 1
posAPAy1 = 1
print("sugeira = ",sugeiraO)

resposta.clear()
respostaO.clear()
primeira = 1
z=0
while z<100000:
#inicio teste
#print(z)
z = z+1
teste01 = sala.copy()
sujo = 1
posAPAx1 = 1
posAPAy1 = 1
posAPAy = 1
posAPAx = 1
resposta.clear()
while sujo:
#exibir(teste01)
cont +=1
if teste01[posAPAx][posAPAy] == 2:
aCao = 5
else:
aCaoNOK = 1
while (aCaoNOK):
#sensitivo
aCao1 = 1
if aCao1 == 1 and aCaoNOK:
posAPAx1 = posAPAx
posAPAy1 = posAPAy +1
if (teste01[posAPAx1][posAPAy1] == 2):
aCao = aCao1
aCaoNOK = 0
aCao1 = 2
if aCao1 == 2 and aCaoNOK:
posAPAx1 = posAPAx
posAPAy1 = posAPAy -1
if (teste01[posAPAx1][posAPAy1] == 2):
aCao = aCao1
aCaoNOK = 0
aCao1 = 3
if aCao1 == 3 and aCaoNOK:
posAPAx1 = posAPAx -1
posAPAy1 = posAPAy
if (teste01[posAPAx1][posAPAy1] == 2):
aCao = aCao1
aCaoNOK = 0
aCao1 = 4
if aCao1 == 4 and aCaoNOK:
posAPAx1 = posAPAx +1
posAPAy1 = posAPAy
if (teste01[posAPAx1][posAPAy1] == 2):
aCao = aCao1
aCaoNOK = 0
if aCaoNOK:

aCao1 = random.randint(1,4)
if aCao1 == 1:
posAPAx1 = posAPAx
posAPAy1 = posAPAy +1
if aCao1 == 2:
posAPAx1 = posAPAx
posAPAy1 = posAPAy -1
if aCao1 == 3:
posAPAx1 = posAPAx -1
posAPAy1 = posAPAy
if aCao1 == 4:
posAPAx1 = posAPAx +1
posAPAy1 = posAPAy
if teste01[posAPAx1][posAPAy1] != 1:
aCao = aCao1
aCaoNOK = 0

if aCao !=5:
resposta.append(aCao)
if aCao == 5:
teste01[posAPAx][posAPAy] = 0
if aCao == 4:
posAPAx +=1
if aCao == 3:
posAPAx -=1
if aCao == 2:
posAPAy -= 1
if aCao == 1:
posAPAy += 1
sugeira = 0
for x in range(1,(len(teste01)-1)):
for y in range(1,(len(teste01[0])-1)):
if teste01[x][y] == 2:
sugeira += 1

#print(sugeira)
#print(cont)
if sugeira == 0:
sujo=0
if primeira ==1:
primeira = 0
respostaO = resposta.copy()

#fim dos teste

if len(resposta)<len(respostaO):
print("resposta atual =",len(resposta))
print("resposta melhor =",len(respostaO))
respostaO = resposta.copy()
resposta.clear()
#print("resposta atual limpa=",len(resposta))
if ((len(respostaO))<(sugeiraO+1)):
z = 100010
print("saiu pelo minimo x =", z, "resposta = ",len(respostaO),"sujeira =
",sugeiraO)

posAPAx = 1
posAPAy = 1
exibir(sala)
print("sugeira = ",sugeiraO)
print("resposta",respostaO)
print("tamanho resposta",len(respostaO))
print(sala,"\n\n")
print(teste01,"\n\n")

aCao = 0
if sala[posAPAx][posAPAy] == 2:
aCao = 5
if aCao == 5:
sala[posAPAx][posAPAy] = 0
for x in range(0,(len(respostaO))):
aCao = respostaO[x]
if aCao == 4:
posAPAx +=1
if aCao == 3:
posAPAx -=1
if aCao == 2:
posAPAy -= 1
if aCao == 1:
posAPAy += 1
if sala[posAPAx][posAPAy] == 2:
aCao = 5
if aCao == 5:
sala[posAPAx][posAPAy] = 0
exibir(sala)
exibir(sala)

También podría gustarte