Pedestrians do not move to a new target, if they reached their only target and get a new target
Summary
If pedestrians with one non-absorbing target reach it, they do not move to a new target, when this is set from outside (via TraCI).
What is the current bug behavior?
The pedestrians do not move anymore, even though they have a target.
What is the expected correct behavior?
The pedestrians should always be ready to receive a new target. E. g. if you meet with friends at a certain location, you might spontaneously decide to go to some other place.
Steps to reproduce
- Change absorbing to false for both targets
- Clean & Compile
- Start Manager
- Start TestClient
- ctr.nextStep until at least one pedestrian reached the target (27.11.2019 the default scenario has the targets with IDs "2" and "3").
- pers.setTargetList personID newTarget
personID is the ID of a pedestrian that reached its target,
newTarget is the ID of a target which is different than the target that pedestrian personID has reached
- ctr.nextStep
Relevant data
test_client_phsc/488f1e13
Scenarios/Demos/roVer/scenarios/scenario002.scenario
Quoting Stefan:
Es kann sein das die Personen beim OSM Model dann aus deiner liste raus-fliegen in der Pedestrians ein update call bekommen. Wie man das beheben kann weiß ich nicht genau. Das einfachste was mir einfällt wäre ein TargetChanger vor das non-absorbing Ziel setzen oder dem Pedestrian vor dem erreichen das non-absorbing Ziels ein neues Ziel in die Liste einfügen.
And:
Ja. Genau das wird gemacht. Hat ein Pedestrian mehrere ziele (targetList: [1, 2, 3]) und Ziel 1 ist non-absorbing, dann wird nach dem erreichen von ziel 1 die Liste verändert zu targetList:[2,3]. Wenn die Liste danach leer wird kann es gut möglich sein, dass diese Personen nie mehr ein update Call bekommen, weil irgendwo ein filter vorkommt mit getPedestriansWithTargetId(int x) o.ä. --> Vermutlich hats du hier einen Bug gefunden Eröffne mal ein Ticket. Ich weiß noch nicht was das gewünschte verhalten sein sollte.