def main(): tracer(False) hideturtle() bgcolor('white') dimensao_da_matriz = 20 tam_celula = 20 # Cria o labirinto lab = Labirinto(dimensao_da_matriz, tam_celula) lab.criar_labirinto() # Cria o agente tam_agente = 20 agente = Agente(0, tam_agente, "yellow") agente.add_labirinto(lab) terminou_percurso = False intervalo_entre_frames = 0.3 while (not terminou_percurso): terminou_percurso = agente.percorrer() # Atualiza o turtle e finaliza update() sleep(intervalo_entre_frames) done()
def projeto_SaferRoute(): dimensao_da_matriz = 20 lab = Labirinto(dimensao_da_matriz) id = 0 agente = lab.add_pacman(id) origem = agente._posicao destino = lab.fim_aleatorio() lab.desenhar_celula(origem, 'red') lab.desenhar_celula(destino, 'red') intervalo_entre_frames = 0.3 n_fantasmas = myInput.qtd_fantasmas( ) # define a quantidade de fantasmas de acordo com a aglomeração for id in range(1, n_fantasmas): lab.add_fantasma(id) agentes = lab.agentes chegou_ao_destino = False while (not chegou_ao_destino): for id in agentes.keys(): if id != 0: agentes[id].vaguear() #faz os fantasmas vaguearem sleep(intervalo_entre_frames) chegou_ao_destino = agente.ir_a(destino) update()
def main(): tracer(False) bgcolor('black') dimensao_da_matriz = 20 tam_celula = 20 # Cria o labirinto lab = Labirinto(dimensao_da_matriz, tam_celula) lab.criar_labirinto() tam_agente = 20 # 1o agente agente0 = Agente(0, tam_agente, "yellow") agente0.add_labirinto(lab) #pos_central = lab.criar_celula(coord_turt=(-20,20)) #agente0._posicao = pos_central agente_percorreu_tudo = False while (not agente_percorreu_tudo): agente_percorreu_tudo = percorrer(agente0) update() sleep(0.4) #vizinhos = lab.obter_vizinhos(pos_central) #agente0._posicao = vizinhos[0] #percorrer(agente0) done()
def agente_com_um_destino(): """ Agente caminha para um destino aleatoriamente sorteado """ dimensao_da_matriz = 20 lab = Labirinto(dimensao_da_matriz) id = 0 agente = lab.add_pacman(id) ghost = lab.add_fantasma(2) origem = agente._posicao destino = lab.fim_aleatorio() lab.desenhar_celula(origem, 'red') lab.desenhar_celula(destino, 'red') intervalo_entre_frames = 0.1 chegou_ao_destino = False while (not chegou_ao_destino): chegou_ao_destino = agente.ir_a(destino) # Atualiza "frame" update() sleep(intervalo_entre_frames)
def main(): # Definicao do problema do labirinto problema = Labirinto() #busca = BuscaLargura() #solucao = busca.busca_em_largura(problema) busca = BuscaGulosa() solucao = busca.busca_gulosa(problema) pprint(problema.solucao(solucao))
def um_agente_vagueia(): """ Simulação 2: Todos os agentes vagueiam """ dimensao_da_matriz = 20 lab = Labirinto(dimensao_da_matriz) id = 0 pacman = lab.add_pacman(id) n_frames = 500 intervalo_entre_frames = 0.1 for _ in range(n_frames): pacman.vaguear() update() sleep(intervalo_entre_frames)
def busca_gulosa(self, problema: Labirinto): """Agente que implementa a busca em gulosa: :param problema: definicao do problema :return: lista com os estados para chegar na solucao do problema """ # Busca estados sucessores # Escolhe o melhor estado sucessor # - O melhor estado é aquele que mais se aproxima da saída # - Quanto mais abaixo e mais a direita, mais próximo da saída atual = problema.estado_inicial visitados = [problema.estado_inicial] while True: print(f'=' * 80) print(f'> Estado sendo avaliado:') print(f'{atual}') # Verifica se achou a solucao objetivo if problema.funcao_objetivo(atual): print('Solucao encontrada.') #return problema.solucao(atual) return atual # Geracao dos estados sucessores sucessores = problema.funcao_sucessora(atual) aux = atual.copy() # Escolhe o melhor estado dentre os estados sucessores gerados for sucessor in sucessores: if sucessor > atual and not visitados.__contains__( sucessor ): # Também verifica se o estado ja foi visitado, evitando loops atual = sucessor.copy() visitados.append(atual) # Se não encontrou um sucessor melhor, volta para o estado pai if atual == aux: atual = atual.pai # Caso tenha voltado até a raiz, não encontrou a solução if atual is None: print('Solucao não encontrada.') return None
def um_agente_percorre_tudo(): """ Simulação 1: Agente percorre todo o labirinto """ dimensao_da_matriz = 20 lab = Labirinto(dimensao_da_matriz) id = 0 agente = lab.add_pacman(id) intervalo_entre_frames = 0.1 chegou_ao_fim = False while (not chegou_ao_fim): chegou_ao_fim = agente.percorrer() # Atualiza "frame" update() sleep(intervalo_entre_frames)
def todos_vagueiam(): """ Simulação 3: Todos os agentes vagueiam """ dimensao_da_matriz = 20 lab = Labirinto(dimensao_da_matriz) id = 0 pacman = lab.add_pacman(id) n_fantasmas = Crowding.nGhosts #define a quantidade de fantasmas de acordo com a aglomeração for id in range(1, n_fantasmas): f = lab.add_fantasma(id) n_frames = 500 intervalo_entre_frames = 0.1 agentes = lab.agentes for _ in range(n_frames): for id in agentes.keys(): agentes[id].vaguear() # Atualiza "frame" update() sleep(intervalo_entre_frames)
def todos_vagueiam(): """ Simulação 3: Todos os agentes vagueiam """ dimensao_da_matriz = 20 lab = Labirinto(dimensao_da_matriz) id = 0 pacman = lab.add_pacman(id) n_fantasmas = 10 for id in range(1, n_fantasmas): f = lab.add_fantasma(id) n_frames = 500 intervalo_entre_frames = 0.1 agentes = lab.agentes for _ in range(n_frames): for id in agentes.keys(): agentes[id].vaguear() # Atualiza "frame" update() sleep(intervalo_entre_frames)
def varios_agentes_percorrem_tudo(): dimensao_da_matriz = 20 lab = Labirinto(dimensao_da_matriz) id = 0 agente = lab.add_pacman(id) n_agentes = int(input("defina quantos agentes")) intervalo_entre_frames = 0.5 agentes = lab.agentes chegou_ao_fim = False for id in range(1, n_agentes): lab.add_fantasma(id) while (not chegou_ao_fim): for id in agentes.keys(): agentes[id].percorrer() chegou_ao_fim = agente.percorrer() # Atualiza "frame" update() sleep(intervalo_entre_frames)
#!/usr/bin/env python3 # -*- coding: utf-8 -*- from labirinto import Labirinto from agente import Agente # Listagem-base dimensao_da_matriz = 20 tam_celula = 20 # Cria o labirinto lab = Labirinto(dimensao_da_matriz, tam_celula) #lab.criar_labirinto() # Cria o agente tam_agente = 20 agente = Agente(0, tam_agente, "yellow") agente.add_labirinto(lab) print(agente._waze) agente.add_percurso() print(agente._waze) agente.add_percurso() print(agente._waze) agente.add_percurso() print(agente._waze)
def agente_com_n_destino(): """ Agente caminha para um destino aleatoriamente sorteado """ n = 10 dimensao_da_matriz = 20 lab = Labirinto(dimensao_da_matriz) id = 0 agente = lab.add_pacman(id) origem = agente._posicao destino = lab.cel_aleatoria() chegou_ao_destino = False for i in range(n): lab.desenhar_celula(origem, 'red') lab.desenhar_celula(destino, 'red') intervalo_entre_frames = 0.4 while (not chegou_ao_destino): chegou_ao_destino = agente.ir_a(destino) # Atualiza "frame" update() sleep(intervalo_entre_frames) lab.desenhar_celula(origem, 'black') origem = destino destino = lab.cel_aleatoria() chegou_ao_destino = False agente._waze.add_destino(destino) agente._waze.gerar_rota(origem)
def main(): with open("lab6.txt") as infile: # Read and format labirinth dimensions = infile.readline().split(" ") nLines, nColumns = int(dimensions[0]), int(dimensions[1]) lines = infile.readlines() labirinto = [] for line in lines: line = line.rstrip() labirinto.append(line.split(" ")) labirintoL = Labirinto(nLines, nColumns, labirinto) labirintoP = deepcopy(labirintoL) labirintoC = deepcopy(labirintoL) labirintoG1 = deepcopy(labirintoL) labirintoA1 = deepcopy(labirintoL) labirintoG2 = deepcopy(labirintoL) labirintoA2 = deepcopy(labirintoL) busca(labirintoL, "L") print(labirintoL) print("LARGURA: ", labirintoL.solution) print(labirintoL.result()) sleep(5) busca(labirintoP, "P") print(labirintoP) print("PROFUNDIDADE: ", labirintoP.solution) print(labirintoP.result()) sleep(5) busca(labirintoC, "C") print(labirintoC) print("CUSTO UNIFORME: ", labirintoC.solution) print(labirintoC.result()) sleep(5) busca(labirintoG1, "G", 1) print(labirintoG1) print("GULOSO H1: ", labirintoG1.solution) print(labirintoG1.result()) sleep(5) busca(labirintoG2, "G", 2) print(labirintoG2) print("GULOSO H2: ", labirintoG2.solution) print(labirintoG2.result()) sleep(5) busca(labirintoA1, "A", 1) print(labirintoA1) print("A* H1: ", labirintoA1.solution) print(labirintoA1.result()) sleep(5) busca(labirintoA2, "A", 2) print(labirintoA2) print("A*: H2", labirintoA2.solution) print(labirintoA2.result())