vadere merge requestshttps://gitlab.lrz.de/vadere/vadere/-/merge_requests2021-07-16T19:07:43+02:00https://gitlab.lrz.de/vadere/vadere/-/merge_requests/165[Psychology Layer] Add probabilistic perception model + [Post-vis] Fix footst...2021-07-16T19:07:43+02:00Mayr, Christina Maria[Psychology Layer] Add probabilistic perception model + [Post-vis] Fix footstep bug## Psychology Layer
### Add a new perception model
Add probabilistic perception model.
The new model allows to assign a probability for each stimulus.
The default probability is `p=1.0`.
p defines how likely it is that this stimulus is ...## Psychology Layer
### Add a new perception model
Add probabilistic perception model.
The new model allows to assign a probability for each stimulus.
The default probability is `p=1.0`.
p defines how likely it is that this stimulus is the most important stimulus.
If there are multiple stimuli defined, the sum of p_i must not exceed 1.
### Move methods from `SimplePerceptionModel` to `StimulusController`
Following methods have been moved:
* `selectClosestAndPerceptibleThreat(Pedestrian pedestrian, List<Stimulus> threatStimuli)`
* `selectWaitInAreaContainingPedestrian(Pedestrian pedestrian, List<Stimulus> waitInAreaStimuli)`
**Why?**
The `StimulusController` provides a list of stimuli that is available for an agent. It acts like a filter.
In the old setting, the filtering was done in two steps:
* 1. filter: **time** -> `StimulusController`
* 2. filter: **space/proximity** ( ->` WaitInArea`, `Threat` ) -> `SimplePerceptionModel`
In the old settings, this was suitable, because the stimulusController only provided stimuli that are perceived by all the agents.
Since !162, the stimulusController also provides agent specific stimuli e.g. information that is received at different times.
Therefore, I propose that the filtering is directly done in the `StimulusController`:
* 1. filter: **time** -> `StimulusController`
* 2. filter: **space/proximity** ( ->` WaitInArea`, `Threat` ) -> `StimulusController`
This has two advantages:
* The overall filtering is done in the same place. This avoids code duplication (if one adds a IPerceptionModel, they would need to inherit or copy the filtering algorithm from` SimplePerceptionModel`).
* It simplifies the `SimplePerceptionModel`. Same behavior for all types of stimuli.
### ControlModel
In the old setting, the `ReactionModel` draw from a BernoulliDistribution (probability p) to decide whether a agent reacts or not.
**What is new?**
If the psyhchologylayer is used, the ReactionModel does not decide, but passes the probability to the stimulus.
## Post-vis:
Bug: Agents disappeared in `WAIT` mode.
If the last position is not set, `pedestrian.getLastPosition()` provides a the origin.
It must be `pedestrian.getPosition()`.Mayr, Christina MariaMayr, Christina Mariahttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/167retrun default ReferenceSystem in TraCI2021-08-18T16:42:17+02:00Schuhbaeck, Stefanretrun default ReferenceSystem in TraCIhttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/168consider group members in controlmodel2021-08-19T20:52:17+02:00Mayr, Christina Mariaconsider group members in controlmodelCurrently, information is handled for each individual agent.
If there is a group informed, the information needs to be processed once (assumption: group members inform each other + they agree with each other -> they share the same goal)
...Currently, information is handled for each individual agent.
If there is a group informed, the information needs to be processed once (assumption: group members inform each other + they agree with each other -> they share the same goal)
If the group model is used, and the reaction probability is below 1, the information is processed multiple times.
I have added the group members to the `processedAgents`.
I have also introduced a new `InformationState` that shows the user that agents follow information shared in their group.Mayr, Christina MariaMayr, Christina Mariahttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/169Extend logging + refactoring2021-09-03T13:57:33+02:00Mayr, Christina MariaExtend logging + refactoringCurrently, the `ControlModel` works with and without the `psychologyLayer`.
I have added a dataprocessor that monitors when information was set at the the `pyschologylayer`.
I have decided to always use the `psychologyLayer` in combinati...Currently, the `ControlModel` works with and without the `psychologyLayer`.
I have added a dataprocessor that monitors when information was set at the the `pyschologylayer`.
I have decided to always use the `psychologyLayer` in combination with control actions.
Therefore, I have simplified the `ControlModel`Mayr, Christina MariaMayr, Christina Mariahttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/170Define reaction model probabilities in scenario file2021-09-27T11:20:26+02:00Mayr, Christina MariaDefine reaction model probabilities in scenario fileCurrently, the reaction probabilities are set in `flowcontrol` and communicated via `TraCI`.
However, the reaction probabilities should be treated separately from the control strategy.
This is why I moved it into the scenario.
I had to ...Currently, the reaction probabilities are set in `flowcontrol` and communicated via `TraCI`.
However, the reaction probabilities should be treated separately from the control strategy.
This is why I moved it into the scenario.
I had to migrate vadere from 1.15 to 1.16Schuhbaeck, StefanSchuhbaeck, Stefanhttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/149WIP: initial SIR model setup2021-09-29T15:04:12+02:00Rahn, SimonWIP: initial SIR model setupMerge request only for comparison of master and sir branchMerge request only for comparison of master and sir branchRahn, SimonRahn, Simonhttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/171Add TranmissionModel2021-09-29T17:55:59+02:00Rahn, SimonAdd TranmissionModelAdd submodel for transmission of pathogen via inhalationAdd submodel for transmission of pathogen via inhalationRahn, SimonRahn, Simonhttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/172Refactored psychology models2021-10-13T16:12:14+02:00Mayr, Christina MariaRefactored psychology modelsI have moved the decision-making process from the perception layer to the cognition layer.
For that purpose, I had to extend the `PsychologyStatus`.
I also did some refactoring.I have moved the decision-making process from the perception layer to the cognition layer.
For that purpose, I had to extend the `PsychologyStatus`.
I also did some refactoring.Mayr, Christina MariaMayr, Christina Mariahttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/174[PSYCHOLOGY, TraCI] Communicate social distancing measures2021-11-17T18:31:11+01:00Mayr, Christina Maria[PSYCHOLOGY, TraCI] Communicate social distancing measuresI have introduced a new `CognitionModel` that allows us to dynamically introduce social distancing in the simulation.I have introduced a new `CognitionModel` that allows us to dynamically introduce social distancing in the simulation.Schuhbaeck, StefanMayr, Christina MariaSchuhbaeck, Stefanhttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/173[GUI] ScenarioChecker messages should refer to scenario errors instead of top...2021-11-18T09:27:12+01:00Mayr, Christina Maria[GUI] ScenarioChecker messages should refer to scenario errors instead of topography errorsThe topography is only one component that is checked by the `ScenarioChecker`.
However, each error message contains `There are errors in the topography`, even if the error is in the Tab `Model` or `Simulation`.
The information about th...The topography is only one component that is checked by the `ScenarioChecker`.
However, each error message contains `There are errors in the topography`, even if the error is in the Tab `Model` or `Simulation`.
The information about the tab (topography, simulation, model) is still displayed. I have not changed anything here..
I have replaced `Topography error` by `Scenario error`.Rahn, SimonRahn, Simonhttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/175resolve issue 3202021-11-18T13:00:54+01:00Mayr, Christina Mariaresolve issue 320 use suggested solution in #320 use suggested solution in #320Mayr, Christina MariaMayr, Christina Mariahttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/176add scenarios to psychology layer2021-11-25T09:54:26+01:00Mayr, Christina Mariaadd scenarios to psychology layerhttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/178Merge branch 'dropletModel' into 'master'2021-11-26T17:25:20+01:00Rahn, SimonMerge branch 'dropletModel' into 'master'Update the TransmissionModel; clean up scenario files; add a more efficient data processor needed for evaluating the healthState of pedestriansUpdate the TransmissionModel; clean up scenario files; add a more efficient data processor needed for evaluating the healthState of pedestriansRahn, SimonRahn, Simonhttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/179Fix #334 negative pathogen load in stationary pedestrians2021-12-03T16:46:51+01:00Rahn, SimonFix #334 negative pathogen load in stationary pedestrians- Pedestrians that are directly placed into the topography (without using a source) got only default values defined in the constructor HealthStatus().
Now, these pedestrians get assigned the healthStatus as defined in the scenario file (...- Pedestrians that are directly placed into the topography (without using a source) got only default values defined in the constructor HealthStatus().
Now, these pedestrians get assigned the healthStatus as defined in the scenario file (for each individually placed pedestrian).
- Update default values in AttributesTransmissionModelRahn, SimonRahn, Simonhttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/180Upgrade log4j2021-12-14T14:02:01+01:00Mayr, Christina MariaUpgrade log4jfrom version 2.11.1 -> 2.16.0from version 2.11.1 -> 2.16.0https://gitlab.lrz.de/vadere/vadere/-/merge_requests/177Generalize sources2021-12-14T15:12:28+01:00Mayr, Christina MariaGeneralize sourcesCurrently, agents are spawned
* according to a Poisson process (PoissonDistribution, NegativeExponentialDistribution)
* in a repetitive manner (UniformDistribution)
Hence, only distributions were available.
Now, three spawning procedur...Currently, agents are spawned
* according to a Poisson process (PoissonDistribution, NegativeExponentialDistribution)
* in a repetitive manner (UniformDistribution)
Hence, only distributions were available.
Now, three spawning procedures are available:
* Distributions
* Different distributions over time
* Time series
Therefore, the sources have been generalized.
Examples:
```
"interSpawnTimeDistribution" : "constant",
"distributionParameters" : {
"updateFrequency" : 1.0
},
```
```
"interSpawnTimeDistribution" : "timeSeries",
"distributionParameters" : {
"..." : [2,4,5,0,4]
},
```Mayr, Christina MariaMayr, Christina Mariahttps://gitlab.lrz.de/vadere/vadere/-/merge_requests/181Vadere version 2.0 - Generalize sources2021-12-17T11:37:51+01:00Mayr, Christina MariaVadere version 2.0 - Generalize sourcesCurrently, agents are spawned
* according to a Poisson process (PoissonDistribution, NegativeExponentialDistribution)
* in a repetitive manner (UniformDistribution)
Hence, only distributions were available.
Now, three spawning procedur...Currently, agents are spawned
* according to a Poisson process (PoissonDistribution, NegativeExponentialDistribution)
* in a repetitive manner (UniformDistribution)
Hence, only distributions were available.
Now, three spawning procedures are available:
* Distributions
* Different distributions over time
* Time series
Therefore, the sources have been generalized.
Examples:
```
"interSpawnTimeDistribution" : "constant",
"distributionParameters" : {
"updateFrequency" : 1.0
},
```
```
"interSpawnTimeDistribution" : "timeSeries",
"distributionParameters" : {
"..." : [2,4,5,0,4]
},
```https://gitlab.lrz.de/vadere/vadere/-/merge_requests/94WIP: Generalize source to allow flexible inflow2021-12-17T11:37:51+01:00Ghost UserWIP: Generalize source to allow flexible inflowLater on the inflow can be from data (e.g. inflow measured from an experiment), a function or anything else.
For this the source had to be generalised and a new interface `SpawnDistributions` was introduced. The `ConstantDistribution` w...Later on the inflow can be from data (e.g. inflow measured from an experiment), a function or anything else.
For this the source had to be generalised and a new interface `SpawnDistributions` was introduced. The `ConstantDistribution` which so far was the only distribution used for sources is adapted to this new interface.
On a side, I also changed the handling for spawning. If a single pedestrian could not be placed in a source, then the loop interrupts. For this I increased the number of tries. This should have improve one of the bottlenecks we have, when the source is too small.
Problems and Todos:
* [ ] How to set up a general SpawnDistribution? This needs some flexibility in the JSON settings (each SpawnDistribution has specific parameter).
* [ ] Rename `ConstantDistribution` -> `ConstantSpawnDistribution` to indicate better that it is used for spawning pedestrians
* [ ] Write a `TotalNumberSpawnDistribution` which spawns total number of agents in as fast as possible.
Closes #283https://gitlab.lrz.de/vadere/vadere/-/merge_requests/182Keep commit hash in migration2022-02-03T09:18:47+01:00Mayr, Christina MariaKeep commit hash in migrationCurrently, the commit hash is lost during migrations.
I have adjusted the behavior.Currently, the commit hash is lost during migrations.
I have adjusted the behavior.https://gitlab.lrz.de/vadere/vadere/-/merge_requests/183Remove elliptical aerosol clouds from transmission model2022-02-04T17:41:45+01:00Rahn, SimonRemove elliptical aerosol clouds from transmission modelAn `AerosolCloud` in the transmission model was either elliptical or circular. The elliptical shape has little effect on the simulation outcome. Circular shapes are much easier to handle and comprehend. Therefore, the elliptical shape wa...An `AerosolCloud` in the transmission model was either elliptical or circular. The elliptical shape has little effect on the simulation outcome. Circular shapes are much easier to handle and comprehend. Therefore, the elliptical shape was removed and the model simplified.
- In `TransmissionModel`, adapt update routines to new circular shapes; separate routines relating to aerosol clouds and droplets.
- In `AttributesTransmissionModel` and scenario files, change parameter `aerosolCloudInitialArea` to `aerosolCloudInitialRadius`.
- In `AerosolCloud`, remove deprecated (commented) code.
- In `AttributesAerosolCloud`, reduce the number of required parameters to describe the shape.
- Adapt and simplify all related classes that used the elliptical shape of aerosol clouds.Rahn, SimonRahn, Simon