22 package org.matsim.core.scoring;
24 import java.util.ArrayList;
25 import java.util.List;
27 import org.apache.logging.log4j.LogManager;
28 import org.apache.logging.log4j.Logger;
48 void handleFirstActivity(
final Activity act);
50 void handleLastActivity(
final Activity act);
102 for (
ActivityScoring activityScoringFunction : this.activityScoringFunctions) {
103 activityScoringFunction.handleFirstActivity(activity);
106 for (
ActivityScoring activityScoringFunction : this.activityScoringFunctions) {
107 activityScoringFunction.handleActivity(activity);
110 for (
ActivityScoring activityScoringFunction : this.activityScoringFunctions) {
111 activityScoringFunction.handleLastActivity(activity);
115 "Trying to score an activity without start or end time. Should not happen. Activity=" + activity);
121 for (
LegScoring legScoringFunction : this.legScoringFunctions) {
122 legScoringFunction.handleLeg(leg);
128 for (
TripScoring tripScoringFunction : this.tripScoringFunctions) {
129 tripScoringFunction.handleTrip(trip);
135 for (
MoneyScoring moneyScoringFunction : this.moneyScoringFunctions) {
136 moneyScoringFunction.addMoney(amount);
142 for (
ScoreScoring scoreScoringFunction : this.scoreScoringFunctions) {
143 scoreScoringFunction.addScore(amount);
149 for (
AgentStuckScoring agentStuckScoringFunction : this.agentStuckScoringFunctions) {
150 agentStuckScoringFunction.agentStuck(time);
157 eventScoringFunction.handleEvent(event) ;
163 for (
BasicScoring basicScoringFunction : this.basicScoringFunctions) {
164 basicScoringFunction.finish();
174 for (
BasicScoring basicScoringFunction : this.basicScoringFunctions) {
175 double contribution = basicScoringFunction.getScore();
176 if (log.isTraceEnabled()) {
177 log.trace(
"Contribution of scoring function: " + basicScoringFunction.getClass().getName() +
" is: " + contribution);
179 if ( Double.isNaN( contribution ) ) {
182 throw new RuntimeException(
"Contribution of scoring function: " + basicScoringFunction.getClass().getName() +
" is NaN! Behavior with NaN scores is undefined." );
184 score += contribution;
204 this.basicScoringFunctions.add(scoringFunction);
207 this.activityScoringFunctions.add((ActivityScoring) scoringFunction);
211 this.agentStuckScoringFunctions.add((AgentStuckScoring) scoringFunction);
215 this.legScoringFunctions.add((LegScoring) scoringFunction);
219 this.tripScoringFunctions.add((TripScoring) scoringFunction);
223 this.moneyScoringFunctions.add((MoneyScoring) scoringFunction);
227 this.scoreScoringFunctions.add((ScoreScoring) scoringFunction);
231 this.arbitraryEventScoringFunctions.add((ArbitraryEventScoring) scoringFunction);
OptionalTime getEndTime()
default void explainScore(StringBuilder out)
void addScoringFunction(BasicScoring scoringFunction)
OptionalTime getStartTime()
final List< ArbitraryEventScoring > arbitraryEventScoringFunctions
final List< LegScoring > legScoringFunctions
final List< BasicScoring > basicScoringFunctions
final List< AgentStuckScoring > agentStuckScoringFunctions
final List< ScoreScoring > scoreScoringFunctions
final List< ActivityScoring > activityScoringFunctions
final void handleTrip(Trip trip)
void addScore(double amount)
final List< TripScoring > tripScoringFunctions
final void handleLeg(Leg leg)
final List< MoneyScoring > moneyScoringFunctions
final void handleActivity(Activity activity)
void explainScore(StringBuilder out)
void agentStuck(double time)
void handleEvent(Event event)
void addMoney(double amount)