Skip to content

Changelog v1.1.0

Release summary

Version 1.1.0 introduces resource estimation tools for experiment preflight analysis. This release adds utilities to estimate memory usage, approximate runtime and evaluate whether a given experimental configuration is computationally feasible before launching expensive optimization or benchmarking runs.

This version is backward compatible with previous public APIs.

Added

Resource estimation tools

  • Added evobench.tools.resources submodule.
  • Added memory estimation utilities for population-based algorithms.
  • Added runtime estimation utilities based on configurable empirical baselines.
  • Added feasibility reports to classify experiment configurations before execution.
  • Added configurable execution budgets through FeasibilityBudget.
  • Added serializable feasibility output through FeasibilityReport.to_dict().

Memory estimation

  • Added estimate_single_array_memory_mb() to estimate the memory required by one population-like array.
  • Added estimate_algorithm_memory_mb() to estimate algorithm-level memory usage using configurable multipliers.
  • Added default memory multipliers for known algorithms.
  • Added optional quadratic memory overhead support for algorithms that use covariance-like structures.
  • Added algorithm name normalization through normalize_algorithm_name().

Runtime estimation

  • Added RuntimeBaseline dataclass to define empirical runtime baselines.
  • Added estimate_runtime_seconds() to approximate execution time from baseline measurements.
  • Added support for configurable complexity models:
  • linear_units
  • quadratic_dim
  • cubic_dim
  • Added support for user-defined runtime baselines for custom algorithms.

Feasibility analysis

  • Added estimate_feasibility() to estimate whether a configuration is recommended under a given execution budget.
  • Added feasibility checks for:
  • maximum dimension
  • maximum population size
  • maximum estimated memory
  • maximum estimated runtime
  • Added human-readable feasibility reasons when a configuration exceeds the configured budget.

Public API exports

  • Exposed resource estimation utilities from evobench.tools:
from evobench.tools import FeasibilityBudget, estimate_feasibility
from evobench.tools import estimate_algorithm_memory_mb
from evobench.tools import estimate_runtime_seconds
from evobench.tools import RuntimeBaseline

Examples

  • Added example for preflight resource estimation before running an optimizer.
  • Added example for custom memory multipliers and runtime baselines.
  • Added examples demonstrating recommended and non-recommended configurations.

Documentation

  • Added documentation for resource estimation tools.
  • Added memory estimation guide.
  • Added runtime estimation guide.
  • Added feasibility analysis guide.
  • Added resource estimation examples to the documentation gallery.

Tests

  • Added unit tests for resource estimation utilities.
  • Added stress test for dimensional feasibility estimation.
  • Added tests for custom algorithm multipliers.
  • Added tests for custom runtime baselines.
  • Added tests for high-dimensional configurations without executing expensive optimizers.

Changed

  • Updated evobench.tools.__init__ to expose the new resource estimation API.
  • Updated examples index to include resource estimation workflows.
  • Updated documentation navigation to include resource estimation pages.

Design notes

The resource estimation tools are intentionally located under:

src/evobench/tools/resources/

This keeps the project architecture aligned with the existing separation of responsibilities:

  • algorithms/ contains optimization algorithms.
  • benchmarks/ contains objective functions and benchmark definitions.
  • stats/ contains statistical analysis tools.
  • tools/ contains experiment support utilities.

Resource estimation is not an algorithm or a benchmark; it is a preflight tool for experiment planning. For that reason, it belongs under evobench.tools.resources.

Backward compatibility

This release does not remove or rename existing public APIs. Existing imports and workflows remain compatible.

from evobench.tools import FeasibilityBudget, estimate_feasibility

report = estimate_feasibility(
    algorithm_name="pso",
    dim=5000,
    population_size=50000,
    generations=10,
    budget=FeasibilityBudget(
        max_dimension=100,
        max_population_size=1000,
        max_estimated_memory_mb=1024,
        max_estimated_seconds=30,
    ),
)

print(report.to_dict())

Migration notes

No migration is required for existing users. New users can import the resource estimation utilities from evobench.tools.

For development environments, install the package in editable mode to ensure local examples use the current source tree:

python3 -m pip install -e .

Alternatively, examples can be executed with:

PYTHONPATH=src python3 examples/06_resource_preflight.py

Suggested tag

git tag -a v1.1.0 -m "Release v1.1.0: resource estimation tools"
git push origin v1.1.0