Giter VIP home page Giter VIP logo

kasniac / red-neuronal-artificial-generadora-niveles-2d Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 3.43 MB

Este proyecto consiste en un juego de plataformas 2D para navegadores web, en donde los niveles pueden ser creados por una red neuronal artificial de manera local y esos mismos niveles pueden ser jugados por una red neuronal artificial diferente.

Batchfile 0.16% Shell 0.17% C++ 54.82% CSS 4.55% HTML 12.77% JavaScript 15.98% Python 11.54%

red-neuronal-artificial-generadora-niveles-2d's Introduction

Red Neuronal Artificial Generadora Niveles 2D

Este proyecto consiste en un juego de plataformas 2D para navegadores web, en donde los niveles pueden ser creados por una red neuronal artificial de manera local y esos mismos niveles pueden ser jugados por otra red neuronal artificial diferente.

Durante el desarrollo del presente proyecto fue necesario resolver un problema de búsqueda en amplitud (BFS) cuya descripción se encuentra en el juez en línea OmegaUp. Se invita a los espectadores a intentar resolverlo.

Posteriormente se hicieron una serie de modificaciones al código para permitir más elementos como los enemigos. A continuación, los dejo con un recorrido a través del proyecto, en caso de que deseen probarlo ☝🤓.

Tabla de contenido


01-Validador

En este directorio encontrarás el programa validador-grafico-flexible.cpp, el programa recibe 2 argumentos desde la consola: un nivel y una cadena. Este programa intentará ejecutar cada una de las acciones descritas por la cadena sobre el nivel. El modo de uso se encuentra en los archivos de compilación compilar_y_usar.bat para Windows o compilar_y_usar.sh para Linux.


02-Interfaz web

En este directorio se encuentra la interfaz gráfica web en donde se puede realizar la visualización de una manera más amigable. El núcleo se encuentra en la carpeta /js en donde el validador descrito en el apartado anterior ha sido traducido al lenguaje JavaScript para cumplir con el mismo objetivo, solo que ahora recibiendo las entradas desde un formulario HTML y no como argumentos de consola.


03-Red_neuronal_generadora_mapas

  1. "generador_aleatorio.cpp" genera todos los mapas de las carpetas "entrenamiento_discriminador" y "validacion_discriminador", los cuales serán usados para entrenar a la red "discriminadora" de mapas, que recibe como entrada un nivel y produce como salida un valor que indica que tan bueno es el nivel, en el sentido de que sí es posible resolverlo (variando la cantidad de vidas, picos, trampolines, etc).

  2. El programa "entrenamiendo_discriminador.py" recibe como entrenamiento los casos generados por "generador_aleatorio.cpp" (los de las carpetas "entrenamiento_discriminador" y "validacion_discriminador"), de esta manera se tendrá la primera red neuronal que será capaz de emitir una calificación determinada para un nivel dado.

  3. El programa "entrenamiento_generador.py" recibe como entrenamiento "ruido" y adicionalmente 4 valores que indican la dificultad para el nivel que queremos obtener. Esta segunda red neuronal es la que deberá poder generar los niveles en forma de caracteres que se pasarán a la primera red para poder ser evaluados. En este mismo programa se ejecuta la EVALUACIÓN de "entrenamiento_discriminador.py".

  4. El programa "evaluador_generador.py" se encarga de la EVALUACIÓN de "entrenamiento_generador.py", es decir, es el programa que se usa para poder usar la red neuronal "generador.pt".

  5. El programa "evaluador_generados.cpp" se encarga de verificar que los mapas generados por la red neuronal (a través del programa "evaluador_generador.py") sean en verdad factibles.


04-Red_neuronal_generadora_de_cadenas_soluciones

  1. "evaluador_generados.cpp" es el programa generador de casos de entrenamiento para la red. Primero se necesita un conjunto de niveles, los cuales son generados por la red de la etapa anterior, a través del programa "evaluador_generador.py".

  2. el programa "evaluador_generador.py" crea el archivo "ejemplo_niveles.txt" (redirigiendo la entrada con >). Con muy poca probabilidad estos niveles generados por la red pueden estar repetidos o NO tener solución.

  3. "evaluador_generados.cpp" lee los datos del archivo "ejemplo_niveles.txt" y resuelve cada uno de estos niveles, mandándolos a /entrenamiento y /validación. El programa se asegura de que todos los niveles tengan solución y que además NO exista ningún nivel repetido. Estos casos se usarán para entrenar a la red que resuelve niveles.

  4. "entrenamiento_gen_sol.py" es el programa encargado de entrenar a la red neuronal que generará las soluciones para cada uno de estos niveles, a partir de /entrenamiento y /validación. El entrenamiento se queda en un error aproximado de 5.0.

  5. Una vez terminado el entrenamiento se genera "generador_cadena.pt" que se evalúa desde el programa "evaluador_gen_sol.py". Es desde este programa donde ya podemos observar los resultados de la red entrenada.

  6. El programa "evaluador_gen_sol.py" se adaptó para que evaluara los niveles de /entrenamiento y /pruebas, de esta manera la red genera soluciones para todos estos niveles y los almacena en "niveles_soluciones.txt" (redireccionando la entrada >).

  7. El programa "validator_flexible_prueba_red.cpp" lee el archivo "niveles_soluciones.txt" y evalúa todos los niveles con sus respectivas soluciones, de esta manera se obtiene el número de soluciones que la red generó de manera correcta e incorrecta.


red-neuronal-artificial-generadora-niveles-2d's People

Contributors

kasniac avatar

Watchers

Rodrigo Castro avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.