-
Notifications
You must be signed in to change notification settings - Fork 2
Closed
Labels
documentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew feature or requestNew feature or requestscience
Description
Problem
Abstract base classes (AbstractOptimizer and AbstractMultiObjectiveOptimizer) lack COCO/BBOB compliance documentation, providing no centralized guidance for 120+ concrete implementations.
Solution
Update both abstract base classes with COCO/BBOB requirements to establish centralized foundation before updating individual optimizers.
Implementation
File 1: opt/abstract_optimizer.py
Add to module docstring:
"""Abstract base class for single-objective optimizers.
**COCO/BBOB Compliance Requirements:**
All concrete optimizer implementations inheriting from this class must provide:
- Algorithm metadata (name, version, authors, year, class)
- BBOB benchmark settings (search space, dimensions, runs, seeds)
- Hyperparameter documentation with BBOB-recommended values
- Reproducibility requirements (seed logging, parameter tracking)
- Performance characteristics on BBOB function classes
- Complexity analysis (time/space, function evaluations)
See `.github/prompts/optimizer-docs-template.md` for complete template.
"""Add to AbstractOptimizer.__init__ docstring:
- Document
seedparameter as REQUIRED for BBOB - Document
track_historyfor COCO postprocessing - Specify BBOB standard values (search space [-5,5], dimensions, budget 10^4*dim)
File 2: opt/multi_objective/abstract_multi_objective.py
Add multi-objective BBOB adaptations:
- Pareto front reproducibility
- Multi-objective performance indicators (Hypervolume, IGD, Spread)
- Seed logging requirements
Acceptance Criteria
-
opt/abstract_optimizer.pyupdated with COCO/BBOB requirements -
opt/multi_objective/abstract_multi_objective.pyupdated with multi-objective adaptations - Both files pass
uv run ruff check - Validation test passes:
uv run python -c "
from opt.abstract_optimizer import AbstractOptimizer
from opt.multi_objective.abstract_multi_objective import AbstractMultiObjectiveOptimizer
import inspect
doc_single = inspect.getdoc(AbstractOptimizer)
assert 'COCO/BBOB' in doc_single
assert 'seed' in doc_single.lower()
doc_multi = inspect.getdoc(AbstractMultiObjectiveOptimizer)
assert 'multi-objective' in doc_multi.lower()
assert 'seed' in doc_multi.lower()
print('✅ Both base classes BBOB compliant')
"Complexity
Medium - Requires understanding BBOB standards and abstract class patterns
Dependencies
Depends on: #1 (template must exist first)
Blocks: #3-#14 (establishes centralized foundation)
Reactions are currently unavailable
Metadata
Metadata
Labels
documentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew feature or requestNew feature or requestscience