private void updateTTs(Link link, double[] tt, TravelTime travelTime, double alpha) { for (int i = 0; i < intervalCount; i++) { double oldEstimatedTT = tt[i]; double experiencedTT = travelTime.getLinkTravelTime(link, i * interval, null, null); tt[i] = alpha * experiencedTT + (1 - alpha) * oldEstimatedTT; } } }
private double getTravelTime(Link link, double time, Vehicle vehicle) { double linkTravelTime = travelTime.getLinkTravelTime(link, time, null, vehicle); return linkTravelTime; }
@Override public double getLinkTravelDisutility(final Link link, final double time, final Person person, final Vehicle vehicle) { return travelTime.getLinkTravelTime(link, time, person, vehicle); }
@Override public double getLinkTravelDisutility(final Link link, final double time, final Person person, final Vehicle vehicle) { double travelTime = this.timeCalculator.getLinkTravelTime(link, time, person, vehicle); return this.marginalCostOfTime * travelTime; }
@Override public double getLinkMinimumTravelDisutility(final Link link) { return this.travelTime.getLinkTravelTime(link, Time.UNDEFINED_TIME, null, null); }
@Override public double getLinkTravelDisutility(final Link link, final double time, final Person person, final Vehicle vehicle) { return this.travelTime.getLinkTravelTime(link, time, person, vehicle); }
@Override public double getLinkTravelTime(Link link, double time, Person person, Vehicle vehicle) { return this.delegate.getLinkTravelTime(link, time, person, vehicle); }
@Override public double getLinkTravelDisutility(Link link, double time, Person person, Vehicle vehicle) { return travelTime.getLinkTravelTime(link, time, person, vehicle) ; } @Override public double getLinkMinimumTravelDisutility(Link link) {
public static TravelTime maxOfTravelTimes(TravelTime travelTime1, TravelTime travelTime2) { return (Link link, double time, Person person, Vehicle vehicle) -> Math.max( travelTime1.getLinkTravelTime(link, time, person, vehicle), travelTime2.getLinkTravelTime(link, time, person, vehicle)); }
@Override public double getLinkTravelDisutility(final Link link, final double time, final Person person, final Vehicle vehicle) { if(link != null){ double travelTime = this.timeCalculator.getLinkTravelTime(link, time, person, vehicle); return travelTime; // travel time in seconds } log.warn("Link is null. Returned 0 as car time."); return 0.; }
private void collectTravelTimes(TravelTime travelTime, Network network, int timeSlice, int numSlots) { this.initBuffer(network); for (Entry<Link, double[]> entry : travelTimes.entrySet()) { double[] travelTimeArray = entry.getValue(); int time = 0; for (int i = 0; i < this.numSlots; i++) { travelTimeArray[i] = this.travelTime.getLinkTravelTime(entry.getKey(), time, null, null); time = time + this.timeSlice; } } }
public SerializableLinkTravelTimes(TravelTime linkTravelTimes, int traveltimeBinSize, double endTime, Collection<? extends Link> links) { this.travelTimeBinSize = traveltimeBinSize; endTime = endTime <= 0 ? 86400 : endTime; times = new double[links.size()][(int) (endTime / traveltimeBinSize)]; Iterator<? extends Link> iterator = links.iterator(); for (int i = 0; i < times.length; i++) { Link link = iterator.next(); indices.put(link.getId().toString(), i); for (int j = 0; j < times[i].length; j++) times[i][j] = linkTravelTimes.getLinkTravelTime(link, traveltimeBinSize * j, null, null); } }
public SerializableLinkTravelTimes(TravelTime linkTravelTimes, int traveltimeBinSize, double endTime, Collection<? extends Link> links) { this.travelTimeBinSize = traveltimeBinSize; endTime = endTime <= 0 ? 86400 : endTime; times = new double[links.size()][(int) (endTime / traveltimeBinSize)]; Iterator<? extends Link> iterator = links.iterator(); for (int i = 0; i < times.length; i++) { Link link = iterator.next(); indices.put(link.getId().toString(), i); for (int j = 0; j < times[i].length; j++) times[i][j] = linkTravelTimes.getLinkTravelTime(link, traveltimeBinSize * j, null, null); } }
private void addAgent(MobsimAgent mobsimAgent, double now) { Map<String, TravelTime> multiModalTravelTime = this.simEngine.getMultiModalTravelTimes(); Person person = null; if (mobsimAgent instanceof HasPerson) { person = ((HasPerson) mobsimAgent).getPerson(); } double travelTime = multiModalTravelTime.get(mobsimAgent.getMode()).getLinkTravelTime(link, now, person, null); double departureTime = now + travelTime; departureTime = Math.round(departureTime); this.agents.add(new Tuple<>(departureTime, mobsimAgent)); }
@Override public double getLinkTravelDisutility(Link link, double time, Person person, org.matsim.vehicles.Vehicle vehicle) { VehicleTypeVarCosts typeCosts = typeSpecificCosts.get(vehicle.getType().getId().toString()); if(typeCosts == null) throw new IllegalStateException("type specific costs for " + vehicle.getType().getId().toString() + " are missing."); double tt = travelTime.getLinkTravelTime(link, time, person, vehicle); return typeCosts.perMeter*link.getLength() + typeCosts.perSecond*tt; }
private double calcRouteTravelTime(NetworkRoute route, double startTime, TravelTime travelTime, Network network) { double tt = 0; if (route.getStartLinkId() != route.getEndLinkId()) { List<Id<Link>> ids = route.getLinkIds(); for (Id<Link> id : ids) { tt += travelTime.getLinkTravelTime(network.getLinks().get(id), startTime, null, null); tt++;// 1 sec for each node } tt += travelTime.getLinkTravelTime(network.getLinks().get(route.getEndLinkId()), startTime, null, null); } return tt; } }
double travelTime = this.timeCalculator.getLinkTravelTime(link, time, person, vehicle); return this.marginalCostOfTime * travelTime + logNormalRnd * this.marginalCostOfDistance * link.getLength();
private void checkLinkTravelTimes(double time) { if (time == t1) { assertEquals(359.9712023038157, travelTime.getLinkTravelTime(link, t1, null, null)); } else if (time == t2) { assertEquals(360.0, travelTime.getLinkTravelTime(link, t2, null, null)); } else if (time == t3) { assertEquals(467.6756756756757, travelTime.getLinkTravelTime(link, t3, null, null)); } else if (time == t4) { assertEquals(612.6282051282051, travelTime.getLinkTravelTime(link, t4, null, null)); } else if (time == t5) { assertEquals(690.62, travelTime.getLinkTravelTime(link, t5, null, null)); } else if (time == t6) { assertEquals(690.62, travelTime.getLinkTravelTime(link, t6, null, null)); } else if (time == t7) { assertEquals(967.1363636363636, travelTime.getLinkTravelTime(link, t7, null, null)); } else if (time == t8) { assertEquals(359.9712023038157, travelTime.getLinkTravelTime(link, t8, null, null)); } if ( time== 6*3600-1 ) { assertEquals( Double.POSITIVE_INFINITY, travelTime.getLinkTravelTime(link22,6*3600-1, null, null ) ) ; } else if ( time==6*3600+1 ) { assertEquals(link22.getLength()/originalFreeSpeed22, travelTime.getLinkTravelTime(link22, 6 * 3600 - 1, null, null)); } } }
@Override public void handleEvent(LinkEnterEvent event) { Id<Person> driverId = delegate.getDriverOfVehicle(event.getVehicleId()); String transportMode = this.transportModeProvider.getTransportMode(driverId); double now = event.getTime(); Link link = this.scenario.getNetwork().getLinks().get(event.getLinkId()); Person person = this.scenario.getPopulation().getPersons().get(driverId); double earliestExitTime; if (this.multiModalTravelTimes != null) { if (transportMode == null) { throw new RuntimeException( "Agent " + driverId.toString() + " is currently not performing a leg. Aborting!"); } else { TravelTime travelTime = this.multiModalTravelTimes.get(transportMode); if (travelTime == null) { throw new RuntimeException( "No TravelTime object was found for mode " + transportMode + ". Aborting!"); } earliestExitTime = Math.floor(now + travelTime.getLinkTravelTime(link, now, person, null)); } } else { earliestExitTime = Math.floor(now + this.freeSpeedTravelTime.getLinkTravelTime(link, now, person, null)); } this.handleAddEarliestLinkExitTime(driverId, earliestExitTime); }
@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; }