@Override public double getLinkTravelDisutility(final Link link, final double time, final Person person, final Vehicle vehicle) { return link.getLength(); }
@Override public double getLinkMinimumTravelDisutility(Link link) { return link.getLength(); } }
@Override public double getTollAmount(Cost cost, Link link) { if(cost == null) return 0.0; return cost.amount*link.getLength(); }
@Override public double getLinkTravelDisutility(final Link link, final double time, final Person person, final Vehicle vehicle) { if(link != null) return link.getLength(); // travel distance in meter log.warn("Link is null. Returned 0 as distance."); return 0.; }
@Override public double getLinkTravelTime(Link link, double time, Person person, Vehicle vehicle) { if (speed) return link.getLength() / this.value; else if (speedFactor) return (link.getLength() / link.getFreespeed()) * this.value; else throw new RuntimeException("Neither speed nor speed factor was found! Aborting."); } }
@Override public double getLinkTravelDisutility(final Link link, final double time, final Person person, final Vehicle vehicle) { if (this.marginalUtlOfDistance == 0.0) { return (link.getLength() / link.getFreespeed(time)) * this.travelCostFactor; } return (link.getLength() / link.getFreespeed(time)) * this.travelCostFactor - this.marginalUtlOfDistance * link.getLength(); }
@Override public double getLinkMinimumTravelDisutility(Link link) { return link.getLength() / link.getFreespeed(); } }
@Override public double getLinkMinimumTravelDisutility(Link link) { if(link!=null) return link.getLength() / link.getFreespeed(); log.warn("Link is null. Returned 0 as free speed time."); return 0.; }
@Override public double getLinkMinimumTravelDisutility(final Link link) { if(link != null) // travel time in seconds return (link.getLength() / link.getFreespeed()); log.warn("Link is null. Returned 0 as walk time."); return 0.; } }
@Override public double getLinkTravelTime(Link link, double time, Person person, Vehicle vehicle) { double freeSpeedTT = link.getLength() / link.getFreespeed(time); // equiv. to FreeSpeedTravelTime double linkTravelTime = timeStepSize * Math.floor(freeSpeedTT / timeStepSize); // used in QSim for TT at link return linkTravelTime + 1;// adds 1 extra second for moving over nodes } }
@Override public void handleEvent(LinkEnterEvent event) { String ptMode = this.vehId2ptModeMap.get(event.getVehicleId()); if (ptMode == null) { ptMode = "nonPtMode"; } if (ptMode2CountMap.get(ptMode) == null) { ptMode2CountMap.put(ptMode, 0.0); } ptMode2CountMap.put(ptMode, ptMode2CountMap.get(ptMode) + this.network.getLinks().get(event.getLinkId()).getLength()); } }
@Override public void handleEvent(LinkEnterEvent event) { String ptMode = this.vehId2ptModeMap.get(event.getVehicleId()); if (ptMode == null) { ptMode = "nonPtMode"; } if (ptMode2CountMap.get(ptMode) == null) { ptMode2CountMap.put(ptMode, 0.0); } ptMode2CountMap.put(ptMode, ptMode2CountMap.get(ptMode) + this.network.getLinks().get(event.getLinkId()).getLength() * this.vehId2NumberOfPassengers.get(event.getVehicleId())); }
@Override public void handleEvent(LinkEnterEvent event) { double newValue = this.network.getLinks().get(event.getLinkId()).getLength(); for (Id<Person> agentId : this.vehId2AgentId2DistanceTravelledInMeterMap.get(event.getVehicleId()).keySet()) { double oldValue = this.vehId2AgentId2DistanceTravelledInMeterMap.get(event.getVehicleId()).get(agentId); this.vehId2AgentId2DistanceTravelledInMeterMap.get(event.getVehicleId()).put(agentId, oldValue + newValue); } }
/** * @return The distance of a VRP path Includes the to link, but not the from link */ public static double calcDistance(VrpPath path) { double distance = 0.0; for (int i = 1; i < path.getLinkCount(); i++) { distance += path.getLink(i).getLength(); } return distance; } }
@Override public double getTypicalTollCost(final Link link, final double time) { Cost cost_per_m = scheme.getTypicalLinkCostInfo(link.getId(), time ); if (cost_per_m == null) { return 0.0; } return cost_per_m.amount * link.getLength(); } }
@Override public void handleEvent(LinkEnterEvent event) { if(event.getVehicleId().toString().contains(this.pIdentifier)){ double linkLength = this.network.getLinks().get(event.getLinkId()).getLength(); this.kmTravelledByMinibuses += linkLength; this.passengerKmMinibus += this.vehId2NumberOfPassengers.get(event.getVehicleId()) * linkLength; } }
@Override public void handleEvent(LinkEnterEvent event) { if (this.vehId2OperatorCostContainer.containsKey(event.getVehicleId())) { // It's a transit driver double linkLength = this.network.getLinks().get(event.getLinkId()).getLength(); this.vehId2OperatorCostContainer.get(event.getVehicleId()).addDistanceTravelled(linkLength); } }
@Override public double getLinkTravelDisutility(Link link, double time, Person person, org.matsim.vehicles.Vehicle vehicle) { CarrierVehicleType type = vehicleTypes.getVehicleTypes().get(vehicle.getType().getId()); if(type == null) throw new IllegalStateException("vehicle "+vehicle.getId()+" has no type"); double tt = travelTime.getLinkTravelTime(link, time, person, vehicle); return type.getVehicleCostInformation().perDistanceUnit*link.getLength() + type.getVehicleCostInformation().perTimeUnit*tt; }
@Override public void notifyMobsimInitialized(MobsimInitializedEvent e) { // check free speed travel times - they should be initialized now assertEquals(link.getLength()/link.getFreespeed(t1), travelTime.getLinkTravelTime(link, t1, null, null)); assertEquals(link.getLength()/link.getFreespeed(t2), travelTime.getLinkTravelTime(link, t2, null, null)); assertEquals(link.getLength()/link.getFreespeed(t3), travelTime.getLinkTravelTime(link, t3, null, null)); assertEquals(link.getLength()/link.getFreespeed(t4), travelTime.getLinkTravelTime(link, t4, null, null)); assertEquals(link.getLength()/link.getFreespeed(t5), travelTime.getLinkTravelTime(link, t5, null, null)); assertEquals(link.getLength()/link.getFreespeed(t6), travelTime.getLinkTravelTime(link, t6, null, null)); assertEquals(link.getLength()/link.getFreespeed(t7), travelTime.getLinkTravelTime(link, t7, null, null)); assertEquals(link.getLength()/link.getFreespeed(t8), travelTime.getLinkTravelTime(link, t8, null, null)); }
@Override public double getLinkTravelTime(Link link, double time, Person person, org.matsim.vehicles.Vehicle vehicle) { double velocity; if(vehicle.getType().getMaximumVelocity() < link.getFreespeed(time)){ velocity = vehicle.getType().getMaximumVelocity(); } else velocity = link.getFreespeed(time); if(velocity <= 0.0) throw new IllegalStateException("velocity must be bigger than zero"); return link.getLength() / velocity; } };