private boolean linkHasAlreadyAFormalPTStopFromTheGivenSchedule(Link link) { if (this.linkId2StopFacilityMap.containsKey(link.getId())) { // There is already a stop at this link, used by formal public transport - Use this one instead this.transitSchedule.addStopFacility(this.linkId2StopFacilityMap.get(link.getId())); return true; } else { return false; } }
@Override public double getLinkTravelTime(Link link, double time, Person person, Vehicle vehicle) { // TODO TTC is more flexible (simple averaging vs linear interpolation, etc.) int idx = TimeBinUtils.getTimeBinIndex(time, interval, intervalCount); return linkTTs.get(link.getId())[idx]; }
@Override public TravelTimeInfo getTravelTimeInfo(Link link) { Id<Link> linkId = link.getId(); return this.getTravelTimeInfo(linkId); }
@Override public double getLinkTravelTime(Link link, double time, Person person, Vehicle vehicle) { time = time % 86400; try { return times[indices.get(link.getId().toString())][(int) (time / travelTimeBinSize)]; } catch (ArrayIndexOutOfBoundsException e) { // TODO Auto-generated catch block e.printStackTrace(); } return time; }
private boolean areLinksMergeable(Link inLink, Link outLink) { List<Node> fromNodes = this.mergedLinksToIntermediateNodes.get(inLink.getId()); if (fromNodes==null) fromNodes = new ArrayList<>(); fromNodes.add(inLink.getFromNode()); List<Node> toNodes = this.mergedLinksToIntermediateNodes.get(outLink.getId()); if(toNodes==null) toNodes = new ArrayList<>(); toNodes.add(outLink.getToNode()); for(Node n :fromNodes) { if (toNodes.contains(n)) return false; } return true; }
@Override public double getTypicalTollCost(final Link link, final double time) { Cost cost = scheme.getTypicalLinkCostInfo(link.getId(), time ); if (cost == null) { return 0.0; } return cost.amount; } }
@Override public void notifyMobsimBeforeCleanup(@SuppressWarnings("rawtypes") MobsimBeforeCleanupEvent e) { for (Link link : network.getLinks().values()) { updateTTs(link, linkTTs.get(link.getId()), observedTT, alpha); } }
private SignalizeableItem getQLane(Id<Lane> laneId, QLinkLanesImpl link){ if (link.getQueueLanes().containsKey(laneId)){ return (SignalizeableItem) link.getQueueLanes().get(laneId); } throw new IllegalArgumentException("QLane Id " + laneId + "on link Id" + link.getLink().getId() + " not found. Check configuration!"); }
public void createRoute(final Link startLink, final Link endLink, double beelineDistanceFactor, double speed) { this.route = RouteUtils.createGenericRouteImpl(startLink.getId(), endLink.getId()); this.calculateDirectDistance(startLink, endLink, beelineDistanceFactor); this.route.setTravelTime(this.route.getDistance() / speed); }
public static Map<Id<Link>, Zone> createLinkToZoneMap(Network network, ZoneFinder zoneFinder) { Map<Id<Link>, Zone> linkToZone = new HashMap<>(); for (Link l : network.getLinks().values()) { linkToZone.put(l.getId(), zoneFinder.findZone(l.getToNode().getCoord())); } return linkToZone; }
private void moveToAbort(final MobsimAgent mobsimAgent, final double now, Link currentLink, Link nextLink) { log.error("Agent has no or wrong route! agentId=" + mobsimAgent.getId() + " currentLink=" + currentLink.getId().toString() + " nextLink=" + (nextLink!=null?nextLink.getId():"null") + " currentLinkToNode=" + currentLink.getToNode().getId() + " nextLinkFromNode=" + (nextLink!=null?nextLink.getFromNode().getId():"null") + ". The agent is removed from the simulation."); mobsimAgent.setStateToAbort(now); this.simEngine.internalInterface.arrangeNextAgentState(mobsimAgent); } }
@Test public void testGetNodes_SameStartEndLink() { Fixture f = new Fixture(); Link startLink = f.network.getLinks().get(f.linkIds[2]); Link endLink = f.network.getLinks().get(f.linkIds[2]); List<Id<Link>> links = new ArrayList<Id<Link>>(0); NetworkRoute route = RouteUtils.createLinkNetworkRouteImpl(startLink.getId(), endLink.getId()); route.setLinkIds(startLink.getId(), links, endLink.getId()); List<Node> nodes = RouteUtils.getNodes(route, f.network); Assert.assertEquals(0, nodes.size()); }
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; }
protected Activity createActivity(StayTask task) { Activity act = populFactory.createActivityFromLinkId("s", task.getLink().getId()); act.setStartTime(task.getBeginTime()); act.setEndTime(task.getEndTime()); return act; }
@Override public void processEvent() { Road road = (Road) this.getReceivingUnit(); Event event = null; event = new LinkLeaveEvent(this.getMessageArrivalTime(), Id.create(vehicle.getOwnerPerson().getId(), org.matsim.vehicles.Vehicle.class), road.getLink().getId()); eventsManager.processEvent(event); }
public void addDepartingAgent(MobsimAgent mobsimAgent, double now) { this.waitingAfterActivityAgents.add(mobsimAgent); this.activateLink(); this.simEngine.getEventsManager().processEvent( new PersonEntersVehicleEvent(now, mobsimAgent.getId(), Id.create(mobsimAgent.getId(), Vehicle.class))); this.simEngine.getEventsManager().processEvent( new VehicleEntersTrafficEvent(now, mobsimAgent.getId(), link.getId(), Id.create(mobsimAgent.getId(), Vehicle.class), mobsimAgent.getMode(), 1.0)); }
@Override public QueueWithBuffer createLane( AbstractQLink qLink ) { // a number of things I cannot configure before I have the qlink: if ( id==null ) { id = Id.create( qLink.getLink().getId() , Lane.class ) ; } if ( length==null ) { length = qLink.getLink().getLength() ; } if ( effectiveNumberOfLanes==null ) { effectiveNumberOfLanes = qLink.getLink().getNumberOfLanes() ; } if ( flowCapacity_s==null ) { flowCapacity_s = ((Link)qLink.getLink()).getFlowCapacityPerSec() ; } return new QueueWithBuffer( qLink.getInternalInterface(), vehicleQueue, id, length, effectiveNumberOfLanes, flowCapacity_s, context ) ; } }