OcbaSAR

class OcbaSAR(val initialReplications: Int = FixedScheduleSAR.DEFAULT_INITIAL_REPLICATIONS, val epsilon: Double = FixedScheduleSAR.DEFAULT_EPSILON, val varianceFloor: Double = DEFAULT_VARIANCE_FLOOR, val deltaFloor: Double = DEFAULT_DELTA_FLOOR) : SimulationAllocationRuleIfc, BatchAllocationRuleIfc(source)

The Optimal Computing Budget Allocation (OCBA) simulation-allocation rule (ISC appendix Algorithm 7). Given the current sample means and variances of the competing solutions, OCBA distributes a replication budget to maximize the probability of correct selection: more effort goes to systems that are close to the current best (small mean gap) and noisy (large variance), with the best system itself sampled in proportion to the aggregate competition. For minimization, with best b = argmin X̄_i, the allocation satisfies

  • N_i / N_j = (σ_i / δ_{b,i})² / (σ_j / δ_{b,j})² for non-best i, j, where δ_{b,i} = X̄_i − X̄_b,

  • N_b = σ_b · sqrt( Σ_{i≠b} (N_i / σ_i)² ).

allocate turns these ratios into target replication counts over the pooled budget (current total) + additionalBudget and returns each solution's shortfall to its target.

Because OCBA is inherently a multi-system rule, the primary entry point is the batch allocate (via BatchAllocationRuleIfc); CompassSolver uses it automatically. For drop-in compatibility with the per-solution SimulationAllocationRuleIfc, additionalReplications delegates to an internal FixedScheduleSAR floor (the slightly-super-logarithmic schedule), which also sizes the batch budget when OCBA drives a COMPASS run.

Parameters

initialReplications

the floor n0 on replications per solution; defaults to FixedScheduleSAR.DEFAULT_INITIAL_REPLICATIONS

epsilon

the positive growth-exponent offset for the floor schedule; defaults to FixedScheduleSAR.DEFAULT_EPSILON

varianceFloor

a positive lower bound applied to each variance so zero-variance estimates do not collapse the ratios; must be > 0

deltaFloor

a positive lower bound applied to each mean gap |X̄_i − X̄_b| so near-ties do not produce infinite weights; must be > 0

Constructors

Link copied to clipboard
constructor(initialReplications: Int = FixedScheduleSAR.DEFAULT_INITIAL_REPLICATIONS, epsilon: Double = FixedScheduleSAR.DEFAULT_EPSILON, varianceFloor: Double = DEFAULT_VARIANCE_FLOOR, deltaFloor: Double = DEFAULT_DELTA_FLOOR)

Types

Link copied to clipboard
object Companion

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
open override fun additionalReplications(solution: Solution, iteration: Int): Int

The per-solution floor schedule (delegates to FixedScheduleSAR); also sizes the OCBA budget.

Link copied to clipboard
open override fun allocate(solutions: List<Solution>, additionalBudget: Int): Map<InputMap, Int>

Returns the number of additional replications to give each solution so that, together with the replications they already carry, additionalBudget new replications are distributed across solutions according to the rule. Solutions receiving none may be omitted from the result.