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; } }
@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 void notifyReplanning(ReplanningEvent event) { Assert.assertEquals(42.0, travelTimes.get(TransportMode.car).getLinkTravelTime(null, 0.0, null, null), 0.0); Assert.assertEquals(37.0, travelDisutilities.get(TransportMode.car).createTravelDisutility(travelTimes.get(TransportMode.car)).getLinkTravelDisutility(null, 0.0, null, null), 0.0); } }
@Override public void notifyMobsimAfterSimStep(MobsimAfterSimStepEvent e) { if (e.getSimulationTime() <= networkChangeEventTime) { Assert.assertEquals("Wrong travel time at time step " + e.getSimulationTime() + ". Should be the freespeed travel time.", Math.ceil(link.getLength()/link.getFreespeed()), Math.ceil(travelTime.getLinkTravelTime(link, e.getSimulationTime(), null, null)), testUtils.EPSILON); case1 = true; } else { Assert.assertEquals("Wrong travel time at time step " + e.getSimulationTime() + ". Should be the travel time resulting from the network change event (reduced freespeed).", Math.ceil(link.getLength() / reducedFreespeed), Math.ceil(travelTime.getLinkTravelTime(link, e.getSimulationTime(), null, null)), testUtils.EPSILON); case2 = true; } }