public static Link createAndAddLink(Network network, final Id<Link> id, final Node fromNode, final Node toNode, final double length, final double freespeed, final double capacity, final double numLanes) { return createAndAddLink(network, id, fromNode, toNode, length, freespeed, capacity, numLanes, null, null ) ; }
private int createInvertedLink(Link inLink, Link outLink, int numberOfLinksGenerated, Set<String> modes){ Link link = NetworkUtils.createAndAddLink(this.invertedNetwork,Id.create(numberOfLinksGenerated + 1, Link.class), this.invertedNetwork.getNodes().get(Id.create(inLink.getId(), Node.class)), this.invertedNetwork.getNodes().get(Id.create(outLink.getId(), Node.class)), outLink.getLength(), outLink.getFreespeed(), outLink.getCapacity(), outLink.getNumberOfLanes() ); link.setAllowedModes(modes); // log.error("created inverted link " + link.getId() + " from " + inLink.getId() + " to " + outLink.getId() + " with modes " + modes); NetworkUtils.setType( ((Link) link), NetworkUtils.getType(((Link) outLink))); return numberOfLinksGenerated + 1; }
public MultimodalFixture() { for (int i = 0; i < this.nodes.length; i++) { this.nodes[i] = NetworkUtils.createAndAddNode(this.network, Id.create(i, Node.class), new Coord((double) (1000 * i), (double) 0)); } for (int i = 0; i < this.links.length; i++) { this.links[i] = NetworkUtils.createAndAddLink(this.network,Id.create(i, Link.class), this.nodes[i], this.nodes[i+1], 1000.0, 10.0, 3600.0, (double) 1 ); } } }
private void createNetwork(double departureLinkCapacity){ Node node1 = NetworkUtils.createAndAddNode(network, Id.createNodeId("1"), new Coord((double) 0, (double) 0)) ; Node node2 = NetworkUtils.createAndAddNode(network, Id.createNodeId("2"), new Coord((double) 100, (double) 10)); double y = -10; Node node3 = NetworkUtils.createAndAddNode(network, Id.createNodeId("3"), new Coord((double) 300, y)); final Node fromNode = node1; final Node toNode = node2; final double capacity = departureLinkCapacity; link1 = NetworkUtils.createAndAddLink(network,Id.createLinkId(String.valueOf("1")), fromNode, toNode, 1000.0, 20.0, capacity, (double) 1, null, "7"); final Node fromNode1 = node2; final Node toNode1 = node3; link2 = NetworkUtils.createAndAddLink(network,Id.createLinkId(String.valueOf("2")), fromNode1, toNode1, 1000.0, 20.0, (double) 3600, (double) 1, null, "7"); }
private Network getTestNetwork() { int numOfLinks = 5; Network network = NetworkUtils.createNetwork(); Node[] nodes = new Node[numOfLinks+1]; for (int i = 0; i <= numOfLinks; i++) { nodes[i] = NetworkUtils.createAndAddNode(network, Id.create(i, Node.class), new Coord((double) (1000 * i), (double) 0)); } for (int i = 0; i < numOfLinks; i++) { NetworkUtils.createAndAddLink(network,Id.create(i, Link.class), nodes[i], nodes[i+1], 1000.0, 10.0, 3600.0, (double) 1 ); } return network; }
private void createNetwork(){ Network network = scenario.getNetwork(); double x = -100.0; Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord(x, 0.0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord(0.0, 0.0)); Node node3 = NetworkUtils.createAndAddNode(network, Id.create("3", Node.class), new Coord(0.0, 1000.0)); Node node4 = NetworkUtils.createAndAddNode(network, Id.create("4", Node.class), new Coord(0.0, 1100.0)); link1 = NetworkUtils.createAndAddLink(network,Id.create("1", Link.class), node1, node2, (double) 100, (double) 25, (double) 600, (double) 1, null, "22"); link2 = NetworkUtils.createAndAddLink(network,Id.create("2", Link.class), node2, node3, (double) 1000, (double) 25, (double) 600, (double) 1, null, "22"); link3 = NetworkUtils.createAndAddLink(network,Id.create("3", Link.class), node3, node4, (double) 100, (double) 25, (double) 600, (double) 1, null, "22"); }
private void createNetwork(double linkCapacity){ network = (Network) scenario.getNetwork(); double x = -100.0; Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord(x, 0.0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord(0.0, 0.0)); Node node3 = NetworkUtils.createAndAddNode(network, Id.create("3", Node.class), new Coord(0.0, 1000.0)); Node node4 = NetworkUtils.createAndAddNode(network, Id.create("4", Node.class), new Coord(0.0, 1100.0)); final Node fromNode = node1; final Node toNode = node2; link1 = NetworkUtils.createAndAddLink(network,Id.create("1", Link.class), fromNode, toNode, (double) 1000, (double) 25, (double) 7200, (double) 1, null, "22"); final Node fromNode1 = node2; final Node toNode1 = node3; final double capacity = linkCapacity; link2 = NetworkUtils.createAndAddLink(network,Id.create("2", Link.class), fromNode1, toNode1, (double) 1000, (double) 25, capacity, (double) 1, null, "22"); final Node fromNode2 = node3; final Node toNode2 = node4; link3 = NetworkUtils.createAndAddLink(network,Id.create("3", Link.class), fromNode2, toNode2, (double) 1000, (double) 25, (double) 7200, (double) 1, null, "22"); }
private void createNetwork(double linkCapacity){ network = (Network) scenario.getNetwork(); double x = -100.0; Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord(x, 0.0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord(0.0, 0.0)); Node node3 = NetworkUtils.createAndAddNode(network, Id.create("3", Node.class), new Coord(0.0, 1000.0)); Node node4 = NetworkUtils.createAndAddNode(network, Id.create("4", Node.class), new Coord(0.0, 1100.0)); final Node fromNode = node1; final Node toNode = node2; link1 = NetworkUtils.createAndAddLink(network,Id.create("1", Link.class), fromNode, toNode, (double) 1000, (double) 25, (double) 7200, (double) 1, null, "22"); final Node fromNode1 = node2; final Node toNode1 = node3; final double capacity = linkCapacity; link2 = NetworkUtils.createAndAddLink(network,Id.create("2", Link.class), fromNode1, toNode1, (double) 1000, (double) 25, capacity, (double) 1, null, "22"); final Node fromNode2 = node3; final Node toNode2 = node4; link3 = NetworkUtils.createAndAddLink(network,Id.create("3", Link.class), fromNode2, toNode2, (double) 1000, (double) 25, (double) 7200, (double) 1, null, "22"); }
private void doTestAllowedModes(final Set<String> modes, final String filename) { Network network1 = NetworkUtils.createNetwork(); Node n1 = NetworkUtils.createAndAddNode(network1, Id.create("1", Node.class), new Coord((double) 0, (double) 0)); Node n2 = NetworkUtils.createAndAddNode(network1, Id.create("2", Node.class), new Coord((double) 1000, (double) 0)); final Node fromNode = n1; final Node toNode = n2; Link l1 = NetworkUtils.createAndAddLink(network1,Id.create("1", Link.class), fromNode, toNode, 1000.0, 10.0, 3600.0, 1.0 ); l1.setAllowedModes(modes); writeNetwork(network1, filename); File networkFile = new File(filename); assertTrue("written network file doesn't exist.", networkFile.exists()); assertTrue("written network file seems to be empty.", networkFile.length() > 0); Scenario scenario2 = ScenarioUtils.createScenario(ConfigUtils.createConfig()); Network network2 = scenario2.getNetwork(); readNetwork(scenario2, filename); Link link1 = network2.getLinks().get(Id.create("1", Link.class)); assertNotNull("link not found in read-in network.", link1); Set<String> modes2 = link1.getAllowedModes(); assertEquals("wrong number of allowed modes.", modes.size(), modes2.size()); assertTrue("wrong mode.", modes2.containsAll(modes)); }
public Fixture() { this.network = NetworkUtils.createNetwork(); Node linkStartNode = NetworkUtils.createAndAddNode(this.network, Id.create(0, Node.class), new Coord((double) 0, (double) 0)); for (int i = 1; i < count; i++) { Node linkEndNode = NetworkUtils.createAndAddNode(this.network, Id.create(i, Node.class), new Coord((double) i, (double) 0)); final Node fromNode = linkStartNode; final Node toNode = linkEndNode; NetworkUtils.createAndAddLink(this.network,Id.create(i-1, Link.class), fromNode, toNode, 1000.0, 10.0, 2000.0, (double) 1 ); linkStartNode = linkEndNode; } } }
@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_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_circleInRoute() { 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> id12 = Id.create("12", Link.class); Id<Link> id14 = Id.create("14", Link.class); NetworkRoute subRoute = route.getSubRoute(id12, id14); List<Id<Link>> linkIds = subRoute.getLinkIds(); Assert.assertEquals("number of links in subRoute.", 5, linkIds.size()); Assert.assertEquals("wrong link.", Id.create("13", Link.class), subRoute.getLinkIds().get(0)); Assert.assertEquals("wrong link.", Id.create("-24", Link.class), subRoute.getLinkIds().get(1)); Assert.assertEquals("wrong link.", Id.create("-3", 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("13", Link.class), subRoute.getLinkIds().get(4)); Assert.assertEquals("wrong start link.", id12, subRoute.getStartLinkId()); Assert.assertEquals("wrong end link.", id14, subRoute.getEndLinkId()); }
@Test public void testWriteChangeEventWithSmallValueAndReadBack() { final String fileName = utils.getOutputDirectory() + "wurst.xml"; final Network network = NetworkUtils.createNetwork(); Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord((double) 0, (double) 0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord((double) 0, (double) 1000)); final Link link = NetworkUtils.createAndAddLink(network, Id.create("2", Link.class), node1, node2, (double) 1500, 1.667, (double) 3600, (double) 1); List<NetworkChangeEvent> outputEvents = new ArrayList<>(); final NetworkChangeEvent event = new NetworkChangeEvent(0.0); event.setFlowCapacityChange(new NetworkChangeEvent.ChangeValue(NetworkChangeEvent.ChangeType.ABSOLUTE_IN_SI_UNITS, 0.000000000004)); event.addLink(link); outputEvents.add(event); new NetworkChangeEventsWriter().write(fileName, outputEvents); List<NetworkChangeEvent> inputEvents = new ArrayList<>(); NetworkChangeEventsParser parser = new NetworkChangeEventsParser(network, inputEvents); parser.readFile(fileName); assertThat(inputEvents, hasItem(event)); }
@Test public void testScaleFactorChangeEvents() { final Network network = NetworkUtils.createNetwork(); Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord((double) 0, (double) 0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord((double) 0, (double) 1000)); final Link link = NetworkUtils.createAndAddLink(network, Id.create("2", Link.class), node1, node2, (double) 1500, 1.667, (double) 3600, (double) 1); final String fileName = this.utils.getOutputDirectory() + "scalefactorChanges.xml"; List<NetworkChangeEvent> changeEvents = new ArrayList<>(); final NetworkChangeEvent event = new NetworkChangeEvent(200.0); event.setLanesChange(new NetworkChangeEvent.ChangeValue(NetworkChangeEvent.ChangeType.FACTOR, 2.5)); event.addLink(link); changeEvents.add(event); new NetworkChangeEventsWriter().write(fileName, changeEvents); List<NetworkChangeEvent> changeEvents2 = new ArrayList<>(); new NetworkChangeEventsParser(network, changeEvents2).readFile(fileName); Assert.assertFalse(changeEvents2.isEmpty()); Assert.assertEquals(1, changeEvents2.size()); NetworkChangeEvent event2 = changeEvents2.get(0); Assert.assertEquals(event.getStartTime(), event2.getStartTime(), 0.0); Assert.assertEquals(NetworkChangeEvent.ChangeType.FACTOR, event2.getLanesChange().getType()); Assert.assertEquals(event.getLanesChange().getValue(), event2.getLanesChange().getValue(), 1e-10); }
@Test public void testAbsoluteChangeEvents() { final Network network = NetworkUtils.createNetwork(); Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord((double) 0, (double) 0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord((double) 0, (double) 1000)); final Link link = NetworkUtils.createAndAddLink(network, Id.create("2", Link.class), node1, node2, (double) 1500, 1.667, (double) 3600, (double) 1); final String fileName = this.utils.getOutputDirectory() + "absoluteChanges.xml"; List<NetworkChangeEvent> changeEvents = new ArrayList<>(); final NetworkChangeEvent event = new NetworkChangeEvent(100.0); event.setFlowCapacityChange(new NetworkChangeEvent.ChangeValue(NetworkChangeEvent.ChangeType.ABSOLUTE_IN_SI_UNITS, 0.000000000005)); event.addLink(link); changeEvents.add(event); new NetworkChangeEventsWriter().write(fileName, changeEvents); List<NetworkChangeEvent> changeEvents2 = new ArrayList<>(); new NetworkChangeEventsParser(network, changeEvents2).readFile(fileName); Assert.assertFalse(changeEvents2.isEmpty()); Assert.assertEquals(1, changeEvents2.size()); NetworkChangeEvent event2 = changeEvents2.get(0); Assert.assertEquals(event.getStartTime(), event2.getStartTime(), 0.0); Assert.assertEquals(NetworkChangeEvent.ChangeType.ABSOLUTE_IN_SI_UNITS, event2.getFlowCapacityChange().getType()); Assert.assertEquals(event.getFlowCapacityChange().getValue(), event2.getFlowCapacityChange().getValue(), 1e-10); }
@Test public void testNegativeOffsetChangeEvents() { final Network network = NetworkUtils.createNetwork(); Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord((double) 0, (double) 0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord((double) 0, (double) 1000)); final Link link = NetworkUtils.createAndAddLink(network, Id.create("2", Link.class), node1, node2, (double) 1500, 1.667, (double) 3600, (double) 1); final String fileName = this.utils.getOutputDirectory() + "offsetChanges.xml"; List<NetworkChangeEvent> changeEvents = new ArrayList<>(); final NetworkChangeEvent event = new NetworkChangeEvent(300.0); event.setFreespeedChange(new NetworkChangeEvent.ChangeValue(NetworkChangeEvent.ChangeType.OFFSET_IN_SI_UNITS, -3.6)); event.addLink(link); changeEvents.add(event); new NetworkChangeEventsWriter().write(fileName, changeEvents); List<NetworkChangeEvent> changeEvents2 = new ArrayList<>(); new NetworkChangeEventsParser(network, changeEvents2).readFile(fileName); Assert.assertFalse(changeEvents2.isEmpty()); Assert.assertEquals(1, changeEvents2.size()); NetworkChangeEvent event2 = changeEvents2.get(0); Assert.assertEquals(event.getStartTime(), event2.getStartTime(), 0.0); Assert.assertEquals(NetworkChangeEvent.ChangeType.OFFSET_IN_SI_UNITS, event2.getFreespeedChange().getType()); Assert.assertEquals(event.getFreespeedChange().getValue(), event2.getFreespeedChange().getValue(), 1e-10); }
@Test public void testChangeEventsParserWriter() { String input = utils.getInputDirectory() + "testNetworkChangeEvents.xml"; String output = utils.getOutputDirectory() + "outputTestNetworkChangeEvents.xml"; final Network network = NetworkUtils.createNetwork(); NetworkFactory nf = network.getFactory(); nf.setLinkFactory(new VariableIntervalTimeVariantLinkFactory()); ((NetworkImpl)network).setFactory(nf); Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord((double) 0, (double) 0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord((double) 0, (double) 1000)); Node node3 = NetworkUtils.createAndAddNode(network, Id.create("3", Node.class), new Coord((double) 1000, (double) 2000)); NetworkUtils.createAndAddLink(network,Id.create("1", Link.class), node1, node2, (double) 1000, 1.667, (double) 3600, (double) 1 ); NetworkUtils.createAndAddLink(network,Id.create("2", Link.class), node2, node3, (double) 1500, 1.667, (double) 3600, (double) 1 ); List<NetworkChangeEvent> events = new ArrayList<>(); NetworkChangeEventsParser parser = new NetworkChangeEventsParser(network, events ); parser.readFile(input); new NetworkChangeEventsWriter().write(output, events); long checksum_ref = CRCChecksum.getCRCFromFile(input); long checksum_run = CRCChecksum.getCRCFromFile(output); assertEquals(checksum_ref, checksum_run); }
@Test public void testSetAttributes() { Network network = new NetworkImpl(); network.setCapacityPeriod(3600.0); Node node1 = NetworkUtils.createAndAddNode(network, Id.create(1, Node.class), new Coord((double) 0, (double) 0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create(2, Node.class), new Coord((double) 50, (double) 50)); final Node fromNode = node1; final Node toNode = node2; Link link1 = (Link) NetworkUtils.createAndAddLink(network,Id.create(1, Link.class), fromNode, toNode, 500.0, 10.0, 1000.0, 1.0 ); Assert.assertEquals("wrong freespeed traveltime.", 50.0, NetworkUtils.getFreespeedTravelTime(link1), EPSILON); link1.setLength(1000.0); Assert.assertEquals("wrong freespeed traveltime.", 100.0, NetworkUtils.getFreespeedTravelTime(link1), EPSILON); link1.setFreespeed(20.0); Assert.assertEquals("wrong freespeed traveltime.", 50.0, NetworkUtils.getFreespeedTravelTime(link1), EPSILON); }