Skip to main content

Single Chain Fast

Like Single Chain, but evaluates the chains in parallel and returns as soon as one improves the objective. It therefore may not visit every object in the hot container, nor consider every replacement object.

Single chain move: the hot object moves to another container while an object from a third container moves into the hot container

Parameters

ParameterTypeRequiredDefaultDescription
partitionNameToExploreFastChainsWithinObjectGroupstringNo-If set, only objects in this partition are considered as the object that takes the hot object's place
specialFastColdContainerstringNo-If set, a fixed destination container for the hot object; otherwise all containers are explored

Behavior

Same chain construction as Single Chain, but the candidate chains are evaluated in parallel and the first one that improves the objective is returned.

Complexity

In the worst case, roughly (objects ^ 2) * containers neighbors are evaluated.

Example

Configure local search to use only the single chain fast move type:

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

solver.addSolver(localSearch);

(source)