////
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
////

////
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 (deprecated)::
A classpath resource to read the xref:drools-score-calculation/drools-score-calculation.adoc#droolsScoreCalculation[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.constraint-stream-impl-type::
What Constraint Stream implementation to use.
See xref:constraint-streams/constraint-streams.adoc#constraintStreamsImplementations[the variant implementation types section] for more details.
Defaults to `DROOLS`. The other possible value is `BAVET`.

{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].