Implementación de un juego Pong en C++ con paddle controlado por una red neuronal.
- Datos generales
- Requisitos e instalación
- Investigación teórica
- Diseño e implementación
- Ejecución
- Análisis del rendimiento
- Trabajo en equipo
- Conclusiones
- Bibliografía
- Licencia
-
Tema: Juego Pong con paddle IA con Redes Neuronales en C++
-
Grupo:
pongsasos
-
Integrantes:
- Saldarriaga Núñez, Annemarie Alejandra – 202410265 (Alumno A)
- Bonilla Sarmiento, Martin Jesús – 202410303 (Alumno B)
- Lazón Meza, María Fernanda – 202410320 (Alumno C)
- Anaya Manzo, Matias Javier – 202410238 (Alumno D)
-
Compilador: GCC 11 o superior
-
Dependencias:
- CMake 3.18+
- Eigen 3.4
- Raylib
-
IDEs: CLion, VSCode o similares
-
Instalación:
git clone https://github.com/CS1103/projecto-final-pongsasos.git cd pongsasos # Para macOS solo se ejecuta el siguiente comando brew install raylib # En macOS # Instalar raylib para Window y Linux git clone https://github.com/microsoft/vcpkg.git cd vcpkg # Windows (instala raylib para MSVC de 64 bits) ./bootstrap-vcpkg.bat ./vcpkg/vcpkg install raylib:x64-windows # Linux (instala raylib para tripleta nativa) ./bootstrap-vcpkg.sh ./vcpkg/vcpkg install raylib # Solo una vez por sistema ./vcpkg/vcpkg integrate install
Luego de instalar la librería Raylib, se es necesario una última configuración:
- Para CLion:
- Ve a:
File > Settings > Build, Execution, Deployment > CMake
- Añadir la siguiente línea en CMake options:
-DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake
- Ve a:
- Para VSCode (usando la extensión CMake Tools):
- En
.vscode/settings.json
, agregar:
"cmake.configureArgs": [ "-DCMAKE_TOOLCHAIN_FILE=${workspaceFolder}/vcpkg/scripts/buildsystems/vcpkg.cmake" ]
- En
- Extra: Para ejecución manual
mkdir build
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=../vcpkg/scripts/buildsystems/vcpkg.cmake
cmake --build .
-
Objetivo: Explorar fundamentos y arquitecturas de redes neuronales.
-
Contenido::
- Historia y evolución de las NNs.
- Algoritmos de entrenamiento: backpropagation, optimizadores, SGD, etc..
- Tipos de funciones de activación.
-
Patrones de diseño: ejemplo: No se he utilizado ningún patrón de diseño.
-
Estructura de carpetas:
pongsasos/ ├── nn/ │ ├── network.h │ ├── tensor.h ├── main.cpp ├── test_neural_network.cpp ├── README.md └── CMakeLists.txt
-
Cómo ejecutar (en Git Bash):
cd ./ruta_al_proyecto/cmake-build-debug && ./nombre_del_proyecto
-
Casos de prueba:
- Test unitario para la función de pérdida de la red.
Demo de ejemplo: Video/demo alojado en
docs/demo.mp4
. Pasos:
- Preparar datos de entrenamiento.
- Presionar tecla 'T' para empezar el entrenamiento'.
- Presionar tecla 'F' para acelerar el entrenamiento.
- La red neuronal se entrena con los datos.
- El AIPaddle está lista para etrenar.
-
Métricas de ejemplo:
- Iteraciones: 100 épocas.
- Tiempo total de entrenamiento: 12 min.
-
Ventajas/Desventajas:
- Código ligero y dependencias mínimas.
- – Sin paralelización, rendimiento limitado.
-
Mejoras futuras:
- Uso de CUDA para interfaz gráfica (Justificación).
- Paralelizar entrenamiento por lotes (Esto ayudaría a disminuir el tiempo de entrenamiento).
Tarea | Miembro(s) |
---|---|
Investigación teórica | Alumno D |
Implementación de la interfaz gráfica | Alumno A y C |
Implementación de AIPaddle | Alumno B |
Video de presentación del proyecto | Todos los integrantes |
Edición del video | Alumno B |
- Logros: Implementar NN desde cero, validar en dataset de ejemplo.
- Evaluación: Calidad y rendimiento adecuados para propósito académico.
- Aprendizajes: Profundización en backpropagation, optimización e implementación de interfaz gráfica con librería Raylib.
- Recomendaciones: Escalar a datasets más grandes y optimizar memoria.
[1] T. Esmael, “Activation Functions in Neural Networks,” International Journal of Engineering and Advanced Scientific Technology (IJEAST), vol. 4, no. 12, pp. 310–316, 2022. [En línea]. Disponible en: https://d1wqtxts1xzle7.cloudfront.net/89662883/310-316_Tesma412_IJEAST-libre.pdf
[2] M. Nielsen, Neural Networks and Deep Learning, cap. 1. [En línea]. Disponible en: https://neuralnetworksanddeeplearning.com/chap1.html
[3] S. Haykin, Neural Networks and Learning Machines, 3rd ed. Upper Saddle River, NJ, USA: Pearson Education, 2009.
[4] C. M. Bishop, Pattern Recognition and Machine Learning. New York, NY, USA: Springer, 2006.
Este proyecto usa la licencia MIT. Ver LICENSE para detalles.