JPScore issueshttps://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues2018-03-16T15:00:26+01:00https://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues/185height of obstacles2018-03-16T15:00:26+01:00Mohcine Chraibim.chraibi@fz-juelich.deheight of obstaclesI am asking me the question if we could not define a height of obstacles.
Suppose we have an obstacle with a height of 1m (table). The obstacle will have an influence on the motion but not on the routing of an agent.
Maybe we could skip...I am asking me the question if we could not define a height of obstacles.
Suppose we have an obstacle with a height of 1m (table). The obstacle will have an influence on the motion but not on the routing of an agent.
Maybe we could skip these obstacles (up to a specific height) when the graph is set up?
This would avoid a lot of trouble with stuck agents in the most cases...Mohcine Chraibim.chraibi@fz-juelich.deMohcine Chraibim.chraibi@fz-juelich.dehttps://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues/184Quickest - Router: Suggestions on how to tackle problem2018-03-16T15:00:26+01:00Mohcine Chraibim.chraibi@fz-juelich.deQuickest - Router: Suggestions on how to tackle problem## Task ##
Inside of a room: Estimated Time of Arrival to a door, based on traffic/queues
## Current Solution (rough) ##
- searching for alternate routes
- searching for pedestrians in that room in front of alternate doors
- calc ETA
- ...## Task ##
Inside of a room: Estimated Time of Arrival to a door, based on traffic/queues
## Current Solution (rough) ##
- searching for alternate routes
- searching for pedestrians in that room in front of alternate doors
- calc ETA
- calc if current agent can break out of queue or is stuck inside
- change destination if possible
## Suggestion ##
- create a temp polygon of (ped-Pos, Door-Point-a, Door-Point-b)
- find other pedestrian that are inside polygon
- calc ETA from mean speed
### Pro ###
- using existing functions
- length of possible queue is respected
- similar to current solution
### Con ###
- calculation time grows with n^2+ (peds)
- similar to current solution
## Suggestion ##
- pedestrian have a counter
- pedestrian counter is reset when spawning or entering a new room
- while passing a door, the current counter (time-in-old-room) is stored as door-member
- estimate ETA by asking the door for last value of (time-in-old-room) of the ped that exited last
### Pro ###
- calculation does not grow with n^2
### Con ###
- last in queue will give door a bad rating, although queue is not there anymore.. (could be solved via door-member being a "soft"-state, that will reset after a few seconds)
**Please comment and/or post other Suggestions**https://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues/183GOALS are not 3d proof2018-03-16T15:00:26+01:00Mohcine Chraibim.chraibi@fz-juelich.deGOALS are not 3d proofgoals are defined without a z-coordinate.
As long as they are outside, we can assume, they are well-defined. Are goals allowed to be inside a building? (I think, they are. At least the program checks, if a pedestrian reached its goal ev...goals are defined without a z-coordinate.
As long as they are outside, we can assume, they are well-defined. Are goals allowed to be inside a building? (I think, they are. At least the program checks, if a pedestrian reached its goal even if he is inside.)
If so, we need to talk about that.https://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues/182Discussion: Should we put all asserts, outputs and robustness-checks in #ifde...2018-03-16T15:00:26+01:00Mohcine Chraibim.chraibi@fz-juelich.deDiscussion: Should we put all asserts, outputs and robustness-checks in #ifdef DEBUG ... #endif blocksHey everyone,
I was thinking about the complexity of jpscore and all the stuff that is logged, bound-checked and stuff:
Some of that is done because of **good** defensive programming style, some is done to track the program or to find ...Hey everyone,
I was thinking about the complexity of jpscore and all the stuff that is logged, bound-checked and stuff:
Some of that is done because of **good** defensive programming style, some is done to track the program or to find bugs, etc..
I would like to ask you all, if we want to define one or two macros for conditional compilation (like **DEBUG** and/or **VERBOSE**, **ASSERT**) to but those checks, outputs and stuff in additional compilations and have a raw, fast compilation without all of them, once we verified the correctness of the program.
Example: While programming the ffRouter, I deal with several floor-fields (one for each room). If I query a direction and one of the two arguments (pedestrian, goal) is outside the floor-field, the result will be devastating (most likely a segfault).
So I do check in each query, if both arguments are valid. This will slow down the program. Once I know, the program-logic is correct, I could remove most of the checks - (at least most of the debug-output).
It is a (controversial) technique, to put those parts of a program in conditional blocks (``#ifdef KEYWORD``). What do you think about that?https://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues/173Pedestrians are too near to each other - simulation stopped - Quickest Path2018-06-13T16:41:30+02:00Mohcine Chraibim.chraibi@fz-juelich.dePedestrians are too near to each other - simulation stopped - Quickest PathWarning: in velocityModel
pedestrians are to near to ech other.
room "9" ; subroom "10"
[Ped_to_near.mp4](/uploads/94dad243a57b1e81082a5fa60a4e9599/Ped_to_near.mp4)
[sim_stop_quickest.rar](/uploads/781fd950a542c6d94d430917c2b59a68/sim_...Warning: in velocityModel
pedestrians are to near to ech other.
room "9" ; subroom "10"
[Ped_to_near.mp4](/uploads/94dad243a57b1e81082a5fa60a4e9599/Ped_to_near.mp4)
[sim_stop_quickest.rar](/uploads/781fd950a542c6d94d430917c2b59a68/sim_stop_quickest.rar)
![sim_stop_quickest](/uploads/14285ad61dbb6ebc0b5df4ddef20517b/sim_stop_quickest.jpg)Mohcine Chraibim.chraibi@fz-juelich.deMohcine Chraibim.chraibi@fz-juelich.dehttps://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues/172Quickest Path - circling agents - no path to exit2018-06-13T16:41:30+02:00Mohcine Chraibim.chraibi@fz-juelich.deQuickest Path - circling agents - no path to exitstrange agent behavior by using quickest path.
will try to fix it with Hlines.
- [cyrcling_agents_m1.mp4](/uploads/90337eefd1e2488f2400d5f3109a7036/cyrcling_agents_m1.mp4)
- [cyrcling_agents_m2.mp4](/uploads/ca1558fbdf550e50634e868fd4...strange agent behavior by using quickest path.
will try to fix it with Hlines.
- [cyrcling_agents_m1.mp4](/uploads/90337eefd1e2488f2400d5f3109a7036/cyrcling_agents_m1.mp4)
- [cyrcling_agents_m2.mp4](/uploads/ca1558fbdf550e50634e868fd40e478d/cyrcling_agents_m2.mp4)
- [circling_agents_files.rar](/uploads/1f95a6845bde8b134df50f309f44eb90/circling_agents_files.rar)Arne GrafArne Grafhttps://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues/170Pedestrian left room/subroom in an unusual way2018-06-13T16:41:49+02:00Mohcine Chraibim.chraibi@fz-juelich.dePedestrian left room/subroom in an unusual wayThis is not an error, but it might happen, that a pedestrian can change its room/subroom from
an intended door.
Hier an example:
- Pedestrians have door 1225 (right) as a goal, because this is the global_shortest way.
- However sinc...This is not an error, but it might happen, that a pedestrian can change its room/subroom from
an intended door.
Hier an example:
- Pedestrians have door 1225 (right) as a goal, because this is the global_shortest way.
- However since door 1224 (left) does no effect pedestrians, they may cross this door, which leads to the *error*..
`How can we solve this?`
- Ignore the error?
- Close all doors other than my door?
- ....
![animated](/uploads/dcadd8891434eb746d27b9bf6f2b1c28/animated.gif)
@OSchmidts @kemloh @Arne @robhttps://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues/169Router behavior by "equivalent" doors2018-06-13T16:41:30+02:00Mohcine Chraibim.chraibi@fz-juelich.deRouter behavior by "equivalent" doors@all When we have two doors near each other the router delivers the nearest door. The other one is constantly ignored.
Sometimes this choice does not seem to be correct. See:
![](https://cst.version.fz-juelich.de/jupedsim/jpscore/upl...@all When we have two doors near each other the router delivers the nearest door. The other one is constantly ignored.
Sometimes this choice does not seem to be correct. See:
![](https://cst.version.fz-juelich.de/jupedsim/jpscore/uploads/1ce94146b7ca84c54b2d045ba224b1c6/Screen_Shot_2016-01-28_at_15.53.09.png)
-------------------------------
Now we can change the Hline before the two exits so that we can influence this behavior. That is the result
![animated](/uploads/5f39dc37736ac7b4ba1c8ad11f4186ff/animated.gif)https://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues/164LC is 2D!!2018-06-13T16:41:30+02:00Mohcine Chraibim.chraibi@fz-juelich.deLC is 2D!!In 3D rooms pedestrians in different levels, which are obviously not neighbors will be recognized as such.
Example: Ped1 (0, 0, 10), ped2 (0, 1, 0) are considered by the LC-Algorithm as neighbors.
(but they are not).
See also screensho...In 3D rooms pedestrians in different levels, which are obviously not neighbors will be recognized as such.
Example: Ped1 (0, 0, 10), ped2 (0, 1, 0) are considered by the LC-Algorithm as neighbors.
(but they are not).
See also screenshot in #161https://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues/163Runtime Bottleneck2018-03-16T15:00:26+01:00Mohcine Chraibim.chraibi@fz-juelich.deRuntime Bottleneck@chraibi @Arne
It seems we have in every model a method called
~~~.cpp
::ComputeNextTimeStep(double current, double deltaT, Building* building, int periodic)
~~~
What happens inside this method is:
~~~.cpp
for (int p = start; p <= end...@chraibi @Arne
It seems we have in every model a method called
~~~.cpp
::ComputeNextTimeStep(double current, double deltaT, Building* building, int periodic)
~~~
What happens inside this method is:
~~~.cpp
for (int p = start; p <= end; ++p) {
Pedestrian* ped = allPeds[p];
Room* room = building->GetRoom(ped->GetRoomID());
SubRoom* subroom = room->GetSubRoom(ped->GetSubRoomID());
...
for (int i = 0; i < size; i++) {
Pedestrian* ped1 = neighbours[i];
//if they are in the same subroom
...
bool isVisible = building->IsVisible(p1, p2, emptyVector, false);
if (!isVisible)
continue;
if (ped->GetUniqueRoomID() == ped1->GetUniqueRoomID()) {
repPed = repPed + ForceRepPed(ped, ped1);
} else {
// or in neighbour subrooms
SubRoom* sb2=building->GetRoom(ped1->GetRoomID())->GetSubRoom(ped1->GetSubRoomID());
if(subroom->IsDirectlyConnectedWith(sb2)) {
repPed = repPed + ForceRepPed(ped, ped1);
}
}
}
...
~~~
This basically means: First we calculate if a pedestrian is visible, which is pretty expensive (enormous expensive) and then we do the simple check if they are in the same room/subroom or neighbour subroom and if not we don't do any calculation.
This is wrong way round... we should first check if these Pedestrians need a force update because they influence each other than calculating if they can see each other through the sub roomhttps://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues/156ORCA Model Exit strategy sensitivity2018-06-13T16:41:48+02:00Mohcine Chraibim.chraibi@fz-juelich.deORCA Model Exit strategy sensitivityThe ORCA model seems to be sensitive to the exit strategy as the preferred velocity is obtained from the exit point. At the moment the code works fine only for exit strategy 1 (tested using turning at corner model). It fails for other ex...The ORCA model seems to be sensitive to the exit strategy as the preferred velocity is obtained from the exit point. At the moment the code works fine only for exit strategy 1 (tested using turning at corner model). It fails for other exit strategies. Has anyone faced a similar issue in other models? @OSchmidts @chraibi @ArneMohcine Chraibim.chraibi@fz-juelich.deMohcine Chraibim.chraibi@fz-juelich.dehttps://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues/150JPSrunTest2018-06-13T16:41:46+02:00Mohcine Chraibim.chraibi@fz-juelich.deJPSrunTestshould look for jpsreport in the system directory. Important for jenkins.should look for jpsreport in the system directory. Important for jenkins.Mohcine Chraibim.chraibi@fz-juelich.deMohcine Chraibim.chraibi@fz-juelich.dehttps://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues/147Clean up inifiles2018-06-13T16:41:46+02:00Mohcine Chraibim.chraibi@fz-juelich.deClean up inifilesAll inifiles in v0.8 should be running.
Please fix the ones not running or if you can't mention here which ones.All inifiles in v0.8 should be running.
Please fix the ones not running or if you can't mention here which ones.https://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues/142Add documentation header to all utests2018-06-13T16:41:48+02:00Mohcine Chraibim.chraibi@fz-juelich.deAdd documentation header to all utestsFollowing this template
""" ...Following this template
"""
Test description
================
- Fundamental Diagram in 1D, test number 101
- Width = 0.6 m
- Length = 26.0 m
- Measurement area: X = [11, 13], Y = [-0.3, 0.3]
Remarks
=======
- JPSreport can not calculate Voronoi-diagrams for a "1D" scenario.
Therefore, we need to calculate the Voronoi diagram manually.
- TODO: Compare two "clouds" of points and return a number.
Source
======
"""https://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues/138Option to show statistics only for selected doors and rooms2018-06-13T16:41:30+02:00Mohcine Chraibim.chraibi@fz-juelich.deOption to show statistics only for selected doors and roomshttps://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues/137Plane intersections2018-06-13T16:41:48+02:00Mohcine Chraibim.chraibi@fz-juelich.dePlane intersectionsCheck if two planes intersect in the common transition or crossing.
For example this should not happen..
![animated](https://cst.version.fz-juelich.de/jupedsim/jpscore/uploads/9d4b0c5a34af227fad7b3e0f19a63313/animated.gif)
(teleportati...Check if two planes intersect in the common transition or crossing.
For example this should not happen..
![animated](https://cst.version.fz-juelich.de/jupedsim/jpscore/uploads/9d4b0c5a34af227fad7b3e0f19a63313/animated.gif)
(teleportation of humans does not exist yet..)https://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues/135Distribution of pedestrians in rooms/subrooms where all doors are closed shou...2018-06-13T16:41:48+02:00Mohcine Chraibim.chraibi@fz-juelich.deDistribution of pedestrians in rooms/subrooms where all doors are closed should not be possible.https://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues/134Brew Formula2018-06-13T16:41:48+02:00Mohcine Chraibim.chraibi@fz-juelich.deBrew FormulaLooks like this needs some [work](https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/Formula-Cookbook.md#formula-cookbook)
but is certainly doable! :sunglasses:Looks like this needs some [work](https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/Formula-Cookbook.md#formula-cookbook)
but is certainly doable! :sunglasses:https://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues/127Which Router is functional?2018-08-28T22:25:08+02:00Mohcine Chraibim.chraibi@fz-juelich.deWhich Router is functional?The following router are available. Which one is still functional?
* [x] `global_shortest`
* OK. No errors.
* [ ] `local_shortest`
* not OK. behaves like `global_shortest`
* [x] `quickest`
* OK. Needs proper calibration. Par...The following router are available. Which one is still functional?
* [x] `global_shortest`
* OK. No errors.
* [ ] `local_shortest`
* not OK. behaves like `global_shortest`
* [x] `quickest`
* OK. Needs proper calibration. Parameters are hard coded
* [ ] `local_quickest`
* Not implemented.
* [x] `AI`
* OK
* [x] `ff_global_shortest`
* OK
* [ ] `ff_local_shortest`
* Not OK. behaves like `global_shortest`
* [x] `ff_quickest`
* OK (experimental, not calibrated, strangely synced agents)https://gitlab.jsc.fz-juelich.de/jupedsim/jpscore/-/issues/118prepare commit: Astyle2018-06-13T16:41:47+02:00Mohcine Chraibim.chraibi@fz-juelich.deprepare commit: Astylerun astyle-script to format code according to a predefined style.
See for example
[prepare-commit.sh](https://github.com/qgis/QGIS/blob/master/scripts/prepare-commit.sh)run astyle-script to format code according to a predefined style.
See for example
[prepare-commit.sh](https://github.com/qgis/QGIS/blob/master/scripts/prepare-commit.sh)