Docs
  • Solver
  • Models
    • Field Service Routing
    • Employee Shift Scheduling
  • Platform
Try models
  • Edit this Page
  • latest
    • latest
    • 0.8.x

Timefold Solver 1.22.1

    • 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
      • Move Selector reference
    • Responding to change
    • Integration
    • Design patterns
    • FAQ
    • New and noteworthy
    • Upgrading Timefold Solver
      • Upgrading Timefold Solver: Overview
      • Upgrade to the latest version
      • Upgrade from OptaPlanner
      • Backwards compatibility
    • Enterprise Edition
{property_prefix}timefold.solver-manager.parallel-solver-count

The number of solvers that run in parallel. This directly influences CPU consumption. Defaults to AUTO.

{property_prefix}timefold.solver.{solver_name_prefix}solver-config-xml

A classpath resource to read the solver configuration XML. Defaults to solverConfig.xml. If a resource is specified, it must be located in the classpath, or the configuration will fail. If the property is not specified, the file solverConfig.xml is used when found on the classpath. Otherwise, the configuration continues without using any configuration file. The specified resources take precedence over the default file solverConfig.xml, even if both files' resources are located in the classpath.

{property_prefix}timefold.solver.{solver_name_prefix}environment-mode

Enable runtime assertions to detect common bugs in your implementation during development.

{property_prefix}timefold.solver.{solver_name_prefix}daemon

Enable daemon mode. In daemon mode, non-early termination pauses the solver instead of stopping it, until the next problem fact change arrives. This is often useful for real-time planning. Defaults to false.

{property_prefix}timefold.solver.{solver_name_prefix}move-thread-count

Enable multi-threaded solving for a single problem, which increases CPU consumption. Defaults to NONE. Note that this is a feature of the Enterprise edition, which is Timefold’s commercial offering. See multithreaded incremental solving.

{property_prefix}timefold.solver.{solver_name_prefix}domain-access-type

How Timefold Solver should access the domain model. See the domain access section for more details. Defaults to REFLECTION. The other possible value is GIZMO.

{property_prefix}timefold.solver.{solver_name_prefix}nearby-distance-meter-class

Enable the Nearby Selection quick configuration. If the Nearby Selection distance meter class is specified, the solver evaluates the available move selectors and automatically enables Nearby Selection for the compatible move selectors.

{property_prefix}timefold.solver.{solver_name_prefix}termination.spent-limit

How long the solver can run. For example: 30s is 30 seconds. 5m is 5 minutes. 2h is 2 hours. 1d is 1 day. The ISO8601 format is also supported, e.g., PT30S is 30 seconds. PT5M is 5 minutes. PT2H is 2 hours. P1D is 1 day.

{property_prefix}timefold.solver.{solver_name_prefix}termination.unimproved-spent-limit

How long the solver can run without finding a new best solution after finding a new best solution. For example: 30s is 30 seconds. 5m is 5 minutes. 2h is 2 hours. 1d is 1 day. The ISO8601 format is also supported, e.g., PT30S is 30 seconds. PT5M is 5 minutes. PT2H is 2 hours. P1D is 1 day.

{property_prefix}timefold.solver.{solver_name_prefix}termination.best-score-limit

Terminates the solver when a specific score (or better) has been reached. For example: 0hard/-1000soft terminates when the best score changes from 0hard/-1200soft to 0hard/-900soft. Wildcards are supported to replace numbers. For example: 0hard/*soft to terminate when any feasible score is reached.

{property_prefix}timefold.solver.{solver_name_prefix}termination.diminished-returns.enabled

If set to true, adds a termination to the local search phase that records the initial improvement after a duration, and terminates when the ratio new improvement/initial improvement is below a specified ratio. If left unspecified, it is enabled only if any {property_prefix}timefold.solver.{solver_name_prefix}termination.diminished-returns properties are defined.

{property_prefix}timefold.solver.{solver_name_prefix}termination.diminished-returns.sliding-window-duration

Specify the best score from how long ago should the current best score be compared to. For 30s, the current best score is compared against the best score from 30 seconds ago to calculate the improvement. 5m is 5 minutes. 2h is 2 hours. 1d is 1 day. The ISO8601 format is also supported, e.g., PT30S is 30 seconds. PT5M is 5 minutes. PT2H is 2 hours. P1D is 1 day.

Default to 30s.

{property_prefix}timefold.solver.{solver_name_prefix}termination.diminished-returns.minimum-improvement-ratio

Specify the minimum ratio between the current improvement and the initial improvement. Must be positive.

For example, if the {property_prefix}timefold.solver.{solver_name_prefix}termination.diminished-returns.sliding-window-duration is "30s", the {property_prefix}timefold.solver.{solver_name_prefix}termination.diminished-returns.minimum-improvement-ratio is 0.25, and the score improves by 100soft during the first 30 seconds of local search, then the local search phase will terminate when the difference between the current best score and the best score from 30 seconds ago is less than 25soft (= 0.25 100soft).

Defaults to 0.0001.

{property_prefix}timefold.benchmark.solver-benchmark-config-xml

A classpath resource to read the benchmark configuration XML. Defaults to solverBenchmarkConfig.xml. If this property isn’t specified, that solverBenchmarkConfig.xml is optional.

{property_prefix}timefold.benchmark.result-directory

Where the benchmark results are written to. Defaults to target/benchmarks.

{property_prefix}timefold.benchmark.solver.termination.spent-limit

How long solver should be run in a benchmark run. For example: 30s is 30 seconds. 5m is 5 minutes. 2h is 2 hours. 1d is 1 day. Also supports ISO-8601 format, see Duration.

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