# 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.**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://tutorial-ds.anylogicbrasil.com.br/criando-estruturas-de-dados-com-arrays.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
