-
Notifications
You must be signed in to change notification settings - Fork 651
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
The problem with MAP-Elite Algorithm implementation of OpenEvolve:
def _calculate_feature_coords(self, program: Program) -> List[int]:
"""
Calculate feature coordinates for the MAP-Elites grid
......
"""
coords = []
for dim in self.config.feature_dimensions:
if dim == "complexity":
# Use code length as complexity measure
complexity = len(program.code)
bin_idx = min(int(complexity / 1000 * self.feature_bins), self.feature_bins - 1)
coords.append(bin_idx)
elif dim == "diversity":
# Use average edit distance to other programs
......
elif dim == "score":
# Use average of numeric metrics
if not program.metrics:
bin_idx = 0
else:
avg_score = safe_numeric_average(program.metrics)
bin_idx = min(int(avg_score * self.feature_bins), self.feature_bins - 1)
coords.append(bin_idx)
elif dim in program.metrics:
# Use specific metric
......
else:
# Default to middle bin if feature not found
......
logging.info(
"MAP-Elites coords: %s",
str({self.config.feature_dimensions[i]: coords[i] for i in range(len(coords))}),
)
return coordsWhen it comes to the calculation of the value of each feature dimension for MAP-Elite Algorithm, the calculation of complexity can make complexities of all programs be self.feature_bins - 1. This causes MAP-Elite Algorithm ineffective.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working