@Override public void endLegAndComputeNextState(double now) { events.processEvent(new PersonArrivalEvent(now, id, currentLinkId, dynLeg.getMode())); computeNextAction(dynLeg, now); }
@Override public void endLegAndComputeNextState(final double now) { eventsManager.processEvent( new PersonArrivalEvent(now, this.getId(), this.getDestinationLinkId(), this.getCurrentLeg().getMode())); this.currentPlanElement = iPlanElement.next(); if (this.iUmlaufStueck.hasNext()) { setNextLeg(); if (this.departureTime < now) { this.departureTime = now; } // this.sim.arrangeActivityStart(this); this.state = MobsimAgent.State.ACTIVITY ; // this.sim.reInsertAgentIntoMobsim(this) ; } else { // inserting an activity with end time infinity. one can debate if this is a hack: // * in general, a MobsimAgent can construct its path through the day on the fly // * in this particular instance, the agent pretends to have a plan // kai, mar'12 this.state = MobsimAgent.State.ACTIVITY ; this.departureTime = Double.POSITIVE_INFINITY ; } }
String legMode = atts.getValue(PersonArrivalEvent.ATTRIBUTE_LEGMODE); String mode = legMode == null ? null : legMode.intern(); this.events.processEvent(new PersonArrivalEvent(time, Id.create(atts.getValue(PersonArrivalEvent.ATTRIBUTE_PERSON), Person.class), Id.create(atts.getValue(PersonArrivalEvent.ATTRIBUTE_LINK), Link.class), mode)); } else if (PersonDepartureEvent.EVENT_TYPE.equals(eventType)) { String legMode = atts.getValue(PersonDepartureEvent.ATTRIBUTE_LEGMODE);
public void testGetAverageTravelTime(){ LinkedList<Event> events=new LinkedList<Event>(); events.add(new PersonDepartureEvent(20, Id.create("2", Person.class), Id.create("0", Link.class), TransportMode.car)); events.add(new PersonArrivalEvent(30, Id.create("2", Person.class), Id.create("0", Link.class), TransportMode.car)); events.add(new PersonDepartureEvent(90, Id.create("1", Person.class), Id.create("0", Link.class), TransportMode.car)); events.add(new PersonArrivalEvent(110, Id.create("1", Person.class), Id.create("0", Link.class), TransportMode.car)); assertEquals(30.0, EventLibrary.getSumTravelTime(events), EPSILON); }
public void testGetTravelTime(){ LinkedList<Event> events=new LinkedList<Event>(); events.add(new PersonDepartureEvent(20, Id.create("2", Person.class), Id.create("0", Link.class), TransportMode.car)); events.add(new PersonArrivalEvent(30, Id.create("2", Person.class), Id.create("0", Link.class), TransportMode.car)); events.add(new PersonDepartureEvent(90, Id.create("1", Person.class), Id.create("0", Link.class), TransportMode.car)); events.add(new PersonArrivalEvent(110, Id.create("1", Person.class), Id.create("0", Link.class), TransportMode.car)); assertEquals(20.0, EventLibrary.getTravelTime(events,1), EPSILON); }
PersonArrivalEvent arrivalEvent = new PersonArrivalEvent(arrivalTime, personId, act.getLinkId(), prevLeg.getMode()); eventQueue.add(arrivalEvent); ActivityStartEvent startEvent = new ActivityStartEvent(arrivalTime, personId, act.getLinkId(), act.getFacilityId(), act.getType());
e = new LinkEnterEvent(time, vehicleId, linkId); } else if (typeIndex == PersonArrival.ordinal()) { e = new PersonArrivalEvent(time, Id.createPersonId(vehicleId), linkId, "car"); } else if (typeIndex == ActivityStart.ordinal()) { e = new ActivityStartEvent(time, Id.createPersonId(vehicleId), linkId, null, null);
@Override public final void endLegAndComputeNextState(final double now) { this.getEvents().processEvent(new PersonArrivalEvent( now, this.getId(), this.getDestinationLinkId(), getCurrentLeg().getMode())); if( (!(this.getCurrentLinkId() == null && this.getDestinationLinkId() == null)) && !this.getCurrentLinkId().equals(this.getDestinationLinkId())) { log.error("The agent " + this.getPerson().getId() + " has destination link " + this.getDestinationLinkId() + ", but arrived on link " + this.getCurrentLinkId() + ". Setting agent state to ABORT."); this.setState(MobsimAgent.State.ABORT) ; } else { // note that when we are here we don't know if next is another leg, or an activity Therefore, we go to a general method: advancePlan(now) ; } this.currentLinkIndex = 0 ; }
histo.handleEvent(new PersonArrivalEvent(7*3600 + 6*60, person1Id, linkId, leg.getMode())); leg.setMode("train"); histo.handleEvent(new PersonDepartureEvent(8*3600, person1Id, linkId, leg.getMode())); histo.handleEvent(new PersonArrivalEvent(8*3600 + 11*60, person1Id, linkId, leg.getMode()));
public void testWriteReadXml() { final PersonArrivalEvent event = XmlEventsTester.testWriteReadXml(getOutputDirectory() + "events.xml", new PersonArrivalEvent(68423.98, Id.create("443", Person.class), Id.create("78-3", Link.class), TransportMode.bike)); assertEquals(68423.98, event.getTime(), EPSILON); assertEquals(Id.create("443", Person.class), event.getPersonId()); assertEquals(Id.create("78-3", Link.class), event.getLinkId()); assertEquals(TransportMode.bike, event.getLegMode()); } }
@Override public void processEvent() { Event event = null; // schedule enter link event // only, if car leg and is not empty if (vehicle.getCurrentLeg().getMode().equals(TransportMode.car) && (vehicle.getCurrentLinkRoute()!=null && vehicle.getCurrentLinkRoute().length!=0)){ event = new LinkEnterEvent(this.getMessageArrivalTime(), Id.create(vehicle.getOwnerPerson().getId().toString(), org.matsim.vehicles.Vehicle.class), vehicle.getCurrentLinkId()); eventsManager.processEvent(event); } // schedule VehicleLeavesTrafficEvent Id<org.matsim.vehicles.Vehicle> vehicleId = Id.create( this.vehicle.getOwnerPerson().getId() , org.matsim.vehicles.Vehicle.class ) ; event = new VehicleLeavesTrafficEvent(this.getMessageArrivalTime(), this.vehicle.getOwnerPerson().getId(), this.vehicle.getCurrentLinkId(), vehicleId, this.vehicle.getCurrentLeg().getMode(), 1.0 ); eventsManager.processEvent(event); // schedule AgentArrivalEvent event = new PersonArrivalEvent(this.getMessageArrivalTime(), this.vehicle.getOwnerPerson().getId(), this.vehicle.getCurrentLinkId(), this.vehicle.getCurrentLeg().getMode()); eventsManager.processEvent(event); // schedule ActStartEvent Activity nextAct = this.vehicle.getNextActivity(); double actStartEventTime = nextAct.getStartTime(); if (this.getMessageArrivalTime() > actStartEventTime) { actStartEventTime = this.getMessageArrivalTime(); } event = new ActivityStartEvent(actStartEventTime, this.vehicle.getOwnerPerson().getId(), this.vehicle.getCurrentLinkId(), nextAct.getFacilityId(), nextAct.getType()); eventsManager.processEvent(event); }
histo.handleEvent(new PersonArrivalEvent(2999, person1Id, linkId, leg.getMode())); leg.setMode("train"); histo.handleEvent(new PersonDepartureEvent(3000, person1Id, linkId, leg.getMode())); histo.handleEvent(new PersonArrivalEvent(3001, person1Id, linkId, leg.getMode())); leg.setMode("bus"); histo.handleEvent(new PersonDepartureEvent(3600, person1Id, linkId, leg.getMode())); histo.handleEvent(new PersonArrivalEvent(7200, person1Id, linkId, leg.getMode()));
@Test public void testCreatesLeg() { Scenario scenario = createTriangularNetwork(); EventsToLegs eventsToLegs = new EventsToLegs(scenario); RememberingLegHandler lh = new RememberingLegHandler(); eventsToLegs.addLegHandler(lh); eventsToLegs.handleEvent(new PersonDepartureEvent(10.0, Id.create("1", Person.class), Id.create("l1", Link.class), "walk")); eventsToLegs.handleEvent(new TeleportationArrivalEvent(30.0, Id.create("1", Person.class), 50.0)); eventsToLegs.handleEvent(new PersonArrivalEvent(30.0, Id.create("1", Person.class), Id.create("l2", Link.class), "walk")); Assert.assertNotNull(lh.handledLeg); Assert.assertEquals(10.0, lh.handledLeg.getLeg().getDepartureTime(), 1e-9); Assert.assertEquals(20.0, lh.handledLeg.getLeg().getTravelTime(), 1e-9); Assert.assertEquals(50.0, lh.handledLeg.getLeg().getRoute().getDistance(), 1e-9); }
testee.handleEvent(new ActivityEndEvent(leg.getDepartureTime(), DEFAULT_PERSON_ID, DEFAULT_LINK_ID, null, "act1")); testee.handleEvent(new PersonDepartureEvent(leg.getDepartureTime(), DEFAULT_PERSON_ID, DEFAULT_LINK_ID, leg.getMode())); testee.handleEvent(new PersonArrivalEvent(leg.getDepartureTime() + leg.getTravelTime(), DEFAULT_PERSON_ID, DEFAULT_LINK_ID, leg.getMode())); testee.handleEvent(new ActivityStartEvent(leg.getDepartureTime(), DEFAULT_PERSON_ID, DEFAULT_LINK_ID, null, "act2")); testee.handleEvent(new ActivityEndEvent(leg.getDepartureTime(), DEFAULT_PERSON_ID, DEFAULT_LINK_ID, null, "act2")); testee.handleEvent(new PersonDepartureEvent(leg.getDepartureTime(), DEFAULT_PERSON_ID, DEFAULT_LINK_ID, leg.getMode())); testee.handleEvent(new PersonArrivalEvent(leg.getDepartureTime() + leg.getTravelTime(), DEFAULT_PERSON_ID, DEFAULT_LINK_ID, leg.getMode())); testee.handleEvent(new ActivityStartEvent(leg.getDepartureTime(), DEFAULT_PERSON_ID, DEFAULT_LINK_ID, null, "act3")); testee.handleEvent(new ActivityEndEvent(leg.getDepartureTime(), DEFAULT_PERSON_ID, DEFAULT_LINK_ID, null, "act3")); testee.handleEvent(new PersonDepartureEvent(leg.getDepartureTime(), DEFAULT_PERSON_ID, DEFAULT_LINK_ID, leg.getMode())); testee.handleEvent(new PersonArrivalEvent(leg.getDepartureTime() + leg.getTravelTime(), DEFAULT_PERSON_ID, DEFAULT_LINK_ID, leg.getMode())); testee.handleEvent(new ActivityStartEvent(leg.getDepartureTime(), DEFAULT_PERSON_ID, DEFAULT_LINK_ID, null, "act4")); testee.handleEvent(new ActivityEndEvent(leg.getDepartureTime(), DEFAULT_PERSON_ID, DEFAULT_LINK_ID, null, "act4")); testee.handleEvent(new PersonDepartureEvent(leg.getDepartureTime(), DEFAULT_PERSON_ID, DEFAULT_LINK_ID, leg.getMode())); testee.handleEvent(new PersonArrivalEvent(leg.getDepartureTime() + leg.getTravelTime(), DEFAULT_PERSON_ID, DEFAULT_LINK_ID, leg.getMode())); testee.handleEvent(new ActivityStartEvent(leg.getDepartureTime(), DEFAULT_PERSON_ID, DEFAULT_LINK_ID, null, "act5"));
@Test public void testCreatesLegWithRoute() { Scenario scenario = createTriangularNetwork(); EventsToLegs eventsToLegs = new EventsToLegs(scenario); RememberingLegHandler lh = new RememberingLegHandler(); eventsToLegs.addLegHandler(lh); Id<Person> agentId = Id.create("1", Person.class); Id<Vehicle> vehId = Id.create("veh1", Vehicle.class); eventsToLegs.handleEvent(new PersonDepartureEvent(10.0, agentId, Id.createLinkId("l1"), "car")); eventsToLegs.handleEvent(new PersonEntersVehicleEvent(10.0, agentId, vehId)); eventsToLegs.handleEvent(new VehicleEntersTrafficEvent(10.0, agentId, Id.createLinkId("l1"), vehId, "car", 1.0)); eventsToLegs.handleEvent(new LinkLeaveEvent(10.0, vehId, Id.createLinkId("l1"))); eventsToLegs.handleEvent(new LinkEnterEvent(11.0, vehId, Id.createLinkId("l2"))); eventsToLegs.handleEvent(new LinkLeaveEvent(15.0, vehId, Id.createLinkId("l2"))); eventsToLegs.handleEvent(new LinkEnterEvent(16.0, vehId, Id.createLinkId("l3"))); eventsToLegs.handleEvent(new VehicleLeavesTrafficEvent(30.0, agentId, Id.createLinkId("l3"), vehId, "car", 1.0)); eventsToLegs.handleEvent(new PersonArrivalEvent(30.0, agentId, Id.createLinkId("l3"), "car")); Assert.assertNotNull(lh.handledLeg); Assert.assertEquals(10.0,lh.handledLeg.getLeg().getDepartureTime(), 1e-9); Assert.assertEquals(20.0,lh.handledLeg.getLeg().getTravelTime(), 1e-9); Assert.assertEquals(20.0,lh.handledLeg.getLeg().getRoute().getTravelTime(), 1e-9); Assert.assertEquals(550.0,lh.handledLeg.getLeg().getRoute().getDistance(), 1e-9); }
scoring2.handleEvent( leaveVehicle ); final Event arrival = new PersonArrivalEvent(leg.getDepartureTime() + leg.getTravelTime(), Id.create( 1, Person.class ), Id.create( 1, Link.class ), leg.getMode()); scoring1.handleEvent( arrival ); scoring2.handleEvent( arrival ); scoring2.handleEvent( leaveVehicle ); final Event arrival = new PersonArrivalEvent(leg.getDepartureTime() + leg.getTravelTime(), Id.create( 1, Person.class ), Id.create( 1, Link.class ), leg.getMode()); scoring1.handleEvent( arrival ); scoring2.handleEvent( arrival ); scoring2.handleEvent( leaveVehicle ); final Event arrival = new PersonArrivalEvent(leg.getDepartureTime() + leg.getTravelTime(), Id.create( 1, Person.class ), Id.create( 1, Link.class ), leg.getMode()); scoring1.handleEvent( arrival ); scoring2.handleEvent( arrival );
scoring2.handleEvent( leaveVehicle ); final Event arrival = new PersonArrivalEvent(leg.getDepartureTime() + leg.getTravelTime(), Id.create( 1, Person.class ), Id.create( 1, Link.class ), leg.getMode()); scoring1.handleEvent( arrival ); scoring2.handleEvent( arrival );
events.processEvent(new ActivityEndEvent(i*200 + 100, personId, Id.createLinkId(0), null, "work")); events.processEvent(new PersonDepartureEvent(i*200+100, personId, Id.createLinkId(0), "car")); events.processEvent(new PersonArrivalEvent(i*200+200, personId, Id.createLinkId(0), "car")); events.afterSimStep(i*200+200);
return new PersonArrivalEvent(pe.getPersonArrival().getTime(), Id.createPersonId(pe.getPersonArrival().getPersId().getId()), Id.createLinkId(pe.getPersonArrival().getLinkId().getId()), pe.getPersonArrival().getLegMode());
events.processEvent(new ActivityEndEvent(i*200 + 100, personId, Id.createLinkId(0), null, "work")); events.processEvent(new PersonDepartureEvent(i*200+100, personId, Id.createLinkId(0), "car")); events.processEvent(new PersonArrivalEvent(i*200+200, personId, Id.createLinkId(0), "car"));