# Construindo o fluxo de processos do modelo

O AnyLogic possui diversas paletas com blocos de comandos que são arrastados para a área central de modelagem.

Nesta primeira etapa do exercício, construiremos uma fila M/M/1 composta, basicamente, por:

* Um processo de chegadas de clientes, com intervalos entre chegadas sucessivas exponencialmente distribuído e valor médio de **2.0 clientes/min**;
* Um processo de uso do caixa eletrônico, com duração média de **0.4 min/cliente** e distribuição exponencial, equivalente a uma taxa de atendimento de **2.5 clientes/min (= 1/0.4)**;
* Um único servidor (apenas 1 caixa eletrônico, por exemplo).

O bloco **Source** é o responsável por gerar entidades (ou, na nomenclatura do AnyLogic, gerar agentes) num fluxo de processos. Clique, segure e arraste o bloco **Source**, a partir da paleta, para o meio da tela! \[Repare, na região de **Properties** à direita, como o menu sensitivo se altera].

![](https://lh6.googleusercontent.com/0a0Sf6nZKrnswXe7dW_trQpmPwYrjCc0T2j7-3N_G8FROBIG-g1DwROC-PVn4Ad_35dVKu80F16FKFID1ALEub2WaF151XzdZUtiwx534mzJdKyHtgV5RUGTPOyc6TnqNfrCppjF)

A fila M/M/1 tem apenas um servidor, então faremos um fluxo bem simples com elementos do AnyLogic:

* Um bloco **Source** para gerar agentes;
* Um bloco **Queue** que representa a fila de espera;
* Um bloco **Delay** que representa o processo de atendimento;
* Um bloco **Sink** que finaliza o agente criado no **source**.

O “arrastar e ligar” do AnyLogic é beeeeeeeem fácil: se você aproximar o mouse do bloco, ele já cria o **conector** que representa a ligação lógica entre os blocos.

![](https://lh6.googleusercontent.com/_OeSbZ5Hdx14hOTNphHUL8PwhcMT6NppwTbTinPl0SMWXBDhMzqrDbPKL1Yp74JYrvQHuBPeL91mW-AGPOh_EKVU0Mj7vJ6TxYHy8EV2zQOpIxaZJoqMTbiTQgOR4uNOHJialwxw)

Mas, se você **apagar** ou não criar um conector automaticamente, ~~chore~~ apenas dê um duplo clique numa ponta **verde do bloco de origem e una à outra ponta verde do bloco de destino**.

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

&#x20;Construído o fluxo dos processos, vem a etapa de configuração das **propriedades** de cada bloco. Clique no bloco **source**:

* Altere o nome do bloco para algo mais empolgante como: **chegadas**;
* O processo de chegadas será definido por uma **Rate** (= intervalos entre chegadas exponencialmente distribuídos);
* Para este exemplo, vamos considerar que a taxa de chegadas de clientes é de **2.0 clientes/min**.

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

Clicando no bloco **Queue**, você notará que a capacidade da fila está limitada a **100**. Contudo, por definição, a fila M/M/1 tem capacidade ilimitada. Assim, devemos clicar em **Maximum capacity** nas propriedades do bloco **Queue**, para que a fila seja ilimitada em capacidade:

![](https://lh5.googleusercontent.com/361nhnnNMw7R7l204lZcigIUDn6RpaYqkiFVhtV5XpvStObshOmwg1jJnZoOF6eHRJGpCIxdk1jhdF57xtOTdLvGj5mlWwSVaqqINwKvg-9RoUc5KunqeTgDOo4DAM-6nw5XtD5o)

**Importante**: no que, por default, as filas do AnyLogic nunca são criadas com capacidade infinita, mas sempre com uma capacidade limitada em 100 agentes. Caso seu valor não seja alterado para capacidade máxima e a fila extrapole sua capacidade durante a simulação, o AnyLogic apresentará uma mensagem de erro um tanto quanto espalhafatosa.

Para o bloco **Delay**, responsável por executar o processo de atendimento, vamos considerar que a taxa média de atendimento é de **2.5 clientes/min,** com distribuição exponencial.&#x20;

Para facilitar o processo de preenchimento de distribuições probabilísticas, o AnyLogic tem uma ferramenta específica para a  seleção de distribuições, o **Choose Probability Distributions**:

* Selecione o bloco **Delay** e a seguir o campo **Delay time**;
* Quando um campo que permite receber **distribuições de probabilidades** é aberto, ele ativa um botão na barra de comandos do AnyLogic (um jotinha com uma varinha de mágico):&#x20;

![](https://lh5.googleusercontent.com/tkiGPCUn6Bwdzet6q5DQYO4Q7TuyBKUzpjgrs_tdaie09Tc_aKOJ_HpyHsIPL-zzc_1HajPG-5T3ehoMDCjrK4V0mqXYmbEg4ja6Q2O6FuWLim4E01tP3E5W-ATg11nGYe-NWC6c)

* Clique no botão para surgir o **Choose Probability Distributions**:

![](https://lh6.googleusercontent.com/Xs1krZezphZoDeMGt24sAHhx7l-x_fNJlIznV1cfQMa_huCVMcFN35mk6ElKeiHQVrqKl-SqrjGQH9oTYjYrQqxYQlEtC8Zbpv56gGd6CSXQNGu4DPs5mXBFKjjjpPTNFXnFZ-t7)

Muitas distribuições, hein?&#x20;

**Importante**: o AnyLogic considera o parâmetro lambda ou taxa de ocorrência do fenômeno da distribuição (como usualmente fazem os livros de estatística). Por este motivo, devemos informar ao AnyLogic a taxa média atendimento de **2.5 clientes/min** (que é basicamente o inverso do tempo médio de atendimento, e, se você quiser, pode digitar diretamente assim: 1/0.4).

Pronto!

Pronto?

**Simule!**&#x20;

![](/files/-MG-V6A9SRhExSRqZtJN)

Sim, agora é executar o seu modelo primeiro modelo no AnyLogic utilizando o **botão verde** da barra de menu superior:

![](https://lh3.googleusercontent.com/QLRkB-LXjLzy8uScbUPkVubTZVkoOD1JvKDISvdv5QGlbudPCi4llmmDpXiv5GIaF8jdh7Xw2PyV_5xikk0c5eKstvhZv67XylJMrhRvyP0ITYKnJ3E1YFw2rhyVyC7SceAAdcV9)

Note que o AnyLogic executou seu modelo como um **aplicativo Java** e isto é **importante: o AnyLogic é um construtor de aplicativos de simulação.**

Na versão **Profissional** - e apenas nela - existe a opção de se exportar esse app, gerando um arquivo executável **independente do AnyLogic**, que você pode distribuir para terceiros ou executar em máquinas que sequer possuam o AnyLogic instalado.

Quando você clica no botão **Run**, a mágica acontece. Note que o bloco do **queue** ganha um preenchimento **azul escuro** conforme mais clientes aguardam na fila.

![](https://lh3.googleusercontent.com/3e2W5qboC7wT4Ai6uiuKU87Snp0rODpKfutSb3NiRmk9Xv1Z6RqogHO_dyHh-jDOYTI5janujtX1b0ICj6Nx2gcY1TIUq8BtSmDBEid2mPvuUtaBNPqWV8MPpdHB8CmPznHBPsxe)

Clique nos blocos azuis, eles são cheios de surpresas:

![](https://lh3.googleusercontent.com/nxQohE1G4Jiy4vrbfff2_srZjjNsj_qDXGJX4VUvBnRn032dXDU3iMpnaVO0QQhedlDljfYX60GqgjFO_7T6J75oLZrr28Do6s-dwDp5G9KDwIbVXC9sBz3tMOVqjEB0EQrQVtTB)

Se você simular por um tempo muito longo, em algum momento **o limite de 50.000 agentes da versão PLE** será ultrapassado e o AnyLogic apresentará uma tela branca, informando o erro.&#x20;

Para evitar este tipo de erro (não que ele vá ocorrer muito, já que 50.000 agentes é muita coisa), podemos configurar melhor o nosso **Experimento de Simulação**.&#x20;

Usando a tela da esquerda, selecione a aba **Projects**. Você visualizará um navegador com ícones empilhados, como pastas: os botões vermelhos com o símbolo de um bonequinho representam **Agentes**; e o ícone azul com um xis, lembrando um distintivo dos *x-men*, representa um **Experimento**.

![](https://lh6.googleusercontent.com/DJ7K06J2QtJac6NOKi2VZ_Uj1IaZzDyVQQDh1o1Rlblqkp3bO92LyDLuAEL0DRWIUILWhc6lJIpcr-hy-yAXYe3_IyY_-3ygYS9mAjXVh0nn_uVJNqDlM3uR7-cza41r0CtSDb6s)


---

# 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.anylogicbrasil.com.br/construindo-o-fluxo-de-processos-do-modelo.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.
