@Override public Id<Link> getStartLinkId() { return this.delegate.getStartLinkId(); }
@Override public Id<Link> getStartLinkId() { return netRoute.getStartLinkId(); }
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 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()); }
public void addUmlaufStueckToUmlauf(UmlaufStueck umlaufStueck, Umlauf umlauf) { List<UmlaufStueckI> umlaufStueckeOfThisUmlauf = umlauf.getUmlaufStuecke(); if (! umlaufStueckeOfThisUmlauf.isEmpty()) { UmlaufStueckI previousUmlaufStueck = umlaufStueckeOfThisUmlauf.get(umlaufStueckeOfThisUmlauf.size() - 1); NetworkRoute previousCarRoute = previousUmlaufStueck.getCarRoute(); Id<Link> fromLinkId = previousCarRoute.getEndLinkId(); Id<Link> toLinkId = umlaufStueck.getCarRoute().getStartLinkId(); if (!fromLinkId.equals(toLinkId)) { insertWenden(fromLinkId, toLinkId, umlauf); } } umlaufStueckeOfThisUmlauf.add(umlaufStueck); }
private void writeRoute(final NetworkRoute route) throws UncheckedIOException { if (route != null) { this.writeStartTag(Constants.ROUTE, null); // optimization: only create one List for multiple departures List<Tuple<String, String>> attributes = new ArrayList<>(1); attributes.add(createTuple(Constants.REF_ID, route.getStartLinkId().toString())); this.writeStartTag(Constants.LINK, attributes, true); for (Id<Link> linkId : route.getLinkIds()) { attributes.clear(); attributes.add(createTuple(Constants.REF_ID, linkId.toString())); this.writeStartTag(Constants.LINK, attributes, true); } attributes.clear(); attributes.add(createTuple(Constants.REF_ID, route.getEndLinkId().toString())); this.writeStartTag(Constants.LINK, attributes, true); this.writeEndTag(Constants.ROUTE); } }
@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); } }
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; } }
public void addTrip(NetworkRoute networkRoute, String transportMode) { Activity lastActivity; if (!plan.getPlanElements().isEmpty()) { lastActivity = (Activity) plan.getPlanElements().get(plan.getPlanElements().size()-1); assert lastActivity.getLinkId().equals(networkRoute.getStartLinkId()); } else { lastActivity = PopulationUtils.createActivityFromLinkId(activityType, networkRoute.getStartLinkId()); plan.addActivity(lastActivity); } Leg leg = PopulationUtils.createLeg(transportMode); leg.setRoute(networkRoute); plan.addLeg(leg); Activity activity = PopulationUtils.createActivityFromLinkId(activityType, networkRoute.getEndLinkId()); plan.addActivity(activity); }
@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 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 testGetSubRoute_fullRoute() { 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[1]), f.network.getNodes().get(f.nodeIds[5]), f.network); Assert.assertEquals(4, subRoute.getLinkIds().size()); Assert.assertEquals(f.linkIds[0], subRoute.getStartLinkId()); Assert.assertEquals(f.linkIds[1], subRoute.getLinkIds().get(0)); Assert.assertEquals(f.linkIds[2], subRoute.getLinkIds().get(1)); Assert.assertEquals(f.linkIds[3], subRoute.getLinkIds().get(2)); Assert.assertEquals(f.linkIds[4], subRoute.getLinkIds().get(3)); Assert.assertEquals(f.linkIds[5], subRoute.getEndLinkId()); }
@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_CircleAtStart() { Network network = createTestNetwork(); NetworkUtils.createAndAddLink(network,Id.create(-3, Link.class), network.getNodes().get(Id.create(4, Node.class)), network.getNodes().get(Id.create(3, Node.class)), 1000.0, 100.0, 3600.0, (double) 1 ); Id<Link> id13 = Id.create("13", Link.class); Id<Link> id15 = Id.create("15", Link.class); NetworkRoute route = getNetworkRouteInstance(id13, id15, network); route.setLinkIds(id13, NetworkUtils.getLinkIds("-24 -3 23 13 14"), id15); NetworkRoute subRoute = route.getSubRoute(id13, id15); List<Id<Link>> linkIds = subRoute.getLinkIds(); Assert.assertEquals("number of links in subRoute.", 1, linkIds.size()); Assert.assertEquals("wrong link.", Id.create("14", Link.class), subRoute.getLinkIds().get(0)); Assert.assertEquals("wrong start link.", id13, subRoute.getStartLinkId()); Assert.assertEquals("wrong end link.", id15, 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_fullRoute() { Network network = createTestNetwork(); Id<Link> id0 = Id.create("0", Link.class); Id<Link> id4 = Id.create("4", Link.class); NetworkRoute route = getNetworkRouteInstance(id0, id4, network); route.setLinkIds(id0, NetworkUtils.getLinkIds("1 22 12 -23 3"), id4); NetworkRoute subRoute = route.getSubRoute(id0, id4); List<Id<Link>> linkIds = subRoute.getLinkIds(); Assert.assertEquals("number of links in subRoute.", 5, linkIds.size()); Assert.assertEquals("wrong link.", Id.create("1", Link.class), subRoute.getLinkIds().get(0)); Assert.assertEquals("wrong link.", Id.create("22", Link.class), subRoute.getLinkIds().get(1)); Assert.assertEquals("wrong link.", Id.create("12", Link.class), subRoute.getLinkIds().get(2)); Assert.assertEquals("wrong link.", Id.create("-23", Link.class), subRoute.getLinkIds().get(3)); Assert.assertEquals("wrong link.", Id.create("3", Link.class), subRoute.getLinkIds().get(4)); Assert.assertEquals("wrong start link.", id0, subRoute.getStartLinkId()); Assert.assertEquals("wrong end link.", id4, 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_startInCircle_CircleInEnd() { Network network = createTestNetwork(); NetworkUtils.createAndAddLink(network,Id.create(-3, Link.class), network.getNodes().get(Id.create(4, Node.class)), network.getNodes().get(Id.create(3, Node.class)), 1000.0, 100.0, 3600.0, (double) 1 ); Id<Link> id11 = Id.create("11", Link.class); Id<Link> id13 = Id.create("13", Link.class); NetworkRoute route = getNetworkRouteInstance(id11, id13, network); route.setLinkIds(id11, NetworkUtils.getLinkIds("12 13 -24 -3 23"), id13); Id<Link> id_24 = Id.create("-24", Link.class); NetworkRoute subRoute = route.getSubRoute(id_24, id13); List<Id<Link>> linkIds = subRoute.getLinkIds(); Assert.assertEquals("number of links in subRoute.", 2, linkIds.size()); Assert.assertEquals("wrong link.", Id.create("-3", Link.class), subRoute.getLinkIds().get(0)); Assert.assertEquals("wrong link.", Id.create("23", Link.class), subRoute.getLinkIds().get(1)); Assert.assertEquals("wrong start link.", id_24, subRoute.getStartLinkId()); Assert.assertEquals("wrong end link.", id13, 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()); }