Ignore:
Timestamp:
06/01/15 13:55:48 (9 years ago)
Author:
pharms
Message:
  • improved selection of sequence to be merged first
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/autoquest-core-tasktrees/src/main/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/SequenceForTaskDetectionRule.java

    r1955 r1958  
    10281028                int overallMinSumOfCollisionIndexes = Integer.MAX_VALUE; 
    10291029                int overallMinimalCollisionIndex = Integer.MAX_VALUE; 
    1030                 InterleavingSubsequence interleavingWithMinSum = null; 
    1031                 InterleavingSubsequence interleavingWithMinIndex = null; 
     1030                List<InterleavingSubsequence> interleavingsWithMinSum = new LinkedList<>(); 
     1031                List<InterleavingSubsequence> interleavingsWithMinIndex = new LinkedList<>(); 
    10321032                 
    10331033                for (InterleavingSubsequence interleaving : interleavings) { 
     
    10481048                     
    10491049                    if (overallMinSumOfCollisionIndexes > sumOfCollisionIndexes) { 
    1050                         interleavingWithMinSum = interleaving; 
     1050                        interleavingsWithMinSum.clear(); 
     1051                        interleavingsWithMinSum.add(interleaving); 
    10511052                        overallMinSumOfCollisionIndexes = sumOfCollisionIndexes; 
    10521053                    } 
    10531054                    else if (overallMinSumOfCollisionIndexes == sumOfCollisionIndexes) { 
    1054                         // cannot decide between already found and new one 
    1055                         interleavingWithMinSum = null; 
     1055                        interleavingsWithMinSum.add(interleaving); 
    10561056                    } 
    10571057                     
    10581058                    if (overallMinimalCollisionIndex > minimalCollisionIndex) { 
    1059                         interleavingWithMinIndex = interleaving; 
     1059                        interleavingsWithMinIndex.clear(); 
     1060                        interleavingsWithMinIndex.add(interleaving); 
    10601061                        overallMinimalCollisionIndex = minimalCollisionIndex; 
    10611062                    } 
    10621063                    else if (overallMinimalCollisionIndex == minimalCollisionIndex) { 
    1063                         // cannot decide between already found and new one 
    1064                         interleavingWithMinIndex = null; 
    1065                     } 
    1066                 } 
    1067                  
    1068                 if (interleavingWithMinSum != null) { 
     1064                        interleavingsWithMinIndex.add(interleaving); 
     1065                    } 
     1066                } 
     1067                 
     1068                if (interleavingsWithMinSum.size() < appData.getLastFoundSubsequences().size()) { 
    10691069                    for (InterleavingSubsequence interleaving : interleavings) { 
    1070                         if (interleaving != interleavingWithMinSum) { 
     1070                        boolean found = false; 
     1071                        for (InterleavingSubsequence candidate : interleavingsWithMinSum) { 
     1072                            if (candidate == interleaving) { 
     1073                                found = true; 
     1074                                break; 
     1075                            } 
     1076                        } 
     1077                         
     1078                        if (!found) { 
    10711079                            appData.getLastFoundSubsequences().remove(interleaving.getSubsequence()); 
    10721080                        } 
     
    10761084                } 
    10771085                 
    1078                 if (interleavingWithMinIndex != null) { 
     1086                if (interleavingsWithMinIndex.size() < appData.getLastFoundSubsequences().size()) { 
    10791087                    for (InterleavingSubsequence interleaving : interleavings) { 
    1080                         if (interleaving != interleavingWithMinIndex) { 
     1088                        boolean found = false; 
     1089                        for (InterleavingSubsequence candidate : interleavingsWithMinIndex) { 
     1090                            if (candidate == interleaving) { 
     1091                                found = true; 
     1092                                break; 
     1093                            } 
     1094                        } 
     1095                         
     1096                        if (!found) { 
    10811097                            appData.getLastFoundSubsequences().remove(interleaving.getSubsequence()); 
    10821098                        } 
Note: See TracChangeset for help on using the changeset viewer.