OptaPlanner: Как я могу создать решатель без файла конфигурации .xml?

По умолчанию я новичок в OptaPlanner и считаю, что все решатели построены с помощью файла конфигурации xml в OptaPlanner. Итак, я хочу знать, как я могу построить свой решатель, просто используя чистый Java-код, точно так же, как

SolverFactory.setScoreCalculator(new NQueensEasyScoreCalculator()).setSearch(new ***()).build();

Другими словами, нам не нужен другой XML-файл, и мы можем использовать вышеуказанный решатель для решения проблемы. Так что кто-нибудь может сказать мне, как я могу с этим справиться?

Большое спасибо.


person baiyyang    schedule 19.12.2019    source источник
comment
С optaplanner-spring-boot-starter, который будет выпущен в 7.32.0.Final, XML не является обязательным, он просто вычисляет его автоматически.   -  person Geoffrey De Smet    schedule 22.12.2019
comment
Wa ~ С нетерпением жду этого , thx Geo.   -  person baiyyang    schedule 25.12.2019


Ответы (1)


Да, вы можете создать конфигурацию, используя SolverConfig fluent API. Например:

SolverConfig solverConfig = new SolverConfig()
        .withEnvironmentMode(EnvironmentMode.REPRODUCIBLE)
        .withSolutionClass(VehicleRoutingSolution.class)
        .withEntityClasses(Standstill.class, PlanningVisit.class)
        .withScoreDirectorFactory(new ScoreDirectorFactoryConfig().withScoreDrls("org/optaweb/vehiclerouting/solver/vehicleRoutingScoreRules.drl"))
        .withTerminationConfig(new TerminationConfig().withSecondsSpentLimit(60L))
        .withPhases(
                new ConstructionHeuristicPhaseConfig().withConstructionHeuristicType(ConstructionHeuristicType.FIRST_FIT_DECREASING),
                new LocalSearchPhaseConfig().withLocalSearchType(LocalSearchType.TABU_SEARCH)
        );

Затем вы можете использовать конфигурацию для создания решателя с SolverFactory:

SolverFactory<VehicleRoutingSolution> solverFactory = SolverFactory.create(solverConfig);
Solver<VehicleRoutingSolution> solver = solverFactory.buildSolver();

В вашем случае конфигурация может быть проще. Я включил больше вариантов, чтобы проиллюстрировать возможности.

person yurloc    schedule 19.12.2019