@Override public List<Id<Link>> getLinkIds() { return this.delegate.getLinkIds(); }
@Override public List<Id<Link>> getLinkIds() { return netRoute.getLinkIds(); }
@Override public Id<Link> getNextLinkId() { List<Id<Link>> linkIds = route.getLinkIds(); if (currentLinkIdx == linkIds.size()) { return null; } if (currentLinkIdx == linkIds.size() - 1) { return route.getEndLinkId(); } return linkIds.get(currentLinkIdx + 1); }
private static List<Id<Link>> getRouteLinkIds(Route route) { List<Id<Link>> linkIds = new ArrayList<>(); if (route instanceof NetworkRoute) { NetworkRoute networkRoute = (NetworkRoute) route; linkIds.add(networkRoute.getStartLinkId()); linkIds.addAll(networkRoute.getLinkIds()); linkIds.add(networkRoute.getEndLinkId()); } else { throw new RuntimeException("Currently only NetworkRoutes are supported for Within-Day Replanning!"); } return linkIds; } }
public void setCurrentLeg(Leg currentLeg) { this.currentLeg = currentLeg; if (currentLeg.getRoute() instanceof NetworkRoute) { List<Id<Link>> linkIds = ((NetworkRoute) currentLeg.getRoute()).getLinkIds(); currentLinkRoute = linkIds.toArray(new Id[linkIds.size()]); } else { currentLinkRoute = null; } }
@Override public void arrivedOnLinkByNonNetworkMode(Id<Link> linkId) { if (!getDestinationLinkId().equals(linkId)) { throw new IllegalStateException(); } currentLinkIdx = route.getLinkIds().size(); }
@Override public boolean judge(final Plan plan) { for (PlanElement pe : plan.getPlanElements()) { if (pe instanceof Leg) { Leg leg = (Leg) pe; for (Id<Link> linkId : ((NetworkRoute) leg.getRoute()).getLinkIds()) { if (this.linkIds.contains(linkId)) { return true; } } } } return false; }
@Override public final Id<Link> getCurrentLinkId() { int currentLinkIndex = this.nextLinkIndex - 1; if (currentLinkIndex < 0) { return getCarRoute().getStartLinkId(); } else if (currentLinkIndex >= getCarRoute().getLinkIds().size()) { return getCarRoute().getEndLinkId(); } else { return getCarRoute().getLinkIds().get(currentLinkIndex); } }
public NetworkRouteSerializable(NetworkRoute route) { distance = route.getDistance(); endLinkIdString = route.getEndLinkId().toString(); startLinkIdString = route.getStartLinkId().toString(); travelCost = route.getTravelCost(); travelTime = route.getTravelTime(); vehicleIdString = route.getVehicleId() == null ? null : route.getVehicleId().toString(); List<Id<Link>> linkIds = route.getLinkIds(); linkIdStrings = new ArrayList<>(); for (Id<Link> linkid : linkIds) linkIdStrings.add(linkid.toString()); }
private double calcRouteTravelTime(NetworkRoute route, double startTime, TravelTime travelTime, Network network) { double tt = 0; if (route.getStartLinkId() != route.getEndLinkId()) { List<Id<Link>> ids = route.getLinkIds(); for (Id<Link> id : ids) { tt += travelTime.getLinkTravelTime(network.getLinks().get(id), startTime, null, null); tt++;// 1 sec for each node } tt += travelTime.getLinkTravelTime(network.getLinks().get(route.getEndLinkId()), startTime, null, null); } return tt; } }
@Test public void testGetSubRoute() { Fixture f = new Fixture(); NetworkRoute route = RouteUtils.createLinkNetworkRouteImpl(f.linkIds[0], f.linkIds[5]); List<Id<Link>> linkIds = new ArrayList<Id<Link>>(); Collections.addAll(linkIds, f.linkIds[1], f.linkIds[2], f.linkIds[3], f.linkIds[4]); route.setLinkIds(f.linkIds[0], linkIds, f.linkIds[5]); NetworkRoute subRoute = RouteUtils.getSubRoute(route, f.network.getNodes().get(f.nodeIds[3]), f.network.getNodes().get(f.nodeIds[5]), f.network); Assert.assertEquals(2, subRoute.getLinkIds().size()); Assert.assertEquals(f.linkIds[2], subRoute.getStartLinkId()); Assert.assertEquals(f.linkIds[3], subRoute.getLinkIds().get(0)); Assert.assertEquals(f.linkIds[4], subRoute.getLinkIds().get(1)); Assert.assertEquals(f.linkIds[5], subRoute.getEndLinkId()); }
@Test public void testStartAndEndOnSameLinks_setLinks() { Network network = createTestNetwork(); Id<Link> link = Id.create("3", Link.class); NetworkRoute route = getNetworkRouteInstance(link, link, network); route.setLinkIds(link, new ArrayList<Id<Link>>(0), link); Assert.assertEquals(0, route.getLinkIds().size()); }
@Test public void testStartAndEndOnSubsequentLinks_setLinks() { Network network = createTestNetwork(); final Id<Link> link13 = Id.create("13", Link.class); final Id<Link> link14 = Id.create("14", Link.class); NetworkRoute route = getNetworkRouteInstance(link13, link14, network); route.setLinkIds(link13, new ArrayList<Id<Link>>(0), link14); Assert.assertEquals(0, route.getLinkIds().size()); }
@Test public void testGetSubRoute_emptySubRoute() { Fixture f = new Fixture(); NetworkRoute route = RouteUtils.createLinkNetworkRouteImpl(f.linkIds[0], f.linkIds[5]); List<Id<Link>> linkIds = new ArrayList<Id<Link>>(); Collections.addAll(linkIds, f.linkIds[1], f.linkIds[2], f.linkIds[3], f.linkIds[4]); route.setLinkIds(f.linkIds[0], linkIds, f.linkIds[5]); NetworkRoute subRoute = RouteUtils.getSubRoute(route, f.network.getNodes().get(f.nodeIds[4]), f.network.getNodes().get(f.nodeIds[4]), f.network); Assert.assertEquals(0, subRoute.getLinkIds().size()); Assert.assertEquals(f.linkIds[3], subRoute.getStartLinkId()); Assert.assertEquals(f.linkIds[4], subRoute.getEndLinkId()); }
@Test public void testGetSubRoute_sameStartEnd() { Fixture f = new Fixture(); NetworkRoute route = RouteUtils.createLinkNetworkRouteImpl(f.linkIds[0], f.linkIds[5]); List<Id<Link>> linkIds = new ArrayList<Id<Link>>(); Collections.addAll(linkIds, f.linkIds[1], f.linkIds[2], f.linkIds[3], f.linkIds[4]); route.setLinkIds(f.linkIds[0], linkIds, f.linkIds[5]); NetworkRoute subRoute = RouteUtils.getSubRoute(route, f.network.getNodes().get(f.nodeIds[5]), f.network.getNodes().get(f.nodeIds[4]), f.network); Assert.assertEquals(0, subRoute.getLinkIds().size()); Assert.assertEquals(f.linkIds[4], subRoute.getStartLinkId()); Assert.assertEquals(f.linkIds[4], subRoute.getEndLinkId()); }
@Test public void testGetLinkIds() { Network network = createTestNetwork(); Id<Link> link1 = Id.create("1", Link.class); Id<Link> link4 = Id.create("4", Link.class); NetworkRoute route = getNetworkRouteInstance(link1, link4, network); route.setLinkIds(link1, NetworkUtils.getLinkIds("22 12 -23 3"), link4); List<Id<Link>> ids = route.getLinkIds(); Assert.assertEquals("number of links in route.", 4, ids.size()); Assert.assertEquals(Id.create("22", Link.class), ids.get(0)); Assert.assertEquals(Id.create("12", Link.class), ids.get(1)); Assert.assertEquals(Id.create("-23", Link.class), ids.get(2)); Assert.assertEquals(Id.create("3", Link.class), ids.get(3)); }
@Test public void testGetSubRoute_sameLinks_emptyRoute1() { Network network = createTestNetwork(); Id<Link> id1 = Id.create("1", Link.class); NetworkRoute route = getNetworkRouteInstance(id1, id1, network); route.setLinkIds(id1, null, id1); NetworkRoute subRoute = route.getSubRoute(id1, id1); List<Id<Link>> linkIds = subRoute.getLinkIds(); Assert.assertEquals("number of links in subRoute.", 0, linkIds.size()); Assert.assertEquals("wrong start link.", id1, subRoute.getStartLinkId()); Assert.assertEquals("wrong end link.", id1, subRoute.getEndLinkId()); }
@Test public void testGetSubRoute_startOnly() { Network network = createTestNetwork(); Id<Link> id0 = Id.create("0", Link.class); Id<Link> id15 = Id.create("15", Link.class); NetworkRoute route = getNetworkRouteInstance(id0, id15, network); route.setLinkIds(id0, NetworkUtils.getLinkIds("1 22 12 -23 3 24 14"), id15); NetworkRoute subRoute = route.getSubRoute(id0, id0); List<Id<Link>> linkIds = subRoute.getLinkIds(); Assert.assertEquals("number of links in subRoute.", 0, linkIds.size()); Assert.assertEquals("wrong start link.", id0, subRoute.getStartLinkId()); Assert.assertEquals("wrong end link.", id0, subRoute.getEndLinkId()); }
@Test public void testGetSubRoute_endOnly() { Network network = createTestNetwork(); Id<Link> id0 = Id.create("0", Link.class); Id<Link> id15 = Id.create("15", Link.class); NetworkRoute route = getNetworkRouteInstance(id0, id15, network); route.setLinkIds(id0, NetworkUtils.getLinkIds("1 22 12 -23 3 24 14"), id15); NetworkRoute subRoute = route.getSubRoute(id15, id15); List<Id<Link>> linkIds = subRoute.getLinkIds(); Assert.assertEquals("number of links in subRoute.", 0, linkIds.size()); Assert.assertEquals("wrong start link.", id15, subRoute.getStartLinkId()); Assert.assertEquals("wrong end link.", id15, subRoute.getEndLinkId()); }
@Test public void testGetSubRoute_sameLinks() { Network network = createTestNetwork(); Id<Link> id1 = Id.create("1", Link.class); Id<Link> id12 = Id.create("12", Link.class); Id<Link> id14 = Id.create("14", Link.class); NetworkRoute route = getNetworkRouteInstance(id1, id14, network); route.setLinkIds(id1, NetworkUtils.getLinkIds("22 12 -23 3 24"), id14); NetworkRoute subRoute = route.getSubRoute(id12, id12); List<Id<Link>> linkIds = subRoute.getLinkIds(); Assert.assertEquals("number of links in subRoute.", 0, linkIds.size()); Assert.assertEquals("wrong start link.", id12, subRoute.getStartLinkId()); Assert.assertEquals("wrong end link.", id12, subRoute.getEndLinkId()); }