> For the complete documentation index, see [llms.txt](https://tutorial.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.anylogicbrasil.com.br/construindo-o-fluxo-de-processos-do-modelo.md).

# 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)
