Skip to content

Implement Runner module: grid execution and adaptive search #29

@jc-macdonald

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions