@Override public double getLinkTravelDisutility(Link link, double time, Person person, Vehicle vehicle) { double travelTime = this.timeCalculator.getLinkTravelTime(link, time, person, vehicle); double marginalUtilityOfPerforming_util_s = -1.0 * params.getScoringParameters(person) .marginalUtilityOfPerforming_s; // make negativ for router: it is lost double marginalUtilityOfTime_util_s = params.getScoringParameters(person).modeParams.get(this.mode).marginalUtilityOfTraveling_s + marginalUtilityOfPerforming_util_s; double marginalUtilityOfDistance_util_m = params.getScoringParameters(person).modeParams.get(this.mode).marginalUtilityOfDistance_m; double monetaryDistanceRate = params.getScoringParameters(person).modeParams.get(this.mode).monetaryDistanceCostRate; double marginalUtilityOfMoney = params.getScoringParameters(person).marginalUtilityOfMoney; final double marginalUtilityOfDistanceFromMoney_util_m = monetaryDistanceRate * marginalUtilityOfMoney; // [money/m]*[util/money] // Needs to be positive: return -1.0 * (marginalUtilityOfTime_util_s * travelTime + (marginalUtilityOfDistance_util_m + marginalUtilityOfDistanceFromMoney_util_m) * link.getLength()); }
@Override public double getLinkMinimumTravelDisutility(Link link) { double constantPerforming = -6.0 / 3600.0; // this is a hack! TODO: take from config double marginalUtilityOfTime_util_s = params.getScoringParameters(null).modeParams.get(this.mode).marginalUtilityOfTraveling_s + constantPerforming; double marginalUtilityOfDistance_util_m = params.getScoringParameters(null).modeParams.get(this.mode).marginalUtilityOfDistance_m; double monetaryDistanceRate = params.getScoringParameters(null).modeParams.get(this.mode).monetaryDistanceCostRate; double marginalUtilityOfMoney = params.getScoringParameters(null).marginalUtilityOfMoney; final double marginalUtilityOfDistanceFromMoney_util_m = monetaryDistanceRate * marginalUtilityOfMoney; // [money/m]*[util/money] // Needs to be positive: return -1.0 * (marginalUtilityOfTime_util_s * (link.getLength() / link.getFreespeed()) + (marginalUtilityOfDistance_util_m + marginalUtilityOfDistanceFromMoney_util_m) * link.getLength()); }