private void createModes() { Network network = this.scenario.getNetwork(); Set<String> ptOnly = new HashSet<String>(); ptOnly.add(TransportMode.pt); Set<String> carPt = new HashSet<String>(); carPt.add(TransportMode.car); carPt.add(TransportMode.pt); network.getLinks().get(Id.create(12, Link.class)).setAllowedModes(carPt); network.getLinks().get(Id.create(23, Link.class)).setAllowedModes(ptOnly); network.getLinks().get(Id.create(34, Link.class)).setAllowedModes(carPt); network.getLinks().get(Id.create(25, Link.class)).setAllowedModes(carPt); network.getLinks().get(Id.create(56, Link.class)).setAllowedModes(carPt); network.getLinks().get(Id.create(63, Link.class)).setAllowedModes(carPt); }
@Override public void run(Network network) { if (!multiModalConfigGroup.isCreateMultiModalNetwork()) { log.warn("Creation of multi modal network is not enabled in the config group - network is not adapted!"); return; } double cutoffSpeed = multiModalConfigGroup.getCutoffValueForNonCarModes(); String simulatedModes = multiModalConfigGroup.getSimulatedModes(); Set<String> modes = CollectionUtils.stringToSet(simulatedModes); Counter counter = new Counter("Converted links to multi-modal links: "); for (Link link : network.getLinks().values()) { if (Math.round(link.getFreespeed()) <= cutoffSpeed) { Set<String> allowedModes = new HashSet<>(link.getAllowedModes()); allowedModes.addAll(modes); link.setAllowedModes(allowedModes); counter.incCounter(); } } counter.printCounter(); } }
@Test public void testIsMultimodal_2modesOnSingleLink() { MultimodalFixture f = new MultimodalFixture(); for (Link l : f.links) { l.setAllowedModes(CollectionUtils.stringToSet("car")); } f.links[3].setAllowedModes(CollectionUtils.stringToSet("car,bike")); Assert.assertTrue(NetworkUtils.isMultimodal(f.network)); }
@Test public void testIsMultimodal_3modes() { MultimodalFixture f = new MultimodalFixture(); for (Link l : f.links) { l.setAllowedModes(CollectionUtils.stringToSet("car")); } f.links[2].setAllowedModes(CollectionUtils.stringToSet("bike,walk")); Assert.assertTrue(NetworkUtils.isMultimodal(f.network)); }
@Test public void testIsMultimodal_sometimesNoModes() { MultimodalFixture f = new MultimodalFixture(); for (Link l : f.links) { l.setAllowedModes(CollectionUtils.stringToSet("car")); } f.links[2].setAllowedModes(CollectionUtils.stringToSet("")); Assert.assertTrue(NetworkUtils.isMultimodal(f.network)); }
@Test public void testIsMultimodal_2modesOnDifferentLinks() { MultimodalFixture f = new MultimodalFixture(); for (Link l : f.links) { l.setAllowedModes(CollectionUtils.stringToSet("car")); } f.links[2].setAllowedModes(CollectionUtils.stringToSet("bike")); Assert.assertTrue(NetworkUtils.isMultimodal(f.network)); }
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; }
private Link createLink(final NetworkFactory nf, final String id, final Node fromNode, final Node toNode) { Link l = nf.createLink(Id.create(id, Link.class), fromNode, toNode); l.setLength(1000.0); l.setCapacity(1800.0); l.setNumberOfLanes(2); l.setFreespeed(10.0); HashSet<String> modes = new HashSet<String>(); modes.add(TransportMode.car); modes.add(TransportMode.walk); l.setAllowedModes(modes); return l; } }
private static Link createLink(final Network network, final Id<Link> id, final Id<Node> fromNodeId, final Id<Node> toNodeId, final Set<String> modes) { Link link = network.getFactory().createLink(id, network.getNodes().get(fromNodeId), network.getNodes().get(toNodeId)); link.setAllowedModes(modes); link.setCapacity(2000.0); link.setFreespeed(10.0); link.setLength(100.0); link.setNumberOfLanes(1); return link; }
private Link createAndAddLink(Node fromNode, Node toNode, Tuple<Node, Node> connection) { Link link; link = this.network.getFactory().createLink(Id.create(this.prefix + this.linkIdCounter++, Link.class), fromNode, toNode); if (fromNode == toNode) { link.setLength(50); } else { link.setLength(CoordUtils.calcEuclideanDistance(fromNode.getCoord(), toNode.getCoord())); } link.setFreespeed(30.0 / 3.6); link.setCapacity(500); link.setNumberOfLanes(1); this.network.addLink(link); link.setAllowedModes(this.transitModes); this.links.put(connection, link); return link; }
@Test public void testIsMultimodal_carOnly() { MultimodalFixture f = new MultimodalFixture(); for (Link l : f.links) { l.setAllowedModes(CollectionUtils.stringToSet("car")); } Assert.assertFalse(NetworkUtils.isMultimodal(f.network)); }
@Test public void testIsMultimodal_onlyNoModes() { MultimodalFixture f = new MultimodalFixture(); for (Link l : f.links) { l.setAllowedModes(CollectionUtils.stringToSet("")); } Assert.assertFalse(NetworkUtils.isMultimodal(f.network)); }
@Test public void testIsMultimodal_walkOnly() { // tests that isMultimodal is not somehow hard-coded on "car" MultimodalFixture f = new MultimodalFixture(); for (Link l : f.links) { l.setAllowedModes(CollectionUtils.stringToSet("walk")); } Assert.assertFalse(NetworkUtils.isMultimodal(f.network)); }
@Test public void testRun_withConnectivity_unconnectedSource() { MultimodalFixture2 f = new MultimodalFixture2(); Network network = f.scenario.getNetwork(); NetworkFactory nf = network.getFactory(); Node node4 = network.getNodes().get(f.nodeIds[4]); Node node5 = network.getNodes().get(f.nodeIds[5]); Node node7 = nf.createNode(f.nodeIds[7], new Coord((double) 600, (double) 100)); network.addNode(node7); network.addLink(nf.createLink(f.linkIds[10], node4, node7)); network.addLink(nf.createLink(f.linkIds[11], node7, node5)); network.getLinks().get(f.linkIds[10]).setAllowedModes(Collections.singleton("bike")); network.getLinks().get(f.linkIds[11]).setAllowedModes(f.modesW); Assert.assertEquals(7, network.getNodes().size()); Assert.assertEquals(10, network.getLinks().size()); new MultimodalNetworkCleaner(network).run(Collections.singleton(TransportMode.walk), Collections.singleton(TransportMode.pt)); Assert.assertEquals(7, network.getNodes().size()); Assert.assertEquals(9, network.getLinks().size()); Assert.assertNull(network.getLinks().get(f.linkIds[11])); }
@Test public void testRun_withConnectivity_connectedSource() { MultimodalFixture2 f = new MultimodalFixture2(); Network network = f.scenario.getNetwork(); NetworkFactory nf = network.getFactory(); Node node4 = network.getNodes().get(f.nodeIds[4]); Node node5 = network.getNodes().get(f.nodeIds[5]); Node node7 = nf.createNode(f.nodeIds[7], new Coord((double) 600, (double) 100)); network.addNode(node7); network.addLink(nf.createLink(f.linkIds[10], node4, node7)); network.addLink(nf.createLink(f.linkIds[11], node7, node5)); network.getLinks().get(f.linkIds[10]).setAllowedModes(f.modesT); network.getLinks().get(f.linkIds[11]).setAllowedModes(f.modesW); Assert.assertEquals(7, network.getNodes().size()); Assert.assertEquals(10, network.getLinks().size()); new MultimodalNetworkCleaner(network).run(Collections.singleton(TransportMode.walk), Collections.singleton(TransportMode.pt)); Assert.assertEquals(7, network.getNodes().size()); Assert.assertEquals(10, network.getLinks().size()); }
@Test public void testRun_withConnectivity_unconnectedSink() { MultimodalFixture2 f = new MultimodalFixture2(); Network network = f.scenario.getNetwork(); NetworkFactory nf = network.getFactory(); Node node4 = network.getNodes().get(f.nodeIds[4]); Node node5 = network.getNodes().get(f.nodeIds[5]); Node node7 = nf.createNode(f.nodeIds[7], new Coord((double) 600, (double) 100)); network.addNode(node7); network.addLink(nf.createLink(f.linkIds[10], node4, node7)); network.addLink(nf.createLink(f.linkIds[11], node7, node5)); network.getLinks().get(f.linkIds[10]).setAllowedModes(f.modesW); network.getLinks().get(f.linkIds[11]).setAllowedModes(Collections.singleton("bike")); Assert.assertEquals(7, network.getNodes().size()); Assert.assertEquals(10, network.getLinks().size()); new MultimodalNetworkCleaner(network).run(Collections.singleton(TransportMode.walk), Collections.singleton(TransportMode.pt)); Assert.assertEquals(7, network.getNodes().size()); Assert.assertEquals(9, network.getLinks().size()); Assert.assertNull(network.getLinks().get(f.linkIds[10])); }
@Test public void testRun_withConnectivity_connectedSink() { MultimodalFixture2 f = new MultimodalFixture2(); Network network = f.scenario.getNetwork(); NetworkFactory nf = network.getFactory(); Node node4 = network.getNodes().get(f.nodeIds[4]); Node node5 = network.getNodes().get(f.nodeIds[5]); Node node7 = nf.createNode(f.nodeIds[7], new Coord((double) 600, (double) 100)); network.addNode(node7); network.addLink(nf.createLink(f.linkIds[10], node4, node7)); network.addLink(nf.createLink(f.linkIds[11], node7, node5)); network.getLinks().get(f.linkIds[10]).setAllowedModes(f.modesW); network.getLinks().get(f.linkIds[11]).setAllowedModes(f.modesT); Assert.assertEquals(7, network.getNodes().size()); Assert.assertEquals(10, network.getLinks().size()); new MultimodalNetworkCleaner(network).run(Collections.singleton(TransportMode.walk), Collections.singleton(TransportMode.pt)); Assert.assertEquals(7, network.getNodes().size()); Assert.assertEquals(10, network.getLinks().size()); }
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)); }
@Test public void testRun_singleLinkNetwork() { Scenario scenario = ScenarioUtils.createScenario(ConfigUtils.createConfig()); Network network = scenario.getNetwork(); NetworkFactory factory = network.getFactory(); Id<Node> id1 = Id.create(1, Node.class); Id<Node> id2 = Id.create(2, Node.class); Id<Link> linkId1 = Id.create(1, Link.class); Node node1 = factory.createNode(id1, new Coord((double) 0, (double) 100)); Node node2 = factory.createNode(id2, new Coord((double) 100, (double) 100)); network.addNode(node1); network.addNode(node2); network.addLink(factory.createLink(linkId1, node1, node2)); network.getLinks().get(linkId1).setAllowedModes(Collections.singleton(TransportMode.car)); new MultimodalNetworkCleaner(network).run(Collections.singleton(TransportMode.car)); /* a single link is no complete network, as the link's * from-node cannot be reached by the link's to-node * */ Assert.assertEquals("wrong number of links.", 0, network.getLinks().size()); Assert.assertEquals("wrong number of nodes.", 0, network.getNodes().size()); }
private void createNetwork() { Network network = this.scenario.getNetwork(); NetworkFactory factory = network.getFactory(); Node a = factory.createNode(Id.create("A", Node.class), new Coord((double) 0, (double) 0)); Node b = factory.createNode(Id.create("B", Node.class), new Coord((double) 1000, (double) 0)); Node c = factory.createNode(Id.create("C", Node.class), new Coord((double) 500, (double) 600)); network.addNode(a); network.addNode(b); network.addNode(c); Link ab = factory.createLink(Id.create("ab", Link.class), a, b); Link bc = factory.createLink(Id.create("bc", Link.class), b, c); Link ca = factory.createLink(Id.create("ca", Link.class), c, a); Set<String> modes = new HashSet<>(); modes.add("car"); for (Link l : new Link[] {ab, bc, ca}) { l.setLength(1000); l.setCapacity(1800); l.setNumberOfLanes(1); l.setFreespeed(10.0); l.setAllowedModes(modes); network.addLink(l); } }