From 2486e44ae8a5f49ec45fe6d1c007729f50c9241d Mon Sep 17 00:00:00 2001 From: Vladislav Chumak Date: Sun, 24 Feb 2019 21:04:23 +0100 Subject: [PATCH] Bugfixes and improvements of simple models training --- ...aunch => SimpleModelsTrainingPart1.launch} | 6 +-- .../SimpleModelsTrainingPart2.launch | 12 ++++++ ...DistanceBasedAbsTwdTransitionImporter.java | 10 ++++- ...tedDistanceBasedTwdTransitionImporter.java | 10 ++++- ...DurationBasedAbsTwdTransitionImporter.java | 10 ++++- ...tedDurationBasedTwdTransitionImporter.java | 10 ++++- .../DistanceBasedTwdTransitionImporter.java | 10 +++-- .../DurationBasedTwdTransitionImporter.java | 11 +++--- ...nsionTwdTransitionAggregationImporter.java | 13 ++++--- ...RaceWithWindSourcesPersistenceManager.java | 4 +- .../WindSourcesPersistenceManager.java | 2 +- ...ingleDimensionAggregatesPlottingFrame.java | 1 + ...ng.java => SimpleModelsTrainingPart1.java} | 39 +++++++++---------- .../model/SimpleModelsTrainingPart2.java | 22 +++++++++++ 14 files changed, 112 insertions(+), 48 deletions(-) rename java/com.sap.sailing.windestimation.lab/{SimpleModelsTraining.launch => SimpleModelsTrainingPart1.launch} (82%) create mode 100644 java/com.sap.sailing.windestimation.lab/SimpleModelsTrainingPart2.launch rename java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/{SimpleModelsTraining.java => SimpleModelsTrainingPart1.java} (78%) create mode 100644 java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/SimpleModelsTrainingPart2.java diff --git a/java/com.sap.sailing.windestimation.lab/SimpleModelsTraining.launch b/java/com.sap.sailing.windestimation.lab/SimpleModelsTrainingPart1.launch similarity index 82% rename from java/com.sap.sailing.windestimation.lab/SimpleModelsTraining.launch rename to java/com.sap.sailing.windestimation.lab/SimpleModelsTrainingPart1.launch index 69cd2a60688..ac2cbb603ff 100644 --- a/java/com.sap.sailing.windestimation.lab/SimpleModelsTraining.launch +++ b/java/com.sap.sailing.windestimation.lab/SimpleModelsTrainingPart1.launch @@ -1,13 +1,13 @@ - + - + - + diff --git a/java/com.sap.sailing.windestimation.lab/SimpleModelsTrainingPart2.launch b/java/com.sap.sailing.windestimation.lab/SimpleModelsTrainingPart2.launch new file mode 100644 index 00000000000..ba6810c3b3e --- /dev/null +++ b/java/com.sap.sailing.windestimation.lab/SimpleModelsTrainingPart2.launch @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/AggregatedDistanceBasedAbsTwdTransitionImporter.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/AggregatedDistanceBasedAbsTwdTransitionImporter.java index 7ad3616088c..ab97520b348 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/AggregatedDistanceBasedAbsTwdTransitionImporter.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/AggregatedDistanceBasedAbsTwdTransitionImporter.java @@ -9,12 +9,18 @@ import com.sap.sailing.windestimation.data.persistence.twdtransition.SingleDimen public class AggregatedDistanceBasedAbsTwdTransitionImporter { public static void main(String[] args) throws UnknownHostException { - SingleDimensionBasedTwdTransitionPersistenceManager singleDimensionBasedTwdTransitionPersistenceManager = new SingleDimensionBasedTwdTransitionPersistenceManager( - SingleDimensionType.DISTANCE); + SingleDimensionBasedTwdTransitionPersistenceManager singleDimensionBasedTwdTransitionPersistenceManager = createPersistenceManagerAndEnsureIndex(); SingleDimensionTwdTransitionAggregationImporter importer = new SingleDimensionTwdTransitionAggregationImporter( singleDimensionBasedTwdTransitionPersistenceManager, AggregatedSingleDimensionType.DISTANCE_ABS, new AnnealingNextThresholdCalculator(10, 1.5)); importer.runAggregation(); } + public static SingleDimensionBasedTwdTransitionPersistenceManager createPersistenceManagerAndEnsureIndex() + throws UnknownHostException { + SingleDimensionBasedTwdTransitionPersistenceManager singleDimensionBasedTwdTransitionPersistenceManager = new SingleDimensionBasedTwdTransitionPersistenceManager( + SingleDimensionType.DISTANCE); + return singleDimensionBasedTwdTransitionPersistenceManager; + } + } diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/AggregatedDistanceBasedTwdTransitionImporter.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/AggregatedDistanceBasedTwdTransitionImporter.java index a964e6d712e..f54c24ac7a6 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/AggregatedDistanceBasedTwdTransitionImporter.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/AggregatedDistanceBasedTwdTransitionImporter.java @@ -9,12 +9,18 @@ import com.sap.sailing.windestimation.data.persistence.twdtransition.SingleDimen public class AggregatedDistanceBasedTwdTransitionImporter { public static void main(String[] args) throws UnknownHostException { - SingleDimensionBasedTwdTransitionPersistenceManager singleDimensionBasedTwdTransitionPersistenceManager = new SingleDimensionBasedTwdTransitionPersistenceManager( - SingleDimensionType.DISTANCE); + SingleDimensionBasedTwdTransitionPersistenceManager singleDimensionBasedTwdTransitionPersistenceManager = createPersistenceManagerAndEnsureIndex(); SingleDimensionTwdTransitionAggregationImporter importer = new SingleDimensionTwdTransitionAggregationImporter( singleDimensionBasedTwdTransitionPersistenceManager, AggregatedSingleDimensionType.DISTANCE, new AnnealingNextThresholdCalculator(10, 1.5)); importer.runAggregation(); } + public static SingleDimensionBasedTwdTransitionPersistenceManager createPersistenceManagerAndEnsureIndex() + throws UnknownHostException { + SingleDimensionBasedTwdTransitionPersistenceManager singleDimensionBasedTwdTransitionPersistenceManager = new SingleDimensionBasedTwdTransitionPersistenceManager( + SingleDimensionType.DISTANCE); + return singleDimensionBasedTwdTransitionPersistenceManager; + } + } diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/AggregatedDurationBasedAbsTwdTransitionImporter.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/AggregatedDurationBasedAbsTwdTransitionImporter.java index d5e84ce3e53..ca8cc119fec 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/AggregatedDurationBasedAbsTwdTransitionImporter.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/AggregatedDurationBasedAbsTwdTransitionImporter.java @@ -9,12 +9,18 @@ import com.sap.sailing.windestimation.data.persistence.twdtransition.SingleDimen public class AggregatedDurationBasedAbsTwdTransitionImporter { public static void main(String[] args) throws UnknownHostException { - SingleDimensionBasedTwdTransitionPersistenceManager singleDimensionBasedTwdTransitionPersistenceManager = new SingleDimensionBasedTwdTransitionPersistenceManager( - SingleDimensionType.DURATION); + SingleDimensionBasedTwdTransitionPersistenceManager singleDimensionBasedTwdTransitionPersistenceManager = createPersistenceManagerAndEnsureIndex(); SingleDimensionTwdTransitionAggregationImporter importer = new SingleDimensionTwdTransitionAggregationImporter( singleDimensionBasedTwdTransitionPersistenceManager, AggregatedSingleDimensionType.DURATION_ABS, DurationBasedTwdTransitionImporter.getThresholdCalculator()); importer.runAggregation(); } + public static SingleDimensionBasedTwdTransitionPersistenceManager createPersistenceManagerAndEnsureIndex() + throws UnknownHostException { + SingleDimensionBasedTwdTransitionPersistenceManager singleDimensionBasedTwdTransitionPersistenceManager = new SingleDimensionBasedTwdTransitionPersistenceManager( + SingleDimensionType.DURATION); + return singleDimensionBasedTwdTransitionPersistenceManager; + } + } diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/AggregatedDurationBasedTwdTransitionImporter.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/AggregatedDurationBasedTwdTransitionImporter.java index baacd558f94..5fc7cc95d41 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/AggregatedDurationBasedTwdTransitionImporter.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/AggregatedDurationBasedTwdTransitionImporter.java @@ -9,12 +9,18 @@ import com.sap.sailing.windestimation.data.persistence.twdtransition.SingleDimen public class AggregatedDurationBasedTwdTransitionImporter { public static void main(String[] args) throws UnknownHostException { - SingleDimensionBasedTwdTransitionPersistenceManager singleDimensionBasedTwdTransitionPersistenceManager = new SingleDimensionBasedTwdTransitionPersistenceManager( - SingleDimensionType.DURATION); + SingleDimensionBasedTwdTransitionPersistenceManager singleDimensionBasedTwdTransitionPersistenceManager = createPersistenceManagerAndEnsureIndex(); SingleDimensionTwdTransitionAggregationImporter importer = new SingleDimensionTwdTransitionAggregationImporter( singleDimensionBasedTwdTransitionPersistenceManager, AggregatedSingleDimensionType.DURATION, DurationBasedTwdTransitionImporter.getThresholdCalculator()); importer.runAggregation(); } + public static SingleDimensionBasedTwdTransitionPersistenceManager createPersistenceManagerAndEnsureIndex() + throws UnknownHostException { + SingleDimensionBasedTwdTransitionPersistenceManager singleDimensionBasedTwdTransitionPersistenceManager = new SingleDimensionBasedTwdTransitionPersistenceManager( + SingleDimensionType.DURATION); + return singleDimensionBasedTwdTransitionPersistenceManager; + } + } diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/DistanceBasedTwdTransitionImporter.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/DistanceBasedTwdTransitionImporter.java index c33557994e5..2bf8ea62427 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/DistanceBasedTwdTransitionImporter.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/DistanceBasedTwdTransitionImporter.java @@ -36,7 +36,8 @@ public class DistanceBasedTwdTransitionImporter { .getIterator(); iterator.hasNext();) { long percent = windSourceNumber * 100 / numberOfWindSources; WindSourceWithFixes windSource = iterator.next(); - LoggingUtil.logInfo("Processing " + windSourceNumber++ + "/" + numberOfWindSources + " (" + percent + "%)"); + LoggingUtil.logInfo("Processing wind source " + windSourceNumber++ + "/" + numberOfWindSources + " (" + + percent + "%) for distance dimension"); List entries = new ArrayList<>(); List otherWindSources = new ArrayList<>(); for (PersistedElementsIterator otherWindSourcesIterator = windSourcesPersistenceManager @@ -109,16 +110,17 @@ public class DistanceBasedTwdTransitionImporter { } while (currentFix != null && currentOtherFix != null); } if (entries.isEmpty()) { - LoggingUtil.logInfo("No TWD transitions to import"); + LoggingUtil.logInfo("No distance based TWD transitions to import"); } else { distanceBasedTwdTransitionPersistenceManager.add(entries); int totalEntries = entries.size(); totalValuesCount += totalEntries; - LoggingUtil.logInfo(totalEntries + " TWD transitions imported, " + totalValuesCount + " in total"); + LoggingUtil.logInfo( + totalEntries + " distance based TWD transitions imported, " + totalValuesCount + " in total"); } } LoggingUtil.logInfo("###################\r\nDistance based TWD transitions Import finished"); - LoggingUtil.logInfo("Totally " + totalValuesCount + " TWD transitions imported"); + LoggingUtil.logInfo("Totally " + totalValuesCount + " distance based TWD transitions imported"); } } diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/DurationBasedTwdTransitionImporter.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/DurationBasedTwdTransitionImporter.java index d5d94c4ec94..ddeaa241c13 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/DurationBasedTwdTransitionImporter.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/DurationBasedTwdTransitionImporter.java @@ -32,7 +32,8 @@ public class DurationBasedTwdTransitionImporter { .getIterator(); iterator.hasNext();) { long percent = windSourceNumber * 100 / numberOfWindSources; WindSourceWithFixes windSource = iterator.next(); - LoggingUtil.logInfo("Processing " + windSourceNumber++ + "/" + numberOfWindSources + " (" + percent + "%)"); + LoggingUtil.logInfo("Processing wind source " + windSourceNumber++ + "/" + numberOfWindSources + " (" + + percent + "%) for duration dimension"); TimePoint timePointOfLastConsideredWindFix = null; List entries = new ArrayList<>(); int windFixIndex = 0; @@ -58,17 +59,17 @@ public class DurationBasedTwdTransitionImporter { } } if (entries.isEmpty()) { - LoggingUtil.logInfo("No TWD transitions to import"); + LoggingUtil.logInfo("No duration based TWD transitions to import"); } else { durationBasedTwdTransitionPersistenceManager.add(entries); int totalEntries = entries.size(); totalValuesCount += totalEntries; - LoggingUtil - .logInfo(totalEntries + " TWD transition entries imported, " + totalValuesCount + " in total"); + LoggingUtil.logInfo(totalEntries + " duration based TWD transition entries imported, " + + totalValuesCount + " in total"); } } LoggingUtil.logInfo("###################\r\nDuration based TWD transitions Import finished"); - LoggingUtil.logInfo("Totally " + totalValuesCount + " TWD transitions imported"); + LoggingUtil.logInfo("Totally " + totalValuesCount + " duration based TWD transitions imported"); } public static NextThresholdCalculator getThresholdCalculator() { diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/SingleDimensionTwdTransitionAggregationImporter.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/SingleDimensionTwdTransitionAggregationImporter.java index a7e0ee3cedc..23cbe105991 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/SingleDimensionTwdTransitionAggregationImporter.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/SingleDimensionTwdTransitionAggregationImporter.java @@ -35,7 +35,7 @@ public class SingleDimensionTwdTransitionAggregationImporter { public void runAggregation() throws UnknownHostException { long totalValuesCount = 0; List aggregates = new ArrayList<>(); - LoggingUtil.logInfo("Aggregating persisted entries"); + LoggingUtil.logInfo("Aggregating persisted entries for dimension " + dimensionType); TDoubleList entries = new TDoubleArrayList(); double currentBucketThreshold = thresholdCalculator.getInitialThresholdValue(); double nextBucketThreshold = thresholdCalculator.getNextThresholdValue(currentBucketThreshold); @@ -61,7 +61,8 @@ public class SingleDimensionTwdTransitionAggregationImporter { } entries.add(twdChange); if (entries.size() % 10000 == 0) { - LoggingUtil.logInfo((entries.size() + totalValuesCount) + " Entries aggregated"); + LoggingUtil.logInfo( + (entries.size() + totalValuesCount) + " Entries aggregated for dimension " + dimensionType); } } if (entries.size() >= MIN_NUMBER_OF_VALUES_PER_BUCKET) { @@ -69,14 +70,16 @@ public class SingleDimensionTwdTransitionAggregationImporter { aggregates.add(aggregate); totalValuesCount += entries.size(); } - LoggingUtil.logInfo("Persisting " + aggregates.size() + " aggregates"); + LoggingUtil.logInfo("Persisting " + aggregates.size() + " aggregates for dimension " + dimensionType); AggregatedSingleDimensionBasedTwdTransitionPersistenceManager aggregatedDurationBasedTwdTransitionPersistenceManager = new AggregatedSingleDimensionBasedTwdTransitionPersistenceManager( dimensionType); aggregatedDurationBasedTwdTransitionPersistenceManager.dropCollection(); aggregatedDurationBasedTwdTransitionPersistenceManager.add(aggregates); LoggingUtil.logInfo("###################\r\n" + dimensionType + " based TWD transitions Import finished"); - LoggingUtil.logInfo("Totally " + totalValuesCount + " TWD transitions imported"); - LoggingUtil.logInfo("Totally " + aggregates.size() + " TWD transition aggregates imported"); + LoggingUtil.logInfo( + "Totally " + totalValuesCount + " " + dimensionType + " based TWD transitions have been processed"); + LoggingUtil.logInfo( + "Totally " + aggregates.size() + " TWD transition aggregates imported for dimension " + dimensionType); } private double getFinalBucketThreshold(double currentBucketThreshold, double nextBucketThreshold) { diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/twdtransition/RaceWithWindSourcesPersistenceManager.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/twdtransition/RaceWithWindSourcesPersistenceManager.java index d047de632b4..297e09ca2de 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/twdtransition/RaceWithWindSourcesPersistenceManager.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/twdtransition/RaceWithWindSourcesPersistenceManager.java @@ -29,8 +29,8 @@ public class RaceWithWindSourcesPersistenceManager extends AbstractPersistenceMa public RaceWithWindSourcesPersistenceManager() throws UnknownHostException { Document indexes = new Document(RaceWindJsonSerializer.START_TIME_POINT, 1); - indexes.put(RaceWindJsonSerializer.END_TIME_POINT, 1); - getCollection().createIndex(indexes); + indexes.put(RaceWindJsonSerializer.END_TIME_POINT, -1); + getDb().getCollection(getWindSourcesCollectionName()).createIndex(indexes); } @Override diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/twdtransition/WindSourcesPersistenceManager.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/twdtransition/WindSourcesPersistenceManager.java index 0b8fbfc27ae..d80c152d635 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/twdtransition/WindSourcesPersistenceManager.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/twdtransition/WindSourcesPersistenceManager.java @@ -23,7 +23,7 @@ public class WindSourcesPersistenceManager extends AbstractPersistenceManager { DurationBasedTwdTransitionImporter.main(args); - Thread.sleep(1000); - AggregatedDurationBasedTwdTransitionImporter.main(args); }); executeInThreadPool(() -> { DistanceBasedTwdTransitionImporter.main(args); - Thread.sleep(1000); + }); + awaitThreadPoolCompletion(); + AggregatedDurationBasedTwdTransitionImporter.createPersistenceManagerAndEnsureIndex(); + AggregatedDistanceBasedTwdTransitionImporter.createPersistenceManagerAndEnsureIndex(); + executeInThreadPool(() -> { + AggregatedDurationBasedTwdTransitionImporter.main(args); + }); + executeInThreadPool(() -> { AggregatedDistanceBasedTwdTransitionImporter.main(args); }); awaitThreadPoolCompletion(); @@ -74,18 +77,14 @@ public class SimpleModelsTraining { } while (JOptionPane.YES_OPTION != askDataCleaningFinished(AggregatedSingleDimensionType.DISTANCE)); showInfoAboutIntervalAdjustments(DistanceBasedTwdTransitionRegressorModelContext.class, DistanceValueRange.class); - DurationBasedTwdTransitionStdRegressorTrainer.main(args); - DistanceBasedTwdTransitionStdRegressorTrainer.main(args); - Thread.sleep(1000); - ExportedModelsGenerator.main(args); - LoggingUtil.logInfo("Model training finished. You can upload the generated file to a server instance."); } private static int askDataCleaningFinished(AggregatedSingleDimensionType dimension) { Object[] options = { "Continue with model training", "Restart Graphical Tool" }; int res = JOptionPane.showOptionDialog(null, - "Have you finished the data cleaning for " + dimension + " dimension?", "Continue with model training?", - JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, options[0]); + "Have you finished the data cleansing for the " + dimension + " dimension?", + "Continue with model training?", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, + options, options[0]); switch (res) { case 0: return JOptionPane.YES_OPTION; @@ -96,22 +95,22 @@ public class SimpleModelsTraining { } private static void showInfoAboutDataCleaning(AggregatedSingleDimensionType dimension) { - JOptionPane.showMessageDialog(null, "Now, clean the data for " + dimension - + " dimension. Remove instances from MongoDB collection \"" + dimension.getCollectioName() - + "\" which do not make sense. E.g. values which are represented by a small number of supporting instances (see histogram), values which cause implausible zig zag sections within zero-mean standard deviation curve and etc. Close the graphical tool, when you are done to resume the model training."); + JOptionPane.showMessageDialog(null, "Now, clean the data for the " + dimension + + " dimension.\nRemove instances from MongoDB collection \"" + dimension.getCollectioName() + + "\"\nwhich do not make sense and cause implausible zig zag sections\nwithin \"Zero mean sigma\" curve.\n\nClose the graphical tool, when you are done to resume the model training."); } private static void showInfoAboutIntervalAdjustments(Class classToAdjust, Class valueRangeEnum) { JOptionPane.showMessageDialog(null, "Now, open the source code of the class \"" + classToAdjust.getName() - + "\". Scroll down to the definition of the inner enum \"" + valueRangeEnum.getSimpleName() - + "\", read its JavaDoc and adjust its interval definitions so that each interval can be learned by the adjusted regressor model configuration with minimal error. Press OK ONLY after you are done."); + + "\".\nScroll down to the definition of the inner enum \"" + valueRangeEnum.getSimpleName() + + "\",\nread its JavaDoc and adjust its interval definitions so that\neach interval can be learned by the adjusted regressor model configuration\nwith minimal error.\n\nPress OK after you are done."); } private static void awaitThreadPoolCompletion() throws InterruptedException { executorService.shutdown(); - boolean success = executorService.awaitTermination(2, TimeUnit.HOURS); + boolean success = executorService.awaitTermination(24, TimeUnit.HOURS); if (!success) { - new InterruptedException("Thread-pool was terminated after two hours waiting time"); + new InterruptedException("Thread-pool was terminated after 24 hours waiting time"); } Thread.sleep(1000L); } diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/SimpleModelsTrainingPart2.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/SimpleModelsTrainingPart2.java new file mode 100644 index 00000000000..7388eca611d --- /dev/null +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/SimpleModelsTrainingPart2.java @@ -0,0 +1,22 @@ +package com.sap.sailing.windestimation.model; + +import com.sap.sailing.windestimation.model.regressor.twdtransition.DistanceBasedTwdTransitionStdRegressorTrainer; +import com.sap.sailing.windestimation.model.regressor.twdtransition.DurationBasedTwdTransitionStdRegressorTrainer; +import com.sap.sailing.windestimation.util.LoggingUtil; + +/** + * + * @author Vladislav Chumak (D069712) + * + */ +public class SimpleModelsTrainingPart2 { + + public static void main(String[] args) throws Exception { + DurationBasedTwdTransitionStdRegressorTrainer.main(args); + DistanceBasedTwdTransitionStdRegressorTrainer.main(args); + Thread.sleep(1000); + ExportedModelsGenerator.main(args); + LoggingUtil.logInfo("Model training finished. You can upload the generated file to a server instance."); + } + +}