← Volver al portfolio

Inteligencia artificial · Planificación automática

Lightsout

Un estudio de planificación automática para resolver Lightsout y comparar cuánto cuesta encontrar soluciones con menos movimientos.

Periodo
Jun 2025
Equipo
Proyecto en pareja
Contexto
Proyecto académico de Inteligencia Artificial.
Mi función
Desarrollo y memoria realizados conjuntamente

Mi contribución

Mi compañero y yo realizamos juntos el código, los experimentos y la memoria, sin una división fija de tareas.

  • Python
  • PDDL
  • Unified Planning
  • Fast Downward
  • Búsqueda en anchura
Diagrama de un movimiento en un tablero de Lightsout
Diagrama de la memoria: pulsar una casilla cambia su estado y el de sus vecinas ortogonales.
  • Planificación con PDDL
  • Comparación de tiempo y movimientos

Modelar el problema

En la variante estudiada partimos de un tablero apagado y buscamos encender todas las casillas. Cada pulsación cambia el estado de una casilla y de sus vecinas ortogonales.

Modelamos estados y acciones con PDDL y Unified Planning para resolver el problema con Fast Downward. Después implementamos una búsqueda en anchura modificada con una heurística que prioriza estados con más luces encendidas.

Efecto de una segunda pulsación en Lightsout
Un movimiento puede apagar luces ya encendidas; el estado intermedio importa.

Menos movimientos, más tiempo de búsqueda

La heurística conserva N sucesores en cada expansión. Aumentar N permite explorar más alternativas, pero incrementa el tiempo de búsqueda. Estos son los resultados documentados para el caso de prueba 5 × 5:

Comparativa en el caso de prueba 5 × 5 de la memoria
MétodoMovimientosTiempo
Fast Downward490,61 s
BFS · N = 2250,99 s
BFS · N = 31714,20 s
BFS · N = 41558,95 s
BFS · N = 515175,63 s

La conclusión del experimento

Con N = 2 obtuvimos 25 movimientos en menos de un segundo. Con N = 4 bajamos a 15 movimientos, pero el tiempo aumentó hasta unos 59 segundos. Son dos configuraciones distintas: no se logró la mayor reducción manteniendo el tiempo subsegundo.

La poda de sucesores limita la búsqueda; estos resultados no prueban que el algoritmo encuentre siempre una solución óptima ni que supere a Fast Downward en cualquier problema. El trabajo fue conjunto, tanto en el código como en la memoria.

Caso documentado a partir de la memoria y la presentación académicas. No hay un repositorio público enlazado.