public TransitQVehicle(final Vehicle basicVehicle) { super(basicVehicle); VehicleCapacity capacity = basicVehicle.getType().getCapacity(); if (capacity == null) { throw new NullPointerException("No capacity set in vehicle type."); } }
@Override public double getSizeInEquivalents() { return vehicle.getType().getPcuEquivalents(); }
@Override public void removeVehicleType(Id<VehicleType> vehicleTypeId) { for (Vehicle veh : this.vehicles.values()) { if (veh.getType().getId().equals(vehicleTypeId)) { throw new IllegalArgumentException("Cannot remove vehicle type as it is used by at least one vehicle."); } } this.vehicleTypes.remove(vehicleTypeId); }
@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; }
@Override public double getTollFactor(Id<Person> personId, Id<Vehicle> vehicleId, Id<Link> linkId, double time) { VehicleType someVehicleType = null ; // --> replace by something meaningful <-- if ( scenario.getVehicles().getVehicles().get( vehicleId ).getType().equals( someVehicleType ) ) { return 2 ; } else { return 1 ; } } } ;
private void writeVehicles(Map<Id<Vehicle>, Vehicle> veh) throws UncheckedIOException { for (Vehicle v : veh.values()) { atts.clear(); atts.add(this.createTuple(VehicleSchemaV1Names.ID, v.getId().toString())); atts.add(this.createTuple(VehicleSchemaV1Names.TYPE, v.getType().getId().toString())); this.writeStartTag(VehicleSchemaV1Names.VEHICLE, atts, true); } }
@Override public double getLinkTravelTime(Link link, double time, Person person, org.matsim.vehicles.Vehicle vehicle) { double velocity; if(vehicle.getType().getMaximumVelocity() < link.getFreespeed(time)){ velocity = vehicle.getType().getMaximumVelocity(); } else velocity = link.getFreespeed(time); if(velocity <= 0.0) throw new IllegalStateException("velocity must be bigger than zero"); return link.getLength() / velocity; } };
private Id<Umlauf> createUmlaufIdFromVehicle(Vehicle vehicle){ Id<Umlauf> id = Id.create(vehicle.getId().toString() + "_" + vehicle.getType().getId().toString(), Umlauf.class); this.umlaufIdsByVehicleId.put(vehicle.getId(), id); return id; }
@Override public void updateVehicles(Vehicles vehicles) { this.vehId2VehicleCapacity = new HashMap<>(); for (Vehicle veh : vehicles.getVehicles().values()) { Integer seats = veh.getType().getCapacity().getSeats(); Integer standing = veh.getType().getCapacity().getStandingRoom(); // setting these values is not mandatory. Thus, they maybe null \\DR, aug'13 this.vehId2VehicleCapacity.put(veh.getId(), ((seats == null) ? 0 : seats) + ((standing == null) ? 0 : standing) - 1); } }
@Override public void updateVehicles(Vehicles vehicles) { this.vehId2VehicleCapacity = new HashMap<>(); for (Vehicle veh : vehicles.getVehicles().values()) { Integer seats = veh.getType().getCapacity().getSeats(); Integer standing = veh.getType().getCapacity().getStandingRoom(); // setting these values is not mandatory. Thus, they maybe null \\DR, aug'13 this.vehId2VehicleCapacity.put(veh.getId(), ((seats == null) ? 0 : seats) + ((standing == null) ? 0 : standing) - 1.0); } }
@Override public void updateVehicles(Vehicles vehicles) { this.vehId2VehicleCapacity = new HashMap<>(); for (Vehicle veh : vehicles.getVehicles().values()) { Integer seats = veh.getType().getCapacity().getSeats(); Integer standing = veh.getType().getCapacity().getStandingRoom(); // setting these values is not mandatory. Thus, they maybe null \\DR, aug'13 this.vehId2VehicleCapacity.put(veh.getId(), ((seats == null) ? 0 : seats) + ((standing == null) ? 0 : standing) - 1.0); } }
private int getVehicleCapacity(Id<Vehicle> vehicleId) { VehicleType type = vehicles.get(vehicleId).getType(); VehicleCapacity capacity = vehicleTypes.get(type.getId()).getCapacity(); return capacity.getSeats() + capacity.getStandingRoom(); }
@Override public final void addFromWait(final QVehicle veh) { //To protect against calling addToBuffer() without calling hasFlowCapacityLeft() first. //This only could happen for addFromWait(), because it can be called from outside QueueWithBuffer if (flowcap_accumulate.getValue() <= 0.0 && veh.getVehicle().getType().getPcuEquivalents() > context.qsimConfig .getPcuThresholdForFlowCapacityEasing()) { throw new IllegalStateException("Buffer of link " + this.id + " has no space left!"); } addToBuffer(veh); }
@Override public double getLinkTravelDisutility(Link link, double time, Person person, org.matsim.vehicles.Vehicle vehicle) { double costs = baseTransportDisutility.getLinkTravelDisutility(link, time, person, vehicle); Id<org.matsim.vehicles.VehicleType> typeId = vehicle.getType().getId(); double toll = vehicleTypeDependentPricingCalculator.getTollAmount(typeId, link, time); // System.out.println("huuuuuuuuuuuuuuuuuuuu - paid toll"); return costs + toll; }
@Override public double getLinkTravelDisutility(Link link, double time, Person person, Vehicle vehicle) { double costs = base.getLinkTravelDisutility(link, time, person, vehicle); Id<VehicleType> typeId = vehicle.getType().getId(); double toll = roadPricing.getTollAmount(typeId, link, time); return costs + toll; }
@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 handleEvent(TransitDriverStartsEvent event) { this.ptVehicles.put(event.getVehicleId(), 0); VehicleCapacity vehicleCapacity = vehicles.getVehicles().get(event.getVehicleId()).getType().getCapacity(); this.capacities.put(event.getVehicleId(), vehicleCapacity.getSeats()+vehicleCapacity.getStandingRoom()); linesRoutesOfVehicle.put(event.getVehicleId(), new Tuple<Id<TransitLine>, Id<TransitRoute>>(event.getTransitLineId(), event.getTransitRouteId())); }
private boolean hasFlowCapacityLeft(VisVehicle veh) { if(context.qsimConfig.isUsingFastCapacityUpdate() ){ updateFastFlowAccumulation(); } return flowcap_accumulate.getValue() > 0.0 || veh.getVehicle().getType() .getPcuEquivalents() <= context.qsimConfig.getPcuThresholdForFlowCapacityEasing(); }