> For the complete documentation index, see [llms.txt](https://tutorial-ds.anylogicbrasil.com.br/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tutorial-ds.anylogicbrasil.com.br/criando-estruturas-de-dados-com-arrays.md).

# 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.&#x20;

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:

<figure><img src="/files/QjqgZ5sbeDerKl8p9wzR" alt=""><figcaption></figcaption></figure>

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 que se coloca: *e se* a taxa de mortalidade for diferente entre homens e mulheres?

Para compreendermos a estrutura de **Array**, devemos ir além do modelo básico: considere 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**:

![](https://lh5.googleusercontent.com/Pdwp-BORZr2_ybUU67vIX9shTcR6HqflrOBAdxeQGgEGdoFhy3chgEZtPkIFkVh4bFIjs3BTJ3ualcd1tim4TCkF7lkveAd28nNgRoG1KqX_FD5IxhPz5QM_n0dbfaV-jr31W2yd)

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 neste número e o AnyLogic apresentaria erro de tamanho de número inteiro. Para contornar este problema, coloque o número com o “ponto” indicativo de ponto flutuante, isto é: 660000000&#x30;**.0**);
* Fertilidade = **0,021**;
* Mortalidade = **0,009**.

Contruído no AnyLogic, o modelo deve ficar como o da figura:

![](https://lh4.googleusercontent.com/0-hhLkGFd9ddGSf0ijaQOxik2-5qIfUO8mY_fi-L4LBh9MUZcBDH0I8NmU3DkHDgE8ZEAeYTolCOCVX-15XcTONLZNMI2BTABVtY7uKv1l0BZrzxOgUPG4wa3m4-11BZFdxT5hiL)

Simule o seu modelo e compare com o resultado a seguir:

![](https://lh5.googleusercontent.com/cYPWZ1aHk6If30Yxfl1wEbPN6ZFJpOjtH99GU_Upf2LAFlrLM89QNjVN4Uj7Niad7F6RR-q4qoD0dYtO5RL4jdMHtdoBNOycMk-mY_JiDgH_nsDrEekaU6MQFKfXXhf3uxL-90wA)

Considere que a taxa de mortalidade seja diferente quando capturada por gênero, sendo 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**, disponível na paleta de dinâmica de sistemas. Crie uma “dimensão” denominada **Genero**, clicando e arrastando o elemento **Dimension** para a tela:

![](https://lh5.googleusercontent.com/589u1bQzyQJoNp30WLKozWvtTKPZBETdAxIu-ZU5EltzpeOq2zjniPDyFhSNn4mg13Vl-edrWnKzXs_mMz4wMVsMQ2-Lvbcv1-BnORMbDFZTDHeTZBLbJ4BIpxAf7-7b5Vy6hydU)

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 diretamente o **Array** “{valor1, valor2}”.

![](https://lh3.googleusercontent.com/jfvsMeG19Km12wtFr0oSu7g76r4abArP8hO0YKXVW3Pn5BGleVQqIXxJelBANWTI5aRuVlucHc3nRAY0dKeTRN8Vk5UeBGK_oUGrUt9yFLkgtAxLjAGEOkBmpFilFwfGWzjn4kVo)

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

![](https://lh5.googleusercontent.com/0BW46CKGX-80L-buD6dKHzAPVQ4CcTbPZD8L1Hm03DO0DSswW8CEVs3_VJpa6ltJQe5D7kbrO2WwuY2-sv65PaAb46PjMQIUPBG01LAb_IkVmWzNSwv3a6MkB8sF0HANTsMgKEk8)

Como o **Stock Populacao** e o parâmetro mortalidade já estão com a dimensão definida, você pode agora atualizar a equação no **Flow 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:

![](https://lh3.googleusercontent.com/eFMfVxrsFt0eygnK-s6AFhreLztAJ2ubIDkAVjMy_Ji91Fb6UQtdtvbXoMfwU-Bg2RLII8Zg0Np-_GoggiXfflWqehOviSs7X94zQH9ikLI3cXYw7wkp7QsjN14zJLDxxw3EFPtF)

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

![](https://lh5.googleusercontent.com/wNzsg8YmvJCnbmoMH9PzKP34Lbi6suEYDpbto3OTFPfXtOOfhn4pSspxpRqg41__t4ty7p_GoDzvQJ2X64SkZWlfeMCEV1capylnq153BBpNyk7MgV8RCxYjryX38rO4KLFDkxBb)

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

![](https://lh3.googleusercontent.com/Bqv_ww3PW3-TMsjHAnCG_2M5Nz5JipU-I3f4Q9Wu2gwB_IUfN9ZstVMMA0J2SWfrDhNRdKf-VncK68oS2UiOAvtAMCPaR-6mHOib9kvdNwO0Nv26HhpvOSf05e4z09aafnKGu19x)

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:

![](https://lh5.googleusercontent.com/oIjA_D3Yfxu7VJGrqyU5P8a0Mu7ApQOSSprV-HEm_zn0sGPV3ctuC5oZ9epYOwp0y276JsYYq20YGy13nEtG7UsWPp73HrwYHbwethSRXnV4no8kxR0Yl3C-Kre74LMS-7QrEEFw)

Como resultado, o fluxo nascimentos fica:

![](https://lh6.googleusercontent.com/5bMLmah4oQN8471pTM7xVBhJdBf2pYgRNuNMpBnFhExBK8KC9KPJwUBnIPMGGnSBngeqWJ2ImOR70Ni3JAXOxtNvdeYrcdP2zMBz-XJBfauRwbKGIBbKWuZqNNBVKHln2N2tuRwx)

Já pode simular!

![](https://images.unsplash.com/photo-1457364887197-9150188c107b?crop=entropy\&cs=srgb\&fm=jpg\&ixid=MnwxOTcwMjR8MHwxfHNlYXJjaHwxfHxyb2NrZXR8ZW58MHx8fHwxNjM0NjQyODA3\&ixlib=rb-1.2.1\&q=85)

![](https://lh5.googleusercontent.com/zoZ_zfQMIIBhNu82OQ6NQDymeCBpQJ5ksUyF0Q8peyQMurVAMn6ryT2raA1-FIp6NoNCwowbQHL0WYUH5nA8uIFXVu_hKKT8Yf6fevbJox6clG732Rss7o0ImeWJHgqr7HjaB8Xh)

Repare como dentro de cada bloco (**Stock**, **Flow** e **parameter**) os resultados já estão separados por gênero, com o AnyLogic encarregando-se de compor todo o equacionamento do modelo. Do ponto de vista de prática de modelagem, existe uma consequência natural deste recurso no AnyLogic: foque, inicialmente no modelo, estoques e fluxos. Com algo funcional em mão, dedique-se a eventual necessidade de uso de índices para categorizar fluxos específicos via **Arrays.**
