Interface SolverFactory<Solution_>

Type Parameters:
Solution_ - the solution type, the class with the PlanningSolution annotation
All Known Implementing Classes:
DefaultSolverFactory

public interface SolverFactory<Solution_>
Creates Solver instances. Most applications only need one SolverFactory.

To create a SolverFactory, use createFromXmlResource(String). To change the configuration programmatically, create a SolverConfig first and then use create(SolverConfig).

These methods are thread-safe unless explicitly stated otherwise.

  • Method Details

    • createFromXmlResource

      static <Solution_> @NonNull SolverFactory<Solution_> createFromXmlResource(@NonNull String solverConfigResource)
      Reads an XML solver configuration from the classpath and uses that SolverConfig to build a SolverFactory. The XML root element must be <solver>.
      Type Parameters:
      Solution_ - the solution type, the class with the PlanningSolution annotation
      Parameters:
      solverConfigResource - a classpath resource as defined by ClassLoader.getResource(String)
      Returns:
      subsequent changes to the config have no effect on the returned instance
    • createFromXmlResource

      static <Solution_> @NonNull SolverFactory<Solution_> createFromXmlResource(@NonNull String solverConfigResource, @Nullable ClassLoader classLoader)
      Type Parameters:
      Solution_ - the solution type, the class with the PlanningSolution annotation
      Parameters:
      solverConfigResource - na classpath resource as defined by ClassLoader.getResource(String)
      classLoader - the ClassLoader to use for loading all resources and Classes, null to use the default ClassLoader
      Returns:
      subsequent changes to the config have no effect on the returned instance
    • createFromXmlFile

      static <Solution_> @NonNull SolverFactory<Solution_> createFromXmlFile(@NonNull File solverConfigFile)
      Reads an XML solver configuration from the file system and uses that SolverConfig to build a SolverFactory.

      Warning: this leads to platform dependent code, it's recommend to use createFromXmlResource(String) instead.

      Type Parameters:
      Solution_ - the solution type, the class with the PlanningSolution annotation
      Returns:
      subsequent changes to the config have no effect on the returned instance
    • createFromXmlFile

      static <Solution_> @NonNull SolverFactory<Solution_> createFromXmlFile(@NonNull File solverConfigFile, @Nullable ClassLoader classLoader)
      Type Parameters:
      Solution_ - the solution type, the class with the PlanningSolution annotation
      Parameters:
      classLoader - the ClassLoader to use for loading all resources and Classes, null to use the default ClassLoader
      Returns:
      subsequent changes to the config have no effect on the returned instance
    • create

      static <Solution_> @NonNull SolverFactory<Solution_> create(@NonNull SolverConfig solverConfig)
      Uses a SolverConfig to build a SolverFactory. If you don't need to manipulate the SolverConfig programmatically, use createFromXmlResource(String) instead.
      Type Parameters:
      Solution_ - the solution type, the class with the PlanningSolution annotation
      Returns:
      subsequent changes to the config have no effect on the returned instance
    • buildSolver

      default @NonNull Solver<Solution_> buildSolver()
      Creates a new Solver instance.
    • buildSolver

      @NonNull Solver<Solution_> buildSolver(@NonNull SolverConfigOverride<Solution_> configOverride)
      As defined by buildSolver().
      Parameters:
      configOverride - includes settings that override the default configuration