1 package tutorial.programming.example16customscoring;
3 import java.util.HashMap;
33 import javax.inject.Inject;
39 private Id<Person> personId;
41 public RainOnPersonEvent(
double time, Id<Person> personId) {
43 this.personId = personId;
47 public Id<Person> getPersonId() {
52 public String getEventType() {
58 final Map<String, String> attributes = super.getAttributes();
59 attributes.put(
"person", getPersonId().
toString());
65 public static void main(String[] args) {
66 String configFile =
"examples/tutorial/config/example5-config.xml" ;
73 final String DISLIKES_LEAVING_EARLY_AND_COMING_HOME_LATE =
"DISLIKES_LEAVING_EARLY_AND_COMING_HOME_LATE";
76 if (Integer.parseInt(person.getId().toString()) % 2 == 0) {
77 personAttributes.
putAttribute(person.getId().toString(), DISLIKES_LEAVING_EARLY_AND_COMING_HOME_LATE,
true);
79 personAttributes.
putAttribute(person.getId().toString(), DISLIKES_LEAVING_EARLY_AND_COMING_HOME_LATE,
false);
86 public void install() {
90 bind(RainEngine.class).asEagerSingleton();
112 if ((Boolean) personAttributes.
getAttribute(person.getId().toString(), DISLIKES_LEAVING_EARLY_AND_COMING_HOME_LATE)) {
114 private double score;
115 @Override
public void handleFirstActivity(
Activity act) {
120 @Override
public void handleActivity(
Activity act) {}
121 @Override
public void handleLastActivity(
Activity act) {
126 @Override
public void finish() {}
128 public double getScore() {
135 private double score;
137 public void handleEvent(
Event event) {
138 if (event instanceof RainOnPersonEvent) {
142 @Override
public void finish() {}
144 public double getScore() {
149 return sumScoringFunction;
160 private Map<Id<Vehicle>, Id<Person>> vehicle2driver =
new HashMap<>();
164 this.eventsManager = eventsManager;
169 public void reset(
int iteration) {}
172 public void handleEvent(PersonEntersVehicleEvent event) {
173 vehicle2driver.put(event.getVehicleId(),
event.getPersonId());
177 public void handleEvent(LinkEnterEvent event) {
178 if (rainingAt(event.getTime(),
event.getLinkId())) {
179 eventsManager.
processEvent(
new RainOnPersonEvent(event.getTime(), vehicle2driver.get(event.getVehicleId())));
184 private boolean rainingAt(
double time, Id<Link> linkId) {
185 if (time > (7.5 * 60.0 * 60.0) && linkId.toString().equals(
"1")) {
static void main(String[] args)
final void setScoringFunctionFactory(final ScoringFunctionFactory scoringFunctionFactory)
Object putAttribute(final String objectId, final String attribute, final Object value)
void addScoringFunction(BasicScoring scoringFunction)
final void addOverridingModule(AbstractModule abstractModule)
Attributes getAttributes()
Map< Id< Person >,?extends Person > getPersons()
ObjectAttributes getPersonAttributes()
void addHandler(final EventHandler handler)
void processEvent(final Event event)
Population getPopulation()
Object getAttribute(final String objectId, final String attribute)
static Config loadConfig(final String filename, ConfigGroup...customModules)
static Scenario loadScenario(final Config config)