@Override public void setRouteDescription(String routeDescription) { List<Id<Link>> linkIds = NetworkUtils.getLinkIds(routeDescription); Id<Link> startLinkId = getStartLinkId(); Id<Link> endLinkId = getEndLinkId(); if (linkIds.size() > 0) { startLinkId = linkIds.remove(0); setStartLinkId(startLinkId); } if (linkIds.size() > 0) { endLinkId = linkIds.remove(linkIds.size() - 1); setEndLinkId(endLinkId); } this.setLinkIds(startLinkId, linkIds, endLinkId); }
@Override public void setRouteDescription(String routeDescription) { List<Id<Link>> linkIds = NetworkUtils.getLinkIds(routeDescription); Id<Link> startLinkId = getStartLinkId(); Id<Link> endLinkId = getEndLinkId(); if (linkIds.size() > 0) { startLinkId = linkIds.remove(0); setStartLinkId(startLinkId); } if (linkIds.size() > 0) { endLinkId = linkIds.remove(linkIds.size() - 1); setEndLinkId(endLinkId); } this.setLinkIds(startLinkId, linkIds, endLinkId); }
private void finishLeg(Id<Link> toLocation) { NetworkRoute route = null; if (previousRouteContent != null) { List<Id<Link>> linkIds = NetworkUtils.getLinkIds(previousRouteContent); route = RouteUtils.createLinkNetworkRouteImpl(previousActLoc, toLocation); if (!linkIds.isEmpty()) { route.setLinkIds(previousActLoc, linkIds, toLocation); } } currentTourBuilder.addLeg(currentTourBuilder.createLeg(route, currentLegDepTime,currentLegTransTime)); previousRouteContent = null; }
private void finishLeg(Id<Link> toLocation) { NetworkRoute route = null; if (previousRouteContent != null) { List<Id<Link>> linkIds = NetworkUtils.getLinkIds(previousRouteContent); route = RouteUtils.createLinkNetworkRouteImpl(previousActLoc, toLocation); if (!linkIds.isEmpty()) { route.setLinkIds(previousActLoc, linkIds, toLocation); } } currentTourBuilder.addLeg(currentTourBuilder.createLeg(route, currentLegDepTime, currentLegTransTime)); previousRouteContent = null; }
@Test public void testGetLinksID_ListNull() { List<Id<Link>> linkIds = NetworkUtils.getLinkIds((List<Link>) null); assertEquals(0, linkIds.size()); }
@Test public void testGetLinksID_StringNull() { List<Id<Link>> linkIds = NetworkUtils.getLinkIds((String) null); assertEquals(0, linkIds.size()); }
private void insertWenden(Id<Link> fromLinkId, Id<Link> toLinkId, Umlauf umlauf) { Node startNode = this.network.getLinks().get(fromLinkId).getToNode(); Node endNode = this.network.getLinks().get(toLinkId).getFromNode(); double depTime = 0.0; Path wendenPath = routingAlgo.calcLeastCostPath(startNode, endNode, depTime, null, null); if (wendenPath == null) { throw new RuntimeException("No route found from node " + startNode.getId() + " to node " + endNode.getId() + "."); } NetworkRoute route = RouteUtils.createLinkNetworkRouteImpl(fromLinkId, toLinkId); route.setLinkIds(fromLinkId, NetworkUtils.getLinkIds(wendenPath.links), toLinkId); umlauf.getUmlaufStuecke().add(new Wenden(route)); }
@Test public void testGetSubRoute_wrongEnd() { Network network = createTestNetwork(); Id<Link> id1 = Id.create("1", Link.class); Id<Link> id14 = Id.create("14", Link.class); Id<Link> id15 = Id.create("15", Link.class); NetworkRoute route = getNetworkRouteInstance(id1, id14, network); route.setLinkIds(id1, NetworkUtils.getLinkIds("22 12 -23 3 24"), id14); try { route.getSubRoute(id1, id15); Assert.fail("expected IllegalArgumentException, but it did not happen."); } catch (IllegalArgumentException expected) { log.info("catched expected exception: " + expected.getMessage()); } }
@Test public void testGetSubRoute_wrongStart() { Network network = createTestNetwork(); Id<Link> id0 = Id.create("0", Link.class); Id<Link> id1 = Id.create("1", Link.class); Id<Link> id15 = Id.create("15", Link.class); NetworkRoute route = getNetworkRouteInstance(id1, id15, network); route.setLinkIds(id1, NetworkUtils.getLinkIds("22 12 -23 3 24 14"), id15); try { route.getSubRoute(id0, id15); Assert.fail("expected IllegalArgumentException, but it did not happen."); } catch (IllegalArgumentException expected) { log.info("catched expected exception: " + expected.getMessage()); } }
@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 testSetLinkIds() { Network network = createTestNetwork(); List<Id<Link>> links = NetworkUtils.getLinkIds("-22 2 3 24 14"); final Id<Link> link11 = Id.create(11, Link.class); final Id<Link> link15 = Id.create(15, Link.class); NetworkRoute route = getNetworkRouteInstance(link11, link15, network); route.setLinkIds(link11, links, link15); List<Id<Link>> linkIds = route.getLinkIds(); Assert.assertEquals("number of links in route.", 5, linkIds.size()); Assert.assertEquals(Id.create("-22", Link.class), linkIds.get(0)); Assert.assertEquals(Id.create("2", Link.class), linkIds.get(1)); Assert.assertEquals(Id.create("3", Link.class), linkIds.get(2)); Assert.assertEquals(Id.create("24", Link.class), linkIds.get(3)); Assert.assertEquals(Id.create("14", Link.class), linkIds.get(4)); }
@Test public void testGetDistance() { 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); route.setDistance(1234.5); Assert.assertEquals("wrong difference.", 1234.5, route.getDistance(), MatsimTestCase.EPSILON); }
@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_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_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_toEnd() { Network network = createTestNetwork(); Id<Link> id0 = Id.create("0", Link.class); Id<Link> id3 = Id.create("3", Link.class); Id<Link> id15 = Id.create("15", Link.class); Id<Link> id23m = Id.create("-23", Link.class); Id<Link> id24 = Id.create("24", 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(id23m, id15); List<Id<Link>> linkIds = subRoute.getLinkIds(); Assert.assertEquals("number of links in subRoute.", 3, linkIds.size()); Assert.assertEquals(id3, linkIds.get(0)); Assert.assertEquals(id24, linkIds.get(1)); Assert.assertEquals("wrong start link.", id23m, 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_startInCircle() { 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> id15 = Id.create("15", Link.class); NetworkRoute route = getNetworkRouteInstance(id11, id15, network); route.setLinkIds(id11, NetworkUtils.getLinkIds("12 13 -24 -3 23 13 14"), id15); Id<Link> id13 = Id.create("13", Link.class); Id<Link> id23 = Id.create("23", Link.class); NetworkRoute subRoute = route.getSubRoute(id13, id23); List<Id<Link>> linkIds = subRoute.getLinkIds(); Assert.assertEquals("number of links in subRoute.", 2, linkIds.size()); Assert.assertEquals("wrong link.", Id.create("-24", Link.class), subRoute.getLinkIds().get(0)); Assert.assertEquals("wrong link.", Id.create("-3", Link.class), subRoute.getLinkIds().get(1)); Assert.assertEquals("wrong start link.", id13, subRoute.getStartLinkId()); Assert.assertEquals("wrong end link.", id23, 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()); }