Skip to content

List of Algorithm Components

This page provides a comprehensive overview of all algorithm components available in the Mork framework. Components are organized by their role in the optimization process.

Metaheuristics

High-level algorithmic strategies that guide the search process. These are the main algorithms you'll use to solve optimization problems.

Algorithm Description Documentation
Variable Neighborhood Search (VNS) Systematically changes neighborhood structures to escape local optima VNS Documentation
Simulated Annealing (SA) Temperature-based probabilistic technique inspired by metallurgy SA Documentation
Iterated Greedy (IG) Destruction-reconstruction metaheuristic that iteratively destroys and rebuilds solutions IG Documentation
Scatter Search Population-based metaheuristic using reference sets and solution combination Scatter Search Documentation
Multi-Start Algorithm Simple but effective strategy that runs constructive+improvement methods multiple times Multi-Start Documentation

Constructive Methods

Components that build initial solutions from scratch. These methods create feasible solutions that can then be improved.

Constructor Description Documentation
Constructive (Base) Abstract base class for all constructive methods Constructive Documentation
GRASP Constructive Greedy Randomized Adaptive Search Procedure for construction phase GRASP Documentation
Reconstructive Specialized constructor for rebuilding partially destroyed solutions Reconstructive Documentation

Improvement Methods

Components that take a solution and try to improve it. These methods cannot return worse solutions than their input.

Improver Description Documentation
Improver (Base) Abstract base class for all improvement methods Improver Documentation
Local Search Base class for local search algorithms that explore neighborhoods and host the supported descent strategies Local Search Documentation
LocalSearchBestImprovement Local search that always picks the best improving move in the neighborhood Best-improvement strategy
LocalSearchFirstImprovement Local search that applies the first improving move found First-improvement strategy
Simulated Annealing (as Improver) SA can be used as an improvement method with temperature-based acceptance SA Documentation
Variable Neighborhood Descent (VND) Systematic exploration of multiple neighborhood structures in a descent manner VND Documentation

Shake/Perturbation Methods

Components that perturb solutions to escape local optima. Unlike improvers, these can worsen the solution.

Shake Method Description Documentation
Shake (Base) Abstract base class for all perturbation methods Shake Documentation
Destructive Interface for destruction operators that remove parts of a solution Destructive Documentation
Random Move Shake Simple perturbation that applies random moves to the solution Random Move Documentation

Component Integration

All components follow a consistent design pattern and can be combined flexibly:

graph TD
    A[Instance] --> B[Constructive]
    B --> C[Initial Solution]
    C --> D[Improver]
    D --> E[Improved Solution]
    E --> F{Continue?}
    F -->|Yes| G[Shake]
    G --> H[Perturbed Solution]
    H --> D
    F -->|No| I[Final Solution]

Using Components

Components are designed to be:

  • Modular: Each component has a single, well-defined responsibility
  • Composable: Components can be combined in different ways to create complex algorithms
  • Reusable: The same component can be used in multiple algorithms
  • Extensible: Easy to create new components by extending existing ones

Advanced Topics

Component Autodetection

Components are automatically detected by the framework when annotated with @AlgorithmComponent or when extending framework-provided base classes.

Automatic Algorithm Configuration

Components can be automatically configured using irace integration. See irace documentation for details.

Custom Component Types

You can create your own component hierarchies by extending existing types or creating new ones. See intro documentation for more information.