Best Subset Problem
jMetal BinaryProblem implementation for the best subset selection task.
The problem receives a precomputed bundle of AP values per (system, topic) and evaluates binary masks over topics by computing a correlation between:
X: per-system means of AP over the currently selected topics (subset means).
Y: per-system full-set mean AP (precomputed once).
Correlation backend:
Pearson
(default) via Correlations.fastPearsonPrimitiveKendall τ-b
via Correlations.kendallTauBPrimitive
Performance considerations:
Uses incremental subset SUMS (
DoubleArray
) with an in-place diff update against the last evaluated mask or fixed‑K swap hints from BestSubsetSolution.Per-thread
DoubleArray
buffers for X means are stored in aThreadLocal
to be parallel-safe and GC‑friendly.The problem does not retain clones for streaming; writers/streaming are handled outside in the dataset layer.
Objective encoding is delegated via targetStrategy, which sets objectives in the underlying BestSubsetSolution according to the selected target (e.g., BEST/WORST).
Constructors
Secondary constructor kept for API compatibility with older boxed‑array call sites. It converts boxed AP rows to primitives and builds PrecomputedData internally.
Properties
Functions
Creates a new solution:
Bits per variable (single variable with numberOfTopics bits).
No constraints.
Two objectives (K and correlation with target-dependent signs).
Single binary variable (topic mask).
Total number of bits equals number of topics.