protected Solution buildAndSolve( SolverFactory solverFactory, EnvironmentMode environmentMode, Solution planningProblem, long maximumMinutesSpend) { solverFactory .getSolverConfig() .getTerminationConfig() .setMaximumMinutesSpend(maximumMinutesSpend); SolverConfig solverConfig = solverFactory.getSolverConfig(); solverConfig.setEnvironmentMode(environmentMode); ScoreDirectorFactoryConfig assertionScoreDirectorFactory = createOverwritingAssertionScoreDirectorFactory(); if (assertionScoreDirectorFactory != null && environmentMode.isAsserted()) { solverConfig .getScoreDirectorFactoryConfig() .setAssertionScoreDirectorFactory(assertionScoreDirectorFactory); } Solver solver = solverFactory.buildSolver(); solver.setPlanningProblem(planningProblem); solver.solve(); Solution bestSolution = solver.getBestSolution(); if (bestSolution == null) { // Solver didn't make it past initialization // TODO remove me once getBestSolution() never // returns null bestSolution = planningProblem; } return bestSolution; }
protected SolverFactory buildSolverFactory() { SolverFactory solverFactory = new XmlSolverFactory(createSolverConfigResource()); TerminationConfig terminationConfig = new TerminationConfig(); // buildAndSolve() fills in maximumMinutesSpend solverFactory.getSolverConfig().setTerminationConfig(terminationConfig); return solverFactory; }
@Test public void trackLocalSearch() { SolverFactory<NQueens> solverFactory = SolverFactory.createFromXmlResource(NQueensApp.SOLVER_CONFIG); SolverConfig solverConfig = solverFactory.getSolverConfig(); NQueensGenerator generator = new NQueensGenerator(); NQueens planningProblem = NQueensSolutionInitializer.initialize(generator.createNQueens(N)); LocalSearchPhaseConfig localSearchPhaseConfig = new LocalSearchPhaseConfig(); localSearchPhaseConfig.setAcceptorConfig(acceptorConfig); localSearchPhaseConfig.setForagerConfig(localSearchForagerConfig); localSearchPhaseConfig.getForagerConfig().setBreakTieRandomly(false); localSearchPhaseConfig.setMoveSelectorConfig(new ChangeMoveSelectorConfig()); localSearchPhaseConfig.getMoveSelectorConfig().setSelectionOrder(SelectionOrder.ORIGINAL); localSearchPhaseConfig.setTerminationConfig(new TerminationConfig()); localSearchPhaseConfig.getTerminationConfig().setStepCountLimit(20); solverConfig.getPhaseConfigList().set(1, localSearchPhaseConfig); NQueensStepTracker listener = new NQueensStepTracker(); DefaultSolver<NQueens> solver = (DefaultSolver<NQueens>) solverFactory.buildSolver(); solver.addPhaseLifecycleListener(listener); NQueens bestSolution = solver.solve(planningProblem); assertNotNull(bestSolution); assertTrackingList(expectedCoordinates, listener.getTrackingList()); }
protected SolverFactory buildSolverFactory() { SolverFactory solverFactory = SolverFactory.createFromXmlResource(createSolverConfigResource()); SolverConfig solverConfig = solverFactory.getSolverConfig(); solverConfig.setTerminationConfig(new TerminationConfig()); ConstructionHeuristicPhaseConfig constructionHeuristicPhaseConfig = new ConstructionHeuristicPhaseConfig(); constructionHeuristicPhaseConfig.setConstructionHeuristicType(constructionHeuristicType); solverConfig.setPhaseConfigList(Arrays.<PhaseConfig>asList(constructionHeuristicPhaseConfig)); return solverFactory; }
@Override protected SolverFactory<Solution_> buildSolverFactory() { SolverFactory<Solution_> solverFactory = SolverFactory.createFromXmlResource(createSolverConfigResource()); SolverConfig solverConfig = solverFactory.getSolverConfig(); solverConfig.setTerminationConfig(new TerminationConfig()); ExhaustiveSearchPhaseConfig exhaustiveSearchPhaseConfig = new ExhaustiveSearchPhaseConfig(); exhaustiveSearchPhaseConfig.setExhaustiveSearchType(exhaustiveSearchType); solverConfig.setPhaseConfigList(Arrays.asList(exhaustiveSearchPhaseConfig)); return solverFactory; }