R/tabu_search.R
pb_tabu_search.RdBuilds a sequential binary partition (SBP) by repeatedly applying grouped tabu search to select balances over the current sets of parts. At each step, the best candidate split is retained and the remaining candidate subproblems are explored until an SBP with \(D - 1\) balances is obtained.
pb_tabu_search(X, iter = 100, debug = FALSE)An integer matrix representing a sequential binary partition. Rows
correspond to the original parts of X and columns correspond to
balances. Entries are in \(\{-1,0,1\}\). The returned matrix has attribute
"max_steps", giving the largest iteration index at which a best
partial solution was found among all partial searches performed.
This function provides a heuristic approximation to a principal balance basis. The first balance is searched on the full set of parts, and the subsequent balances are obtained by recursively refining the best currently available split.
All partial searches are initialized with the constrained principal balance of the corresponding grouped composition.
The procedure starts from the trivial grouping where each part forms its own singleton group. After each partial tabu search, up to three candidate subproblems may be generated from the selected solution:
the split between active and inactive groups,
the left active branch,
the right active branch.
All generated candidates are stored, and at each stage the candidate with the largest variance criterion is selected for inclusion in the SBP and for further refinement.
This is a heuristic search strategy and does not guarantee a globally optimal SBP.