Skip to main content

Fixed Source Multi Move

Like Fixed Source, but moves sets of related objects together rather than one object at a time. For each equivalent set of objects in a specified source container, it evaluates moving the whole set into the hot container.

Each set of related objects in the specified source container is evaluated for moving together into the hot container

Parameters

ParameterTypeRequiredDefaultDescription
maxSamplesPerEquivSetintNo5Number of object samples selected for each equivalent set (higher gives better quality for on-demand equivalent sets)
specialContainerstringNo-The fixed source container the object sets are moved out of
rasLocalSearchMetadataRasLocalSearchMetadataNo-Optional metadata used by RAS local search

Behavior

Given a fixed source container and the hot container chosen by the common logic, the move type groups the source objects into equivalent sets, samples up to maxSamplesPerEquivSet objects from each set, and evaluates moving each set together into the hot container, applying the best improving move.

Complexity

Proportional to the number of equivalent sets times maxSamplesPerEquivSet, since the source is fixed.

Example

Configure local search to use only the fixed source multi move type:

FixedSrcMultiMoveTypeSpec fixedSourceMulti;
fixedSourceMulti.specialContainer() = "container1";

LocalSearchSolverSpec localSearch;
localSearch.moveTypeList()->push_back(
ProblemSolver::makeMoveTypeSpec(fixedSourceMulti));

solver.addSolver(localSearch);

(source)