Skip to content

Biblioteca de Juegos y Algoritmos de Aprendizaje. En este repositorio diferenciamos tres secciones principales. 1) Desarrollo de videojuegos, para uso del usuario. 2) y 3) Desarrollo de algoritmos para ganar a dichos juegos.

License

Notifications You must be signed in to change notification settings

JavierAM01/Machine-Learning-in-Games

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 

Repository files navigation

[Repositorio en proceso]

Biblioteca de Juegos y Algoritmos de Aprendizaje. En el nos encontramos 3 secciones principales.

  1. Desarrollo de videojuegos. Creación de videojuegos para uso común del usuario.
  2. Algoritmos de resolución sencillos. En esta sección desarrollaremos algoritmos sencillos para resolver y pasarnos los juegos, como busqueda binaria, tree search y sistemas expertos (distinción de casos).
  3. Algoritmos de aprendizaje automático. En esta sección aplicaremos técnicas más avanzadas, aunque no por ello son siempre la mejor opción, como: machine learning, deep learning y algoritmos genéticos.

Índice

  1. Desarrollo de videojuegos

  2. Algoritmos de resolución sencillos

  3. Algoritmos de aprendizaje automático

Desarrollo de videojuegos

Preview Link

Snake

Tres en raya

Sudoku

Flappy Bird

Ajedrez

Laberinto

Arkanoid

Algoritmos de resolución sencillos

Sudoku

Preview Algorithm
El algoritmo de resolución de Sudoku utiliza la recursividad para resolver este desafiante rompecabezas. La idea principal es descomponer el problema en subproblemas más pequeños y resolverlos de forma recursiva. El algoritmo busca una casilla vacía en el tablero y prueba diferentes números del 1 al 9 para colocar en esa casilla, verificando si cumple con las reglas del Sudoku. Si se encuentra una solución válida, se avanza a la siguiente casilla vacía y se repite el proceso. Si no se encuentra una solución válida, se retrocede y se prueba con otro número. Este proceso continúa hasta llenar todas las casillas o hasta encontrar una solución completa. La recursividad permite explorar todas las combinaciones posibles de números de manera eficiente.

ver código

En este repositorio, presento una versión más humana del algoritmo de resolución de Sudoku. En lugar de depender únicamente de la recursividad, esta versión utiliza diferentes técnicas para encontrar las posibilidades de cada casilla vacía en función de las filas, columnas y bloques en el tablero. Mediante un enfoque meticuloso, se exploran diferentes estrategias para reducir las opciones y tomar decisiones informadas en cada paso. Además, se incorporan métodos más avanzados que permiten identificar patrones y realizar inferencias lógicas. Esta nueva implementación proporciona una experiencia más cercana a la forma en que los humanos abordan y resuelven los Sudokus, lo que brinda una perspectiva interesante sobre las técnicas de resolución del juego.

El código está hecho en Haskell, por lo que los gráficos son más primitivos.

ver código

Búsqueda del camino más corto

Preview Algorithm
Algoritmo de Dijkstra. El algoritmo de Dijkstra es un algoritmo de búsqueda de caminos más cortos en un grafo ponderado. Se utiliza para encontrar la ruta más corta desde un nodo de origen a todos los demás nodos en un grafo dirigido o no dirigido. Funciona asignando una distancia provisional a cada nodo y actualizando estas distancias a medida que se explora el grafo, siempre seleccionando el nodo con la distancia provisional más pequeña hasta llegar al nodo de destino o a todos los nodos alcanzables desde el nodo de origen.

ver código

Modificación del algortimo de Dijkstra. A este se le añade el hecho de que el camino más corto entre dos puntos es una línea recta, así acortamos la búsqueda en algunas ocasiones.

ver código

Algoritmos de aprendizaje automático

AIGym - CartPole

Preview Algorithm
El entorno CartPole es un desafío clásico en el campo del aprendizaje por refuerzo, donde el objetivo es equilibrar un poste sobre un carrito mediante la aplicación de acciones discretas. En este repositorio, encontrarás diferentes enfoques para resolver este problema utilizando algoritmos como Q-Learning, Deep Q-Networks (DQN), Policy Gradient, entre otros.

ver código

Algoritmo Genético - Flappy Bird

Preview Algorithm
En este proyecto, exploramos la poderosa aplicación de un algoritmo genético en la resolución del desafiante juego Flappy Bird. Mediante la representación de las aves como individuos en una población y la aplicación de operadores genéticos como selección, cruzamiento y mutación, buscamos encontrar la combinación óptima de características y comportamientos que maximicen la habilidad de evitar obstáculos y obtener puntuaciones altas. A través de la optimización iterativa basada en la evaluación de fitness y la evolución generacional, el algoritmo genético converge hacia soluciones cada vez mejores. Descubre cómo esta técnica matemática nos permite abordar problemas complejos y lograr resultados impresionantes en el contexto del Flappy Bird.

ver código

Introducción a diferentes modelos de IA - Tres en raya

Preview Algorithm

En este repositorio, llevamos a cabo una comparación de tres tipos de algoritmos:

1) Redes Neuronales,

2) Aprendizaje por Refuerzo

3) Árboles de Búsqueda de Monte Carlo.

Con este propósito, creamos un modelo para cada uno de ellos y los entrenamos con el objetivo de jugar al juego del 3 en raya. Mediante esta comparativa, buscamos analizar y evaluar el rendimiento y las capacidades de cada algoritmo en la resolución de este desafío estratégico.

ver código

About

Biblioteca de Juegos y Algoritmos de Aprendizaje. En este repositorio diferenciamos tres secciones principales. 1) Desarrollo de videojuegos, para uso del usuario. 2) y 3) Desarrollo de algoritmos para ganar a dichos juegos.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published