👋 Welcome to the app!
This interactive system seeks to optimally solve the organization and logistics of a calendar for a full baseball season. To achieve this, we implemented an advanced artificial intelligence technique directly inspired by the natural evolution of species. 🌿
Genetic programming involves automatically creating, evaluating, and modifying solutions from an initial population of programs. This is accomplished by executing bioinspired operations such as natural selection, crossing, and mutation. In this environment, each generated program is internally structured as an expression tree that represents a potential solution to our calendar.
The algorithm continuously evaluates each tree using a strict quality criterion (fitness function) with the goal of inheriting key characteristics and generating new trees that are increasingly promising. 📈 This process is repeated in an evolutionary loop until the optimal and most efficient solution is found!
📖 System Operational Guide
🔹 Quick Start Instructions
To start successfully interacting with the demo, follow these sequential steps:
- Create a team, league, and tournament in your administrative panels. Important note: The total number of participating teams must be even. 👥
- Once you have the participants defined, head to the panel above, select your active tournament and click on the green "Run Optimization" button to structure the automated schedule.
⚙️ Internal logic and algorithmic flow of AI
What happens internally when the software goes live? Here's a step-by-step look at the evasive life cycle based on genetic programming:
1. Base configuration and hyperparameters
Panel variables that will define generations, initial population size, as well as probability rates associated with crossover and genomic mutation are loaded.
2. Definition of operators and structural blocks (grammar)
- The primitives: are the logical operations that a program executes to build the tree.
crear_juego(fecha, equipo_en_casa, equipo_de_visita, lista) -> lista
agregar_lista(lista, lista) -> lista
- The terminals: represent the constant data or structured basic variables of the tournament.
Fecha (Master Lists of Working Days)
Equipo (both at home and on the road)
Lista (Empty Initializer)
- The ephemeral: They are pure random values that are fed into specific nodes to inject mathematical variability into the system.
- Random date and random team.
3. Initialization, evolutionary cycle and convergence
📍 Live Execution Phase: The system generates a random initial population and converts each proposal into a hierarchical tree structure (syntax tree). This is where the computational magic happens! ✨
- Visualization and sampling: The initial population is processed and the trees are rendered using the syntax generator.
- Aptitude Assessment: Each individual's fitness value is calculated based on cumulative distance in kilometers and regulatory compliance.
- Natural selection: The best individuals from the previous round are chosen to act as biological parents of the new generation.
- Crossbreeding, mutation and inheritance: New individuals are created by mixing branches of prominent trees and applying mutations in random nodes.
- Iterative loop: The evaluation, selection, and playback steps are repeated sequentially until the total number of generations configured in the interface is completed.
- Official Results: The best individual obtained in the last iteration is validated and its internal structure is stored as the definitive baseball tournament schedule. 🏆🎉