Ignore:
Timestamp:
04/03/12 10:21:17 (13 years ago)
Author:
sherbold
Message:
  • fixed bug in command generateHybrid: sometimes sequences had the wrong length and did not end with the END symbol, even though a valid end was requested.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDgenerateHybrid.java

    r401 r408  
    111111                                        sequence = finishSequence(seqTmp, model, length + 2, 
    112112                                                        validEnd); 
     113                                        if( sequence!= null && sequence.size()!=length+2 ) { 
     114                                                sequence = null; 
     115                                        } 
    113116                                } else { 
    114117                                        sequence = finishSequence(seqTmp, model, length + 1, 
    115118                                                        validEnd); 
     119                                        if( sequence!= null && sequence.size()!=length+1 ) { 
     120                                                sequence = null; 
     121                                        } 
    116122                                } 
    117                                 sequences.add(sequence); 
     123                                if( sequence!=null ) { 
     124                                        sequences.add(sequence); 
     125                                } 
    118126                        } 
    119127                } 
     
    130138                boolean endFound = false; 
    131139                List<Event<?>> sequenceCopy = new LinkedList<Event<?>>(sequence); 
    132  
    133                 while (!endFound) { 
     140                final int maxIter = 30000; 
     141                int iter = 0; 
     142                while (!endFound && iter<maxIter) { 
     143                        iter++; 
    134144                        sequenceCopy = new LinkedList<Event<?>>(sequence); 
    135145                        while (!endFound && sequenceCopy.size() <= maxLength) { 
     
    139149                                        probSum += model.getProbability(sequenceCopy, symbol); 
    140150                                        if (probSum >= randVal) { 
    141                                                 if (!(Event.STARTEVENT.equals(symbol) || Event.ENDEVENT.equals(symbol))) { 
     151                                                if (!(Event.STARTEVENT.equals(symbol) || (!validEnd && Event.ENDEVENT.equals(symbol)))) { 
    142152                                                        // only add the symbol the sequence if it is not 
    143153                                                        // START 
     
    152162                        } 
    153163                } 
     164                if( iter==maxIter ) { 
     165                        return null; 
     166                } 
    154167                return sequenceCopy; 
    155168        } 
     
    162175        @Override 
    163176        public void help() { 
    164                 Console.println("Usage: generateFixedLengthSequences <modelname> <sequencesName> <lenght> <maxlengthAll> <numSequences> {<validEnd>}"); 
     177                Console.println("Usage: generateHybrid <modelname> <sequencesName> <lenght> <maxlengthAll> <numSequences> {<validEnd>}"); 
    165178        } 
    166179 
Note: See TracChangeset for help on using the changeset viewer.