Esse projeto aplica diferentes algoritmos evolucionários para calibração de parâmetros do OpenABM-Covid19 para os dados brasileiros acerca da COVID-19.
O intuito é compreender qual conjunto de parâmetros do modelo melhor descreve o cenário brasileiro e como políticas públicas não-farmacológicas poderiam ter influenciado esse cenário. Em especial, o objetivo é calibrar o modelo para os dados de COVID-19 apresentados pela cidade do Recife/PE para o período de 21/01/2022 a 27/01/2022.
Agent-based Modelling (ABM), em tradução livre "Modelagem baseada em Agentes", é um paradigma amplamente explorado pela literatura para construção de modelos que operam utilizando um conjunto de entidades autônomas chamadas de agentes. Tal paradigma permite que simulações complexas do mundo real sejam realizadas através das interações de múltiplos agentes artificiais com comportamentos distintos.
Uma etapa crucial na aplicação e uso de tais modelos é a calibração de seus parâmetros. Nessa etapa, diferentes estratégias são aplicadas para buscar parâmetros que melhor capturem o mundo real.
Uma abordagem recente na literatura para a etapa de calibração consistem em utilizar algoritmos evolucionários no lugar da calibração manual.
O OpenABM-Covid19 é um modelo baseado em agentes desenvolvido para simular a transmissão e contágio de COVID-19 em uma cidade. O principal objetivo é permitir a análise dos efeitos de medidas ativas e passivas para o controle da doença. O modelo possui uma série de parâmetros que podem ser alterados para melhor descrever a situação de uma cidade.
- Standard Particle Swarm Optimization (SPSO)
- Restart Covariance Matrix Adaptation Evolution Strategy With Increasing Population Size (IPOP-CMA-ES)
- Success-History Based Parameter Adaptation for Differential Evolution (SHADE)
O OpenABM-Covid19 possui um total de 217 parâmetros de entrada, uma descrição desses parâmetros pode ser encontrada no repositório oficial. Para tornar o problema factível aos recursos disponíveis, os seguintes parâmetros (9) serão considerados para calibração automática:
Nome | Descrição |
---|---|
infectious_rate |
Quantidade média de indivíduos infectados por um indivíduo positivo sintomático. |
mean_work_interactions_child |
Média de interações na escola (0-19 anos). |
mean_work_interactions_adult |
Média de interações na escola/trabalho (20-69 anos). |
mean_work_interactions_elderly |
Média de interações na escola/trabalho (70+ anos). |
n_seed_infection |
Quantidade de infectados no início do experimento |
quarantine_length_self |
Número máximo de dias para indivíduos sintomáticos (análise própria). |
quarantine_length_traced_symptoms |
Número máximo de dias para indivíduos contactes com casos suspeitos. |
quarantine_length_traced_positive |
Número máximo de dias para indivíduos contactantes com casos confirmados. |
quarantine_length_positive |
Número máximo de dias para indivíduos positivados. |
Os seguintes parâmetros foram calibrados/escolhidos manualmente:
Nome | Descrição | Valor | Referência |
---|---|---|---|
n_total |
População total simulada | Censo 2010 | |
end_time |
Total de dias simulados | N/A | |
household_size_1 |
Número de "casas" com 1 pessoa (mil) | Censo 2010 | |
household_size_2 |
Número de "casas" com 2 pessoas (mil) | Censo 2010 | |
household_size_3 |
Número de "casas" com 3 pessoas (mil) | Censo 2010 | |
household_size_4 |
Número de "casas" com 4 pessoas (mil) | Censo 2010 | |
household_size_5 |
Número de "casas" com 5 pessoas (mil) | Censo 2010 | |
household_size_6 |
Número de "casas" com 6 pessoas (mil) | Censo 2010 (6+ pessoas) | |
population_0_9 |
População com idade entre 0 e 9 anos | Censo 2010 | |
population_10_19 |
População com idade entre 10 e 19 anos | Censo 2010 | |
population_20_29 |
População com idade entre 20 e 29 anos | Censo 2010 | |
population_30_39 |
População com idade entre 30 e 39 anos | Censo 2010 | |
population_40_49 |
População com idade entre 40 e 49 anos | Censo 2010 | |
population_50_59 |
População com idade entre 50 e 59 anos | Censo 2010 | |
population_60_69 |
População com idade entre 60 e 69 anos | Censo 2010 | |
population_70_79 |
População com idade entre 70 e 79 anos | Censo 2010 | |
population_80 |
População com idade maior ou igual a 80 anos | Censo 2010 |
Demais parâmetros são mantidos os valores padrão do simulador.
Para utilizar os algoritmos evolucionários selecionados, faz-se necessário modelar o problema de calibração como um problema de otimização contínua. Nesse sentido, precisamos definir a função objetiva e a representação das soluções.
As soluções (ou candidatos) serão representadas como um vetor
O objetivo é encontrar o conjunto de parâmetros que melhor se aproxima do acumulado de casos positivos nesse período. Dessa forma, a função objetiva
-
$f(\mathrm{x}) = \sqrt{\frac{\sum\limits_{i=1}^7 \left((g\circ \phi)(\mathrm{x})_i - \hat{Y}_i\right)^2}{7}}$ , função RMSE (Root-Mean-Squared Error) considerando o total de infectados para cada um dos dias; -
$f(\mathrm{x}) = \frac{\sum\limits_{i=1}^7 \left|(g\circ \phi)(\mathrm{x})_i - \hat{Y}_i\right|}{7}$ , função MAE (Mean Absolute Error) considerando o total de infectados para cada um dos dias;
Onde:
-
$\phi$ é a função de mapeamento entre soluções e os parâmetros do ABM; -
$(g\circ \phi)(\mathrm{x})$ é a sequência contendo a quantidade acumulado de infectados para cada um dos 7 dias usando os parâmetros$\phi(\mathrm{x})$ no ABM;- Assim,
$(g\circ \phi)(\mathrm{x})_i$ é a quantidade total de casos positivos para o dia$i$ ;
- Assim,
-
$\hat{Y}$ é a sequência com o valor real da quantidade de infectados para cada dia;- Assim,
$\hat{Y}_i$ é a quantidade real de casos positivos acumulados no dia$i$ ;
- Assim,
De acordo com os dados disponibilizados pela Secretaria Estadual de Saúde de Pernambuco (SES/PE), entre 21/01/2022 e 27/01/2022, a cidade do Recife registrou um total de
O cálculo de casos acumulados para um dado dia consiste em encontrar a quantidade de novos casos para aquele dia e somar com a quantidade de casos acumulados do dia anterior. Visto que estamos preocupados apenas com o período entre 21/01 e 27/01, os casos acumulados de datas anteriores serão considerados
Dia | Casos Acumulados |
---|---|
21/01/2022 | |
22/01/2022 | |
23/01/2022 | |
24/01/2022 | |
25/01/2022 | |
26/01/2022 | |
27/01/2022 |
Os dados utilizados nesse trabalho incluem os seguintes:
- Secretaria Estadual de Saúde de Pernambuco: http://portal.saude.pe.gov.br/boletim-epidemiologico-covid-19
- Usados para definição da função objetiva.
- Usado para calibração manual dos parâmetros.
- IBGE: https://cidades.ibge.gov.br/brasil/pe/recife/panorama
- Usado para calibração manual dos parâmetros.
- IBGE, CENSO 2010: https://censo2010.ibge.gov.br/sinopse/webservice/frm_piramide.php?codigo=261160
- Usado para calibração manual dos parâmetros.
- IBGE, CENSO 2010: https://cidades.ibge.gov.br/brasil/pe/recife/pesquisa/23/24304
- Usado para calibração manual dos parâmetros.
- OpenABM-Covid19: an agent-based model for modelling the spread of SARS-CoV-2 (coronavirus) and control interventions for the Covid-19 epidemic: https://github.com/BDI-pathogens/OpenABM-Covid19
- jMetal, a framework for multi-objective optimization with metaheuristics: https://github.com/jMetal/jMetal