> 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/variaveis-dinamicas-no-anylogic.md).

# Variáveis dinâmicas no AnyLogic

Já temos os estoques, os fluxos e os parâmetros. Agora e hora das variáveis dinâmicas.&#x20;

As taxas de conversão de clientes por marketing ou boca a boca são exemplos de cálculos que devem ser realizados dinamicamente, isto é: conforme o número de potenciais clientes diminui e o de clientes aumenta, essas taxas devem ser recalculadas.

O AnyLogic possui um tipo de variável específica para isso: a **Dynamic Variable**. Vamos criar uma **Dynamic Variable** para a "conversão por marketing”, denominada: **conversaoMktg**. Não se confunda: uma **Dynamic Variable** não tem aquele pequeno pedaço de pizza do **Parameter**:

![](https://lh4.googleusercontent.com/xtnxLX4J5M5tnAkGCuPWGSDELm4XN7DYEJbfXT1iUYQgnWASKP6k84hcRdwYSlFzZ9fIHX5tO7xl_RNM7ljLfeOBqzzEiy1XHqyxOYSlPMxx7A4xn9ES5zLIleWl_uWahFNmQx4w)

Em modelos de dinâmica de sistemas, devem ser representados todos os **Links** existentes entre estoques, variáveis, fluxos e parâmetros. Assim, com base no diagrama de laços causais, crie as ligações entre os parâmetros usando o **Link** da paleta de comandos:

![](https://lh6.googleusercontent.com/vTVC-dmkXkiyXmhm8WettjMSHJYe_AcTNSeGyYMHk3Dd7_Iit4H5RSq1JtoyflxtkR7_13uD9DSFs-XCe9TzkQz2lCJ5dyeQc-CXb0hB0mCJBz0E1MzIcQKvOlLFkuFGRrQzMv0Q)

O elemento **Link** possui como propriedade o seu sinal. Assim, clique no respectivo elemento e, na janela de **Properties** à direita, selecione o respectivo sinal do **Link**.

![](https://lh5.googleusercontent.com/KPWcRjQ_CXV7ZqVVWSufjXOKFaffvDNp9JQUy4ifUp4BbyzxRP7TYjy9qoKBHjS5q6cVKEPPxTPA3LDOwS_BLLDR1IPQs2agQxp1lv0aR5pmYpLeNyo0EywDoBFQQ-2DY7B4XiQf)

Chegamos ao final: construir a equação que rege a variável dinâmica. Clique na variável dinâmica **conversaoMktg** e localize, nas suas propriedades, um campo com o título **“conversaoMktg=”**.&#x20;

Queremos colocar ali a expressão que retorna o número de clientes potenciais convertidos. Contudo, se o número de meses de simulação for maior que o parâmetro **meses**, a conversão deve receber o valor 0.&#x20;

No AnyLogic, a função que retorna o tempo de simulação (na unidade de tempo do modelo) é `time()`. Assim, precisamos de algo como:

*`se`*` ``time() <= meses`` `*`então:`*

&#x20;    `conversaoMktg = ClientesPotenciais x eficaciaMktg`

*`senão:`*

&#x20;    `conversaoMktg = 0`

Tenho uma boa notícia: o AnyLogic possui uma forma de lidar com condições “se-então-senão” parecido com o que você possivelmente já utilizou em planilhas eletrônicas:

`“=SE(condição; caso verdadeiro; caso falso)”`.&#x20;

No AnyLogic (e no Java) você utiliza o sinal de interrogação "?" para a pergunta e o sinal de dois pontos ":" para as ações:

`condição ? caso verdadeiro : caso falso`

Assim, no caso da startup, basta colocarmos no campo da variável **conversaoMktg**:

`time() <= meses ? ClientesPotenciais x eficaciaMktg : 0`

Embora você já consiga fazer isso com o **Ctrl(⌘)+Espaço**, nesta etapa iremos por outro caminho: note um pequeno “x” vermelho ao lado do campo, o AnyLogic está informando existir um erro no respectivo campo (e dá até para adivinhar o que seja):

![](https://lh3.googleusercontent.com/HR1CHkORjFU2TjQXP33Z3PBY68uigHkmJIz6I4WB1-rCromaoZvHcNIkfH0MZRvht0ZkO_6fwdQeOlAlMOvudulvwPg_4ruYTPqihoi3bQB2kluVkCo3k20ak2FazS5RiTf0dfRP)

&#x20;Neste campo, o AnyLogic esconde mais um facilitador que acelera o processo de desenvolvimento:

* Clique **dentro do campo** com problema (clique *dentro* do box, hein);
* Deve aparecer um “X” dentro de uma bola vermelha (lembrando o símbolo dos [X-Men](https://pt.wikipedia.org/wiki/X-Men)). Clique nele, e note que o AnyLogic apresenta uma lista de opções: ou você adiciona uma variável/parâmetro/estoque que tem **Link** com o elemento atual ou, simplesmente, você elimina o **Link**.&#x20;

Assim, montar a equação ficou fácil:

![](https://lh3.googleusercontent.com/n1IQEeVMlsZiZeRrrIoKYxufDA6q_ZP8w1m1_21V5SMLT-a5my2wO1m_btitwpiHtNuZW6UyG8uaOYTx9APnSao3CnXllXCDdlhYwiwHpqYBdWL1FFiobcYiV1p085HASatHWprT)

Resolvida a **conversaoMktg**, passemos ao fluxo **taxaDeConversao**. Note que ele tem um **Link** (vindo da **conversaoMktg**) que também não fizemos a equação ainda:

![](https://lh3.googleusercontent.com/RcD7K7HweGGg5QMBKwio_arwq1r9bJilgewha2CxHXxQcWi1xcWBogcPrg_BpC1Q9gNxMIcy6SfhnVbj6-8bdflr9d_s-inwB1DZg5w2ugwSVW5JC_wBqrlvE6lZSMzaPcPzV-V8)

Pronto, já pode… SIMULAR!

![](https://lh4.googleusercontent.com/IC2PR48PBI-RsimYboFJOZQ6A0krD8zIeLhlSetcfDbzImFaS6_wP16rsuDZqun8iqXWuGBg1Ngqqu1DMiBh6Oe5xvvx94_5is22e70oVw4ztGV-XIPlcwg5hX9aZHTvg7BVxgK6)

Se você quiser acelerar ou desacelerar a simulação, utilize os botões na barra inferior do app:

![](https://lh5.googleusercontent.com/C6DfnLo1QfzD5ihbAZqXUhtRM3q4_BU552FCZCbLFOwZn27HKbB_NkgsVdo0TlEmuwuoJQf3SOCPbi_hrjXIV2Mitv72EHij2pkfzkgnRIdBCAMkaK6nV9rAR-j1Mwy3kAVb9T7W)

Se tudo der certo, surge o fluxo de pessoas do estoque **ClientesPotenciais** para o estoque **Clientes** pelos primeiros 6 meses e depois esse fluxo se encerra. Em breve você vai aprender a controlar a duração da simulação. Por enquanto, continue a construção do modelo, agora representando o ciclo de conversão boca a boca.
