Genomes
Module Génomes (Genetics Genomes)
Ce module fournit les implémentations concrètes des structures de données évolutives (les “Individus”). Chaque type de génome est conçu pour un problème d’optimisation spécifique.
Tous les génomes implémentent le trait Genome (src-tauri/src/genetics/traits.rs), garantissant qu’ils peuvent être manipulés par le moteur générique (GeneticEngine) via les opérations standards (Mutation, Crossover).
🧬 Vue d’ensemble
classDiagram
class Genome {
<<interface>>
+mutate(rate)
+crossover(other)
+distance(other)
}
class SystemAllocationGenome {
+genes: Vec<usize>
+context: Context
-- Optimisation Combinatoire --
Allocation Architecture
}
class DecisionTreeGenome {
+root: TreeNode
+max_depth: usize
-- IA Symbolique --
Apprentissage de Règles
}
class NeuralNetworkGenome {
+weights: Vec<f32>
+topology: Vec<usize>
-- Neuroévolution --
Contrôle & Prédiction
}
Genome <|-- SystemAllocationGenome
Genome <|-- DecisionTreeGenome
Genome <|-- NeuralNetworkGenome
1. Arcadia Architecture (SystemAllocationGenome)
Conçu pour l’optimisation combinatoire, spécifiquement l’allocation de fonctions logiques sur des composants physiques.
- Structure : Vecteur d’entiers (
Vec<usize>). genes[i] = csignifie que la fonctioniest allouée au composantc.- Performance : Utilise des indices directs pour une évaluation ultra-rapide (O(1) lookup).
- Contexte : Embarque une référence aux IDs réels (Strings) pour reconstruire la solution métier lisible.
- Opérateurs :
- Mutation : Réassignation uniforme (déplace une fonction vers un autre composant).
- Crossover : Croisement Uniforme (mélange les allocations des deux parents). Usage : Optimisation d’architecture système (Couplage, Charge, Latence).
2. Arbre de Décision (DecisionTreeGenome)
Conçu pour l’IA Explicable (XAI) et l’apprentissage de règles. L’évolution construit la structure de l’arbre.
- Structure : Enum récursif (
TreeNode). Internal: Teste une caractéristique (feature_index > threshold).Leaf: Donne une valeur de sortie ou une classe.- Opérateurs :
- Mutation :
- Paramétrique : Change le seuil ou la feature testée.
- Structurelle : Remplace une feuille par un sous-arbre (Croissance) ou l’inverse (Élagage).
- Crossover : Échange de sous-arbres (Subtree Exchange). C’est le principe fondamental de la Programmation Génétique (GP). Usage : Classification, régression symbolique, découverte de règles métier lisibles par l’humain.
3. Réseau de Neurones (NeuralNetworkGenome)
Conçu pour la Neuroévolution (optimisation des poids d’un réseau de neurones sans rétropropagation de gradient).
- Structure : Vecteur plat de flottants (
Vec<f32>). - Contient tous les poids et biais concaténés.
- La topologie (couches) est fixée à l’initialisation (Fixed Topology Neuroevolution).
- Opérateurs :
- Mutation : Gaussienne (ajoute un léger bruit aléatoire aux poids).
- Crossover : Uniforme ou SBX (Simulated Binary Crossover) pour mélanger les “connaissances” des parents. Usage : Apprentissage par renforcement (Reinforcement Learning), contrôle de systèmes dynamiques, approximation de fonctions complexes “boîte noire”.
🛠️ Extension
Pour ajouter un nouveau type de génome (ex: Problème du Voyageur de Commerce), il suffit de :
- Créer une struct qui contient vos données.
- Implémenter le trait
Genome. - Définir comment
mutatemodifie vos données et commentcrossovermélange deux instances.