Appliquez les principes architecturaux suivants lorsque vous déterminez comment noter, normaliser et pénaliser les entrées de code candidates dans votre harnais d'évaluation.
Maximiser directement les objectifs
AlphaEvolve effectue exclusivement des recherches de maximisation, en traitant chaque objectif d'optimisation comme une tâche d'escalade. Pour minimiser une métrique telle que la latence
ou les taux d'erreur, vous devez nier la valeur finale calculée :
score = -latency_ms # AE maximizes -> minimizes latency.
Maintenir une monotonie stricte des fonctions
Veillez à n'implémenter que des fonctions de notation monotones. Le score numérique renvoyé doit augmenter de manière cohérente à mesure que les solutions candidates s'améliorent. L'intégration de scores non monotones dégrade les performances de recherche et introduit des incohérences logiques dans le chemin d'optimisation.
Fournir des métriques détaillées et granulaires
Les scores détaillés améliorent directement la qualité globale de la recherche. Même lorsque vous optimisez un seul objectif commercial principal, l'intégration de métriques secondaires ou proxy aide AlphaEvolve à naviguer plus efficacement dans un espace de recherche complexe. Transmettez les sous-scores individuels au système en tant qu'insights structurés afin que le LLM puisse raisonner explicitement sur les compromis de performances entre les générations.
Récompenser les succès partiels plutôt que les résultats rares
Récompensez les succès partiels au lieu de vous fier entièrement aux résultats finaux ou binaires. Préférez toujours un signal de notation dense à un signal rare.
Un objectif binaire ou à faible résolution (par exemple, le suivi des matchs gagnés dans un problème de jeu basé sur un tournoi) crée des plateaux de performances massifs où plusieurs candidats sont à égalité. Ce comportement empêche AlphaEvolve de distinguer une solution presque parfaite d'une solution médiocre, ce qui bloque les boucles de sélection parent.
Pour maintenir la direction du gradient de recherche :
Ajoutez un sous-signal précis : mesurez les progrès incrémentiels vers l'objectif final (par exemple, les points individuels marqués lors d'un match) afin qu'AlphaEvolve puisse classer les candidats qui seraient autrement à égalité et progresser vers des espaces de solutions prometteurs.
Alignez soigneusement l'alignement et les pondérations : assurez-vous que le sous-signal est aligné de manière monotone sur l'objectif réel et qu'il est pondéré en dessous de celui-ci. S'il n'est pas correctement pondéré, AlphaEvolve optimisera la métrique proxy au détriment de l'objectif réel (ce qui entraînera un piratage de la récompense).
Par exemple, créez une fonction objectif scalaire en utilisant les points comme départage logique : use score = matches_won + w * (points_scored / points_possible).
Configurez la contrainte de pondération sur w < 1 afin qu'une victoire finale supplémentaire
soit toujours mieux classée que toute accumulation de points dans un match, en traitant le sous-signal
strictement comme un départage.
Commencer par un seul objectif
Envisagez de commencer votre implémentation avec une seule fonction objectif. Bien que l'optimisation multi-objectifs avec un suivi complet de la frontière de Pareto soit entièrement prise en charge de manière native dans la base de données, où MAP-Elites suit le meilleur programme par métrique et où le système maintient une frontière de Pareto continue sur toutes les métriques, un seul objectif scalaire est beaucoup plus simple à raisonner et à déboguer lors du déploiement initial. Si votre problème nécessite plusieurs objectifs, vous pouvez les combiner en un seul scalaire pondéré ou utiliser des outils de suivi multi-métriques dès le début.
Redimensionner et normaliser avant de combiner
Appliquez un équilibrage strict des échelles sur vos métriques pour éviter les biais d'optimisation :
Redimensionnez les plages : normalisez les métriques sur des plages comparables avant de les combiner. La combinaison de scores limités (de
0à1) et de scores illimités (de0àinfinity) sans redimensionnement explicite fait en sorte que la métrique illimitée domine le paysage de fitness.Préférez les structures additives aux combinaisons multiplicatives : les objectifs multiplicatifs peuvent devenir hypersensibles aux variations mineures du dénominateur, ce qui compromet la précision et la stabilité de la recherche. Implémentez plutôt des sommes pondérées additives :
w1*A - w2*L - w3*M. Ce format permet d'ajuster facilement les pondérations par paramètre de performances.Normalisez par rapport aux valeurs initiales : pour éviter que les différences d'échelle ne faussent votre chemin de recherche, divisez chaque métrique par sa valeur de référence initiale respective afin que toutes les métriques commencent à une valeur de référence de
1.0avant d'appliquer des pondérations et de les combiner.
Amplifier les différences numériques minimales
De petites différences de score numérique peuvent ne pas fournir de signal d'optimisation utile au LLM sous-jacent. Si un candidat fort obtient un score de 1e-7 et qu'un candidat plus faible obtient un score de 1e-8, le LLM peut ne pas faire de distinction significative entre eux lors de l'examen du contexte. Redimensionnez vos scores finaux sur une plage évidente,
lisible par l'homme (par exemple, de 0 à100) afin que les améliorations incrémentielles du code
deviennent numériquement apparentes dans l'invite de génération.