public static <Solution_> SolverFactory<Solution_> buildSolverFactoryWithDroolsScoreDirector( Class<Solution_> solutionClass, Class<?>... entityClasses) { SolverFactory<Solution_> solverFactory = buildSolverFactory(solutionClass, entityClasses); SolverConfig solverConfig = solverFactory.getSolverConfig(); ScoreDirectorFactoryConfig scoreDirectorFactoryConfig = solverConfig.getScoreDirectorFactoryConfig(); scoreDirectorFactoryConfig.setEasyScoreCalculatorClass(null); scoreDirectorFactoryConfig.setScoreDrlList(Collections.singletonList( "org/optaplanner/core/impl/score/dummySimpleScoreDroolsScoreRules.drl")); return solverFactory; }
@Test public void solveLegacy() { SolverFactory<TestdataLegacySolution> solverFactory = PlannerTestUtils.buildSolverFactory( TestdataLegacySolution.class, TestdataEntity.class); solverFactory.getSolverConfig().getScoreDirectorFactoryConfig() .setScoreDefinitionType(ScoreDefinitionType.SIMPLE); Solver<TestdataLegacySolution> solver = solverFactory.buildSolver(); TestdataLegacySolution solution = new TestdataLegacySolution(); solution.setValueList(Arrays.asList(new TestdataValue("v1"), new TestdataValue("v2"))); solution.setEntityList(Arrays.asList(new TestdataEntity("e1"), new TestdataEntity("e2"))); solution = solver.solve(solution); assertNotNull(solution); assertSame(solution, solver.getBestSolution()); }
protected Solution_ buildAndSolve(SolverFactory<Solution_> solverFactory, EnvironmentMode environmentMode, Solution_ problem, long maximumMinutesSpent) { SolverConfig solverConfig = solverFactory.getSolverConfig(); solverConfig.getTerminationConfig().setMinutesSpentLimit(maximumMinutesSpent); solverConfig.setEnvironmentMode(environmentMode); Class<? extends EasyScoreCalculator> easyScoreCalculatorClass = overwritingEasyScoreCalculatorClass(); if (easyScoreCalculatorClass != null && environmentMode.isAsserted()) { ScoreDirectorFactoryConfig assertionScoreDirectorFactoryConfig = new ScoreDirectorFactoryConfig(); assertionScoreDirectorFactoryConfig.setEasyScoreCalculatorClass(easyScoreCalculatorClass); solverConfig.getScoreDirectorFactoryConfig().setAssertionScoreDirectorFactory( assertionScoreDirectorFactoryConfig); } Solver<Solution_> solver = solverFactory.buildSolver(); Solution_ bestSolution = solver.solve(problem); return bestSolution; }
@Override public void inherit(SolverConfig inheritedConfig) { environmentMode = ConfigUtils.inheritOverwritableProperty(environmentMode, inheritedConfig.getEnvironmentMode()); daemon = ConfigUtils.inheritOverwritableProperty(daemon, inheritedConfig.getDaemon()); randomType = ConfigUtils.inheritOverwritableProperty(randomType, inheritedConfig.getRandomType()); randomSeed = ConfigUtils.inheritOverwritableProperty(randomSeed, inheritedConfig.getRandomSeed()); randomFactoryClass = ConfigUtils.inheritOverwritableProperty( randomFactoryClass, inheritedConfig.getRandomFactoryClass()); moveThreadCount = ConfigUtils.inheritOverwritableProperty(moveThreadCount, inheritedConfig.getMoveThreadCount()); moveThreadBufferSize = ConfigUtils.inheritOverwritableProperty(moveThreadBufferSize, inheritedConfig.getMoveThreadBufferSize()); threadFactoryClass = ConfigUtils.inheritOverwritableProperty(threadFactoryClass, inheritedConfig.getThreadFactoryClass()); scanAnnotatedClassesConfig = ConfigUtils.inheritConfig(scanAnnotatedClassesConfig, inheritedConfig.getScanAnnotatedClassesConfig()); solutionClass = ConfigUtils.inheritOverwritableProperty(solutionClass, inheritedConfig.getSolutionClass()); entityClassList = ConfigUtils.inheritMergeableListProperty( entityClassList, inheritedConfig.getEntityClassList()); scoreDirectorFactoryConfig = ConfigUtils.inheritConfig(scoreDirectorFactoryConfig, inheritedConfig.getScoreDirectorFactoryConfig()); terminationConfig = ConfigUtils.inheritConfig(terminationConfig, inheritedConfig.getTerminationConfig()); phaseConfigList = ConfigUtils.inheritMergeableListConfig( phaseConfigList, inheritedConfig.getPhaseConfigList()); }
public SolverConfigModel get() { SolverConfigModel model = new SolverConfigModel(); model.setTerminationConfig(create(solverConfig.getTerminationConfig())); model.setScoreDirectorFactoryConfig(create(solverConfig.getScoreDirectorFactoryConfig())); model.setPhaseConfigList(create(solverConfig.getPhaseConfigList())); return model; }
if (solverFactory.getSolverConfig().getScoreDirectorFactoryConfig().getKsessionName() == null) { solverFactory.getSolverConfig().getScoreDirectorFactoryConfig().setKsessionName(kieProject.getDefaultKieSession().getName());
@Test public void get() { ToSolverConfig toSolverConfigModel = new ToSolverConfig(getSolverConfigModel()); SolverConfig solverConfig = toSolverConfigModel.get(); TerminationConfig terminationConfig = solverConfig.getTerminationConfig(); assertEquals(Long.valueOf(1), terminationConfig.getMillisecondsSpentLimit()); assertEquals(1, terminationConfig.getTerminationConfigList().size()); assertEquals(Boolean.TRUE, terminationConfig.getTerminationConfigList().get(0).getBestScoreFeasible()); assertEquals("testKsession", solverConfig.getScoreDirectorFactoryConfig().getKsessionName()); assertEquals(2, solverConfig.getPhaseConfigList().size()); ConstructionHeuristicPhaseConfig constructionHeuristicPhaseConfig = (ConstructionHeuristicPhaseConfig) solverConfig.getPhaseConfigList().get(0); assertEquals(ConstructionHeuristicType.FIRST_FIT, constructionHeuristicPhaseConfig.getConstructionHeuristicType()); assertEquals(EntitySorterManner.DECREASING_DIFFICULTY, constructionHeuristicPhaseConfig.getEntitySorterManner()); LocalSearchPhaseConfig localSearchPhaseConfig = (LocalSearchPhaseConfig) solverConfig.getPhaseConfigList().get(1); assertEquals(LocalSearchType.TABU_SEARCH, localSearchPhaseConfig.getLocalSearchType()); }
protected Solution_ buildAndSolve(SolverFactory<Solution_> solverFactory, EnvironmentMode environmentMode, Solution_ problem, long maximumMinutesSpent) { SolverConfig solverConfig = solverFactory.getSolverConfig(); solverConfig.getTerminationConfig().setMinutesSpentLimit(maximumMinutesSpent); solverConfig.setEnvironmentMode(environmentMode); Class<? extends EasyScoreCalculator> easyScoreCalculatorClass = overwritingEasyScoreCalculatorClass(); if (easyScoreCalculatorClass != null && environmentMode.isAsserted()) { ScoreDirectorFactoryConfig assertionScoreDirectorFactoryConfig = new ScoreDirectorFactoryConfig(); assertionScoreDirectorFactoryConfig.setEasyScoreCalculatorClass(easyScoreCalculatorClass); solverConfig.getScoreDirectorFactoryConfig().setAssertionScoreDirectorFactory( assertionScoreDirectorFactoryConfig); } Solver<Solution_> solver = solverFactory.buildSolver(); Solution_ bestSolution = solver.solve(problem); return bestSolution; }