IIC2613-Inteligencia-Artificial-2021-2 / Syllabus

Repositorio base del curso, donde se publicarán enunciados, ayudantías y se resolverán dudas.
32 stars 6 forks source link

Sokoban: error en métricas cuando una solución tiene costo 0 #62

Closed jiaranda closed 3 years ago

jiaranda commented 3 years ago

Tengo un problema al ejecutar el programa completo cuando hay un puzzle de sokoban con 0 cajas:

Cuando no hay cajas, el algoritmo entrega una solución con costo 0, lo que creo que tiene sentido siguiendo la lógica de esta issue. Luego, en el archivo main se comparan los resultados de los algoritmos y se almacenan los mejores valores (en este caso, el costo 0). Finalmente, para mostrar los resultados se divide por este valor, generando un error de división por 0.

Este es el error que tengo:

Traceback (most recent call last):
  File "main.py", line 316, in <module>
    main()
  File "main.py", line 312, in main
    compare(algorithms, problem, heuristic_class)
  File "main.py", line 115, in compare
    "{:.2%}".format(solution["cost"] / best["cost"]),
ZeroDivisionError: division by zero

Mi duda es: ¿yo no debería estar entregando un costo 0 o el main no está manejando bien los valores?

Dietr1ch commented 3 years ago

Tengo un problema al ejecutar el programa completo cuando hay un puzzle de sokoban con 0 cajas:

Cuando no hay cajas, el algoritmo entrega una solución con costo 0, lo que creo que tiene sentido siguiendo la lógica de esta issue. Luego, en el archivo main se comparan los resultados de los algoritmos y se almacenan los mejores valores (en este caso, el costo 0). Finalmente, para mostrar los resultados se divide por este valor, generando un error de división por 0.

Este es el error que tengo:

Traceback (most recent call last):
  File "main.py", line 316, in <module>
    main()
  File "main.py", line 312, in main
    compare(algorithms, problem, heuristic_class)
  File "main.py", line 115, in compare
    "{:.2%}".format(solution["cost"] / best["cost"]),
ZeroDivisionError: division by zero

Mi duda es: ¿yo no debería estar entregando un costo 0 o el main no está manejando bien los valores?

Es un problema del main, maneja el caso de 0 en las otras métricas, pero no en el costo, la solución fácil es evitar proponer problemas con solución de costo 0 en el main.

Como no tenemos acciones de costo 0, estos son problemas en los que el estado inicial es una solución, y esos problemas no sirven realmente para comparar distintos algoritmos.