////
Quarkus and Spring Boot support the same configuration properties.
All the properties are in this file, which can then be included multiple times.
The {property_prefix} attribute is used for Quarkus properties.
////

{property_prefix}optaplanner.solver-manager.parallel-solver-count::
The number of solvers that run in parallel.
This directly influences CPU consumption.
Defaults to `AUTO`.

{property_prefix}optaplanner.solver-config-xml::
A classpath resource to read the solver configuration XML.
Defaults to `solverConfig.xml`.
If this property isn't specified, that file is optional.

{property_prefix}optaplanner.score-drl::
A classpath resource to read the score DRL.
Defaults to `constraints.drl`.
Do not define this property when a `ConstraintProvider`, `EasyScoreCalculator` or `IncrementalScoreCalculator` class exists.

{property_prefix}optaplanner.solver.environment-mode::
Enable runtime assertions to detect common bugs in your implementation during development.

{property_prefix}optaplanner.solver.daemon::
Enable xref:repeated-planning/repeated-planning.adoc#daemon[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 xref:repeated-planning/repeated-planning.adoc#realTimePlanning[real-time planning].
Defaults to `false`.

{property_prefix}optaplanner.solver.move-thread-count::
Enable multithreaded solving for a single problem, which increases CPU consumption.
Defaults to `NONE`.
See xref:optimization-algorithms/optimization-algorithms.adoc#multithreadedIncrementalSolving[multithreaded incremental solving].

{property_prefix}optaplanner.solver.domain-access-type::
How OptaPlanner should access the domain model.
See xref:planner-configuration/planner-configuration.adoc#domainAccess[the domain access section] for more details.
ifeval::["{property_prefix}" == "quarkus."]
Defaults to `GIZMO`.
The other possible value is `REFLECTION`.
endif::[]
ifeval::["{property_prefix}" == ""]
Defaults to `REFLECTION`.
The other possible value is `GIZMO`.
endif::[]

{property_prefix}optaplanner.solver.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.

{property_prefix}optaplanner.solver.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.

{property_prefix}optaplanner.solver.termination.best-score-limit::
Terminates the solver when a specific or higher score 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}optaplanner.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}optaplanner.benchmark.result-directory::
Where the benchmark results are written to. Defaults to
target/benchmarks.

{property_prefix}optaplanner.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 https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html[Duration].