Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

About the door selection algorithm in FDS+EVAC #2

Open
godisreal opened this issue Mar 16, 2019 · 2 comments
Open

About the door selection algorithm in FDS+EVAC #2

godisreal opened this issue Mar 16, 2019 · 2 comments

Comments

@godisreal
Copy link
Owner

godisreal commented Mar 16, 2019

I think there are two different concepts regarding door selection of agents.

The first thing is whehter an agent knows a door or not, and it is boolean logic (know it or not know it), and it is characterized by known_door_names in the current program (evac.f90). The second issue is how an agent is familiar with a known door, and it should be measured by a real number from 0 to 1 (Just like a probality). An agent can only be familiar with a known door. If one does not know the door, there is no issue of being familiar to it. Thus, the familiarity measure is specified by known_door_probs, and it is only effective for the known doors. That is, known_door_probs=1.0 means being fully familiar with a door while known_door_probs=0.0 means unfamilarity.

In EXIT namelist Users are also allowed to give a value in between like 0.6 or 0.3 (0.0<=known_door_probs<=1.0). This is very similar to probablity, and familiarity to an exit is thus understood as the frequence of using the exit in the historical data (prior information). From there one can infer the probablity of how agents select the doors and exits in the simulation run.

However, exiting program (evac.f90) only provides a good user interface, but the inner algorithm of exit selection is far from perfect. The algorithm generates a random number and compare it with known_door_probs to assign the exit either familiar or unfamiliar (boolean logic). A better method is integrating the real familiary measure in the preference order in the door selection algorithm (User Guide pp. 29, Table3). As a result, the familarity is not a yes/no logic, but with the real number given by known_door_probs.

The original weblink is as below.
firemodels/fds#2206

@godisreal godisreal pinned this issue Mar 25, 2019
@godisreal godisreal unpinned this issue Mar 25, 2019
@godisreal
Copy link
Owner Author

There may be a problem about the following code in Change_Target_Door(). That is, when a door is closed, some agents change the target right away. Sometimes this feature is useful, and sometimes it is not. I think that the agents may not know the door is closed if they haven't got the door in sight.

    DO i = 1, N_DOORS
       IF (ABS(EVAC_DOORS(I)%IMODE)==2 .AND. .NOT.EVAC_DOORS(I)%TARGET_WHEN_CLOSED) THEN
          Is_Visible_Door(i) = .FALSE.
          Is_Known_Door(i) = .FALSE.
       END IF
    END DO
    DO i = 1, N_EXITS
       IF ( (ABS(EVAC_EXITS(i)%IMODE)==2) .AND. .NOT. EVAC_EXITS(i)%COUNT_ONLY .AND. &
            .NOT.EVAC_EXITS(I)%TARGET_WHEN_CLOSED) THEN
          Is_Visible_Door(N_DOORS+i) = .FALSE.
          Is_Known_Door(N_DOORS+i) = .FALSE.
       END IF
    END DO

@godisreal
Copy link
Owner Author

! I_DoorAlgo=0: Use the main evacuation mesh flow field ("stupid agents"), do not follow these.
! I_Door_Mode: 0) no target door or not (yet) moving
! 1) target door + moving by using flow fields
! 2) target door + moving + bee line towards the exit (do not use flow fields) XYZ visible
! 3) target door + moving + bee line towards the exit (do not use flow fields) XB visible
! 4) target door + moving + bee line towards the exit (do not use flow fields) XYZ+XB visible
! <0) came out form a door or an entry, but does not have a target door

! HR%I_DoorAlgo: 1 rational agents, 2 known doors, 3 herding, 0 main evac mesh ff
! Herding behaviour: Count and weight by the distance the target doors of the other
! agents around this agent. The five (or less) nearest neighbor agents are used.
! I_HERDING_TYPE 0: default herding, 1: keep the first choice, 2: do not move,
! 3: do not move + keep the first choice

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant