Skip to content

Update Abstract Base Classes with COCO/BBOB Requirements #66

@Anselmoo

Description

@Anselmoo

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 seed parameter as REQUIRED for BBOB
  • Document track_history for 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.py updated with COCO/BBOB requirements
  • opt/multi_objective/abstract_multi_objective.py updated 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)

Metadata

Metadata

Labels

documentationImprovements or additions to documentationenhancementNew feature or requestscience

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions