performanceProfile

fun performanceProfile(expId: Int, tau: Double, numPoints: Int = 20): List<PerformanceProfilePoint>(source)

Performance-profile data across an experiment's traced runs: for each solver case and each budget fraction on a grid, the fraction of (problem, macro-rep) cells whose best penalized objective reached the problem's gap basis plus tau within that fraction of the replication budget.

Requires captured iteration traces and problems with a gap basis; runs without either are excluded. The solve test compares the (minimization-oriented) penalized objective against the oriented basis plus tau, which equals the raw objective comparison for problems without response constraints.

Parameters

expId

the experiment id

tau

the solve tolerance above the gap basis; must be non-negative

numPoints

the number of budget-fraction grid points in (0, 1]


Performance-profile data pooled across the blocks of one study (see the pooled mcbDataMap). The blocks must share a replication budget, since the profile's x-axis is the fraction of that budget; pooling experiments with different budgets would put incomparable cells on one axis.

Each problem needs one solve threshold across the whole pooled set. Problems measured against a reference solution already carry the same basis in every block and it is used directly. A problem with no reference is gapped against the best objective found within its experiment, so the blocks disagree — the basis is then recomputed as the best across every pooled run of that problem, which is the value a single unblocked run would have recorded. With one experiment there is nothing to disagree with, so a single-experiment profile is unchanged.

Parameters

expIds

the experiment ids to pool; must not be empty

tau

the solve tolerance above the gap basis; must be non-negative

numPoints

the number of budget-fraction grid points in (0, 1]