mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-24 22:48:34 +00:00
Improved model training, adjusted mongodb compound index for distance
This commit is contained in:
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/importer/ManeuverAndWindImporter.java"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||
<listEntry value="1"/>
|
||||
</listAttribute>
|
||||
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_EXCLUDE_TEST_CODE" value="true"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.sap.sailing.windestimation.data.importer.ManeuverAndWindImporter"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.sap.sailing.windestimation.lab"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx16G"/>
|
||||
</launchConfiguration>
|
||||
+6
-23
@@ -17,20 +17,16 @@ import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.RaceWindJsonSerializer;
|
||||
import com.sap.sailing.windestimation.data.RaceWithWindSources;
|
||||
import com.sap.sailing.windestimation.data.persistence.maneuver.AbstractPersistenceManager;
|
||||
import com.sap.sailing.windestimation.data.persistence.maneuver.PersistedElementsIterator;
|
||||
import com.sap.sailing.windestimation.data.serialization.RaceWithEstimationDataDeserializer;
|
||||
import com.sap.sailing.windestimation.data.serialization.RaceWithWindSourcesDeserializer;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
|
||||
public class RaceWithWindSourcesPersistenceManager extends AbstractPersistenceManager<RaceWithWindSources> {
|
||||
|
||||
private static final String COLLECTION_NAME = "racesWithWind";
|
||||
private static final String WIND_SOURCES_COLLECTION_NAME = "windSources";
|
||||
static final String COLLECTION_NAME = "racesWithWind";
|
||||
private final WindSourcesPersistenceManager windSourcesPersistenceManager;
|
||||
|
||||
public RaceWithWindSourcesPersistenceManager() throws UnknownHostException {
|
||||
Document indexes = new Document(RaceWindJsonSerializer.START_TIME_POINT, 1);
|
||||
indexes.put(RaceWindJsonSerializer.END_TIME_POINT, -1);
|
||||
getDb().getCollection(getWindSourcesCollectionName()).createIndex(indexes);
|
||||
windSourcesPersistenceManager = new WindSourcesPersistenceManager();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -41,7 +37,7 @@ public class RaceWithWindSourcesPersistenceManager extends AbstractPersistenceMa
|
||||
@Override
|
||||
public void dropCollection() {
|
||||
super.dropCollection();
|
||||
getDb().getCollection(getWindSourcesCollectionName()).drop();
|
||||
windSourcesPersistenceManager.dropCollection();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -52,7 +48,7 @@ public class RaceWithWindSourcesPersistenceManager extends AbstractPersistenceMa
|
||||
JSONArray windSourceIdsJson = (JSONArray) raceJson
|
||||
.get(RaceWithEstimationDataDeserializer.COMPETITOR_TRACKS);
|
||||
JSONArray windSourcesJson = new JSONArray();
|
||||
MongoCollection<Document> windSourcesCollection = getDb().getCollection(getWindSourcesCollectionName());
|
||||
MongoCollection<Document> windSourcesCollection = windSourcesPersistenceManager.getCollection();
|
||||
for (Object idObject : windSourceIdsJson) {
|
||||
Document dbWindSource = windSourcesCollection
|
||||
.find(new Document(FIELD_DB_ID, new ObjectId((String) idObject))).first();
|
||||
@@ -69,10 +65,6 @@ public class RaceWithWindSourcesPersistenceManager extends AbstractPersistenceMa
|
||||
};
|
||||
}
|
||||
|
||||
public static String getWindSourcesCollectionName() {
|
||||
return COLLECTION_NAME + "." + WIND_SOURCES_COLLECTION_NAME;
|
||||
}
|
||||
|
||||
public void add(String regattaName, String raceName, JSONObject raceWithWindSourcesJson) {
|
||||
|
||||
JSONArray windSourcesJson = (JSONArray) raceWithWindSourcesJson.get(RaceWindJsonSerializer.WIND_SOURCES);
|
||||
@@ -81,7 +73,7 @@ public class RaceWithWindSourcesPersistenceManager extends AbstractPersistenceMa
|
||||
Document entry = parseJsonString(windSourceObj.toString());
|
||||
dbWindSources.add(entry);
|
||||
}
|
||||
MongoCollection<Document> windSourcesCollection = getDb().getCollection(getWindSourcesCollectionName());
|
||||
MongoCollection<Document> windSourcesCollection = windSourcesPersistenceManager.getCollection();
|
||||
windSourcesCollection.insertMany(dbWindSources);
|
||||
BasicDBList dbWindSourceIds = new BasicDBList();
|
||||
for (Document dbWindSource : dbWindSources) {
|
||||
@@ -96,13 +88,4 @@ public class RaceWithWindSourcesPersistenceManager extends AbstractPersistenceMa
|
||||
races.insertOne(dbObject);
|
||||
}
|
||||
|
||||
public PersistedElementsIterator<RaceWithWindSources> getIteratorForEntriesIntersectingPeriod(
|
||||
TimePoint startTimePoint, TimePoint endTimePoint, double toleranceInSeconds) {
|
||||
double maxStartTime = endTimePoint.asMillis() + toleranceInSeconds * 1000;
|
||||
double maxEndTime = startTimePoint.asMillis() - toleranceInSeconds * 1000;
|
||||
String query = "{$and: [{'" + RaceWindJsonSerializer.START_TIME_POINT + "': {$lte: " + maxStartTime + "}}, {'"
|
||||
+ RaceWindJsonSerializer.END_TIME_POINT + "': {$gte: " + maxEndTime + "}}]}";
|
||||
return getIterator(query);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+5
-2
@@ -21,15 +21,18 @@ import com.sap.sse.common.TimePoint;
|
||||
|
||||
public class WindSourcesPersistenceManager extends AbstractPersistenceManager<WindSourceWithFixes> {
|
||||
|
||||
private static final String WIND_SOURCES_COLLECTION_NAME = "windSources";
|
||||
|
||||
public WindSourcesPersistenceManager() throws UnknownHostException {
|
||||
BasicDBObject indexes = new BasicDBObject(RaceWindJsonSerializer.START_TIME_POINT, 1);
|
||||
BasicDBObject indexes = new BasicDBObject("_id", 1);
|
||||
indexes.put(RaceWindJsonSerializer.START_TIME_POINT, 1);
|
||||
indexes.put(RaceWindJsonSerializer.END_TIME_POINT, -1);
|
||||
getCollection().createIndex(indexes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCollectionName() {
|
||||
return RaceWithWindSourcesPersistenceManager.getWindSourcesCollectionName();
|
||||
return RaceWithWindSourcesPersistenceManager.COLLECTION_NAME + "." + WIND_SOURCES_COLLECTION_NAME;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+8
-2
@@ -48,10 +48,10 @@ public class SimpleModelsTrainingPart1 {
|
||||
PersistedManeuverClassifiersScorePrinter.main(args);
|
||||
});
|
||||
executeInThreadPool(() -> {
|
||||
DurationBasedTwdTransitionImporter.main(args);
|
||||
DistanceBasedTwdTransitionImporter.main(args);
|
||||
});
|
||||
executeInThreadPool(() -> {
|
||||
DistanceBasedTwdTransitionImporter.main(args);
|
||||
DurationBasedTwdTransitionImporter.main(args);
|
||||
});
|
||||
awaitThreadPoolCompletion();
|
||||
AggregatedDurationBasedTwdTransitionImporter.createPersistenceManagerAndEnsureIndex();
|
||||
@@ -77,6 +77,7 @@ public class SimpleModelsTrainingPart1 {
|
||||
} while (JOptionPane.YES_OPTION != askDataCleaningFinished(AggregatedSingleDimensionType.DISTANCE));
|
||||
showInfoAboutIntervalAdjustments(DistanceBasedTwdTransitionRegressorModelContext.class,
|
||||
DistanceValueRange.class);
|
||||
showInfoAboutRunPart2();
|
||||
}
|
||||
|
||||
private static int askDataCleaningFinished(AggregatedSingleDimensionType dimension) {
|
||||
@@ -94,6 +95,11 @@ public class SimpleModelsTrainingPart1 {
|
||||
return JOptionPane.CLOSED_OPTION;
|
||||
}
|
||||
|
||||
private static void showInfoAboutRunPart2() {
|
||||
JOptionPane.showMessageDialog(null, "Now, run the class \"" + SimpleModelsTrainingPart2.class.getName()
|
||||
+ "\".\nThis will complete the training process.");
|
||||
}
|
||||
|
||||
private static void showInfoAboutDataCleaning(AggregatedSingleDimensionType dimension) {
|
||||
JOptionPane.showMessageDialog(null, "Now, clean the data for the " + dimension
|
||||
+ " dimension.\nRemove instances from MongoDB collection \"" + dimension.getCollectioName()
|
||||
|
||||
Reference in New Issue
Block a user