示例#1
0
  /**
   * Check if a test is complete.
   *
   * @param number of test vectors.
   * @return true when testing is complete.
   */
  public boolean isTested(long numTestVectors) {

    long count = 0;
    MetricsPE mpe = null;
    for (ProcessingElement pe : metricsPE.getRemoteInstances().values()) {
      mpe = (MetricsPE) pe;
      count = mpe.getCount();
    }
    if (count < numTestVectors) {
      return false;
    } else {
      report = mpe.toString();
      return true;
    }
  }
示例#2
0
  @Override
  protected void init() {

    metricsPE = new MetricsPE(this);

    Stream<ResultEvent> resultStream =
        new Stream<ResultEvent>(this, "Result Stream", new ResultKeyFinder(), metricsPE);

    modelPE = new ModelPE(this, model, numVectors);

    assignmentStream =
        new Stream<ObsEvent>(this, "Assignment Stream", new ClassIDKeyFinder(), modelPE);

    MaximizerPE minimizerPE = new MaximizerPE(this, numClasses, assignmentStream);

    Stream<ObsEvent> distanceStream =
        new Stream<ObsEvent>(this, "Distance Stream", new ObsIndexKeyFinder(), minimizerPE);

    /*
     * There is a loop in this graph so we need to set the stream at the
     * end. Is there a cleaner way to do this?
     */
    modelPE.setStream(distanceStream, resultStream);
    // modelPE.setOutputIntervalInEvents(10); // output every 10 events
    metricsPE.setOutputInterval(outputInterval, timeUnit); // output every 5
    // seconds
    // obsStream = new Stream<ObsEvent>(this, "Observation Stream", new
    // ClassIDKeyFinder(), modelPE);
    obsStream = new Stream<ObsEvent>(this, "Observation Stream", modelPE);
  }