@Override public void setDistance(final double distance) { netRoute.setDistance(distance); }
private void startRoute(final Attributes atts) { this.currroute = this.plans.getFactory().getRouteFactories().createRoute(NetworkRoute.class, this.prevAct.getLinkId(), this.prevAct.getLinkId()); this.currleg.setRoute(this.currroute); if (atts.getValue("dist") != null) { this.currroute.setDistance(Double.parseDouble(atts.getValue("dist"))); } if (atts.getValue("trav_time") != null) { this.currroute.setTravelTime(Time.parseTime(atts.getValue("trav_time"))); } }
@Override public Route getRoute(String mode) { Id<Link> startLinkId = Id.createLinkId(startLinkIdString); Id<Link> endLinkId = Id.createLinkId(endLinkIdString); NetworkRoute route = RouteUtils.createLinkNetworkRouteImpl(startLinkId, endLinkId); route.setDistance(distance); List<Id<Link>> linkIds = new ArrayList<>(); for (String linkId : linkIdStrings) linkIds.add(Id.createLinkId(linkId)); route.setLinkIds(startLinkId, linkIds, endLinkId); route.setTravelCost(travelCost); route.setTravelTime(travelTime); route.setVehicleId(vehicleIdString == null ? null : Id.create(vehicleIdString, Vehicle.class)); return route; }
private void route(Leg prevLeg, Id<Link> fromLinkId, Id<Link> toLinkId, Person person, Vehicle vehicle) { if(fromLinkId.equals(toLinkId)){ prevLeg.setExpectedTransportTime(0); NetworkRoute route = RouteUtils.createLinkNetworkRouteImpl(fromLinkId, toLinkId); route.setDistance(0.0); route.setTravelTime(0.0); // route.setVehicleId(vehicle.getId()); prevLeg.setRoute(route); return; } Path path = router.calcLeastCostPath(network.getLinks().get(fromLinkId).getToNode(), network.getLinks().get(toLinkId).getFromNode(), prevLeg.getExpectedDepartureTime(), person, vehicle); double travelTime = path.travelTime; /* *ACHTUNG. Konsistenz zu VRP */ double toLinkTravelTime = this.travelTime.getLinkTravelTime(network.getLinks().get(toLinkId),prevLeg.getExpectedDepartureTime()+travelTime, person, vehicle); travelTime += toLinkTravelTime; prevLeg.setExpectedTransportTime(travelTime); NetworkRoute route = createRoute(fromLinkId,path,toLinkId); // route.setVehicleId(vehicle.getId()); prevLeg.setRoute(route); }
Double relPosOnArrivalLink = relPosOnArrivalLinkPerPerson.get(event.getPersonId()); Gbl.assertNotNull( relPosOnArrivalLink ); networkRoute.setDistance(RouteUtils.calcDistance(networkRoute, relPosOnDepartureLink, relPosOnArrivalLink, network));
/** * Re-locates a future route. The route is given by its leg. It just replaces the route for the given leg, without looking after * overall plan consistency. * * @return true when replacing the route worked, false when something went wrong * */ @Deprecated // not consistent with access/egress approach; can only be used if you know exactly what you are doing. // Maybe replanXxx (which does not have these problems) is already sufficient? Otherwise use EditTrips or EditPlans. kai, nov'17 public boolean relocateFutureLegRoute(Leg leg, Id<Link> fromLinkId, Id<Link> toLinkId, Person person ) { Link fromLink = network.getLinks().get(fromLinkId); Link toLink = network.getLinks().get(toLinkId); Vehicle vehicle = null ; Node startNode = fromLink.getToNode() ; Node endNode = toLink.getFromNode() ; double starttime = leg.getDepartureTime() ; Path path = pathCalculator.calcLeastCostPath(startNode, endNode, starttime, person, vehicle) ; if (path == null) throw new RuntimeException("No route found from node " + startNode.getId() + " to node " + endNode.getId() + "."); NetworkRoute route = this.routeFactories.createRoute(NetworkRoute.class, fromLink.getId(), toLink.getId()); route.setLinkIds(fromLink.getId(), NetworkUtils.getLinkIds(path.links), toLink.getId()); route.setTravelTime((int) path.travelTime); // yyyy why int? kai, dec'15 route.setTravelCost(path.travelCost); route.setDistance(RouteUtils.calcDistance(route,1.,1., this.network)); leg.setRoute(route); return true; }
public void createRoute(Id<Link> fromLinkId, Path path, Id<Link> toLinkId) { NetworkRoute networkRoute = RouteUtils.createLinkNetworkRouteImpl(fromLinkId, toLinkId); if (!fromLinkId.equals(toLinkId)) { // do not drive/walk around, if we stay on the same link // path = this.routeAlgo.calcLeastCostPath(startNode, endNode, depTime, person, null); // if (path == null) throw new RuntimeException("No route found from node " + startNode.getId() + " to node " + endNode.getId() + "."); // NetworkRoute route = this.routeFactory.createRoute(NetworkRoute.class, fromLink.getId(), toLink.getId()); networkRoute.setLinkIds(fromLinkId, NetworkUtils.getLinkIds(path.links), toLinkId); networkRoute.setTravelTime(path.travelTime); networkRoute.setTravelCost(path.travelCost); networkRoute.setDistance(RouteUtils.calcDistanceExcludingStartEndLink(networkRoute, this.network)); } else { // create an empty route == staying on place if toLink == endLink route.setTravelTime(0); route.setDistance(0.0); } this.route = networkRoute; // List<Id<Link>> linkIds = new ArrayList<Id<Link>>(); // for (int i = 1; i < linksAllIncluded.size() - 2; i++) { // linkIds.add(linksAllIncluded.get(i).getId()); // } // this.route = new LinkNetworkRouteImpl(linksAllIncluded.get(0).getId(), linkIds, linksAllIncluded.get(linksAllIncluded.size()-1).getId()); // this.calculateNetworkRouteLength(); // this.route.setTravelTime(traveltime); } }
/*package (Tests)*/ double routeLeg(Person person, Leg leg, Link fromLink, Link toLink, double depTime) { double travTime = 0; Node startNode = fromLink.getToNode(); // start at the end of the "current" link Node endNode = toLink.getFromNode(); // the target is the start of the link if (toLink != fromLink) { // (a "true" route) Path path = this.routeAlgo.calcLeastCostPath(startNode, endNode, depTime, person, null); if (path == null) throw new RuntimeException("No route found from node " + startNode.getId() + " to node " + endNode.getId() + "."); NetworkRoute route = this.populationFactory.getRouteFactories().createRoute(NetworkRoute.class, fromLink.getId(), toLink.getId()); route.setLinkIds(fromLink.getId(), NetworkUtils.getLinkIds(path.links), toLink.getId()); route.setTravelTime((int) path.travelTime); route.setTravelCost(path.travelCost); route.setDistance(RouteUtils.calcDistance(route, 1.0,1.0,this.network)); leg.setRoute(route); travTime = (int) path.travelTime; } else { // create an empty route == staying on place if toLink == endLink // note that we still do a route: someone may drive from one location to another on the link. kai, dec'15 NetworkRoute route = this.populationFactory.getRouteFactories().createRoute(NetworkRoute.class, fromLink.getId(), toLink.getId()); route.setTravelTime(0); route.setDistance(0.0); leg.setRoute(route); travTime = 0; } leg.setDepartureTime(depTime); leg.setTravelTime(travTime); return travTime; }
route.setTravelTime(path.travelTime); route.setTravelCost(path.travelCost); route.setDistance(RouteUtils.calcDistance(route, 1.0, 1.0, this.network)); newLeg.setRoute(route); newLeg.setTravelTime(path.travelTime); route.setDistance(0.0); newLeg.setRoute(route); newLeg.setTravelTime(0);
@Test public void testGetDistance() { Network network = createTestNetwork(); Id<Link> link1 = Id.create("1", Link.class); Id<Link> link4 = Id.create("4", Link.class); NetworkRoute route = getNetworkRouteInstance(link1, link4, network); route.setLinkIds(link1, NetworkUtils.getLinkIds("22 12 -23 3"), link4); route.setDistance(1234.5); Assert.assertEquals("wrong difference.", 1234.5, route.getDistance(), MatsimTestCase.EPSILON); }
route.setTravelTime(path.travelTime); route.setTravelCost(path.travelCost); route.setDistance(RouteUtils.calcDistance(route, 1.0, 1.0, this.network)); newLeg.setRoute(route); newLeg.setTravelTime(path.travelTime); route.setDistance(0.0); newLeg.setRoute(route); newLeg.setTravelTime(0);
srcRoute.add(l1.getId()); r.setLinkIds(l6.getId(), srcRoute, l7.getId()); r.setDistance(RouteUtils.calcDistanceExcludingStartEndLink(r, network)); leg.setRoute(r); p1.addActivity(a); srcRoute.add(l3.getId()); r.setLinkIds(l6.getId(), srcRoute, l7.getId()); r.setDistance(RouteUtils.calcDistanceExcludingStartEndLink(r, network)); leg.setRoute(r); p2.addActivity(a); srcRoute.add(l5.getId()); r.setLinkIds(l6.getId(), srcRoute, l7.getId()); r.setDistance(RouteUtils.calcDistanceExcludingStartEndLink(r, network)); leg.setRoute(r); p3.addActivity(a);
@Override public void testZeroScore() { this.network = createNetwork(); PlanSelector<Plan,Person> selector = getPlanSelector(); Link l1 = network.getLinks().get(Id.create("1", Link.class)); Link l6 = network.getLinks().get(Id.create("6", Link.class)); Link l7 = network.getLinks().get(Id.create("7", Link.class)); Person person = PopulationUtils.getFactory().createPerson(Id.create(1, Person.class)); Plan p1 = PopulationUtils.createPlan(person); Activity a = PopulationUtils.createActivityFromLinkId("h", l6.getId()); Activity b = PopulationUtils.createActivityFromLinkId("w", l7.getId()); Leg leg = PopulationUtils.createLeg(TransportMode.car); leg.setDepartureTime(0.0); leg.setTravelTime(10.0); leg.setTravelTime( 10.0 - leg.getDepartureTime() ); NetworkRoute r = RouteUtils.createLinkNetworkRouteImpl(l6.getId(), l7.getId()); ArrayList<Id<Link>> srcRoute = new ArrayList<Id<Link>>(); srcRoute.add(l1.getId()); r.setLinkIds(l6.getId(), srcRoute, l7.getId()); r.setDistance(RouteUtils.calcDistanceExcludingStartEndLink(r, network)); leg.setRoute(r); p1.addActivity(a); p1.addLeg(leg); p1.addActivity(b); p1.setScore(0.0); person.addPlan(p1); assertNotNull(selector.selectPlan(person)); }
srcRoute.add(l1.getId()); r.setLinkIds(l6.getId(), srcRoute, l7.getId()); r.setDistance(RouteUtils.calcDistanceExcludingStartEndLink(r, network)); leg.setRoute(r); p1.addActivity(a); srcRoute.add(l3.getId()); r.setLinkIds(l6.getId(), srcRoute, l7.getId()); r.setDistance(RouteUtils.calcDistanceExcludingStartEndLink(r, network)); leg.setRoute(r); p2.addActivity(a); srcRoute.add(l5.getId()); r.setLinkIds(l6.getId(), srcRoute, l7.getId()); r.setDistance(RouteUtils.calcDistanceExcludingStartEndLink(r, network)); leg.setRoute(r); p3.addActivity(a); srcRoute.add(l1.getId()); r.setLinkIds(l6.getId(), srcRoute, l7.getId()); r.setDistance(RouteUtils.calcDistanceExcludingStartEndLink(r, network)); leg.setRoute(r); p1.addActivity(a);
route1.setLinkIds(link1.getId(), Arrays.asList(link2.getId()), link3.getId()); route1.setTravelTime(firstLegTravelTime); route1.setDistance(RouteUtils.calcDistanceExcludingStartEndLink(route1, this.network)); route1.setVehicleId( Id.create( "dummy1Vehicle", Vehicle.class) ); leg.setRoute(route1);