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 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 interrogação para a pergunta e 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, vamos 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 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. Montar a equação ficou fácil:

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

Pronto, já pode… SIMULAR!

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

Se tudo der certo, o fluxo de pessoas de um estoque 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 pelo ciclo de conversão boca a boca.