private static void setPartSize(SolverConfig solverConfig, int partSize) { PartitionedSearchPhaseConfig phaseConfig = (PartitionedSearchPhaseConfig) solverConfig.getPhaseConfigList().get(0); Map<String, String> map = new HashMap<>(); map.put("partSize", Integer.toString(partSize)); phaseConfig.setSolutionPartitionerCustomProperties(map); }
@Before public void createUninitializedSolutions() { checkRunTurtleTests(); final VehicleRoutingImporter importer = new VehicleRoutingImporter(); for (int i = 0; i < REPETITION_COUNT; i++) { File dataSetFile = new File(CommonApp.determineDataDir(vehicleRoutingApp.getDataDirName()), DATA_SET); VehicleRoutingSolution solution = importer.readSolution(dataSetFile); vehicleRoutingSolutions[i] = solution; } solverFactory = SolverFactory.createFromXmlResource(vehicleRoutingApp.getSolverConfig()); SolverConfig solverConfig = solverFactory.getSolverConfig(); solverConfig.getPhaseConfigList().forEach(phaseConfig -> { if (LocalSearchPhaseConfig.class.isAssignableFrom(phaseConfig.getClass())) { phaseConfig.setTerminationConfig(new TerminationConfig().withStepCountLimit(STEP_LIMIT)); } }); solverConfig.setMoveThreadCount(MOVE_THREAD_COUNT); solverConfig.setEnvironmentMode(EnvironmentMode.REPRODUCIBLE); }
final int phaseCount = solverFactory.getSolverConfig().getPhaseConfigList().size(); PlannerAssert.verifyPhaseLifecycle(listener, 1, phaseCount, stepCount);
@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()); }
@Test public void trackLocalSearch() { SolverFactory<NQueens> solverFactory = SolverFactory.createFromXmlResource(NQueensApp.SOLVER_CONFIG); SolverConfig solverConfig = solverFactory.getSolverConfig(); NQueensGenerator generator = new NQueensGenerator(); NQueens problem = 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().withStepCountLimit(20)); solverConfig.getPhaseConfigList().set(1, localSearchPhaseConfig); NQueensStepTracker listener = new NQueensStepTracker(); DefaultSolver<NQueens> solver = (DefaultSolver<NQueens>) solverFactory.buildSolver(); solver.addPhaseLifecycleListener(listener); NQueens bestSolution = solver.solve(problem); assertNotNull(bestSolution); assertTrackingList(expectedCoordinates, listener.getTrackingList()); }
public SolverConfigModel get() { SolverConfigModel model = new SolverConfigModel(); model.setTerminationConfig(create(solverConfig.getTerminationConfig())); model.setScoreDirectorFactoryConfig(create(solverConfig.getScoreDirectorFactoryConfig())); model.setPhaseConfigList(create(solverConfig.getPhaseConfigList())); return model; }
@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()); }
@Before public void createUninitializedSolutions() { checkRunTurtleTests(); final VehicleRoutingImporter importer = new VehicleRoutingImporter(); for (int i = 0; i < REPETITION_COUNT; i++) { File dataSetFile = new File(CommonApp.determineDataDir(vehicleRoutingApp.getDataDirName()), DATA_SET); VehicleRoutingSolution solution = importer.readSolution(dataSetFile); vehicleRoutingSolutions[i] = solution; } solverFactory = SolverFactory.createFromXmlResource(vehicleRoutingApp.getSolverConfig()); SolverConfig solverConfig = solverFactory.getSolverConfig(); solverConfig.getPhaseConfigList().forEach(phaseConfig -> { if (LocalSearchPhaseConfig.class.isAssignableFrom(phaseConfig.getClass())) { phaseConfig.setTerminationConfig(new TerminationConfig().withStepCountLimit(STEP_LIMIT)); } }); solverConfig.setMoveThreadCount(MOVE_THREAD_COUNT); solverConfig.setEnvironmentMode(EnvironmentMode.REPRODUCIBLE); }
terminationConfig .setUnimprovedStepCountLimit(builder.getUnimprovedStepCountLimit()); for (final PhaseConfig phase : config.getPhaseConfigList()) { if (phase instanceof LocalSearchPhaseConfig) { phase.setTerminationConfig(terminationConfig);
@Test public void trackLocalSearch() { SolverFactory<NQueens> solverFactory = SolverFactory.createFromXmlResource(NQueensApp.SOLVER_CONFIG); SolverConfig solverConfig = solverFactory.getSolverConfig(); NQueensGenerator generator = new NQueensGenerator(); NQueens problem = 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().withStepCountLimit(20)); solverConfig.getPhaseConfigList().set(1, localSearchPhaseConfig); NQueensStepTracker listener = new NQueensStepTracker(); DefaultSolver<NQueens> solver = (DefaultSolver<NQueens>) solverFactory.buildSolver(); solver.addPhaseLifecycleListener(listener); NQueens bestSolution = solver.solve(problem); assertNotNull(bestSolution); assertTrackingList(expectedCoordinates, listener.getTrackingList()); }