R/tabu_search.R
partial_pb_tabu_search.RdFinds a single grouped balance by tabu search over a partition of selected
parts. The search is carried out on groups of parts defined by lI,
using configurable neighbourhood moves.
partial_pb_tabu_search(
X,
lI = NULL,
min_parts = 2,
max_parts = NULL,
iter = 100,
tabu_size = length(lI),
ini = NULL,
remove_active = TRUE,
add_left = TRUE,
add_right = TRUE,
flip_side = FALSE,
swap_zero = FALSE,
swap_sides = FALSE,
debug = FALSE,
constrained.criterion = "variance"
)A numeric matrix with strictly positive finite entries. Rows are observations and columns are compositional parts.
A list defining a partition of a subset of the columns of
X. If NULL, each column of X is used as a singleton
group.
Integer. Minimum number of active groups.
Integer or NULL. Maximum number of groups from
lI allowed to be active in the balance. If NULL, all groups
may be active.
Integer. Maximum number of tabu search iterations.
Integer. Maximum size of the tabu list.
Initial grouped split. If NULL, the constrained principal
balance of the grouped subcomposition is used.
Logical. Allow moves from -1 or +1 to
0.
Logical. Allow moves from 0 to -1.
Logical. Allow moves from 0 to +1.
Logical. Allow direct moves from -1 to +1
and from +1 to -1.
Logical. Allow swaps between one active group and one inactive group, preserving the active side.
Logical. Allow swaps between one left group and one right group.
Logical. If TRUE, progress information is printed during
the search.
Criterion used to initialise the constrained
balance when ini = NULL. Either "variance" (default) or
"angle".
A list with the selected balance, its variance criterion, the search
path, and a neighbourhoods element recording the active
neighbourhood types.
When ini = NULL, the constrained grouped balance is adjusted greedily
so that the initial solution has exactly max_parts active groups.