BenchmarkExperiment

constructor(name: String, problems: List<ProblemCase>, solverCases: List<SolverCase>, macroReplications: Int, macroReplicationRange: IntRange = 1..macroReplications, replicationBudgetPerRun: Int, confirmation: ConfirmationOptions? = ConfirmationOptions(), captureIterationTraces: Boolean = false, verificationReplications: Int? = null, numWorkers: Int? = null, experimentStreamProvider: RNStreamProviderIfc = RNStreamProvider(), cellSolverDecorator: (solver: Solver, problemName: String, solverLabel: String, repNum: Int) -> Unit? = null)(source)

Parameters

name

the experiment's name; flows into every run record

problems

the problem cases; names must be unique

solverCases

the solver configurations; labels must be unique

macroReplications

the number of macro-replications per (problem, solver) pair in the study this experiment belongs to; it fixes the addressing of starting points, so blocks of one study must all declare the same value

macroReplicationRange

which of those macro-replications THIS experiment runs. Defaults to all of them. Running a study as several experiments over disjoint sub-ranges is cell-for-cell identical to running it as one, which is how a long study is checkpointed: each block is saved on completion and a resumed run skips the blocks already present

replicationBudgetPerRun

the per-cell replication budget

confirmation

confirmation-stage options; null disables confirmation

captureIterationTraces

when true, every cell solver's per-iteration progress (iteration, cumulative replications, best penalized objective) is captured into the summary's traces, keyed by cell label — opt-in because traces grow with the budget

verificationReplications

when non-null, each problem's winning point is re-simulated at this replication count on a dedicated evaluator and recorded — the classic verify-at-elevated-replications step

numWorkers

the maximum number of cells running at the same time; null uses the smaller of the cell count and the available processors

experimentStreamProvider

the stream provider for experiment-level draws (currently: the common starting points); defaults to a fresh provider so identically configured experiments reproduce each other exactly

cellSolverDecorator

invoked with each freshly created cell solver before it runs, on the cell's worker thread — the attachment hook for per-cell trackers and instrumentation; anything it touches must be safe to use from worker threads