👋 Bienvenue sur l’application !
Ce système interactif vise à résoudre de manière optimale l’organisation et la logistique d’un calendrier pour une saison complète de baseball. Pour y parvenir, nous avons mis en place une technique avancée d’intelligence artificielle directement inspirée par l’évolution naturelle des espèces. 🌿
La programmation génétique consiste à créer, évaluer et modifier automatiquement des solutions à partir d’une population initiale de programmes. Cela est réalisé en exécutant des opérations bioinspirées telles que la sélection naturelle, le croisement et la mutation. Dans cet environnement, chaque programme généré est structuré en interne comme un arbre d’expression qui représente une solution potentielle à notre calendrier.
L’algorithme évalue continuellement chaque arbre en utilisant un critère de qualité strict ( fonction d’aptitude) dans le but d’hériter de caractéristiques clés et de générer de nouveaux arbres de plus en plus prometteurs. 📈 Ce processus est répété dans une boucle évolutive jusqu’à ce que la solution optimale et la plus efficace soit trouvée !
📖 Guide opérationnel du système
🔹 Instructions de démarrage rapide
Pour commencer à interagir avec succès avec la démo, suivez ces étapes séquentielles :
- Créez une équipe, une ligue et un tournoi dans vos panneaux administratifs. Note importante : Le nombre total d’équipes participantes doit être uniforme. 👥
- Une fois les participants définis, rendez-vous dans le panneau ci-dessus, sélectionnez votre tournoi actif et cliquez sur le bouton vert « Run Optimization » pour structurer le calendrier automatisé.
⚙️ Logique interne et flux algorithmique de l’IA
Que se passe-t-il en interne lorsque le logiciel est en ligne ? Voici un aperçu étape par étape du cycle de vie d’évitement basé sur la programmation génétique :
1. Configuration de base et hyperparamètres
Les variables de panel qui définiront les générations, la taille initiale de la population, ainsi que les taux de probabilité associés au croisement et à la mutation génomique sont chargées.
2. Définition des opérateurs et des blocs structurels (grammaire)
- Les primitifs : sont les opérations logiques qu’un programme exécute pour construire l’arbre.
crear_juego(fecha, equipo_en_casa, equipo_de_visita, lista) -> lista
agregar_lista(lista, lista) -> lista
- Les terminaux : représentent les données constantes ou les variables de base structurées du tournoi.
Fecha (Listes maîtresses des jours ouvrables)
Equipo (À domicile comme à l’extérieur)
Lista (Initialiseur vide)
- L’éphémère : Ce sont des valeurs purement aléatoires qui sont injectées dans des nœuds spécifiques pour injecter une variabilité mathématique dans le système.
- Date aléatoire et équipe aléatoire.
3. Initialisation, cycle évolutif et convergence
📍 Phase d’exécution en direct : Le système génère une population initiale aléatoire et convertit chaque proposition en une structure hiérarchique en arbre (arbre syntaxique). C’est là que la magie computationnelle opère ! ✨
- Visualisation et échantillonnage : La population initiale est traitée et les arbres sont rendus à l’aide du générateur de syntaxe.
- Évaluation des aptitudes : La valeur de fitness de chaque individu est calculée en fonction de la distance cumulative en kilomètres et de la conformité réglementaire.
- Sélection naturelle : Les meilleurs individus du cycle précédent sont choisis pour agir comme parents biologiques de la nouvelle génération.
- Croisement, mutation et héritage : De nouveaux individus sont créés en mélangeant des branches d’arbres importants et en appliquant des mutations dans des nœuds aléatoires.
- Boucle itérative : Les étapes d’évaluation, de sélection et de lecture sont répétées séquentiellement jusqu’à ce que le nombre total de générations configurées dans l’interface soit complété.
- Résultats officiels : Le meilleur individu obtenu dans la dernière itération est validé et sa structure interne est enregistrée comme calendrier définitif du tournoi de baseball. 🏆🎉