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