public static boolean compare(ArrayList<EventLog> eventLog1, ArrayList<EventLog> eventLog2) { int NoOfNotEqualEvents = 0; assert eventLog1.size() == eventLog2.size() : "The size of both eventLogs must be the same!"; for (int i = 0; i < eventLog1.size(); i++) { // System.out.println("========="); // eventLog1.get(i).print(); // eventLog2.get(i).print(); // System.out.println("========="); if (!equals(eventLog1.get(i), eventLog2.get(i))) { // NoOfNotEqualEvents++; return false; } } System.out.println("# Events Java: " + eventLog1.size()); System.out.println("# Events C++: " + eventLog2.size()); System.out.println("NoOfNotEqualEvents: " + NoOfNotEqualEvents); return true; }
/** * the time must be the same (compared up to 4 digits after the floating * point) and the link the event type is ignored for the moment, because in * the beginning it might be different * * @param eventLog1 * @param eventLog2 * @return */ public static boolean equals(EventLog eventLog1, EventLog eventLog2) { if (Math.rint(eventLog1.getTime() * 10000) == Math.rint(eventLog2.getTime() * 10000) && eventLog1.getLinkId() == eventLog2.getLinkId()) { return true; } else { System.out.println("====PROBLEM====="); eventLog1.print(); eventLog2.print(); System.out.println("========="); } return false; }
if (personEvent.getTime() != deqSimEvent.getTime()) { CppEventFileParser.printNotEqualEvents(personEvent, deqSimEvent); return false; if (Integer.parseInt(((PersonDepartureEvent) personEvent).getLinkId().toString()) != deqSimEvent.getLinkId()) { CppEventFileParser.printNotEqualEvents(personEvent, deqSimEvent); return false; if (Integer.parseInt(((PersonDepartureEvent) personEvent).getPersonId().toString()) != deqSimEvent.getVehicleId()) { CppEventFileParser.printNotEqualEvents(personEvent, deqSimEvent); return false; if (!deqSimEvent.getType().equalsIgnoreCase(JDEQSimConfigGroup.START_LEG)) { CppEventFileParser.printNotEqualEvents(personEvent, deqSimEvent); return false; if (Integer.parseInt(((LinkEnterEvent) personEvent).getLinkId().toString()) != deqSimEvent.getLinkId()) { CppEventFileParser.printNotEqualEvents(personEvent, deqSimEvent); return false; if (Integer.parseInt(((LinkEnterEvent) personEvent).getVehicleId().toString()) != deqSimEvent.getVehicleId()) { CppEventFileParser.printNotEqualEvents(personEvent, deqSimEvent); return false; if (!deqSimEvent.getType().equalsIgnoreCase(JDEQSimConfigGroup.ENTER_LINK)) { CppEventFileParser.printNotEqualEvents(personEvent, deqSimEvent); return false; if (Integer.parseInt(((LinkLeaveEvent) personEvent).getLinkId().toString()) != deqSimEvent.getLinkId()) {
public void testGetAverageTravelTime(){ ArrayList<EventLog> deqSimLog=CppEventFileParser.parseFile(getPackageInputDirectory() + "deq_events.txt"); assertEquals(EventLog.getTravelTime(deqSimLog,1), EventLog.getSumTravelTime(deqSimLog), EPSILON); } }
public static void print(ArrayList<EventLog> eventLog) { for (int i = 0; i < eventLog.size(); i++) { eventLog.get(i).print(); } // }
rows.add(new EventLog(first, second, third, fourth, fifth, sixth, eventType));
public void testGetTravelTime(){ ArrayList<EventLog> deqSimLog=CppEventFileParser.parseFile(getPackageInputDirectory() + "deq_events.txt"); assertEquals(3599.0, Math.floor(EventLog.getTravelTime(deqSimLog,1)), EPSILON); }
/** * Compares the sum of all travel times with the sum of all travel times generated by the C++DEQSim. * As {@link #compareToDEQSimEvents(String)} does not function for most comparisons of the JavaDEQSim and C++DEQSim model, * we need to compare the time each car was on the road and take its average. This figure should with in a small interval * for both simulations. * Attention: Still when vehicles are stuck, this comparison can be off by larger number, because unstucking the vehicles is * done in different ways by the two simulations */ protected void compareToDEQSimTravelTimes(final String deqsimEventsFile, final double tolerancePercentValue) { ArrayList<EventLog> deqSimLog = CppEventFileParser.parseFile(deqsimEventsFile); double deqSimTravelSum=EventLog.getSumTravelTime(deqSimLog); double javaSimTravelSum=EventLibrary.getSumTravelTime(allEvents); assertTrue ((Math.abs(deqSimTravelSum - javaSimTravelSum)/deqSimTravelSum) < tolerancePercentValue); }
private static void printNotEqualEvents(final Event personEvent, final EventLog deqSimEvent) { System.out.println("POSSIBLE PROBLEM: EVENTS NOT EQUAL"); System.out.println(personEvent.toString()); deqSimEvent.print(); }