/** * Unused alternative. Abnormal way to create a {@link Solver}. * <p> * Not recommended! It is recommended to use {@link #createSolverByXml()} instead. * @return never null */ protected Solver<NQueens> createSolverByApi() { SolverFactory<NQueens> solverFactory = SolverFactory.createEmpty(); SolverConfig solverConfig = solverFactory.getSolverConfig(); solverConfig.setSolutionClass(NQueens.class); solverConfig.setEntityClassList(Collections.<Class<?>>singletonList(Queen.class)); ScoreDirectorFactoryConfig scoreDirectorFactoryConfig = new ScoreDirectorFactoryConfig(); scoreDirectorFactoryConfig.setScoreDrlList( Arrays.asList("org/optaplanner/examples/nqueens/solver/nQueensScoreRules.drl")); solverConfig.setScoreDirectorFactoryConfig(scoreDirectorFactoryConfig); solverConfig.setTerminationConfig(new TerminationConfig().withBestScoreLimit("0")); List<PhaseConfig> phaseConfigList = new ArrayList<>(); ConstructionHeuristicPhaseConfig constructionHeuristicPhaseConfig = new ConstructionHeuristicPhaseConfig(); constructionHeuristicPhaseConfig.setConstructionHeuristicType( ConstructionHeuristicType.FIRST_FIT_DECREASING); phaseConfigList.add(constructionHeuristicPhaseConfig); LocalSearchPhaseConfig localSearchPhaseConfig = new LocalSearchPhaseConfig(); ChangeMoveSelectorConfig changeMoveSelectorConfig = new ChangeMoveSelectorConfig(); changeMoveSelectorConfig.setSelectionOrder(SelectionOrder.ORIGINAL); localSearchPhaseConfig.setMoveSelectorConfig(changeMoveSelectorConfig); localSearchPhaseConfig.setAcceptorConfig(new AcceptorConfig().withEntityTabuSize(5)); phaseConfigList.add(localSearchPhaseConfig); solverConfig.setPhaseConfigList(phaseConfigList); return solverFactory.buildSolver(); }
public static <Solution_> SolverFactory<Solution_> buildSolverFactory( Class<Solution_> solutionClass, Class<?>... entityClasses) { SolverFactory<Solution_> solverFactory = SolverFactory.createEmpty(); SolverConfig solverConfig = solverFactory.getSolverConfig(); solverConfig.setSolutionClass(solutionClass); solverConfig.setEntityClassList(Arrays.asList(entityClasses)); ScoreDirectorFactoryConfig scoreDirectorFactoryConfig = new ScoreDirectorFactoryConfig(); scoreDirectorFactoryConfig.setEasyScoreCalculatorClass(DummySimpleScoreEasyScoreCalculator.class); solverConfig.setScoreDirectorFactoryConfig(scoreDirectorFactoryConfig); List<PhaseConfig> phaseConfigList = new ArrayList<>(2); phaseConfigList.add(new ConstructionHeuristicPhaseConfig()); LocalSearchPhaseConfig localSearchPhaseConfig = new LocalSearchPhaseConfig(); localSearchPhaseConfig.setTerminationConfig(new TerminationConfig().withStepCountLimit(TERMINATION_STEP_COUNT_LIMIT)); phaseConfigList.add(localSearchPhaseConfig); solverConfig.setPhaseConfigList(phaseConfigList); return solverFactory; }
@Test public void buildSolverEmptyWithKieContainer() throws IOException, ReflectiveOperationException { ReleaseId releaseId = deployTestdataKjar( "buildSolverWithReleaseId", "org/optaplanner/core/api/solver/kieContainerNamedKsessionKmodule.xml", null); KieContainer kieContainer = kieServices.newKieContainer(releaseId); SolverFactory<?> solverFactory = SolverFactory.createEmptyFromKieContainer(kieContainer); SolverConfig solverConfig = solverFactory.getSolverConfig(); solverConfig.setSolutionClass( kieContainer.getClassLoader().loadClass("testdata.kjar.ClassloadedTestdataSolution")); solverConfig.setEntityClassList(Collections.singletonList( kieContainer.getClassLoader().loadClass("testdata.kjar.ClassloadedTestdataEntity"))); ScoreDirectorFactoryConfig scoreDirectorFactoryConfig = new ScoreDirectorFactoryConfig(); scoreDirectorFactoryConfig.setKsessionName("testdataKsession"); solverConfig.setScoreDirectorFactoryConfig(scoreDirectorFactoryConfig); Solver<?> solver = solverFactory.buildSolver(); assertNotNull(solver); assertNewKieSessionSucceeds(solver); }
/** * Unused alternative. Abnormal way to create a {@link Solver}. * <p> * Not recommended! It is recommended to use {@link #createSolverByXml()} instead. * @return never null */ protected Solver<NQueens> createSolverByApi() { SolverFactory<NQueens> solverFactory = SolverFactory.createEmpty(); SolverConfig solverConfig = solverFactory.getSolverConfig(); solverConfig.setSolutionClass(NQueens.class); solverConfig.setEntityClassList(Collections.<Class<?>>singletonList(Queen.class)); ScoreDirectorFactoryConfig scoreDirectorFactoryConfig = new ScoreDirectorFactoryConfig(); scoreDirectorFactoryConfig.setScoreDrlList( Arrays.asList("org/optaplanner/examples/nqueens/solver/nQueensScoreRules.drl")); solverConfig.setScoreDirectorFactoryConfig(scoreDirectorFactoryConfig); solverConfig.setTerminationConfig(new TerminationConfig().withBestScoreLimit("0")); List<PhaseConfig> phaseConfigList = new ArrayList<>(); ConstructionHeuristicPhaseConfig constructionHeuristicPhaseConfig = new ConstructionHeuristicPhaseConfig(); constructionHeuristicPhaseConfig.setConstructionHeuristicType( ConstructionHeuristicType.FIRST_FIT_DECREASING); phaseConfigList.add(constructionHeuristicPhaseConfig); LocalSearchPhaseConfig localSearchPhaseConfig = new LocalSearchPhaseConfig(); ChangeMoveSelectorConfig changeMoveSelectorConfig = new ChangeMoveSelectorConfig(); changeMoveSelectorConfig.setSelectionOrder(SelectionOrder.ORIGINAL); localSearchPhaseConfig.setMoveSelectorConfig(changeMoveSelectorConfig); localSearchPhaseConfig.setAcceptorConfig(new AcceptorConfig().withEntityTabuSize(5)); phaseConfigList.add(localSearchPhaseConfig); solverConfig.setPhaseConfigList(phaseConfigList); return solverFactory.buildSolver(); }
config.setSolutionClass(PDPSolution.class);