Description
In equation-based models, a parameter like incubation time
means an average value for a whole group/subpopulation of persons. In agent-based simulations, each person can have a different incubation time
but all the incubation time
s can be modeled by some distribution (https://en.wikipedia.org/wiki/Probability_density_function) from which a sample is drawn for each individual.
I reference two comments of @khoanguyen-dev and @DavidKerkmann.
This issue is meant for discussion first.
The list of input parameters for a simulation can be sorted as followed:
1/ To be drawn from distribution once during the simulation initialisation (or set as a constant):
- Parameters::Global Infection params <IncubationPeriod, SusceptibleToExposedByCarrier, SusceptibleToExposedByInfected, CarrierToInfected, CarrierToRecovered, InfectedToRecovered, InfectedToSevere, SevereToCritical, SevereToRecovered, CriticalToDead, CriticalToRecovered, RecoveredToSusceptible, DetectInfection, MaskProtection> for each age group and vaccination state
Many of these parameters should be distributions to draw from during the simulation. The parameters of these distributions might have some uncertainty attached to them, too. As discussed in the group, this results in two levels of uncertainty. One could define the parameters for the distributions as level 1 uncertainty and put the corresponding distributions to level 2.
- Parameters::MigrationParameters <LockdownDate, SocialEventRate, BasicShoppingRate, WorkRatio, SchoolRatio, GotoWorkTimeMinimum,GotoWorkTimeMaximum, GotoSchoolTimeMinimum, GotoSchoolTimeMaximum>
I agree with these. LockdownData will probably be reworked in the future. Here you can see the parameters as level 1 uncertainty, while distributions for the work/school time are implemented explicitly right now.
- Test_strategy::m_probability
Depends on the test, but I wouldn't consider this to be in the list of "global" parameters.
- Person::m_random_workgroup, m_random_schoolgroup, m_random_goto_work_hour, m_random_goto_school_hour
These is the level 2 uncertainty to the parameters above. Implemented explicitly right now. We can consider changing these to be UncertainValues/Parameters, too.
- Person::m_mask_compliance
Agreed, but there should be a parameter added. One could in theory also discuss about this being a level 2 parameter if wearing a mask depends on dynamic items.
- Household::pick_age_group_from_age_distribution
This only implements a discrete distribution and doesn't belong to the set of parameters.
I would add test parameters here.
2/ To be drawn (multiple times) from distribution while running:
- Person::wear_mask
This is a helper bool. Mask compliance is the relevant parameter.
- Person::get_tested
This is just a function to test a person. The test parameters are handled in level 1.
- Random_event::random_transition
Same, just a function.
- Test_strategy::run_scheme
Same, just a function.
@xsaschako @mknaranja Please add your comments when you find the time.
Originally posted by @DavidKerkmann in #536 (comment)
Metadata
Metadata
Assignees
Labels
Type
Projects
Status