Criando estruturas de dados com Arrays

Arrays são estruturas de dados que permitem modelar vetores ou matrizes. Elas são particularmente úteis para a modelagem, pois conseguem incorporar rapidamente ao modelo novas dimensões ou categorias, por exemplo: os clientes da Startup poderiam ser divididos entre jovens e adultos, gênero, renda familiar etc.

Um problema clássico de dinâmica de sistemas é a previsão do crescimento populacional. Na sua versão mais simples, ele apenas considera a população atual, a taxa de fertilidade e a taxa de mortalidade. Uma representação possível do diagrama de estoque e fluxo para o problema, seria:

Em 2007, por exemplo, a população mundial era de 6,6 bilhões de pessoas, a taxa de natalidade era de 21 pessoas/1.000 habitantes e a taxa de mortalidade era de 9 pessoas/habitantes. A pergunta aqui seria: e se a taxa de mortalidade for diferente entre homens e mulheres?

Queremos ir além do modelo básico: vamos considerar que as taxas de mortalidade são diferentes para cada gênero (masculino/feminino).

Crie um modelo no AnyLogic com o nome Populacao e com unidade de tempo years:

Com o que você já sabe do AnyLogic, construa o modelo básico, sem considerar ainda a questão de gênero. Adote:

  • População = 6600000 (Nota: mais 3 zeros e o AnyLogic apresenta erro de tamanho de número inteiro. Para contornar este problema, coloque o número com o “ponto” indicativo de ponto flutuante, isto é: 6600000000.0);

  • Fertilidade = 0,021;

  • Mortalidade = 0,009.

O modelo deve ficar assim:

Simule e compare com o meu resultado:

Vamos agora considerar uma taxa de mortalidade de 0.0085 para mulheres e 0.0095 para homens, respectivamente 8,5 mortes/1.000 habitantes e 9,5 mortes/1.000 habitantes.

Para lidar com diferentes categorias (ou índices) o AnyLogic possui o elemento Dimension na paleta de sistemas dinâmicos. Crie uma “dimensão” Genero, clicando e arrastando o elemento para a tela:

Modifique o parâmetro mortalidade para refletir a diferença de gênero:

  • Selecione a opção de System dynamic array no parâmetro;

  • Selecione a Dimension desejada (Genero no caso);

  • Atualize os valores default (caso desejado) por meio do botão Edit ou mesmo digitando “{ valor1, valor2}”.

Todas as equações precisam refletir a dimensão Genero. Comece pelo estoque Populacao:

Como o estoque Populacao e o parâmetro mortalidade já estão com a dimensão definida, você pode agora atualizar a equação em mortes. Nesta parte o AnyLogic é bem democrático nas opções, permitindo que você trabalhe individualmente com cada categoria ou genericamente com as duas, bastando utilizar o subscrito correto - [Masculino], [Feminino] ou [Genero].

No fluxo mortes, comece selecionando a opção Array e definindo o Array dimensions para Genero:

Agora, vem a melhor parte. Defina uma equação para cada gênero, note como o AnyLogic facilita a escolha de cada categoria:

Como resultado, as propriedades do fluxo mortes devem ficar assim:

Chegamos à derradeira e última etapa: a equação de nascimentos. Neste caso, a fertilidade é a mesma para homens e mulheres (50/50) e a equação seria, portanto, a mesma. Você pode, como no caso anterior, criar um equação para cada gênero ou segurar a ansiedade e utilizar o subscrito [Genero] que equivale a aplicar a mesma equação para ambas categorias:

Como resultado, o fluxo nascimentos fica:

Já pode simular!