@Override public void notifyAfterMobsim(AfterMobsimEvent event) { // TODO[AN] This can be used to hook in a Farebox for (Entry<Id<Person>, List<StageContainer>> agentId2stageContainersEntry : this.agentId2stageContainerListMap.entrySet()) { double totalFareOfAgent = 0.0; for (StageContainer stageContainer : agentId2stageContainersEntry.getValue()) { totalFareOfAgent += this.ticketMachine.getFare(stageContainer); } this.eventsManager.processEvent(new PersonMoneyEvent(this.mobsimShutdownTime, agentId2stageContainersEntry.getKey(), -totalFareOfAgent)); } }
public void testWriteReadXml() { final PersonMoneyEvent event1 = new PersonMoneyEvent(25560.23, Id.create("1", Person.class), 2.71828); final PersonMoneyEvent event2 = XmlEventsTester.testWriteReadXml(getOutputDirectory() + "events.xml", event1); assertEquals(event1.getTime(), event2.getTime(), EPSILON); assertEquals(event1.getPersonId().toString(), event2.getPersonId().toString()); assertEquals(event1.getAmount(), event2.getAmount(), EPSILON); } }
@Override public void handleEvent(PersonMoneyEvent event) { writeLine(event.getTime(), event.getPersonId(), null, Number.PersonMoney.ordinal(), "agentMoney" + "\t" + event.getAmount()); }
@Override public void handleEvent(PersonMoneyEvent event) { List<String> legTypes = new ArrayList<>() ; final Population pop = this.scenario.getPopulation(); Person person = pop.getPersons().get( event.getPersonId() ) ; legTypes.add( this.getSubpopName(person)) ; double item = - event.getAmount() ; this.addItemToAllRegisteredTypes(legTypes, StatType.personPayments, item); // (this is not additive by person, but it is additive by legType. So if a person has multiple money events, they // are added up in the legType category. kai, feb'14) add(person.getId(), item, PAYMENTS); }
scoringFunction.agentStuck(o.getTime()); } else if (o instanceof PersonMoneyEvent) { scoringFunction.addMoney(((PersonMoneyEvent) o).getAmount());
assertEquals(25200.0, e1.getTime(), EPSILON); assertEquals("1", e1.getPersonId().toString()); assertEquals(2.34, e1.getAmount(), EPSILON); assertEquals(30600.0, e2.getTime(), EPSILON); assertEquals("2", e2.getPersonId().toString()); assertEquals(-3.45, e2.getAmount(), EPSILON);
ProtobufEvents.PersonMoneyEvent.Builder pm = ProtobufEvents.PersonMoneyEvent.newBuilder() .setTime(event.getTime()) .setPersId(ProtobufEvents.PersonId.newBuilder().setId(((PersonMoneyEvent) event).getPersonId().toString())) .setAmount(((PersonMoneyEvent) event).getAmount()); eb.setType(ProtobufEvents.Event.Type.PersonMoney).setPersonMoney(pm);
@Override public void notifyAfterMobsim(final AfterMobsimEvent event) { for ( Map.Entry<Id, BeingTogetherScoring> e : scorings.entrySet() ) { final Id id = e.getKey(); final BeingTogetherScoring scoring = e.getValue(); events.processEvent( new PersonMoneyEvent(Time.MIDNIGHT, id, scoring.getScore() / marginalUtilityOfMoney) ); } }
public void testWriteReadXxml() { final PersonMoneyEvent event1 = new PersonMoneyEvent(7.0*3600, Id.create(1, Person.class), 2.34); final PersonMoneyEvent event2 = new PersonMoneyEvent(8.5*3600, Id.create(2, Person.class), -3.45); assertEquals(event1.getTime(), e1.getTime(), EPSILON); assertEquals(event1.getPersonId().toString(), e1.getPersonId().toString()); assertEquals(event1.getAmount(), e1.getAmount(), EPSILON); assertEquals(event2.getTime(), e2.getTime(), EPSILON); assertEquals(event2.getPersonId().toString(), e2.getPersonId().toString()); assertEquals(event2.getAmount(), e2.getAmount(), EPSILON);
@Override public void handleEvent(LinkLeaveEvent event) { if (!decongestionInfo.getTransitVehicleIDs().contains(event.getVehicleId()) && decongestionInfo.getlinkInfos().get(event.getLinkId()) != null) { int currentTimeBin = (int) (event.getTime() / this.decongestionInfo.getScenario().getConfig().travelTimeCalculator().getTraveltimeBinSize()); if (decongestionInfo.getlinkInfos().get(event.getLinkId()).getTime2toll().get(currentTimeBin) != null) { double toll = decongestionInfo.getlinkInfos().get(event.getLinkId()).getTime2toll().get(currentTimeBin); this.eventsManager.processEvent(new PersonMoneyEvent(event.getTime(), this.decongestionInfo.getVehicleId2personId().get(event.getVehicleId()), -1. * toll)); // this.eventsManager.processEvent(new PersonLinkMoneyEvent(event.getTime(), this.decongestionInfo.getVehicleId2personId().get(event.getVehicleId()), event.getLinkId(), -1. * toll, event.getTime(), "congestion")); this.totalTollPayments = this.totalTollPayments + toll; } } }
@Override public void handleEvent(final LinkEnterEvent event, final Link link) { Id<Person> driverId = delegate.getDriverOfVehicle(event.getVehicleId()); Cost cost = CalcPaidToll.this.scheme.getLinkCostInfo(link.getId(), event.getTime(), driverId, event.getVehicleId() ); if (cost != null) { AgentTollInfo info = CalcPaidToll.this.agents.get(driverId); if (info == null) { /* The agent is not yet "registered" */ /* Generate a "registration object" */ info = new AgentTollInfo(); /* Register it. */ CalcPaidToll.this.agents.put(driverId, info); } info.toll += cost.amount; events.processEvent(new PersonMoneyEvent(event.getTime(),driverId,-cost.amount)); } } }
this.events.processEvent(new VehicleAbortsEvent(time, Id.create(atts.getValue(VehicleAbortsEvent.ATTRIBUTE_VEHICLE), Vehicle.class), linkId)); }else if (PersonMoneyEvent.EVENT_TYPE.equals(eventType) || "agentMoney".equals(eventType)) { this.events.processEvent(new PersonMoneyEvent(time, Id.create(atts.getValue(PersonMoneyEvent.ATTRIBUTE_PERSON), Person.class), Double.parseDouble(atts.getValue(PersonMoneyEvent.ATTRIBUTE_AMOUNT)))); } else if (PersonEntersVehicleEvent.EVENT_TYPE.equals(eventType)) { String personString = atts.getValue(PersonEntersVehicleEvent.ATTRIBUTE_PERSON);
@Override public void handleEvent(final LinkEnterEvent event, final Link link) { Id<Person> driverId = delegate.getDriverOfVehicle(event.getVehicleId()); Cost cost = CalcPaidToll.this.scheme.getLinkCostInfo(link.getId(), event.getTime(), driverId, event.getVehicleId() ); if (cost != null) { AgentTollInfo info = CalcPaidToll.this.agents.get(driverId); if (info == null) { /* The agent is not yet "registered" */ /* Generate a "registration object" */ info = new AgentTollInfo(); /* Register it. */ CalcPaidToll.this.agents.put(driverId, info); /* The toll amount comes from the current link, but should * be the same for all links. */ info.toll = cost.amount; events.processEvent(new PersonMoneyEvent(event.getTime(),driverId,-cost.amount)); } } } }
events.processEvent(new PersonMoneyEvent(event.getTime(),driverId,-cost.amount));
@Override public void handleEvent(final LinkEnterEvent event, final Link link) { Id<Person> driverId = delegate.getDriverOfVehicle(event.getVehicleId()); Cost cost = CalcPaidToll.this.scheme.getLinkCostInfo(link.getId(), event.getTime(), driverId, event.getVehicleId()); if (cost != null) { double newToll = link.getLength() * cost.amount; AgentTollInfo info = CalcPaidToll.this.agents.get(driverId); if (info == null) { /* The agent is not yet "registered". */ /* Generate a "registration object. */ info = new AgentTollInfo(); /* Register it. */ CalcPaidToll.this.agents.put(driverId, info); } info.toll += newToll; events.processEvent(new PersonMoneyEvent(event.getTime(),driverId,-newToll)); } } }
@Override public void handleEvent(NoiseEventCaused event) { // negative amount since from here the amount is interpreted as costs double amount = this.noiseContext.getNoiseParams().getNoiseTollFactor() * event.getAmount() * (-1); this.amountSum = this.amountSum + amount; PersonMoneyEvent moneyEvent = new PersonMoneyEvent(event.getTime(), event.getCausingAgentId(), amount); this.events.processEvent(moneyEvent); PersonLinkMoneyEvent linkMoneyEvent = new PersonLinkMoneyEvent(event.getTime(), event.getCausingAgentId(), event.getLinkId(), amount, event.getLinkEnteringTime(), "noise"); this.events.processEvent(linkMoneyEvent); }
/** * Tests that an AgentUtilityEvent is handled by calling the method addUtility() of a scoring function. */ public void testAddMoney() { MutableScenario scenario = (MutableScenario) ScenarioUtils.createScenario(ConfigUtils.createConfig()); Population population = scenario.getPopulation(); Person person = PopulationUtils.getFactory().createPerson(Id.create(1, Person.class)); population.addPerson(person); MockScoringFunctionFactory sfFactory = new MockScoringFunctionFactory(); EventsManager events = EventsUtils.createEventsManager(); EventsToScore e2s = EventsToScore.createWithoutScoreUpdating(scenario, sfFactory, events); e2s.beginIteration(0); events.processEvent(new PersonMoneyEvent(3600.0, person.getId(), 3.4)); e2s.finish(); assertEquals(3.4, e2s.getAgentScore(person.getId())); }
@Test(expected = RuntimeException.class) public void exceptionInScoringFunctionPropagates() { Config config = ConfigUtils.createConfig(); Scenario scenario = ScenarioUtils.createScenario(config); Id<Person> personId = Id.createPersonId(1); scenario.getPopulation().addPerson(scenario.getPopulation().getFactory().createPerson(personId)); EventsManager events = EventsUtils.createEventsManager(config); ControlerListenerManagerImpl controlerListenerManager = new ControlerListenerManagerImpl(); ScoringFunctionFactory throwingScoringFunctionFactory = new ThrowingScoringFunctionFactory(); EventsToActivities e2acts = new EventsToActivities(controlerListenerManager); EventsToLegs e2legs = new EventsToLegs(scenario.getNetwork()); EventsToLegsAndActivities e2legsActs = new EventsToLegsAndActivities(e2legs, e2acts); events.addHandler(e2legsActs); ScoringFunctionsForPopulation scoringFunctionsForPopulation = new ScoringFunctionsForPopulation( controlerListenerManager, events, e2acts, e2legs, scenario.getPopulation(), throwingScoringFunctionFactory ); controlerListenerManager.fireControlerIterationStartsEvent(0); events.processEvent(new PersonMoneyEvent(3600.0, personId, 3.4)); scoringFunctionsForPopulation.finishScoringFunctions(); }
events.processEvent(new PersonMoneyEvent(3600.0, person.getId(), mockIteration-98 ));
events.initProcessing(); for (int i=0; i<MAX; i++) { events.processEvent(new PersonMoneyEvent(i*200, personId, 1.0)); events.processEvent(new ActivityStartEvent(i*200, personId, Id.createLinkId(0), null, "work")); events.processEvent(new ActivityEndEvent(i*200 + 100, personId, Id.createLinkId(0), null, "work"));