/sia-tp1

Primary LanguagePythonMIT LicenseMIT

TP1 SIA - Métodos de Búsqueda

Este repositorio contiene un programa que permite resolver el juego Sokoban con diversos metodos de busqueda y heuristicas. Tanto el nivel seleccionado como los metodos de busqueda son configurables mediante el archivo config.json.

Configuracion

El archivo config.json sigue el siguiente formato:

{
  "searching_algorithm": "human" | "bfs" | "dfs" | "greedy" | "a_star",
  "heuristic": "walkable_distance" | "admissible_manhattan_distance" | "inadmissible_manhattan_distance",
  "level": 4,
  "levels_file": "levels.txt"
}

Donde cada opcion representa lo siguiente:

  • searching_algorithm: el algoritmo de busqueda de la solucion que se dividen en 3 categorias
    • no_informados: bfs y dfs
    • informados: greedy (global) y A*
    • human: permite al usuario jugar al Sokoban
  • heuristic: la heuristica utilizada por el algoritmo informado
    • admissible_manhattan_distance: Calcula la distancia manhattan del jugador a la caja mas cercana y le agrega la suma total de la distancia manhattan de cada caja al goal mas cercano
    • inadmissible_manhattan_distance: Calcula suma total de las distancias manhattan del jugador a cada caja y le agrega la suma total de la distancia manhattan de cada caja al goal mas cercano
    • walkable_distance: Calcula la longitud del camino mas corto a la caja mas cercana que no esta en un goal y le agrega la suma total de la longitud del camino mas corto de cada caja al goal mas cercano
  • level: El nivel a seleccionar del archivo de niveles
  • levels_file: El path del archivo donde se encuentran los niveles

Ejecucion

Para ejecutar el programa basta con correr python main.py desde la raiz del proyecto