Skip to content

Scatter Search

Scatter Search is a population-based metaheuristic that operates on a set of diverse, high-quality solutions (reference set). It systematically combines solutions to create new candidate solutions and maintains solution diversity.

Algorithm Overview

Scatter Search maintains a reference set of solutions and iteratively improves them through combination, improvement, and diversification.

graph TD
    A[Generate Initial Solutions] --> B[Create Reference Set]
    B --> C[Select Solutions to Combine]
    C --> D[Combination Method]
    D --> E[Improvement Method]
    E --> F{Solution Quality Check}
    F -->|Good| G[Update Reference Set]
    F -->|Not Good| H[Discard]
    G --> I{Stopping Criteria?}
    H --> I
    I -->|No| J{Reference Set Changed?}
    J -->|Yes| C
    J -->|No| K[Diversification]
    K --> C
    I -->|Yes| L[Return Best Solution]

Algorithm Outline

P = GenerateInitialPopulation(popSize)
RefSet = SelectDiverseElite(P, refSetSize)

while (not StoppingCriteria()) {
    NewSolutions = {}

    // Generate new solutions by combining reference solutions
    for each pair (s1, s2) in RefSet {
        s' = Combine(s1, s2)
        s' = Improve(s')
        NewSolutions.add(s')
    }

    // Update reference set
    RefSet = UpdateRefSet(RefSet, NewSolutions)

    // Diversification if enabled (also known as soft-restart)
    if (no improvement) {
        RefSet = Diversify(RefSet)
    }
}

return best solution in RefSet