org.matsim.api.core.v01.network.Node.getOutLinks()方法的使用及代码示例

x33g5p2x  于2022-01-24 转载在 其他  
字(9.8k)|赞(0)|评价(0)|浏览(74)

本文整理了Java中org.matsim.api.core.v01.network.Node.getOutLinks()方法的一些代码示例,展示了Node.getOutLinks()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Node.getOutLinks()方法的具体详情如下:
包路径:org.matsim.api.core.v01.network.Node
类名称:Node
方法名:getOutLinks

Node.getOutLinks介绍

[英]Returns this node's set of outgoing links. This set might be empty, but it should not be null.
[中]返回此节点的传出链接集。此集合可能为空,但不应为null

代码示例

代码示例来源:origin: matsim-org/matsim

public static Map<Id<Link>, ? extends Link> getIncidentLinks(Node node) {
  Map<Id<Link>, Link> links = new TreeMap<>(node.getInLinks());
  links.putAll(node.getOutLinks());
  return links;
}

代码示例来源:origin: matsim-org/matsim

public static Link getConnectingLink(final Node fromNode, final Node toNode) {
  for (Link link : fromNode.getOutLinks().values()) {
    if (link.getToNode() == toNode) {
      return link;
    }
  }
  return null;
}

代码示例来源:origin: matsim-org/matsim

private static Link findLink(Node prevNode, Node node) {
  for (Link link : prevNode.getOutLinks().values()) {
    if (link.getToNode().equals(node)) {
      return link;
    }
  }
  return null;
}

代码示例来源:origin: matsim-org/matsim

public static Map<Id<Node>, ? extends Node> getOutNodes(Node node) {
  Map<Id<Node>, Node> nodes = new TreeMap<>();
  for (Link link : node.getOutLinks().values()) {
    Node outNode = link.getToNode();
    nodes.put(outNode.getId(), outNode);
  }
  return nodes;
}

代码示例来源:origin: matsim-org/matsim

@Override
public final void setSignalized( final boolean isSignalized) {
  qSignalizedItem  = new DefaultSignalizeableItem(qLink.getToNode().getOutLinks().keySet());
}

代码示例来源:origin: matsim-org/matsim

public static Link findLinkInOppositeDirection(Link link) {
  for ( Link candidateLink : link.getToNode().getOutLinks().values() ) {
    if ( candidateLink.getToNode().equals( link.getFromNode() ) ) {
      return candidateLink ;
    }
  }
  return null ;
}
public static void readNetwork( Network network, String string ) {

代码示例来源:origin: matsim-org/matsim

/**
 * Removes nodes from the network that have no incoming or outgoing links attached to them.
 */
public void removeNodesWithoutLinks() {
  List<Node> toBeRemoved = new ArrayList<>();
  for (Node node : this.network.getNodes().values()) {
    if ((node.getInLinks().size() == 0) && (node.getOutLinks().size() == 0)) {
      toBeRemoved.add(node);
    }
  }
  for (Node node : toBeRemoved) {
    this.network.removeNode(node.getId());
  }
}

代码示例来源:origin: matsim-org/matsim

@Override
public final void setSignalStateForTurningMove( final SignalGroupState state, final Id<Link> toLinkId) {
  if (!qLink.getToNode().getOutLinks().containsKey(toLinkId)){
    throw new IllegalArgumentException("ToLink " + toLinkId + " is not reachable from QLink Id " +  this.id );
  }
  qSignalizedItem.setSignalStateForTurningMove(state, toLinkId);
  thisTimeStepGreen = qSignalizedItem.hasGreenForAllToLinks();
  // (this is only for capacity accumulation.  As soon as at least one turning relation is green, the "link" is considered
  // green).
}

代码示例来源:origin: matsim-org/matsim

private int getNOfIncidentNodes(final Node node) {
    HashMap<Id<Node>, Node> nodes = new HashMap<>();
    for (Link link : node.getInLinks().values()) {
      nodes.put(link.getFromNode().getId(), link.getFromNode());
    }
    for (Link link : node.getOutLinks().values()) {
      nodes.put(link.getToNode().getId(), link.getToNode());
    }
    return nodes.size();
  }
}

代码示例来源:origin: matsim-org/matsim

@Override
public void run(final Network network) {
  
  Set<Node> nodesToRemove; 
  
  if (this.cutType == CutType.RECTANGLE) nodesToRemove = rectangularCut(network);
  else if (this.cutType == CutType.CIRCLE) nodesToRemove = circularCut(network);
  else return;
  
  int nofLinksRemoved = 0;
  for (Node n : nodesToRemove) {
    nofLinksRemoved += n.getInLinks().size() + n.getOutLinks().size();
    network.removeNode(n.getId());
  }
  
  log.info("number of nodes removed: "+nodesToRemove.size());
  log.info("number of links removed: "+nofLinksRemoved);
  log.info("number of nodes remaining: "+network.getNodes().size());
  log.info("number of links remaining: "+network.getLinks().size());
}

代码示例来源:origin: matsim-org/matsim

private void doRandomChoice() {
  // Do I want to end at this link?
  if (MatsimRandom.getRandom().nextInt(10) == 0) {// 10% chance
    nextLinkId = null;
    destinationLinkId = currentLinkId;
  } else {
    // Where do I want to move next?
    Link currentLink = network.getLinks().get(currentLinkId);
    Map<Id<Link>, ?> possibleNextLinks = currentLink.getToNode().getOutLinks();
    // Let's choose the next link randomly
    nextLinkId = RandomDynAgentLogic.chooseRandomElement(possibleNextLinks.keySet());
    // at this point the destination can be anything, QSim does not take it into account
    destinationLinkId = null;
  }
}

代码示例来源:origin: matsim-org/matsim

public void registerDownstreamSensors(SignalSystem signalSystem){
  for (Signal signal : signalSystem.getSignals().values()){
    Node systemNode = this.network.getLinks().get(signal.getLinkId()).getToNode();
    for (Id<Link> outgoingLinkId : systemNode.getOutLinks().keySet()) {
      this.sensorManager.registerNumberOfCarsMonitoring(outgoingLinkId);
    }
    break; // systemNode is the same for all signals of the system
  }
}

代码示例来源:origin: matsim-org/matsim

private static Map<Id<Node>, Node> getIncidentNodes(Node node) {
  Map<Id<Node>, Node> nodes = new TreeMap<>();
  for (Link link : node.getInLinks().values()) {
    nodes.put(link.getFromNode().getId(), link.getFromNode());
  }
  for (Link link : node.getOutLinks().values()) {
    nodes.put(link.getToNode().getId(), link.getToNode());
  }
  return nodes;
}

代码示例来源:origin: matsim-org/matsim

@Override
public Node removeNode(final Id<Node> nodeId) {
  Node n = this.nodes.remove(nodeId);
  if (n == null) {
    return null;
  }
  HashSet<Link> links1 = new HashSet<>();
  links1.addAll(n.getInLinks().values());
  links1.addAll(n.getOutLinks().values());
  for (Link l : links1) {
    removeLink(l.getId());
  }
  if (this.nodeQuadTree != null) {
    this.nodeQuadTree.remove(n.getCoord().getX(),n.getCoord().getY(),n);
  }
  return n;
}

代码示例来源:origin: matsim-org/matsim

/**
 * Expands the given Node in the routing algorithm; may be overridden in
 * sub-classes.
 *
 * @param outNode
 *            The Node to be expanded.
 * @param toNode
 *            The target Node of the route.
 * @param pendingNodes
 *            The set of pending nodes so far.
 */
protected void relaxNode(final Node outNode, final Node toNode, final RouterPriorityQueue<Node> pendingNodes) {
  DijkstraNodeData outData = getData(outNode);
  double currTime = outData.getTime();
  double currCost = outData.getCost();
  if (this.pruneDeadEnds) {
    PreProcessDijkstra.DeadEndData ddOutData = getPreProcessData(outNode);
    for (Link l : outNode.getOutLinks().values()) {
      relaxNodeLogic(l, pendingNodes, currTime, currCost, toNode, ddOutData);
    }
  } else { // this.pruneDeadEnds == false
    for (Link l : outNode.getOutLinks().values()) {
      relaxNodeLogic(l, pendingNodes, currTime, currCost, toNode, null);
    }                
  }
}

代码示例来源:origin: matsim-org/matsim

/**
 * Expands the given Node in the routing algorithm; may be overridden in
 * sub-classes.
 *
 * @param outNode
 *            The Node to be expanded.
 * @param pendingNodes
 *            The set of pending nodes so far.
 */
protected void relaxNode(final Node outNode, final RouterPriorityQueue<Node> pendingNodes) {
  DijkstraNodeData outData = getData(outNode);
  double currTime = outData.getTime();
  double currCost = outData.getCost();
  for (Link l : outNode.getOutLinks().values()) {
    relaxNodeLogic(l, pendingNodes, currTime, currCost);
  }
}

代码示例来源:origin: matsim-org/matsim

public boolean allDownstreamLinksEmpty(SignalData signal){
  if (signal.getTurningMoveRestrictions() != null) {
    return allLinksEmpty(signal.getTurningMoveRestrictions());
  } // else:
  if (signal.getLaneIds() != null && !signal.getLaneIds().isEmpty()) {
    Set<Id<Link>> toLinks = new HashSet<>();
    for (Id<Lane> laneId : signal.getLaneIds()) {
      Lane lane = lanes.getLanesToLinkAssignments().get(signal.getLinkId()).getLanes().get(laneId);
      toLinks.addAll(lane.getToLinkIds());
    }
    return allLinksEmpty(toLinks);
  } // else:
  // if no turning move restrictions and no lanes with to links are set, turning is allowed to all outgoing links
  Node systemNode = this.network.getLinks().get(signal.getLinkId()).getToNode();
  return allLinksEmpty(systemNode.getOutLinks().keySet());
}

代码示例来源:origin: matsim-org/matsim

private void relaxNode(final Node n, PriorityQueue<Node> pendingNodes) {
  NodeData nData = nodeData.get(n.getId());
  double currTime = nData.getTime();
  double currCost = nData.getCost();
  for (Link l : n.getOutLinks().values()) {
    Node nn = l.getToNode();
    NodeData nnData = nodeData.get(nn.getId());
    if (nnData == null) {
      nnData = new NodeData();
      this.nodeData.put(nn.getId(), nnData);
    }
    double visitCost = currCost + tcFunction.getLinkTravelDisutility(l, currTime, PERSON, VEHICLE);
    double visitTime = currTime + ttFunction.getLinkTravelTime(l, currTime, PERSON, VEHICLE);
    
    
    if (visitCost < nnData.getCost()) {
      pendingNodes.remove(nn);
      nnData.visit(n.getId(), visitCost, visitTime);
      additionalComputationsHook( l, currTime ) ;
      pendingNodes.add(nn);
    }
  }
}

代码示例来源:origin: matsim-org/matsim

private static Link findLinkBetween(final Network network, final Id<Link> fromLinkId, final Id<Link> toLinkId) {
  Link fromLink = network.getLinks().get(fromLinkId);
  Link toLink = network.getLinks().get(toLinkId);
  Node from = fromLink.getToNode();
  Node to = toLink.getFromNode();
  for (Link link : from.getOutLinks().values()) {
    if (link.getToNode() == to) {
      return link;
    }
  }
  return null;
}

代码示例来源:origin: matsim-org/matsim

@Test
public void removeLink() {
  Fixture f = new Fixture(getEmptyTestNetwork());
  Assert.assertTrue(f.network.getLinks().containsKey(f.linkIds[1]));
  Assert.assertEquals(1, f.network.getNodes().get(f.nodeIds[1]).getInLinks().size());
  f.network.removeLink(f.linkIds[1]);
  Assert.assertFalse(f.network.getLinks().containsKey(f.linkIds[1]));
  Assert.assertEquals(0, f.network.getNodes().get(f.nodeIds[1]).getInLinks().size());
  Assert.assertEquals(1, f.network.getNodes().get(f.nodeIds[1]).getOutLinks().size());
  Assert.assertTrue(f.network.getLinks().containsKey(f.linkIds[2]));
  f.network.removeLink(f.linkIds[2]);
  Assert.assertFalse(f.network.getLinks().containsKey(f.linkIds[2]));
  Assert.assertTrue(f.network.getNodes().containsKey(f.nodeIds[1]));
  Assert.assertEquals(0, f.network.getNodes().get(f.nodeIds[1]).getOutLinks().size());
  Assert.assertEquals(2, f.network.getNodes().get(f.nodeIds[5]).getOutLinks().size());
  Assert.assertEquals(2, f.network.getNodes().get(f.nodeIds[8]).getInLinks().size());
  f.network.removeLink(f.linkIds[10]);
  Assert.assertEquals(1, f.network.getNodes().get(f.nodeIds[5]).getOutLinks().size());
  Assert.assertEquals(1, f.network.getNodes().get(f.nodeIds[8]).getInLinks().size());
}

相关文章