private void analyzeIntern(
      Set<Trajectory> trajectories, String purpose, TObjectDoubleHashMap<Trajectory> distancesMap) {
    TDoubleArrayList arrivals = new TDoubleArrayList(trajectories.size());
    TDoubleArrayList distances = new TDoubleArrayList(trajectories.size());

    for (Trajectory t : trajectories) {
      for (int i = 0; i < t.getElements().size(); i += 2) {
        if (purpose == null || ((Activity) t.getElements().get(i)).getType().equals(purpose)) {
          double start = t.getTransitions().get(i);
          arrivals.add(start);
          distances.add(distancesMap.get(t));
        }
      }
    }

    TDoubleDoubleHashMap map =
        Correlations.mean(arrivals.toNativeArray(), distances.toNativeArray(), 3600);
    //		Discretizer d = FixedSampleSizeDiscretizer.create(arrivals.toNativeArray(), 100, 100);
    //		TDoubleDoubleHashMap map = Correlations.mean(arrivals.toNativeArray(),
    // distances.toNativeArray(), d);
    try {
      if (purpose == null)
        StatsWriter.writeHistogram(
            map, "arr", "dist", String.format("%1$s/dist_arr.txt", getOutputDirectory()));
      else
        StatsWriter.writeHistogram(
            map,
            "arr",
            "dist",
            String.format("%1$s/dist_arr.%2$s.txt", getOutputDirectory(), purpose));
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
Beispiel #2
0
  @Override
  public double evaluate(Trajectory trajectory) {
    double score = 0;
    for (int i = 1; i < trajectory.getElements().size(); i += 2) {
      double t = trajectory.getTransitions().get(i + 1) - trajectory.getTransitions().get(i);
      score += beta * t;
    }

    if (isLogging) stats.addValue(score);

    return score;
  }
  @Override
  public void analyze(Set<Trajectory> trajectories, Map<String, DescriptiveStatistics> results) {
    TObjectDoubleHashMap<Trajectory> distances = tripDistanceMean.values(trajectories);

    Set<String> purposes = new HashSet<String>();
    for (Trajectory t : trajectories) {
      for (int i = 0; i < t.getElements().size(); i += 2) {
        purposes.add(((Activity) t.getElements().get(i)).getType());
      }
    }

    for (String purpose : purposes) {
      analyzeIntern(trajectories, purpose, distances);
    }
    analyzeIntern(trajectories, null, distances);
  }