Skip to content

Add Intervention Scheme for ABM #501

Open
@mknaranja

Description

@mknaranja

With #257 we implemented mask usage. Furthermore, we can prevent people from going to certain locations, however, we do not yet have a universal and clear InterventionScheme.

The problem with the current implementation of Masks is:

  1. You cannot require "no mask" as MaskType = None is not implemented.
  2. If MaskType = None was implemented, then "time_used" would be reset and everything I would reuse my previous mask, time would start from zero. This could be "solved" by having two mask_types m_current and m_preference. The current could be None and time_used would point to preference if no mask is worn at the moment. But this is not very elegant.
  3. Another problem is that for each contact reduction intervention, like reduced maximum capacity, minimal_distance or so, we would need at least one other member variable.

From 1.-3. I came to the idea that we would maybe template the location as

template<typename... LocalInterventions>
class Location
{
    // ...
};

and then I could maybe have

Location<Masks> or Location<Masks, MinimalDistance>

where only the considered interventions are in the list. When designing this step by step it just came to my head that we cannot only use the active NPIs in the list since this will be set a compile time. So we would then maybe even need start and end dates for the interventions...

However, I have no good design / idea on the remaining part of this proposed change.

Maybe we also go with an InterventionScheme as the TestingScheme which is on Locations and ...

Originally posted by @mknaranja in #471 (comment)

Metadata

Metadata

Assignees

Labels

loc::backendThis issue concerns the C++ backend implementation.model::abmThis issue concerns any kind of agent-based model.

Type

No type

Projects

Status

Next up 🆙

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions