Variáveis dinâmicas no AnyLogic

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

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:

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:

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.

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=”.

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.

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:

conversaoMktg = ClientesPotenciais x eficaciaMktg

senão:

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)”.

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

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

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

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:

Pronto, já pode… SIMULAR!

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

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.

Atualizado