private void initBuffer(Network network) { for (Link link : network.getLinks().values()) { double[] travelTimeArray = new double[numSlots]; int time = 0; for (int i = 0; i < numSlots; i++) { // travelTimeArray[i] = link.getLength() / link.getFreespeed(time); travelTimeArray[i] = Double.NaN; time = time + timeSlice; } travelTimes.put(link, travelTimeArray); } }
/** * Set a distance filter, dropping everything out which is not in the distance given in meters * around the given Node Id. * * @param distance * @param nodeId */ public void setDistanceFilter(final Double distance, final String nodeId) { this.distanceFilter = distance; this.distanceFilterNode = this.network.getNodes().get(Id.create(nodeId, Node.class)); }
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, final String origId, final String type) { if (network.getNodes().get(fromNode.getId()) == null) { throw new IllegalArgumentException(network+"[from="+fromNode+" does not exist]"); } if (network.getNodes().get(toNode.getId()) == null) { throw new IllegalArgumentException(network+"[to="+toNode+" does not exist]"); } Link link = network.getFactory().createLink(id, fromNode, toNode) ; link.setLength(length); link.setFreespeed(freespeed); link.setCapacity(capacity); link.setNumberOfLanes(numLanes); setType( link, type); setOrigId( link, origId ) ; network.addLink( link ) ; return link; }
public static Node createAndAddNode(Network network, final Id<Node> id, final Coord coord) { if (network.getNodes().containsKey(id)) { throw new IllegalArgumentException(network + "[id=" + id + " already exists]"); } Node n = network.getFactory().createNode(id, coord); network.addNode(n) ; return n; }
@Override public void startLinks(final Network network, final BufferedWriter out) throws IOException { out.write("\t<links"); if (network.getCapacityPeriod() != Integer.MIN_VALUE) { out.write(" capperiod=\"" + Time.writeTime(network.getCapacityPeriod()) + "\""); } out.write(" effectivecellsize=\"" + network.getEffectiveCellSize() + "\""); out.write(" effectivelanewidth=\"" + network.getEffectiveLaneWidth() + "\""); out.write(">\n"); }
/** * Provides basic statistics of a given {@link Network}. * @param network */ public static void reportNetworkStatistics(Network network) { LOG.info("--- Network statistics: ------------------------------------------------------"); LOG.info(" Network description: " + network.getName()); LOG.info(" Number of nodes: " + network.getNodes().size()); LOG.info(" Number of links: " + network.getLinks().size()); LOG.info("------------------------------------------------------------------------------"); }
@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()); }
private void createNetwork() { Network network = this.scenario.getNetwork(); Node[] nodes = new Node[nOfLinks + 1]; for (int i = 0; i <= nOfLinks; i++) { nodes[i] = network.getFactory().createNode(Id.create(i, Node.class), new Coord(i * 500, 0)); network.addNode(nodes[i]); } for (int i = 0; i < nOfLinks; i++) { Link l = network.getFactory().createLink(Id.create(i, Link.class), nodes[i], nodes[i+1]); l.setLength(500.0); l.setFreespeed(10.0); l.setCapacity(1000.0); l.setNumberOfLanes(1); network.addLink(l); } }
public SnapshotGenerator(final Network network, final double snapshotPeriod, final QSimConfigGroup config) { this.network = network; int initialCapacity = (int)(network.getLinks().size()*1.1); this.eventLinks = new HashMap<>(initialCapacity, 0.95f); this.linkList = new ArrayList<>(initialCapacity); this.eventAgents = new HashMap<>(1000, 0.95f); this.snapshotPeriod = snapshotPeriod; this.capCorrectionFactor = config.getFlowCapFactor() / network.getCapacityPeriod(); this.storageCapFactor = config.getStorageCapFactor(); this.snapshotStyle = config.getSnapshotStyle(); if (! Double.isNaN( config.getLinkWidthForVis() )){ this.linkWidthCalculator.setLinkWidthForVis( config.getLinkWidthForVis() ); } if (! Double.isNaN(network.getEffectiveLaneWidth())){ this.linkWidthCalculator.setLaneWidth(network.getEffectiveLaneWidth()); } reset(-1); }
private void doTestNodes(List<Node> nodes, final String filename) { Network network1 = NetworkUtils.createNetwork(); for(Node n : nodes){ network1.addNode(n); } 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); for(Node n : nodes){ assertEquals("Coordinates are not equal.", n.getCoord(), network2.getNodes().get(n.getId()).getCoord()); } }
/** * Tests if the default values of a network instance are the same as the defaults specified in the network_v1.dtd */ @Test public void testDefaultValues(){ Network net = new NetworkImpl(); Assert.assertEquals(7.5, net.getEffectiveCellSize(), 0.0); Assert.assertEquals(3.75, net.getEffectiveLaneWidth(), 0.0); Assert.assertEquals(3600.0, net.getCapacityPeriod(), 0.0); Node node1 = NetworkUtils.createNode(Id.create(1, Node.class), new Coord((double) 0, (double) 0)); Node node2 = NetworkUtils.createNode(Id.create(2, Node.class), new Coord((double) 1000, (double) 0)); net.addNode(node1); net.addNode(node2); final NetworkFactory nf = net.getFactory(); Gbl.assertNotNull(nf); Link link = nf.createLink(Id.create(1, Link.class), node1, node2); Assert.assertEquals(1, link.getAllowedModes().size()); Assert.assertEquals("car", link.getAllowedModes().iterator().next()); }
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 void splitLink(Link link) { this.network.removeLink(link.getId()); double length = link.getLength()/2.0; double freespeed = link.getFreespeed(); double capacity = link.getCapacity(); double permlanes = link.getNumberOfLanes(); Node medianNode = this.network.getFactory().createNode(getNewNodeId(), link.getCoord()); this.network.addNode(medianNode); Link tmpLink = this.network.getFactory().createLink(link.getId(), link.getFromNode(), medianNode); tmpLink.setLength(length); tmpLink.setFreespeed(freespeed); tmpLink.setCapacity(capacity); tmpLink.setNumberOfLanes(permlanes); this.network.addLink(tmpLink); tmpLink = this.network.getFactory().createLink(getNewLinkId(), medianNode, link.getToNode()); tmpLink.setLength(length); tmpLink.setFreespeed(freespeed); tmpLink.setCapacity(capacity); tmpLink.setNumberOfLanes(permlanes); this.network.addLink(tmpLink); }
@Override void initializeFactory(AgentCounter agentCounter, MobsimTimer mobsimTimer, NetsimInternalInterface netsimEngine1) { double effectiveCellSize = ((Network)network).getEffectiveCellSize() ; SnapshotLinkWidthCalculator linkWidthCalculator = new SnapshotLinkWidthCalculator(); linkWidthCalculator.setLinkWidthForVis( qsimConfig.getLinkWidthForVis() ); if (! Double.isNaN(network.getEffectiveLaneWidth())){ linkWidthCalculator.setLaneWidth( network.getEffectiveLaneWidth() ); } AbstractAgentSnapshotInfoBuilder snapshotBuilder = QNetsimEngine.createAgentSnapshotInfoBuilder( scenario, linkWidthCalculator ); this.context = new NetsimEngineContext(events, effectiveCellSize, agentCounter, snapshotBuilder, qsimConfig, mobsimTimer, linkWidthCalculator ) ; this.netsimEngine = netsimEngine1 ; } @Override QNodeI createNetsimNode(Node node) {
@Test public void testGetWidth_laneWidthNaN() { Network net = NetworkUtils.createNetwork(); Node n1 = net.getFactory().createNode(Id.create("1", Node.class), new Coord((double) 0, (double) 0)); Node n2 = net.getFactory().createNode(Id.create("2", Node.class), new Coord((double) 1000, (double) 0)); net.addNode(n1); net.addNode(n2); Link l1 = net.getFactory().createLink(Id.create("1", Link.class), n1, n2); l1.setNumberOfLanes(2.0); Assert.assertEquals("The default in the Network is set to a value that is possibly not conform to the default in network_v1.dtd", 3.75, net.getEffectiveLaneWidth(), 1e-10); ((Network)net).setEffectiveLaneWidth(1.0); double w = new LanesBasedWidthCalculator((Network) net, 1.0).getWidth(l1); Assert.assertFalse(Double.isNaN(w)); Assert.assertEquals(2.0, w, 1e-10); }
private Node addNode(Network net, Node n){ Node newNode = net.getFactory().createNode(n.getId(), n.getCoord()); net.addNode(newNode); return newNode; }
@Override public NetworkFactory getFactory() { return network.getFactory(); }
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; }
/** * This constructor is used by reflection. It's signature mustn't be changed or it won't work anymore. :-( */ public LanesBasedWidthCalculator(final Network network, final Double coef) { double w = network.getEffectiveLaneWidth(); if (Double.isNaN(w)) { log.warn("Effective lane width in network is set to Double.NaN. Set a real value in your network.xml to make this tool work with this value. Using 3.75 as effective lane width..."); this.effectiveLaneWidth = 3.75; } else { this.effectiveLaneWidth = w; } this.widthCoefficient = coef; }