Пример #1
0
  @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());
  }
Пример #2
0
  @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());
  }