source: trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDgenerateRandomSequences.java @ 203

Last change on this file since 203 was 171, checked in by sherbold, 13 years ago
  • code documentation and formatting
  • Property svn:mime-type set to text/plain
File size: 2.8 KB
Line 
1package de.ugoe.cs.eventbench.commands;
2
3import java.security.InvalidParameterException;
4import java.util.HashSet;
5import java.util.List;
6import java.util.Set;
7
8import de.ugoe.cs.eventbench.data.GlobalDataContainer;
9import de.ugoe.cs.eventbench.data.Event;
10import de.ugoe.cs.eventbench.models.IStochasticProcess;
11import de.ugoe.cs.util.console.Command;
12import de.ugoe.cs.util.console.Console;
13
14/**
15 * <p>Command to generate random sessions.</p>
16 * @author Steffen Herbold
17 * @version 1.0
18 */
19public class CMDgenerateRandomSequences implements Command {
20
21        /* (non-Javadoc)
22         * @see de.ugoe.cs.util.console.Command#run(java.util.List)
23         */
24        @Override
25        public void run(List<Object> parameters) {
26                String modelname;
27                String sequencesName;
28                int numSessions;
29                long maxIter;
30                int minLength = 0;
31                int maxLength = Integer.MAX_VALUE;
32                try {
33                        modelname = (String) parameters.get(0);
34                        sequencesName = (String) parameters.get(1);
35                        numSessions = Integer.parseInt((String) parameters.get(2));
36                        maxIter = numSessions*10;
37                        if( parameters.size()>=4 ) {
38                                maxIter = Long.parseLong((String) parameters.get(3));
39                        }
40                        if( parameters.size()>=5 ) {
41                                minLength = Integer.parseInt((String) parameters.get(4));
42                        }
43                        if( parameters.size()>=6 ) {
44                                maxLength = Integer.parseInt((String) parameters.get(5));
45                        }
46                }
47                catch (Exception e) {
48                        throw new InvalidParameterException();
49                }
50               
51                IStochasticProcess model = null;
52                Object dataObject = GlobalDataContainer.getInstance().getData(modelname);
53                if( dataObject==null ) {
54                        Console.println("Model " + modelname + " not found in storage.");
55                }
56                else if( !(dataObject instanceof IStochasticProcess) ) {
57                        Console.println("Object " + modelname + " not of type MarkovModel!");
58                } else {
59                        model = (IStochasticProcess) dataObject;
60                        Set<List<? extends Event<?>>> sequences = new HashSet<List<? extends Event<?>>>(numSessions);
61                        long numIterations = 0;
62                        while( sequences.size()<numSessions && numIterations<maxIter ) {
63                                List<? extends Event<?>> generatedSequence = model.randomSequence();
64                                if( generatedSequence.size()>=minLength && generatedSequence.size()<=maxLength ) {
65                                        sequences.add(generatedSequence);
66                                }
67                                numIterations++;
68                        }
69                        if( sequences.size() < numSessions ) {
70                                Console.println("Only " + sequences.size() + " unique sessions generated after " + maxIter + " iterations");
71                        }
72                        if( GlobalDataContainer.getInstance().addData(sequencesName, sequences) ) {
73                                Console.traceln("Old data \"" + sequencesName + "\" overwritten");
74                        }
75                }
76        }
77
78        /* (non-Javadoc)
79         * @see de.ugoe.cs.util.console.Command#help()
80         */
81        @Override
82        public void help() {
83                Console.println("Usage: generateRandomSequenecs <modelName> <sequencesName> <numSessions> {<maxIter> <minLength> <maxLength>}");
84        }
85
86}
Note: See TracBrowser for help on using the repository browser.