20 package ch.sbb.matsim.routing.pt.raptor;
59 double minimumCostFactor = 0.4;
60 double lowerCapacityLimit = 0.3;
61 double higherCapacityLimit = 0.6;
62 double maximumCostFactor = 1.8;
68 this.minimumCostFactor = minimumCostFactor;
69 this.lowerCapacityLimit = lowerCapacityLimit;
70 this.higherCapacityLimit = higherCapacityLimit;
71 this.maximumCostFactor = maximumCostFactor;
80 boolean considerSeats = standingRoom * 2 < seatCount;
82 double relevantCapacity = considerSeats ? seatCount : (seatCount + standingRoom);
88 double occupancy = paxCount / relevantCapacity;
89 double baseCost = inVehTime * -marginalUtility_utl_s;
92 if (occupancy < this.lowerCapacityLimit) {
93 factor = this.minimumCostFactor + (1.0 - this.minimumCostFactor) / this.lowerCapacityLimit * occupancy;
95 if (occupancy > this.higherCapacityLimit) {
96 factor = 1.0 + (this.maximumCostFactor - 1.0) / (1.0 - this.higherCapacityLimit) * (occupancy - this.higherCapacityLimit);
99 costSum += baseCost * factor;
double getInVehicleTime()
CapacityDependentInVehicleCostCalculator(double minimumCostFactor, double lowerCapacityLimit, double higherCapacityLimit, double maximumCostFactor)
CapacityDependentInVehicleCostCalculator()
Integer getStandingRoom()
double getPassengerCount()
final VehicleCapacity getCapacity()
double getInVehicleCost(double inVehicleTime, double marginalUtility_utl_s, Person person, Vehicle vehicle, RaptorParameters paramters, RouteSegmentIterator iterator)