@Test public void testAllRecommenderSystemsFilePersistence() throws CannotLoadRatingsDataset, CannotLoadContentDataset { final List<RecommenderSystem> recommenderSystems = RecommenderSystemsFactory.getInstance().getAllClasses(RecommenderSystem.class); for (RecommenderSystem recommenderSystem : recommenderSystems) { if (recommenderSystem instanceof Recommender_DatasetProperties) { continue; } String configFile = TEST_DIRECTORY + recommenderSystem.getName() + "_config.xml"; RecommenderSystemConfigurationFileParser.saveConfigFile( configFile, recommenderSystem, datasetLoader, new FilePersistence(recommenderSystem.getName(), "dat", new File(TEST_DIRECTORY)), new OnlyNewItems(), getRecommendationOutputFileXML(recommenderSystem)); Chronometer chronometer = new Chronometer(); SingleUserRecommendation.buildRecommendationModel(configFile); Global.showln( "Built model of '" + recommenderSystem + "' in " + chronometer.printTotalElapsed()); RatingsDataset<? extends Rating> ratingsDataset = datasetLoader.getRatingsDataset(); chronometer.reset(); ratingsDataset .allUsers() .stream() .forEach( (idUser) -> { SingleUserRecommendation.recommendToUser(configFile, idUser); }); Global.showln( "Recommended with '" + recommenderSystem + "' to " + datasetLoader.getRatingsDataset().allUsers().size() + " users in " + chronometer.printTotalElapsed()); } }
@Override public void progressChanged(ExperimentProgress algorithmExperiment) { String executionTask = algorithmExperiment.getExecutionProgressTask(); int executionPercent = algorithmExperiment.getExecutionProgressPercent(); boolean begin = executionPercent == 0; boolean finish = executionPercent == 100; boolean repeated = executionPercent == executionLastPercent && executionTask.equals(executionLastTask); boolean timeTrigger = chronometer.getTotalElapsed() >= verbosePeriod; if (((begin || finish) && !repeated) || timeTrigger) { printProgress(algorithmExperiment); executionLastPercent = executionPercent; executionLastTask = executionTask; chronometer.reset(); } }