Пример #1
0
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()
Пример #2
0
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()
Пример #3
0
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()
Пример #4
0
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)
Пример #5
0
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))
Пример #6
0
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
Пример #8
0
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)
Пример #9
0
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)
Пример #10
0
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)
Пример #11
0
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)
Пример #12
0
#!/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)
Пример #13
0
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)
Пример #14
0
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())