Docs
  • Solver
  • Models
    • Field Service Routing
    • Employee Shift Scheduling
    • Pick-up and Delivery Routing
  • Platform
Try models
  • Timefold Solver SNAPSHOT
  • Plus/Enterprise Editions
  • Multistage Moves
  • Edit this Page

Timefold Solver SNAPSHOT

    • Introduction
    • PlanningAI Concepts
    • Getting Started
      • Overview
      • Hello World Quick Start Guide
      • Quarkus Quick Start Guide
      • Spring Boot Quick Start Guide
      • Vehicle Routing Quick Start Guide
    • Using Timefold Solver
      • Using Timefold Solver: Overview
      • Configuring Timefold Solver
      • Modeling planning problems
      • Running Timefold Solver
      • Benchmarking and tweaking
    • Constraints and Score
      • Constraints and Score: Overview
      • Score calculation
      • Understanding the score
      • Adjusting constraints at runtime
      • Load balancing and fairness
      • Performance tips and tricks
    • Optimization algorithms
      • Optimization Algorithms: Overview
      • Construction heuristics
      • Local search
      • Exhaustive search
      • Neighborhoods: A new way to define custom moves
      • Move Selector reference
    • Responding to change
    • Integration
    • Design patterns
    • FAQ
    • New and noteworthy
    • Upgrading Timefold Solver
      • Upgrading Timefold Solver: Overview
      • Upgrade from Timefold Solver 1.x to 2.0.0
      • Backwards compatibility
      • Migration Guides
        • Variable Listeners to Custom Shadow Variables
        • Chained planning variable to planning list variable
    • Plus/Enterprise Editions
      • Installing Timefold Solver Plus & Enterprise
      • Performance Improvements
      • Score Analysis
      • Recommendation API
      • Nearby selection
      • Multithreaded solving
      • Partitioned search
      • Constraint profiling
      • Incremental score calculation
      • Multistage Moves
      • Throttling best solution events

Multistage Moves

This feature is exclusive to Timefold Solver Enterprise Edition.

Multistage moves are moves composed of one or more stages, where each stage selects a single Move to execute.

Each stage has access to either a BasicVariableMoveEvaluator or a ListVariableMoveEvaluator, which allows the stage to evaluate moves without executing them.

Stages are selected from either a BasicVariableStageProvider or a ListVariableStageProvider, which is initialized from the working solution at phase start.

Multistage moves are configured from either a MultistageMoveSelectorConfig or a ListMultistageMoveSelectorConfig.

Multistage moves are useful for creating specialized ruin-and-recreate moves where the valid values that won’t violate hard constraints can be determined in advance.

  • © 2026 Timefold BV
  • Timefold.ai
  • Documentation
  • Changelog
  • Send feedback
  • Privacy
  • Legal
    • Light mode
    • Dark mode
    • System default