ProblemCase

constructor(name: String, problemDefinitionFactory: () -> ProblemDefinition, evaluatorFactoryProvider: (problemDefinition: ProblemDefinition) -> MemberEvaluatorFactoryIfc, referenceSolution: ReferenceSolution? = null, tags: Map<String, String> = emptyMap())(source)

Parameters

name

a unique (within an experiment), stable name for the problem; flows into cell labels and result records

problemDefinitionFactory

creates a fresh problem definition on each call

evaluatorFactoryProvider

creates the per-member evaluation-resource factory for one run of the problem. The supplied problem definition is the instance the harness created for the run and will hand to every cell's solver — the member evaluators must be built against that same instance (solutions validate their problem identity), which is why it is an argument rather than something the provider creates for itself

referenceSolution

the reference the problem's runs are gapped against; null when no reference exists (runs are then gapped against the best found in the experiment)

tags

descriptive key-value pairs for analysis grouping (e.g. dimension, family, noiseLevel, constrained)