Package statechum

Examples of statechum.ProgressIndicator


        return name.startsWith("N_");
      }
    });
    Arrays.sort(files);
    int threads[]=new int[]{1,8};
    ProgressIndicator progress = new ProgressIndicator("e:", files.length*threads.length);
   
    for(int fileNum = 0;fileNum < files.length;++fileNum)
    {
      File
      fileA=files[fileNum],
      fileB=files[(fileNum+1)%files.length];
      boolean fallback = detectFallbackToInitialPair(fileA, null, fileB, null);
      Assert.assertFalse(fallback);// our test files are very small hence must fit in memory

      for(int threadNo:threads)
      {
        for(double ratio:new double[]{0.6,0.9})
          for(int pairs:new int[]{0,40})
            result.add(new Object[]{new Integer(threadNo), new Integer(pairs),ratio,fileA,fileB});

        // -1. should be floating-point number otherwise it is turned into Integer and our parametersToString fails to match the resulting list of values.
        result.add(new Object[]{new Integer(threadNo), new Integer(0),-1.,fileA,fileB});
       
        progress.next();
      }
    }
    return result;
  }
View Full Code Here


        return name.startsWith("N_");
      }
    });
    Arrays.sort(files);
    int threads[] = new int[]{1,8};
    ProgressIndicator progress = new ProgressIndicator("eT:", files.length*threads.length);

    for(int fileNum = 0;fileNum < files.length;++fileNum)
    {
      File
      fileA=files[fileNum],
      fileB=files[(fileNum+1)%files.length];
      boolean fallback = TestGD_ExistingGraphs.detectFallbackToInitialPair(fileA, null, fileB, null);
      Assert.assertFalse(fallback);// our test files are very small hence must fit in memory

      for(int threadNo:threads)
      {
        for(double ratio:new double[]{0.3,0.9})
          for(int pairs:new int[]{0})
            result.add(new Object[]{new Integer(threadNo), new Integer(pairs),ratio,fileA,fileB});

        // -1. should be floating-point number otherwise it is turned into Integer and our parametersToString fails to match the resulting list of values.
        result.add(new Object[]{new Integer(threadNo), new Integer(0),-1.,fileA,fileB});
        progress.next();
      }
    }
    return result;
  }
View Full Code Here

    {
      runners[i]=new ErlangRunner();processNames[i]=""+currentNumber++;runners[i].startErlang(processNames[i], 0);
    }
    Random rnd = new Random(0);
    final int testNumber = 1000;
    ProgressIndicator progress = new ProgressIndicator("Random erlang tests", testNumber);
    for(int cnt=0;cnt < testNumber;++cnt)
    {
      int runnerNumber = rnd.nextInt(runners.length);
      ErlangRunner r = runners[runnerNumber];
      if (rnd.nextInt(100) > 1)
      {
        int numA = rnd.nextInt(10000)-5000, numB=rnd.nextInt(10000)-5000;
        OtpErlangTuple response = (OtpErlangTuple)r.call(new OtpErlangObject[]{new OtpErlangAtom("echo"),
            new OtpErlangList(new OtpErlangObject[]{ new OtpErlangAtom(dataHead), new OtpErlangInt(numA), new OtpErlangInt(numB),new OtpErlangAtom(dataC)})},
            0);

        Assert.assertEquals(dataHead,((OtpErlangAtom)response.elementAt(0)).atomValue());
        Assert.assertEquals(processNames[runnerNumber],((OtpErlangAtom)response.elementAt(1)).atomValue());
        OtpErlangObject [] list = ((OtpErlangList)response.elementAt(2)).elements();
        Assert.assertEquals(3, list.length);
        Assert.assertEquals(numA,((OtpErlangLong)list[0]).intValue());
        Assert.assertEquals(numB,((OtpErlangLong)list[1]).intValue());
        Assert.assertEquals(dataC,((OtpErlangAtom)list[2]).atomValue());
      }
      else
      {
        r.killErlang();processNames[runnerNumber]=""+currentNumber++;runners[runnerNumber].startErlang(processNames[runnerNumber], 0);
      }
      progress.next();
    }
    for(int i=0;i<runners.length;++i) runners[i].killErlang();
    Assert.assertTrue(currentNumber > runners.length+10);
  }
View Full Code Here

      
       DrawGraphs gr = new DrawGraphs();
    final RBoxPlot<Integer>
        uas_S=new RBoxPlot<Integer>("Time","BCR",new File("time_S_"+name+"_bcr.pdf"));
    Set<Integer> allFrames = collectionOfTraces.get(UAVAllSeeds).tracesForUAVandFrame.get(UAVAllSeeds).keySet();
    ProgressIndicator progress = new ProgressIndicator("UAS", allFrames.size());
   
    Random rnd = new Random(0);
    final int []SelectionChoices=new int [10];
   
    SelectionChoices[0]=pairchoiceORIG;
    for(int i=1;i<SelectionChoices.length;++i)
    {
      SelectionChoices[i]=rnd.nextInt();assert SelectionChoices[i] != pairchoiceMIN && SelectionChoices[i] != pairchoiceMAX && SelectionChoices[i] != pairchoiceORIG;
    }
   
      for(final Integer frame:allFrames)
      {
        List<LearnerGraph> graphs = new LinkedList<LearnerGraph>();
        for(int choice:SelectionChoices)
         {
          RPNIBlueFringe learner = new RPNIBlueFringe(learnerConfig,choice);
            final LearnerGraph actualAutomaton = learner.learn(collectionOfTraces.get(UAVAllSeeds).tracesForUAVandFrame.get(UAVAllSeeds).get(frame),true);
            long tmFinished = new Date().getTime();
            System.out.println("Learning complete, "+((tmFinished-tmStarted)/1000)+" sec");tmStarted = tmFinished;
            ConfusionMatrix matrix = DiffExperiments.classify(wMethod, graphReference, actualAutomaton);
            System.out.println("BCR for frame : "+frame+" = "+matrix.BCR()+", precision: "+matrix.getPrecision()+", recall: "+matrix.getRecall()+", specificity: "+matrix.getSpecificity()+", matrix: "+matrix+", log of choices: "+learner.logOfChoiceNumber);
            //Visualiser.updateFrame(actualAutomaton, graphReference);
            /*
            boolean foundSame = false;
            for(LearnerGraph g:graphs)
              if (WMethod.checkM(g, actualAutomaton) != null)
              {
                foundSame = true;break;
              }
            if (!foundSame) */graphs.add(actualAutomaton);
           
        GD<CmpVertex,CmpVertex,LearnerGraphCachedData,LearnerGraphCachedData> gd = new GD<CmpVertex,CmpVertex,LearnerGraphCachedData,LearnerGraphCachedData>();
        ChangesCounter<CmpVertex,CmpVertex,LearnerGraphCachedData,LearnerGraphCachedData> counter = new ChangesCounter<CmpVertex,CmpVertex,LearnerGraphCachedData,LearnerGraphCachedData>(graphReference, actualAutomaton, null);
        gd.computeGD(graphReference, actualAutomaton, ExperimentRunner.getCpuNumber(),counter,learnerConfig);
       
        int referenceEdges = graphReference.pathroutines.countEdges(), actualEdges = actualAutomaton.pathroutines.countEdges();
        System.out.println(counter.getRemoved()+","+counter.getAdded()+", difference is "+(((double)referenceEdges-counter.getRemoved())/referenceEdges+((double)actualEdges-counter.getAdded())/actualEdges)/2);
       
        uas_S.add(frame,matrix.BCR());
        //uas_S.drawInteractive(gr);
       }
       
        int count=0;
        for(LearnerGraph g:graphs)
          g.storage.writeGraphML("resources/"+name+"_"+frame+"_"+(count++)+".xml");
        System.out.println("=== "+graphs.size()+" ===");
        progress.next();
      }
      uas_S.drawPdf(gr);
    DrawGraphs.end();// the process will not terminate without it because R has its own internal thread
  }
View Full Code Here

    Set<Integer> allFrames = collectionOfTraces.get(UAVAllSeeds).tracesForUAVandFrame.get(UAVAllSeeds).keySet();

    /** The runner of computational threads. */
    int threadNumber = ExperimentRunner.getCpuNumber();
    ExecutorService executorService = Executors.newFixedThreadPool(threadNumber);
    ProgressIndicator progress = null;
    if (threadNumber <= 1)
      progress = new ProgressIndicator("UAS", allFrames.size());
   
    try
    {
      List<Future<?>> outcomes = new LinkedList<Future<?>>();
      for(final Integer frame:allFrames)
      {
        {// For all frames and all seeds
          Runnable interactiveRunner = new Runnable() {
 
            @Override
            public void run() {
              for(int choice:SelectionChoices)
              {
                ConfusionMatrix matrix = DiffExperiments.classify(wMethod, graphReference,
                    new RPNIBlueFringe(learnerConfig,choice).learn(collectionOfTraces.get(UAVAllSeeds).tracesForUAVandFrame.get(UAVAllSeeds).get(frame),true));
                uas_outcome.add(new Pair<Integer,String>(frame,"S"),matrix.BCR());
                uas_S.add(frame,matrix.BCR());
              }
            }
           
          };
          if (threadNumber > 1) outcomes.add(executorService.submit(interactiveRunner));else interactiveRunner.run();
        }
       
        for(final String seed:collectionOfTraces.keySet())
          if (!seed.equals(UAVAllSeeds))
          {// Just for all frames of the a single seed
            Runnable interactiveRunner = new Runnable() {

              @Override
              public void run() {
                TracesForSeed tracesForThisSeed = collectionOfTraces.get(seed);
               
                for(int choice:SelectionChoices)
                {
                  ConfusionMatrix matrix = DiffExperiments.classify(wMethod, graphReference,
                      new RPNIBlueFringe(learnerConfig,choice).learn(tracesForThisSeed.tracesForUAVandFrame.get(UAVAll).get(frame),true));
                  uas_outcome.add(new Pair<Integer,String>(frame,"A"),matrix.BCR());
                  uas_A.add(frame,matrix.BCR());
                }
              }
             
            };
            if (threadNumber > 1) outcomes.add(executorService.submit(interactiveRunner));else interactiveRunner.run();
          }
        for(final String UAV:collectionOfTraces.get(UAVAllSeeds).tracesForUAVandFrame.keySet())
          if (!UAV.equals(UAVAllSeeds) && !UAV.equals(UAVAll))
            for(final String seed:collectionOfTraces.keySet())
              if (!seed.equals(UAVAllSeeds))
              {
                Runnable interactiveRunner = new Runnable() {

                  @Override
                  public void run() {
                    for(int choice:SelectionChoices)
                    {
                      ConfusionMatrix matrix = DiffExperiments.classify(wMethod, graphReference,
                          new RPNIBlueFringe(learnerConfig,choice).learn(collectionOfTraces.get(seed).tracesForUAVandFrame.get(UAV).get(frame),true));
                      uas_outcome.add(new Pair<Integer,String>(frame,"U"),matrix.BCR());
                      uas_U.add(frame,matrix.BCR());
                    }
                  }
                 
                };
                if (threadNumber > 1) outcomes.add(executorService.submit(interactiveRunner));else interactiveRunner.run();
              }
       
        if (threadNumber <= 1)
        {/*
          uas_outcome.drawInteractive(gr);
          uas_A.drawInteractive(gr);
          uas_S.drawInteractive(gr);
          uas_U.drawInteractive(gr);
          */
          progress.next();
        }
      }
     
      for(int i=0;i<5;++i)
      {
        final int arg=i;
        Runnable interactiveRunner = new Runnable() {

          @Override
          public void run() {
            for(int choice:SelectionChoices)
            {
              Configuration tmpConf = learnerConfig.copy();tmpConf.setGeneralisationThreshold(arg);
              ConfusionMatrix matrix = DiffExperiments.classify(wMethod, graphReference,new RPNIBlueFringe(tmpConf,choice).learn(collectionOfTraces.get(UAVAllSeeds).tracesForUAVandFrame.get(UAVAllSeeds).get(maxFrameNumber),false));
              uas_threshold.add(arg, matrix.BCR());
            }
          }
         
        };
        if (threadNumber > 1)
          outcomes.add(executorService.submit(interactiveRunner));
        else
        {
          interactiveRunner.run();
          //uas_threshold.drawInteractive(gr);
        }
      }

      if (threadNumber > 1)
      {
        progress = new ProgressIndicator("running concurrent experiment",outcomes.size());
        for(Future<?> task:outcomes) { task.get();progress.next(); }// wait for termination of all tasks
      }
    }
    catch(Exception ex)
    {
      Helper.throwUnchecked("failed to run experiment", ex);
View Full Code Here

    {
      runners[i]=new ErlangRunner();processNames[i]=""+currentNumber++;runners[i].startErlang(processNames[i], 0);
    }
    Random rnd = new Random(0);
    final int testNumber = 1000;
    ProgressIndicator progress = new ProgressIndicator("Random erlang tests", testNumber);
    for(int cnt=0;cnt < testNumber;++cnt)
    {
      int runnerNumber = rnd.nextInt(runners.length);
      ErlangRunner r = runners[runnerNumber];
      if (rnd.nextInt(100) > 1)
      {
        int numA = rnd.nextInt(10000)-5000, numB=rnd.nextInt(10000)-5000;
        OtpErlangTuple response = (OtpErlangTuple)r.call(new OtpErlangObject[]{new OtpErlangAtom("echo"),
            new OtpErlangList(new OtpErlangObject[]{ new OtpErlangAtom(dataHead), new OtpErlangInt(numA), new OtpErlangInt(numB),new OtpErlangAtom(dataC)})},
            0);

        Assert.assertEquals(dataHead,((OtpErlangAtom)response.elementAt(0)).atomValue());
        Assert.assertEquals(processNames[runnerNumber],((OtpErlangAtom)response.elementAt(1)).atomValue());
        OtpErlangObject [] list = ((OtpErlangList)response.elementAt(2)).elements();
        Assert.assertEquals(3, list.length);
        Assert.assertEquals(numA,((OtpErlangLong)list[0]).intValue());
        Assert.assertEquals(numB,((OtpErlangLong)list[1]).intValue());
        Assert.assertEquals(dataC,((OtpErlangAtom)list[2]).atomValue());
      }
      else
      {
        r.killErlang();processNames[runnerNumber]=""+currentNumber++;runners[runnerNumber].startErlang(processNames[runnerNumber], 0);
      }
      progress.next();
    }
    for(int i=0;i<runners.length;++i) runners[i].killErlang();
    Assert.assertTrue(currentNumber > runners.length+10);
  }
View Full Code Here

      {
        return name.startsWith("N_");
    }});
    Arrays.sort(files);
    int threads[]=new int[]{8};
    ProgressIndicator progress = new ProgressIndicator("eNDT:", (files.length+1)*threads.length);

    // N_1320.xml+N_502.xml v.s. N_2070.xml+N_2232.xml takes a long while.
    addFilesToCollection(new File(testFilePath+"N_1320.xml"),new File(testFilePath+"N_502.xml"),
        new File(testFilePath+"N_2070.xml"),new File(testFilePath+"N_2232.xml"),result,threads,progress);
    for(int fileNum = 0;fileNum < files.length;++fileNum)
View Full Code Here

      {
        return name.startsWith("N_");
    }});
    Arrays.sort(files);
    int threads[]=new int[]{1,8};
    ProgressIndicator progress = new ProgressIndicator("eND:", (files.length+1)*threads.length);

    // N_1320.xml+N_502.xml v.s. N_2070.xml+N_2232.xml takes a long while.
    addFilesToCollection(new File(testFilePath+"N_1320.xml"),new File(testFilePath+"N_502.xml"),
        new File(testFilePath+"N_2070.xml"),new File(testFilePath+"N_2232.xml"),result,threads,progress);
    for(int fileNum = 0;fileNum < files.length;++fileNum)
View Full Code Here

                  learnerRunner.setTraceLengthMultiplier(traceLengthMultiplierMax);learnerRunner.setChunkLen(chunkSize);
                  learnerRunner.setSelectionID(branch+"_states"+states+"_sample"+sample);
                  runner.submit(learnerRunner);
                  ++numberOfTasks;
                }
              ProgressIndicator progress = new ProgressIndicator(new Date()+" evaluating "+numberOfTasks+" tasks for learning whole graphs", numberOfTasks);
              for(int count=0;count < numberOfTasks;++count)
              {
                ThreadResult result = runner.take().get();// this will throw an exception if any of the tasks failed.
                for(SampleData sample:result.samples)
                  gr_StructuralDiff.add(sample.referenceLearner.differenceStructural.getValue(),sample.actualLearner.differenceStructural.getValue());
             
                for(SampleData sample:result.samples)
                {
                  gr_BCR.add(sample.referenceLearner.differenceBCR.getValue(),sample.actualLearner.differenceBCR.getValue());
                  gr_BCR_singletons.add((double)sample.fractionOfStatesIdentifiedBySingletons,sample.actualLearner.differenceBCR.getValue());
                  gr_BCR_states.add((double)sample.stateNumber,sample.actualLearner.differenceBCR.getValue());
                  if (sample.referenceLearner.differenceBCR.getValue() > 0)
                  gr_ImprovementPerState.add((double)sample.stateNumber,sample.actualLearner.differenceBCR.getValue()/sample.referenceLearner.differenceBCR.getValue());
                }
                progress.next();
              }
              gr_StructuralDiff.drawInteractive(gr);gr_BCR.drawInteractive(gr);gr_BCR_singletons.drawInteractive(gr);gr_BCR_states.drawInteractive(gr);gr_ImprovementPerState.drawInteractive(gr);
            }
            catch(Exception ex)
            {
              IllegalArgumentException e = new IllegalArgumentException("failed to compute, the problem is: "+ex);e.initCause(ex);
              if (executorService != null) { executorService.shutdownNow();executorService = null; }
              throw e;
            }
      }
      if (gr_StructuralDiff != null) gr_StructuralDiff.drawPdf(gr);
      if (gr_BCR != null) gr_BCR.drawPdf(gr);
      if (gr_BCR_singletons != null) gr_BCR_singletons.drawPdf(gr);
      if (gr_BCR_states != null) gr_BCR_states.drawPdf(gr);
      if (gr_ImprovementPerState != null) gr_ImprovementPerState.drawPdf(gr);

    final RBoxPlot<String> gr_BCRImprovementForDifferentAlphabetSize = new RBoxPlot<String>("alphabet multiplier","improvement, BCR",new File(branch+"BCR_vs_alphabet.pdf"));
    final RBoxPlot<String> gr_BCRForDifferentAlphabetSize = new RBoxPlot<String>("alphabet multiplier","BCR",new File(branch+"BCR_absolute_vs_alphabet.pdf"));
    final RBoxPlot<String> gr_StructuralImprovementForDifferentAlphabetSize = new RBoxPlot<String>("alphabet multiplier","improvement, structural",new File(branch+"structural_vs_alphabet.pdf"));
    final RBoxPlot<String> gr_StructuralForDifferentAlphabetSize = new RBoxPlot<String>("alphabet multiplier","structural",new File(branch+"structural_absolute_vs_alphabet.pdf"));
    final RBoxPlot<String> gr_MarkovAccuracyForDifferentAlphabetSize = new RBoxPlot<String>("alphabet multiplier","Markov accuracy",new File(branch+"markov_accuracy_vs_alphabet.pdf"));

    // Same experiment but with different alphabet size
    for(final boolean onlyPositives:new boolean[]{true})
      for(final double alphabetMultiplier:new double[]{alphabetMultiplierMax/16,alphabetMultiplierMax/8,alphabetMultiplierMax/4,alphabetMultiplierMax/2,alphabetMultiplierMax,alphabetMultiplierMax*2,alphabetMultiplierMax*4})
      {
        String selection;
          selection = branch+";EVALUATION;"+
              ";onlyPositives="+onlyPositives+";";

        final int totalTaskNumber = traceQuantity;
        try
        {
          int numberOfTasks = 0;
          for(int states=minStateNumber;states < minStateNumber+rangeOfStateNumbers;states+=stateNumberIncrement)
            for(int sample=0;sample<samplesPerFSM;++sample)
            {
              LearnerRunner learnerRunner = new LearnerRunner(states,sample,totalTaskNumber+numberOfTasks,traceQuantity, config, converter);
              learnerRunner.setOnlyUsePositives(onlyPositives);
              learnerRunner.setTracesAlphabetMultiplier(alphabetMultiplierMax);
              learnerRunner.setAlphabetMultiplier(alphabetMultiplier);
              learnerRunner.setTraceLengthMultiplier(traceLengthMultiplierMax);learnerRunner.setChunkLen(chunkSize);
              learnerRunner.setSelectionID(selection+"_states"+states+"_sample"+sample);
              runner.submit(learnerRunner);
              ++numberOfTasks;
            }
          ProgressIndicator progress = new ProgressIndicator(new Date()+" evaluating "+numberOfTasks+" tasks for "+selection+" alphabet multiplier: "+alphabetMultiplier, numberOfTasks);
          for(int count=0;count < numberOfTasks;++count)
          {
            ThreadResult result = runner.take().get();// this will throw an exception if any of the tasks failed.

            for(SampleData sample:result.samples)
            {
              if (sample.referenceLearner.differenceBCR.getValue() > 0)
              {
                gr_BCRImprovementForDifferentAlphabetSize.add(String.format("%.2f",alphabetMultiplier),sample.actualLearner.differenceBCR.getValue()/sample.referenceLearner.differenceBCR.getValue());
                gr_BCRForDifferentAlphabetSize.add(String.format("%.2f",alphabetMultiplier),sample.actualLearner.differenceBCR.getValue());
              }
              if (sample.referenceLearner.differenceStructural.getValue() > 0)
              {
                gr_StructuralImprovementForDifferentAlphabetSize.add(String.format("%.2f",alphabetMultiplier),sample.actualLearner.differenceStructural.getValue()/sample.referenceLearner.differenceStructural.getValue());
                gr_StructuralForDifferentAlphabetSize.add(String.format("%.2f",alphabetMultiplier),sample.actualLearner.differenceStructural.getValue());
              }
              gr_MarkovAccuracyForDifferentAlphabetSize.add(String.format("%.2f,P",alphabetMultiplier),(double)sample.markovPrecision,"green");
              gr_MarkovAccuracyForDifferentAlphabetSize.add(String.format("%.2f,R",alphabetMultiplier),(double)sample.markovRecall,"blue");
            }
            progress.next();
          }
          gr_BCRImprovementForDifferentAlphabetSize.drawInteractive(gr);gr_BCRForDifferentAlphabetSize.drawInteractive(gr);gr_MarkovAccuracyForDifferentAlphabetSize.drawInteractive(gr);
          gr_StructuralImprovementForDifferentAlphabetSize.drawInteractive(gr);gr_StructuralForDifferentAlphabetSize.drawInteractive(gr);
        }
        catch(Exception ex)
        {
          IllegalArgumentException e = new IllegalArgumentException("failed to compute, the problem is: "+ex);e.initCause(ex);
          if (executorService != null) { executorService.shutdownNow();executorService = null; }
          throw e;
        }
      }
      if (gr_BCRImprovementForDifferentAlphabetSize != null) gr_BCRImprovementForDifferentAlphabetSize.drawPdf(gr);
      if (gr_StructuralImprovementForDifferentAlphabetSize != null) gr_StructuralImprovementForDifferentAlphabetSize.drawPdf(gr);
      if (gr_BCRForDifferentAlphabetSize != null) gr_BCRForDifferentAlphabetSize.drawPdf(gr);
      if (gr_StructuralForDifferentAlphabetSize != null) gr_StructuralForDifferentAlphabetSize.drawPdf(gr);
      if (gr_MarkovAccuracyForDifferentAlphabetSize != null) gr_MarkovAccuracyForDifferentAlphabetSize.drawPdf(gr);

      // Same experiment but with different number of sequences.
      final RBoxPlot<Integer> gr_BCRImprovementForDifferentNrOfTraces = new RBoxPlot<Integer>("nr of traces","improvement, BCR",new File(branch+"BCR_vs_tracenumber.pdf"));
      final RBoxPlot<Integer> gr_BCRForDifferentNrOfTraces = new RBoxPlot<Integer>("nr of traces","BCR",new File(branch+"BCR_absolute_vs_tracenumber.pdf"));
      final RBoxPlot<Integer> gr_StructuralImprovementForDifferentNrOfTraces = new RBoxPlot<Integer>("nr of traces","improvement, structural",new File(branch+"structural_vs_tracenumber.pdf"));
      final RBoxPlot<Integer> gr_StructuralForDifferentNrOfTraces = new RBoxPlot<Integer>("nr of traces","structural",new File(branch+"structural_absolute_vs_tracenumber.pdf"));
      for(final boolean onlyPositives:new boolean[]{true})
        for(final double alphabetMultiplier:new double[]{alphabetMultiplierMax})
          for(int traceNum=2;traceNum<traceQuantity*3;traceNum+=2)
          {
            String selection;
              selection = branch+";EVALUATION;"+
                  ";onlyPositives="+onlyPositives+";";

            final int totalTaskNumber = traceNum;
            try
            {
              int numberOfTasks = 0;
              for(int states=minStateNumber;states < minStateNumber+rangeOfStateNumbers;states+=stateNumberIncrement)
                for(int sample=0;sample<samplesPerFSM;++sample)
                {
                  LearnerRunner learnerRunner = new LearnerRunner(states,sample,totalTaskNumber+numberOfTasks,traceNum, config, converter);
                  learnerRunner.setOnlyUsePositives(onlyPositives);
                  learnerRunner.setAlphabetMultiplier(alphabetMultiplier);
                  learnerRunner.setTraceLengthMultiplier(traceLengthMultiplierMax);learnerRunner.setChunkLen(chunkSize);
                  learnerRunner.setSelectionID(selection+"_states"+states+"_sample"+sample);
                  runner.submit(learnerRunner);
                  ++numberOfTasks;
                }
              ProgressIndicator progress = new ProgressIndicator(new Date()+" evaluating "+numberOfTasks+" tasks for "+selection+" trace num: "+traceNum, numberOfTasks);
              for(int count=0;count < numberOfTasks;++count)
              {
                ThreadResult result = runner.take().get();// this will throw an exception if any of the tasks failed.
               
                for(SampleData sample:result.samples)
                {
                  if (sample.referenceLearner.differenceBCR.getValue() > 0)
                  {
                    // we'll generate both positives and negatives; in the considered experiments, only positives are used hence half the number of sequences are actually being learnt from.
                    gr_BCRImprovementForDifferentNrOfTraces.add(traceNum/2,sample.actualLearner.differenceBCR.getValue()/sample.referenceLearner.differenceBCR.getValue());
                    gr_BCRForDifferentNrOfTraces.add(traceNum/2,sample.actualLearner.differenceBCR.getValue());
                  }
                  if (sample.referenceLearner.differenceStructural.getValue() > 0)
                  {
                    gr_StructuralImprovementForDifferentNrOfTraces.add(traceNum/2,sample.actualLearner.differenceStructural.getValue()/sample.referenceLearner.differenceStructural.getValue());
                    gr_StructuralForDifferentNrOfTraces.add(traceNum/2,sample.actualLearner.differenceStructural.getValue());
                  }
                }
                progress.next();
              }
              gr_BCRForDifferentNrOfTraces.drawInteractive(gr);gr_StructuralForDifferentNrOfTraces.drawInteractive(gr);
            }
            catch(Exception ex)
            {
              IllegalArgumentException e = new IllegalArgumentException("failed to compute, the problem is: "+ex);e.initCause(ex);
              if (executorService != null) { executorService.shutdownNow();executorService = null; }
              throw e;
            }
          }
      if (gr_BCRImprovementForDifferentNrOfTraces != null) gr_BCRImprovementForDifferentNrOfTraces.drawPdf(gr);
      if (gr_BCRForDifferentNrOfTraces != null) gr_BCRForDifferentNrOfTraces.drawPdf(gr);
      if (gr_StructuralImprovementForDifferentNrOfTraces != null) gr_StructuralImprovementForDifferentNrOfTraces.drawPdf(gr);
      if (gr_StructuralForDifferentNrOfTraces != null) gr_StructuralForDifferentNrOfTraces.drawPdf(gr);

      // Same experiment but with different number of sequences, both positive and negative.
      final RBoxPlot<Integer> gr_BCRImprovementForDifferentNrOfTracesPosNeg = new RBoxPlot<Integer>("nr of traces","improvement, BCR",new File(branch+"BCR_vs_tracenumber_posneg.pdf"));
      final RBoxPlot<Integer> gr_BCRForDifferentNrOfTracesPosNeg = new RBoxPlot<Integer>("nr of traces","BCR",new File(branch+"BCR_absolute_vs_tracenumber_posneg.pdf"));
      final RBoxPlot<Integer> gr_StructuralImprovementForDifferentNrOfTracesPosNeg = new RBoxPlot<Integer>("nr of traces","improvement, structural",new File(branch+"structural_vs_tracenumber_posneg.pdf"));
      final RBoxPlot<Integer> gr_StructuralForDifferentNrOfTracesPosNeg = new RBoxPlot<Integer>("nr of traces","structural",new File(branch+"structural_absolute_vs_tracenumber_posneg.pdf"));
      for(final boolean onlyPositives:new boolean[]{false})
        for(final double alphabetMultiplier:new double[]{alphabetMultiplierMax})
          for(int traceNum=2;traceNum<traceQuantity*3;traceNum+=2)
          {
            String selection;
            selection = branch+";EVALUATION;"+
                ";onlyPositives="+onlyPositives+";";

            final int totalTaskNumber = traceNum;
            try
            {
              int numberOfTasks = 0;
              for(int states=minStateNumber;states < minStateNumber+rangeOfStateNumbers;states+=stateNumberIncrement)
                for(int sample=0;sample<samplesPerFSM;++sample)
                {
                  LearnerRunner learnerRunner = new LearnerRunner(states,sample,totalTaskNumber+numberOfTasks,traceNum, config, converter);
                  learnerRunner.setOnlyUsePositives(onlyPositives);
                  learnerRunner.setAlphabetMultiplier(alphabetMultiplier);
                  learnerRunner.setTraceLengthMultiplier(traceLengthMultiplierMax);learnerRunner.setChunkLen(chunkSize);
                  learnerRunner.setSelectionID(selection+"_states"+states+"_sample"+sample);
                  runner.submit(learnerRunner);
                  ++numberOfTasks;
                }
              ProgressIndicator progress = new ProgressIndicator(new Date()+" evaluating "+numberOfTasks+" tasks for "+selection+" trace num: "+traceNum, numberOfTasks);
              for(int count=0;count < numberOfTasks;++count)
              {
                ThreadResult result = runner.take().get();// this will throw an exception if any of the tasks failed.
               
                for(SampleData sample:result.samples)
                {
                  if (sample.referenceLearner.differenceBCR.getValue() > 0)
                  {
                    gr_BCRImprovementForDifferentNrOfTracesPosNeg.add(traceNum,sample.actualLearner.differenceBCR.getValue()/sample.referenceLearner.differenceBCR.getValue());
                    gr_BCRForDifferentNrOfTracesPosNeg.add(traceNum,sample.actualLearner.differenceBCR.getValue());
                  }
                  if (sample.referenceLearner.differenceStructural.getValue() > 0)
                  {
                    gr_StructuralImprovementForDifferentNrOfTracesPosNeg.add(traceNum,sample.actualLearner.differenceStructural.getValue()/sample.referenceLearner.differenceStructural.getValue());
                    gr_StructuralForDifferentNrOfTracesPosNeg.add(traceNum,sample.actualLearner.differenceStructural.getValue());
                  }
                }
                progress.next();
              }
              gr_BCRForDifferentNrOfTracesPosNeg.drawInteractive(gr);gr_StructuralForDifferentNrOfTracesPosNeg.drawInteractive(gr);
            }
            catch(Exception ex)
            {
              IllegalArgumentException e = new IllegalArgumentException("failed to compute, the problem is: "+ex);e.initCause(ex);
              if (executorService != null) { executorService.shutdownNow();executorService = null; }
              throw e;
            }
          }
    if (gr_BCRImprovementForDifferentNrOfTracesPosNeg != null) gr_BCRImprovementForDifferentNrOfTracesPosNeg.drawPdf(gr);
    if (gr_BCRForDifferentNrOfTracesPosNeg != null) gr_BCRForDifferentNrOfTracesPosNeg.drawPdf(gr);
    if (gr_StructuralImprovementForDifferentNrOfTracesPosNeg != null) gr_StructuralImprovementForDifferentNrOfTracesPosNeg.drawPdf(gr);
    if (gr_StructuralForDifferentNrOfTracesPosNeg != null) gr_StructuralForDifferentNrOfTracesPosNeg.drawPdf(gr);

    // Same experiment but with different trace length but the same number of sequences
    final RBoxPlot<Double> gr_BCRImprovementForDifferentLengthOfTraces = new RBoxPlot<Double>("trace length multiplier","improvement, BCR",new File(branch+"BCR_vs_tracelength.pdf"));
    final RBoxPlot<Double> gr_BCRForDifferentLengthOfTraces = new RBoxPlot<Double>("trace length multiplier","BCR",new File(branch+"BCR_absolute_vs_tracelength.pdf"));
    final RBoxPlot<Double> gr_StructuralImprovementForDifferentLengthOfTraces = new RBoxPlot<Double>("trace length multiplier","improvement, structural",new File(branch+"structural_vs_tracelength.pdf"));
    final RBoxPlot<Double> gr_StructuralForDifferentLengthOfTraces = new RBoxPlot<Double>("trace length multiplier","structural",new File(branch+"structural_absolute_vs_tracelength.pdf"));
    final RBoxPlot<Double> gr_TransitionCoverageForDifferentLengthOfTraces = new RBoxPlot<Double>("trace length multiplier","transition coverage",new File(branch+"transitionCoverage_vs_tracelength.pdf"));
    for(final boolean onlyPositives:new boolean[]{true})
      for(double traceMultiplier=0.125;traceMultiplier<10;traceMultiplier*=2.)
        {
          String selection;
            selection = branch+";EVALUATION;"+
                ";onlyPositives="+onlyPositives+";";

          final int totalTaskNumber = traceQuantity;
          try
          {
            int numberOfTasks = 0;
            for(int states=minStateNumber;states < minStateNumber+rangeOfStateNumbers;states+=stateNumberIncrement)
              for(int sample=0;sample<samplesPerFSM;++sample)
              {
                LearnerRunner learnerRunner = new LearnerRunner(states,sample,totalTaskNumber+numberOfTasks,traceQuantity, config, converter);
                learnerRunner.setAlphabetMultiplier(alphabetMultiplierMax);
                learnerRunner.setOnlyUsePositives(onlyPositives);
                learnerRunner.setTraceLengthMultiplier(traceMultiplier);learnerRunner.setChunkLen(chunkSize);
                learnerRunner.setSelectionID(selection+"_states"+states+"_sample"+sample);
                runner.submit(learnerRunner);
                ++numberOfTasks;
              }
            ProgressIndicator progress = new ProgressIndicator(new Date()+" evaluating "+numberOfTasks+" tasks for "+selection+" trace length multiplier "+traceMultiplier, numberOfTasks);
            for(int count=0;count < numberOfTasks;++count)
            {
              ThreadResult result = runner.take().get();// this will throw an exception if any of the tasks failed.
             
              for(SampleData sample:result.samples)
              {
                if (sample.referenceLearner.differenceBCR.getValue() > 0)
                {
                  gr_BCRImprovementForDifferentLengthOfTraces.add(traceMultiplier,sample.actualLearner.differenceBCR.getValue()/sample.referenceLearner.differenceBCR.getValue());
                  gr_BCRForDifferentLengthOfTraces.add(traceMultiplier,sample.actualLearner.differenceBCR.getValue());
                }
                if (sample.referenceLearner.differenceStructural.getValue() > 0)
                {
                  gr_StructuralImprovementForDifferentLengthOfTraces.add(traceMultiplier,sample.actualLearner.differenceStructural.getValue()/sample.referenceLearner.differenceStructural.getValue());
                  gr_StructuralForDifferentLengthOfTraces.add(traceMultiplier,sample.actualLearner.differenceStructural.getValue());
                }
                gr_TransitionCoverageForDifferentLengthOfTraces.add(traceMultiplier,(double)sample.transitionsSampled);
              }
              progress.next();
            }
           
            gr_BCRForDifferentLengthOfTraces.drawInteractive(gr);gr_StructuralForDifferentLengthOfTraces.drawInteractive(gr);gr_TransitionCoverageForDifferentLengthOfTraces.drawInteractive(gr);
          }
          catch(Exception ex)
          {
            IllegalArgumentException e = new IllegalArgumentException("failed to compute, the problem is: "+ex);e.initCause(ex);
            if (executorService != null) { executorService.shutdownNow();executorService = null; }
            throw e;
          }
        }
    if (gr_BCRImprovementForDifferentLengthOfTraces != null) gr_BCRImprovementForDifferentLengthOfTraces.drawPdf(gr);
    if (gr_BCRForDifferentLengthOfTraces != null) gr_BCRForDifferentLengthOfTraces.drawPdf(gr);
    if (gr_StructuralImprovementForDifferentLengthOfTraces != null) gr_StructuralImprovementForDifferentLengthOfTraces.drawPdf(gr);
    if (gr_StructuralForDifferentLengthOfTraces != null) gr_StructuralForDifferentLengthOfTraces.drawPdf(gr);
    if (gr_TransitionCoverageForDifferentLengthOfTraces != null) gr_TransitionCoverageForDifferentLengthOfTraces.drawPdf(gr);

    // Same experiment but with different prefix length but the same number of sequences and their length
    final RBoxPlot<Integer> gr_BCRImprovementForDifferentPrefixlen = new RBoxPlot<Integer>("length of prefix","improvement, BCR",new File(branch+"BCR_vs_prefixLength.pdf"));
    final RBoxPlot<Integer> gr_BCRForDifferentPrefixlen = new RBoxPlot<Integer>("length of prefix","BCR",new File(branch+"BCR_absolute_vs_prefixLength.pdf"));
    final RBoxPlot<Integer> gr_StructuralImprovementForDifferentPrefixlen = new RBoxPlot<Integer>("length of prefix","improvement, structural",new File(branch+"structural_vs_prefixLength.pdf"));
    final RBoxPlot<Integer> gr_StructuralForDifferentPrefixlen = new RBoxPlot<Integer>("length of prefix","structural",new File(branch+"structural_absolute_vs_prefixLength.pdf"));
    final RBoxPlot<String> gr_MarkovAccuracyForDifferentPrefixlen = new RBoxPlot<String>("length of prefix","Markov accuracy",new File(branch+"markov_accuracy_vs_prefixLength.pdf"));
    for(final boolean onlyPositives:new boolean[]{true})
      for(int prefixLength=1;prefixLength<6;++prefixLength)
        {
          String selection;
            selection = branch+";EVALUATION;"+
                ";onlyPositives="+onlyPositives+";";

            final int totalTaskNumber = traceQuantity;
            try
            {
              int numberOfTasks = 0;
              for(int states=minStateNumber;states < minStateNumber+rangeOfStateNumbers;states+=stateNumberIncrement)
                for(int sample=0;sample<samplesPerFSM;++sample)
                {
                  LearnerRunner learnerRunner = new LearnerRunner(states,sample,totalTaskNumber+numberOfTasks,traceQuantity, config, converter);
                  learnerRunner.setAlphabetMultiplier(alphabetMultiplierMax);
                  learnerRunner.setOnlyUsePositives(onlyPositives);
                  learnerRunner.setTraceLengthMultiplier(traceLengthMultiplierMax);learnerRunner.setChunkLen(prefixLength+1);
                  learnerRunner.setSelectionID(selection+"_states"+states+"_sample"+sample);
                  runner.submit(learnerRunner);
                  ++numberOfTasks;
                }
              ProgressIndicator progress = new ProgressIndicator(new Date()+" evaluating "+numberOfTasks+" tasks for "+selection+" using prefix length "+prefixLength, numberOfTasks);
              for(int count=0;count < numberOfTasks;++count)
              {
                ThreadResult result = runner.take().get();// this will throw an exception if any of the tasks failed.
               
                for(SampleData sample:result.samples)
                {
                  if (sample.referenceLearner.differenceBCR.getValue() > 0)
                  {
                    gr_BCRImprovementForDifferentPrefixlen.add(prefixLength,sample.actualLearner.differenceBCR.getValue()/sample.referenceLearner.differenceBCR.getValue());
                    gr_BCRForDifferentPrefixlen.add(prefixLength,sample.actualLearner.differenceBCR.getValue());
                  }
                  if (sample.referenceLearner.differenceStructural.getValue() > 0)
                  {
                    gr_StructuralImprovementForDifferentPrefixlen.add(prefixLength,sample.actualLearner.differenceStructural.getValue()/sample.referenceLearner.differenceStructural.getValue());
                    gr_StructuralForDifferentPrefixlen.add(prefixLength,sample.actualLearner.differenceStructural.getValue());
                  }
                  gr_MarkovAccuracyForDifferentPrefixlen.add(""+prefixLength+",P",(double)sample.markovPrecision,"green");
                  gr_MarkovAccuracyForDifferentPrefixlen.add(""+prefixLength+",R",(double)sample.markovRecall,"blue");
                }
                progress.next();
              }
              gr_BCRForDifferentPrefixlen.drawInteractive(gr);gr_StructuralForDifferentPrefixlen.drawInteractive(gr);gr_MarkovAccuracyForDifferentPrefixlen.drawInteractive(gr);
            }
            catch(Exception ex)
            {
View Full Code Here

         
        };
          outcomes.add(executorService.submit(interactiveRunner));
      }
*/
      ProgressIndicator progress = new ProgressIndicator("running concurrent experiment",outcomes.size());
      for(Future<?> task:outcomes) { task.get();progress.next(); }// wait for termination of all tasks
    }
    catch(Exception ex)
    {
      Helper.throwUnchecked("failed to run experiment", ex);
    }
View Full Code Here

TOP

Related Classes of statechum.ProgressIndicator

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.