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.resourcessubmodule. - 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
RuntimeBaselinedataclass to define empirical runtime baselines. - Added
estimate_runtime_seconds()to approximate execution time from baseline measurements. - Added support for configurable complexity models:
linear_unitsquadratic_dimcubic_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.
Recommended usage
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