Beispiel #1
0
  public void setSolutions(Solution[] solutions) {
    // apply +2, filter DNF
    long[] times =
        SolutionUtils.realTimes(
            solutions,
            true,
            this.configurationManager.getConfiguration("TIMER-PRECISION").equals("CENTISECONDS"));

    // define interval size
    if (times.length == 0) {
      this.intervalStart = 17000;
      this.intervalEnd = 23000;
    } else {
      // mean
      long mean = 0;
      for (int i = 0; i < times.length; i++) {
        mean += times[i];
      }
      mean /= times.length;

      // standard deviation
      long variance = 0;
      for (int i = 0; i < times.length; i++) {
        variance += Math.pow(times[i] - mean, 2d);
      }
      variance /= times.length;

      long stddev = (long) Math.sqrt(variance);

      this.intervalStart = mean - 3 * Math.max(50, stddev);
      this.intervalEnd = mean + 3 * Math.max(50, stddev);
    }

    // calculate histogram
    for (int i = 0; i < this.bins.length; i++) {
      this.bins[i] = 0;
    }

    for (int i = 0; i < times.length; i++) {
      if (times[i] >= this.intervalStart && times[i] < this.intervalEnd) {
        int bin =
            (int)
                (this.bins.length
                    * (times[i] - this.intervalStart)
                    / (this.intervalEnd - this.intervalStart));
        this.bins[bin]++;
      }
    }

    // repaint
    repaint();
  }