package edu.usc.enl.dynamicmeasurement.metric.flowdistribution; import java.util.Map; /** * Created with IntelliJ IDEA. * User: masoud * Date: 5/12/2014 * Time: 10:10 PM */ public class WMRD extends DistributionMetric { @Override public Double compute(Map<Integer, Integer> real, Map<Integer, Integer> reported, int step, String folder) { double nominator = 0; double denominator = 0; for (Map.Entry<Integer, Integer> realEntry : real.entrySet()) { Integer reportedFreq = reported.get(realEntry.getKey()); if (reportedFreq == null) { reportedFreq = 0; } Integer realFreq = realEntry.getValue(); nominator += Math.abs(reportedFreq - realFreq); denominator += reportedFreq + realFreq; } for (Map.Entry<Integer, Integer> reportedEntry : reported.entrySet()) { if (!real.containsKey(reportedEntry.getKey())) { nominator += reportedEntry.getValue(); denominator += reportedEntry.getValue(); } } denominator /= 2; return nominator / denominator; } }