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
Summary
Port
runner.pyfor parallel grid execution and adaptive multi-objective search.Functions to Implement
run_grid(model, grid; parallel=true)Threads.@threadsorpmaprun_adaptive(model, factors, scorer; n_trials, objectives)Design Notes
Distributed/Threads— no joblib equivalent needed. UseThreads.@threadsfor shared-memory,pmapfor distributed. Let user pass aparallel_backendkwarg.AbstractModelWorldand return aResultsTable.Acceptance Criteria
run_gridproduces correct number of result rowsrun_adaptiveimproves over random search on a known test problemResultsTableconforming to the Protocols module