moc.gapbk 0.2.1

Performance

This release rewrites the hot inner loops of the algorithm using vectorised R primitives. Numerical results are bit-identical to 0.2.0 under the same random seed; only the runtime changes.

Observed speedups on the internal benchmark (synthetic data, seed=42):

Scenario 0.2.2 0.3.0 Speedup
NSGA-II, n=200, G=3 0.049 s 0.003 s 17.8x
NSGA-II, n=300, G=3 0.070 s 0.003 s 22.3x
NSGA-II, n=500, G=3 0.124 s 0.006 s 22.3x
Full algo, n=50 0.011 s 0.002 s 4.3x
Full algo, n=60 0.009 s 0.002 s 5.3x
Full algo, n=70 0.009 s 0.003 s 3.6x

The asymptotic complexity of the algorithm itself is unchanged (Pareto Local Search is still O(m^2 * n^2 * k) per generation, where m is the size of the Pareto front). What changes is the constant factor: the inner operations now execute in compiled C through R primitives rather than at the interpreter level. For very large instances with local_search = TRUE a future Rcpp-backed release will be needed.

moc.gapbk 0.2.0

GitHub infrastructure and developer experience

Breaking changes

CRAN compliance

Code quality

Documentation and tests