Docs
  • Solver
  • Models
    • Field Service Routing
    • Employee Shift Scheduling
    • Pick-up and Delivery Routing
    • Task Scheduling
  • Platform
Start Free Trial
  • Timefold Solver SNAPSHOT
  • Commercial editions
  • Multistage moves
  • Edit this Page

Timefold Solver SNAPSHOT

  • Getting started
    • Overview
    • Build as a service
    • Embed as a library
      • Hello World guide
      • Quarkus guide
      • Spring Boot guide
  • Domain modeling
    • Guide
    • Building blocks
    • Common patterns
  • Constraints and score
    • Overview
    • Score calculation
    • Understanding the score
    • Load balancing and fairness
    • Performance tips and tricks
  • Running the Solver
    • Overview
    • As a service
      • REST API
      • Model configuration overrides
      • Model enrichment
      • Demo data
      • Exposing metrics
      • Service consumer guide
    • As a library
      • Configuring Timefold Solver
      • Constraint weights
      • Quarkus integration
      • Spring Boot integration
      • JPA/JAXB/JSON integration
  • Diagnosing the Solver
    • Benchmarking
    • Solver diagnostics
  • Deploying to the Timefold Platform
    • Overview
    • Guide
    • Platform model metadata
    • Using metrics
  • Optimization algorithms
    • Overview
    • Construction heuristics
    • Local search
    • Exhaustive search
    • Custom moves
      • Neighborhoods API
      • Move Selector reference
  • Responding to change
    • Continuous planning
    • Real-time planning
    • Non-disruptive replanning
    • Assignment Recommendation API
  • Example use cases
    • Vehicle routing (guide)
    • More examples on GitHub
  • Upgrading Timefold Solver
    • New and noteworthy
      • Upgrading Timefold Solver: Overview
      • Upgrade from Timefold Solver 1.x to 2.x
      • Upgrading from OptaPlanner
      • Backwards compatibility
      • Migration guides
        • Variable Listeners to Custom Shadow Variables
        • Chained planning variable to planning list variable
  • Commercial editions
    • Overview
    • Installation
    • Performance improvements
    • Score analysis
    • Recommendation API
    • Nearby selection
    • Multithreaded solving
    • Partitioned search
    • Constraint profiling
    • Multistage moves
    • Throttling best solution events
    • License management
  • Additional resources
    • FAQ
    • GitHub

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