Configuration for the program database
| 293 | |
| 294 | @dataclass |
| 295 | class DatabaseConfig: |
| 296 | """Configuration for the program database""" |
| 297 | |
| 298 | db_path: Optional[str] = None |
| 299 | in_memory: bool = True |
| 300 | log_prompts: bool = True |
| 301 | |
| 302 | # Evolutionary parameters |
| 303 | population_size: int = 1000 |
| 304 | archive_size: int = 100 |
| 305 | num_islands: int = 5 |
| 306 | |
| 307 | # Selection parameters |
| 308 | elite_selection_ratio: float = 0.1 |
| 309 | exploration_ratio: float = 0.2 |
| 310 | exploitation_ratio: float = 0.7 |
| 311 | diversity_metric: str = "edit_distance" |
| 312 | |
| 313 | # Feature map dimensions for MAP-Elites |
| 314 | feature_dimensions: List[str] = field(default_factory=lambda: ["complexity", "diversity"]) |
| 315 | feature_bins: Union[int, Dict[str, int]] = 10 |
| 316 | diversity_reference_size: int = 20 |
| 317 | |
| 318 | # Migration parameters for island-based evolution |
| 319 | migration_interval: int = 50 |
| 320 | migration_rate: float = 0.1 |
| 321 | |
| 322 | random_seed: Optional[int] = 42 |
| 323 | |
| 324 | # Artifact storage |
| 325 | artifacts_base_path: Optional[str] = None |
| 326 | artifact_size_threshold: int = 32 * 1024 |
| 327 | cleanup_old_artifacts: bool = True |
| 328 | artifact_retention_days: int = 30 |
| 329 | |
| 330 | # Novelty detection settings |
| 331 | novelty_llm: Optional["LLMInterface"] = None |
| 332 | embedding_model: Optional[str] = None |
| 333 | similarity_threshold: float = 0.99 |
| 334 | |
| 335 | |
| 336 | @dataclass |