Skip to content

Implement Runner module: grid execution and adaptive search #29

Description

@jc-macdonald

Summary

Port runner.py for parallel grid execution and adaptive multi-objective search.

Functions to Implement

Function Description Julia approach
run_grid(model, grid; parallel=true) Execute model over design matrix Threads.@threads or pmap
run_adaptive(model, factors, scorer; n_trials, objectives) Multi-objective adaptive search Metaheuristics.jl NSGA-II

Design Notes

  • Parallelism: Julia has native Distributed/Threads — no joblib equivalent needed. Use Threads.@threads for shared-memory, pmap for distributed. Let user pass a parallel_backend kwarg.
  • Adaptive search: Metaheuristics.jl provides NSGA-II/III for multi-objective optimization, matching Optuna's NSGA-II sampler. Alternatively, Surrogates.jl provides EI+LCBS surrogate-based optimization for expensive objectives.
  • The runner should accept any AbstractModelWorld and return a ResultsTable.

Acceptance Criteria

  • run_grid produces correct number of result rows
  • run_adaptive improves over random search on a known test problem
  • Both functions return ResultsTable conforming to the Protocols module
  • Thread-safety tested

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions