@@ -116,7 +116,7 @@ def build_prompt(
116116
117117 # Format evolution history
118118 evolution_history = self ._format_evolution_history (
119- previous_programs , top_programs , inspirations , language
119+ previous_programs , top_programs , inspirations , language , feature_dimensions
120120 )
121121
122122 # Format artifacts section if enabled and available
@@ -243,6 +243,7 @@ def _format_evolution_history(
243243 top_programs : List [Dict [str , Any ]],
244244 inspirations : List [Dict [str , Any ]],
245245 language : str ,
246+ feature_dimensions : Optional [List [str ]] = None ,
246247 ) -> str :
247248 """Format the evolution history for the prompt"""
248249 # Get templates
@@ -321,8 +322,8 @@ def _format_evolution_history(
321322 # Use the full program code
322323 program_code = program .get ("code" , "" )
323324
324- # Calculate a composite score using safe numeric average
325- score = safe_numeric_average (program .get ("metrics" , {}))
325+ # Calculate fitness score (prefers combined_score, excludes feature dimensions)
326+ score = get_fitness_score (program .get ("metrics" , {}), feature_dimensions or [] )
326327
327328 # Extract key features (this could be more sophisticated)
328329 key_features = program .get ("key_features" , [])
@@ -371,8 +372,8 @@ def _format_evolution_history(
371372 # Use the full program code
372373 program_code = program .get ("code" , "" )
373374
374- # Calculate a composite score using safe numeric average
375- score = safe_numeric_average (program .get ("metrics" , {}))
375+ # Calculate fitness score (prefers combined_score, excludes feature dimensions)
376+ score = get_fitness_score (program .get ("metrics" , {}), feature_dimensions or [] )
376377
377378 # Extract key features
378379 key_features = program .get ("key_features" , [])
@@ -436,11 +437,11 @@ def _format_inspirations_section(
436437 # Use the full program code
437438 program_code = program .get ("code" , "" )
438439
439- # Calculate a composite score using safe numeric average
440- score = safe_numeric_average (program .get ("metrics" , {}))
440+ # Calculate fitness score (prefers combined_score, excludes feature dimensions)
441+ score = get_fitness_score (program .get ("metrics" , {}), feature_dimensions or [] )
441442
442443 # Determine program type based on metadata and score
443- program_type = self ._determine_program_type (program )
444+ program_type = self ._determine_program_type (program , feature_dimensions or [] )
444445
445446 # Extract unique features (emphasizing diversity rather than just performance)
446447 unique_features = self ._extract_unique_features (program )
@@ -461,7 +462,7 @@ def _format_inspirations_section(
461462 inspiration_programs = inspiration_programs_str .strip ()
462463 )
463464
464- def _determine_program_type (self , program : Dict [str , Any ]) -> str :
465+ def _determine_program_type (self , program : Dict [str , Any ], feature_dimensions : Optional [ List [ str ]] = None ) -> str :
465466 """
466467 Determine the type/category of an inspiration program
467468
@@ -472,7 +473,7 @@ def _determine_program_type(self, program: Dict[str, Any]) -> str:
472473 String describing the program type
473474 """
474475 metadata = program .get ("metadata" , {})
475- score = safe_numeric_average (program .get ("metrics" , {}))
476+ score = get_fitness_score (program .get ("metrics" , {}), feature_dimensions or [] )
476477
477478 # Check metadata for explicit type markers
478479 if metadata .get ("diverse" , False ):
0 commit comments