Changeset 93 for trunk/EventBenchCore/src/de/ugoe/cs/eventbench/coverage
- Timestamp:
- 07/04/11 10:35:39 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/EventBenchCore/src/de/ugoe/cs/eventbench/coverage/CoverageCalculator.java
r85 r93 1 1 package de.ugoe.cs.eventbench.coverage; 2 2 3 import java.security.InvalidParameterException;4 import java.util.ArrayList;5 3 import java.util.LinkedHashMap; 6 4 import java.util.LinkedHashSet; … … 16 14 17 15 private final IStochasticProcess process; 18 private final List<List< Event<?>>> sequences;16 private final List<List<? extends Event<?>>> sequences; 19 17 private final int length; 20 18 21 private Set<List< Event<?>>> containedSubSeqs = null;22 private Set<List< Event<?>>> allPossibleSubSeqs = null;23 private Map<List< Event<?>>, Double> subSeqWeights = null;19 private Set<List<? extends Event<?>>> containedSubSeqs = null; 20 private Set<List<? extends Event<?>>> allPossibleSubSeqs = null; 21 private Map<List<? extends Event<?>>, Double> subSeqWeights = null; 24 22 25 23 26 public CoverageCalculator(IStochasticProcess process, List<List< Event<?>>> sequences, int length) {24 public CoverageCalculator(IStochasticProcess process, List<List<? extends Event<?>>> sequences, int length) { 27 25 this.process = process; 28 26 this.sequences = sequences; … … 43 41 } 44 42 if( allPossibleSubSeqs==null ) { 45 allPossibleSubSeqs = generateSubSequences(process,length);43 allPossibleSubSeqs = process.generateSequences(length); 46 44 } 47 45 return((double) containedSubSeqs.size())/allPossibleSubSeqs.size(); … … 53 51 } 54 52 if( allPossibleSubSeqs==null ) { 55 allPossibleSubSeqs = generateSubSequences(process,length);53 allPossibleSubSeqs = process.generateSequences(length); 56 54 } 57 55 if( subSeqWeights==null ) { … … 59 57 } 60 58 double weight = 0.0; 61 for( List< Event<?>> subSeq : containedSubSeqs ) {59 for( List<? extends Event<?>> subSeq : containedSubSeqs ) { 62 60 weight += subSeqWeights.get(subSeq); 63 61 } … … 65 63 } 66 64 67 private Map<List< Event<?>>, Double> generateWeights(IStochasticProcess process, Set<List<Event<?>>> sequences) {68 Map<List< Event<?>>, Double> subSeqWeights = new LinkedHashMap<List<Event<?>>, Double>();65 private Map<List<? extends Event<?>>, Double> generateWeights(IStochasticProcess process, Set<List<? extends Event<?>>> sequences) { 66 Map<List<? extends Event<?>>, Double> subSeqWeights = new LinkedHashMap<List<? extends Event<?>>, Double>(); 69 67 double sum = 0.0; 70 for( List< Event<?>> sequence : sequences ) {68 for( List<? extends Event<?>> sequence : sequences ) { 71 69 double prob = 1.0; 72 70 List<Event<?>> context = new LinkedList<Event<?>>(); … … 79 77 } 80 78 if( sum<1.0 ) { 81 for( Map.Entry<List< Event<?>>, Double> entry : subSeqWeights.entrySet() ) {79 for( Map.Entry<List<? extends Event<?>>, Double> entry : subSeqWeights.entrySet() ) { 82 80 entry.setValue(entry.getValue()/sum); 83 81 } … … 90 88 } 91 89 92 // O(symbols^length)93 private Set<List<Event<?>>> generateSubSequences(IStochasticProcess process, int length) {94 Set<List<Event<?>>> subSequenceSet = new LinkedHashSet<List<Event<?>>>();;95 if( length<1 ) {96 throw new InvalidParameterException("Length of generated subsequences must be at least 1.");97 }98 if( length==1 ) {99 for( Event<?> event : process.getEvents() ) {100 List<Event<?>> subSeq = new LinkedList<Event<?>>();101 subSeq.add(event);102 subSequenceSet.add(subSeq);103 }104 return subSequenceSet;105 }106 Set<Event<?>> events = process.getEvents();107 Set<List<Event<?>>> subSeqsShorter = generateSubSequences(process, length-1);108 for( Event<?> event : events ) {109 for( List<Event<?>> subSequence : subSeqsShorter ) {110 Event<?> lastEvent = event;111 if( process.getProbability(subSequence, lastEvent)>0.0 ) {112 List<Event<?>> subSeq = new ArrayList<Event<?>>(subSequence);113 subSeq.add(lastEvent);114 subSequenceSet.add(subSeq);115 }116 }117 }118 return subSequenceSet;119 }120 121 90 // O(numSeq*lenSeq) 122 private Set<List< Event<?>>> containedSubSequences(List<List<Event<?>>> sequences, int length) {123 Set<List< Event<?>>> containedSubSeqs = new LinkedHashSet<List<Event<?>>>();91 private Set<List<? extends Event<?>>> containedSubSequences(List<List<? extends Event<?>>> sequences, int length) { 92 Set<List<? extends Event<?>>> containedSubSeqs = new LinkedHashSet<List<? extends Event<?>>>(); 124 93 List<Event<?>> subSeq = new LinkedList<Event<?>>(); 125 94 boolean minLengthReached = false; 126 for( List< Event<?>> sequence : sequences ) {95 for( List<? extends Event<?>> sequence : sequences ) { 127 96 for( Event<?> event : sequence ) { 128 97 subSeq.add(event);
Note: See TracChangeset
for help on using the changeset viewer.