ConfirmationOutcome

constructor(winner: Solution, confirmedSolutions: List<Solution>, numOracleCalls: Int, numReplicationsRequested: Int, numCandidates: Int, numConfidentlyFeasible: Int, selectionDegenerate: Boolean, numConfidentlyFeasibleAfterScreening: Int? = null)(source)

Parameters

winner

the winning solution after confirmation

confirmedSolutions

the freshly confirmed solutions (empty when confirmation was skipped because there was effectively a single candidate)

numOracleCalls

the number of oracle design points the confirmation consumed

numReplicationsRequested

the number of replications the confirmation consumed

numCandidates

the number of candidates that entered ranking

numConfidentlyFeasible

how many of those candidates passed Solution.isResponseConstraintFeasible at the options' CI level, measured at the candidates' own search-time precision — which is the precision the ranking actually used

numConfidentlyFeasibleAfterScreening

how many candidates were confidently feasible once re-evaluated by the screening stage, or null when screening did not run. This is the number that says whether screening achieved what it exists for: a degenerate selection at search-time precision followed by a positive count here is a selection that screening rescued, and a zero here means the screening replications were too few for the constraint and the finalists were still chosen by violation alone.

selectionDegenerate

true when no candidate could be declared confidently feasible. The comparator then cannot discriminate on feasibility, every candidate falls through to its violation-penalty tie-break, and the objective plays no part in choosing the winner: the reported winner is the most conservative candidate rather than the best objective/feasibility trade-off. Always false for a problem with no response constraints, where every candidate is trivially feasible. The condition is otherwise invisible in the output, which is why it is recorded rather than merely logged.