diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassifierScoring.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassifierScoring.java index f1d149df722..e8d20db2067 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassifierScoring.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassifierScoring.java @@ -1,16 +1,29 @@ package com.sap.sailing.windestimation.model.classifier.maneuver; import com.sap.sailing.windestimation.data.ManeuverForEstimation; +import com.sap.sailing.windestimation.data.ManeuverTypeForClassification; import com.sap.sailing.windestimation.model.classifier.ClassifierScoring; import com.sap.sailing.windestimation.model.classifier.TrainableClassificationModel; -import com.sap.sailing.windestimation.model.classifier.maneuver.ManeuverClassifierModelMetadata; -public class ManeuverClassifierScoring extends ClassifierScoring { +public class ManeuverClassifierScoring + extends ClassifierScoring { public ManeuverClassifierScoring( TrainableClassificationModel trainedClassifierModel) { - super(trainedClassifierModel, i -> trainedClassifierModel.getContextSpecificModelMetadata() - .getManeuverTypeByMappingIndex(i).toString()); + super(trainedClassifierModel, i -> { + ManeuverClassifierModelMetadata modelMetadata = trainedClassifierModel.getContextSpecificModelMetadata(); + ManeuverTypeForClassification maneuverType = trainedClassifierModel.getContextSpecificModelMetadata() + .getManeuverTypeByMappingIndex(i); + if (modelMetadata.getOtherTypes() <= 1) { + return maneuverType.toString(); + } + int otherTypesBeginFromOrdinal = ManeuverTypeForClassification.values().length + - modelMetadata.getOtherTypes(); + if (maneuverType.ordinal() < otherTypesBeginFromOrdinal) { + return maneuverType.toString(); + } + return "Other"; + }); } } diff --git a/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassifierModelFactory.java b/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassifierModelFactory.java index fdcfe49c06e..08da098f03c 100644 --- a/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassifierModelFactory.java +++ b/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassifierModelFactory.java @@ -15,8 +15,7 @@ public class ManeuverClassifierModelFactory implements ClassifierModelFactory { public static final ManeuverTypeForClassification[] orderedSupportedTargetValues = { - ManeuverTypeForClassification.TACK, ManeuverTypeForClassification.JIBE, - ManeuverTypeForClassification.HEAD_UP, ManeuverTypeForClassification.BEAR_AWAY }; + ManeuverTypeForClassification.TACK, ManeuverTypeForClassification.JIBE }; @Override public TrainableClassificationModel getNewModel( diff --git a/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassifierModelMetadata.java b/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassifierModelMetadata.java index 6ffaa312414..66189c7d762 100644 --- a/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassifierModelMetadata.java +++ b/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/classifier/maneuver/ManeuverClassifierModelMetadata.java @@ -119,6 +119,10 @@ public class ManeuverClassifierModelMetadata extends ContextSpecificModelMetadat } return null; } + + public int getOtherTypes() { + return otherTypes; + } @Override public double[] getX(ManeuverForEstimation maneuver) { @@ -168,11 +172,10 @@ public class ManeuverClassifierModelMetadata extends ContextSpecificModelMetadat return false; } } - if (maneuverFeatures.isMarksInformation()) { - return maneuver.isMarkPassingDataAvailable(); + if (maneuverFeatures.isMarksInformation() && !maneuver.isMarkPassingDataAvailable()) { + return false; } - if (boatClass != null && (maneuver.getBoatClass() == null - || !boatClass.getName().equals(maneuver.getBoatClass().getName()))) { + if (boatClass != null && !boatClass.equals(maneuver.getBoatClass())) { return false; } return true;