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; }
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 easyScoreCalculatorWithCustomProperties() { ScoreDirectorFactoryConfig config = new ScoreDirectorFactoryConfig(); config.setEasyScoreCalculatorClass(TestCustomPropertiesEasyScoreCalculator.class); HashMap<String, String> customProperties = new HashMap<>(); customProperties.put("stringProperty", "string 1"); customProperties.put("intProperty", "7"); config.setEasyScoreCalculatorCustomProperties(customProperties); EasyScoreDirector<TestdataSolution> scoreDirector = (EasyScoreDirector<TestdataSolution>) config .buildScoreDirectorFactory(new SolverConfigContext(), EnvironmentMode.REPRODUCIBLE, TestdataSolution.buildSolutionDescriptor()) .buildScoreDirector(); TestCustomPropertiesEasyScoreCalculator scoreCalculator = (TestCustomPropertiesEasyScoreCalculator) scoreDirector.getEasyScoreCalculator(); assertEquals("string 1", scoreCalculator.getStringProperty()); assertEquals(7, scoreCalculator.getIntProperty()); }
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; }
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; }