Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
9.2.2023: Due to updates GitLab will be unavailable for some minutes between 9:00 and 11:00.
Open sidebar
vadere
vadere
Commits
432220d2
Commit
432220d2
authored
Oct 21, 2022
by
Christina
Browse files
add comments to CentroidGroupSpeedAdjuster
parent
3dd31225
Pipeline
#1096833
passed with stages
in 122 minutes and 5 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
VadereSimulator/src/org/vadere/simulator/models/groups/cgm/CentroidGroupSpeedAdjuster.java
View file @
432220d2
...
...
@@ -7,6 +7,31 @@ import org.vadere.state.scenario.Pedestrian;
import
java.util.List
;
/**
The adjustment of speeds is based on the concept presented in seitz-2014 (doi: 10.1007/978-3-319-02447-9_67).
Group members ahead slow down and wait for others. Group members behind increase their speed to catch up.
However, the seitz-2014 model did not consider that group members cannot always wait, e.g. when a corridor is very busy.
In such cases, the seitz-2014 model can produce unrealistic blockades:
group members cannot catch up when there are people from other groups are already standing in the way.
Since they cannot catch up, their group members ahead slow down and start waiting.
This results in even more people blocking each other, which can lead to a complete congestion.
In reality, group members would not wait in such a situation.
Depending on the flow situation, they would move on and try to find the lost member later.
For this reason, the model of seitz-2014 was extended in the context of a bachelor thesis (hertle-2022).
The basic principle is that group members can temporarily get lost and act as individuals.
Agents ahead slow down, but they do no longer wait if they are too far apart.
In this case, they move on and act as individuals.
A similar behavior was implemented for agents behind.
This behavior is optional and can be controlled by AttributesCGM attributes.
**/
public
class
CentroidGroupSpeedAdjuster
implements
SpeedAdjuster
{
private
final
CentroidGroupModel
groupCollection
;
...
...
@@ -35,7 +60,7 @@ public class CentroidGroupSpeedAdjuster implements SpeedAdjuster {
group
.
getRelativeDistanceCentroid
(
ped
,
false
,
true
)
>
7
)
{
result
=
Double
.
MIN_VALUE
;
}
group
.
setLostMember
(
ped
);
group
.
setLostMember
(
ped
);
//TODO: [priority=low] [task=refactoring] do not set lost members in the speed adjuster
}
}
}
...
...
@@ -50,7 +75,7 @@ public class CentroidGroupSpeedAdjuster implements SpeedAdjuster {
if
(!
group
.
isCentroidWithinObstacle
())
{
result
=
Double
.
MIN_VALUE
;
// wait behavior
if
(
groupCollection
.
getAttributesCGM
().
isLostMembers
())
{
group
.
setLostMember
(
ped
);
group
.
setLostMember
(
ped
);
//TODO: [priority=low] [task=refactoring] do not set lost members in the speed adjuster
}
}
// else: do not wait, treat group member as "lost"
...
...
@@ -67,7 +92,7 @@ public class CentroidGroupSpeedAdjuster implements SpeedAdjuster {
result
/=
0.65
;
if
(
groupCollection
.
getAttributesCGM
().
isLostMembers
())
{
if
(!
group
.
isCentroidWithinObstacle
())
{
group
.
setLostMember
(
ped
);
group
.
setLostMember
(
ped
);
//TODO: [priority=low] [task=refactoring] do not set lost members in the speed adjuster
}
}
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment