em três dias
Um curso rápido de modelagem de simulação
Segunda edição
2015
2 AnyLogic 7 em Três Dias
ISBN-13: 978-1508933748
ISBN-10: 150893374X
Prefácio
O primeiro livro prático sobre AnyLogic 7 dos desenvolvedores do AnyLogic. O
AnyLogic é o único software de simulação que suporta três métodos de
modelagem de simulação: dinâmica de sistemas, eventos discretos e modelagem
baseada em agentes, e que permite criar modelos multi-método.
O livro está estruturado em torno de quatro exemplos: um modelo de mercado
consumidor, um modelo de epidemia, um modelo de uma pequena fábrica e um
modelo de aeroporto. Também falamos um pouco da teoria sobre os diferentes
métodos de modelagem.
Você pode considerar este livro como o seu primeiro guia no estudo do AnyLogic
7. Lendo o livro e completando os exercícios, você será capaz de criar modelos de
pedestres e eventos discretos usando fluxogramas de processo, desenhar
diagramas de estoque e fluxo e construir modelos baseados em agentes.
Sobre o autor
Ilya Grigoryev é o diretor de serviços de treinamento da AnyLogic, uma empresa
especializada em consultoria e desenvolvimento de softwares de simulação.
Ilya Grigoryev é o autor da documentação do AnyLogic e dos cursos de
treinamento em AnyLogic. Ele já deu treinamentos nos Estados Unidos, Europa,
África e Ásia. Ilya Grigoryev também presta consultoria de simulação para várias
organizações. Ele trabalha na AnyLogic há mais de 10 anos e sabe quase tudo
sobre simulação e AnyLogic.
4 AnyLogic 7 em Três Dias
Agradecimentos
Eu gostaria de agradecer a:
Edward Engel por sua ajuda na escrita do livro e a Anna Klimont por tirar as
imagens.
Todos os líderes de equipe da AnyLogic que tornaram meu tempo na equipe de
desenvolvimento muito agradável: Alexei Filippov, Vasiliy Baranov, George
Meringov e Nikolay Churkov.
Meus colegas e amigos por suas energias positivas: Tatiana Gomzina, Alena
Beloshapko, Evgeniy Zakrevsky (AnyLogic), Vladimir Koltchanov (AnyLogic
Europe), Clemens Dempers (Blue Stallion Technologies) e Derek Magilton
(AnyLogic North America).
Vitaliy Sapounov por seus conselhos e apoio.
Andrei Borshchev por suas contribuições para o livro.
Timofey Popkov e George Gonzalez-Rivas pela ideia de publicar o livro.
Ilya V. Grigoryev
grigoryev@anylogic.com
AnyLogic 7 em Três Dias 5
Conteúdo
Conteúdo ....................................................................................................................................................5
Modelagem de simulação ...................................................................................................................7
Instalando e ativando o AnyLogic ................................................................................................ 15
Modelagem Baseada em Agentes ................................................................................................. 20
Modelo de mercado ....................................................................................................................... 23
Fase 1. Criando a população de agentes ............................................................................... 23
Fase 2. Definindo o comportamento consumidor............................................................ 42
Fase 3. Adicionando um gráfico para visualizar os resultados do modelo ........... 54
Fase 4. Adicionando o efeito boca a boca ............................................................................ 66
Fase 5. Considerando os descartes do produto ................................................................ 72
Fase 6. Considerando o tempo de entrega .......................................................................... 75
Fase 7. Simulando a impaciência do consumidor ............................................................ 81
Fase 8. Comparando execuções do modelo com valores de parâmetros
diferentes ........................................................................................................................................... 93
Modelagem de Dinâmica de Sistemas ..................................................................................... 101
O modelo SEIR .............................................................................................................................. 103
Fase 1. Criando um diagrama de estoque e fluxo .......................................................... 103
Fase 2. Adicionando um gráfico para visualizar a dinâmica .................................... 115
Fase 3. Experimento de variação de parâmetros .......................................................... 120
Fase 4. Experimento de calibração ...................................................................................... 129
Modelagem de eventos discretos .............................................................................................. 135
Modelo de Fábrica ....................................................................................................................... 137
Fase 1. Criando um modelo simples ................................................................................... 137
Fase 2. Adicionando recursos ................................................................................................ 151
Fase 3. Criando animações 3D ............................................................................................... 158
Fase 4. Modelando a entrega de paletes por caminhões............................................ 169
6 AnyLogic 7 em Três Dias
Modelagem de simulação
A modelagem é uma forma pela qual podemos resolver problemas do mundo real.
Em muitos casos, não podemos arcar com experimentos com objetos reais para
encontrar as soluções certas: construir, destruir e fazer alterações pode ser muito
caro, perigoso ou simplesmente impossível. Se esse for o caso, podemos construir
um modelo que use uma linguagem de modelagem para representar o sistema
real. Este processo assume abstrações: incluímos os detalhes que acreditamos que
sejam importantes e deixamos de lado aqueles que não são. O modelo sempre
será menos complexo do que o sistema original.
Modelagem
Tipos de modelos
Há vários tipos de modelos, incluindo os modelos mentais que usamos para
entender como tudo funciona no mundo real: os amigos, a família, os colegas, os
motoristas, a cidade onde vivemos, as coisas que compramos, a economia, os
esportes e a política. Todas as nossas decisões – o que devemos dizer para o filho,
o que devemos comer no café da manhã, em quem devemos votar ou onde
devemos levar a namorada para jantar – são baseadas em modelos mentais.
Os computadores são poderosas ferramentas de modelagem, eles nos
proporcionam um mundo virtual flexível onde podemos criar quase qualquer
coisa imaginável. Claro, há muitos tipos de modelos computacionais, de planilhas
que permitem modelar gastos até ferramentas complexas de modelagem de
simulação que ajudam usuários avançados a explorar sistemas dinâmicos, como
mercados consumidores e campos de batalha.
Calcular!
Entradas Saídas
X1 Y1
X2
X3 Y = f(X) Y2
Y3
X4 Fórmulas e scripts
Y4
• Comportamento não-linear
• "Memória"
Aplicações de simulação
BA Dinâmica de
Sistemas
Nível de abstração
médio
(alguns detalhes,
nível meso,
ED
nível tático)
Modelagem
de eventos
Nível de abstração discretos
(centrada em Modelagem
baixo baseada em
(muitos detalhes, processos)
agentes
nível micro,
nível operacional) Objetos isolados, tamanhos exatos, velocidades, distâncias,
tempo…
• Dinâmica de Sistemas
• Eventos Discretos
Estoques, fluxos,
retroalimentação ? Entidades, recursos,
operações ? Agentes, regras de
comportamento, ?
interação
Propaganda Chegadas Escolha de Anúncios
produtos
Fidelidade
Clientes
Vendas Registro Saída
O Modelador
Você também pode descobrir que a melhor forma de modelar as diferentes partes
de um sistema é usando métodos diferentes e, nessas situações, um modelo multi-
método atenderá melhor as suas necessidades (Borshchev, 2013).
AnyLogic 7 em Três Dias 15
6. Você deve ver uma mensagem que diz que o produto foi ativado com sucesso.
7. Clique em Finish.
Você completou o processo de ativação do AnyLogic e pode começar a
desenvolver o seu primeiro modelo.
20 AnyLogic 7 em Três Dias
Você pode não saber como se comporta um sistema, ser capaz de identificar
suas principais variáveis e dependências ou reconhecer um fluxo de
processo, mas você pode ter noções de como os objetos do sistema se
comportam. Se este for o caso, você pode começar a construir o modelo
identificando os objetos (agentes) e definindo os seus comportamentos.
Depois, você pode conectar os agentes criados e possibilitar que interajam
entre si, ou colocá-los em um ambiente que tenha a sua própria dinâmica. O
comportamento global do sistema surge de muitos (dezenas, centenas,
milhares, milhões) comportamentos individuais concorrentes.
Não existe uma linguagem padrão para a modelagem baseada em agentes, a sua
estrutura vem de editores gráficos ou scripts. Há várias formas de especificar o
comportamento de um agente. Geralmente, o agente tem uma noção de estado e
suas ações e reações dependem desse estado; assim, o comportamento é mais
bem definido com diagramas de estados. Às vezes, o comportamento é definido
por regras, executadas por eventos especiais.
Em muitos casos, a melhor forma de capturar a dinâmica interna do agente é usar
dinâmica de sistemas ou uma abordagem de eventos discretos, e assim colocar
AnyLogic 7 em Três Dias 21
Pesquisadores ainda debatem sobre quais propriedades um objeto deve ter para
ser um “agente”: características proativas e reativas, percepção espacial,
capacidade de aprender, capacidade social, “intelectual”, etc. Em modelagem
baseada em agentes aplicada, entretanto, você encontrará todo tipo de agente:
alguns se comunicam enquanto outros vivem em isolamento total, alguns vivem
em um espaço enquanto outros vivem sem, e alguns aprendem e se adaptam
enquanto outros nunca mudam seus comportamentos padrões.
Aqui estão alguns fatos úteis que garantem que você não está mal orientado pela
literatura ou pelas várias teorias de modelagem baseada em agentes:
• Um objeto que parece ser totalmente passivo pode ser um agente. Você
pode modelar uma tubulação em uma rede de fornecimento de água como um
agente e depois associar cronogramas de manutenção e troca, custos e
eventos de deterioração a ela.
Modelo de mercado
Construiremos um modelo baseado em agentes de um mercado consumidor –
onde cada consumidor será um agente – para nos ajudar a entender como um
produto entra no mercado. Uma vez que as decisões humanas sempre incluem
eventualidades, a modelagem baseada em agentes é ideal para simulações de
mercados.
Vamos assumir o seguinte:
• O modelo inclui 5.000 pessoas que não usam o produto, mas uma
combinação de propaganda e marketing boca a boca levarão as pessoas a
comprá-lo eventualmente.
Página Welcome
1. Feche a página Welcome e crie um novo modelo selecionando File > New >
Model no menu principal do AnyLogic. O assistente New Model abrirá.
AnyLogic 7 em Três Dias 25
Projects e Palette.
Clique na aba para mudar de visão
Visão Properties
Editor gráfico
• Para redimensionar uma visão, use o mouse para arrastar a borda da visão.
• Você pode sempre usar a opção Reset perspective do menu Tools para retornar
as visões para as posições padrões.
AnyLogic 7 em Três Dias 27
Agentes
• Os agentes são blocos de construção de um modelo, e você pode usá-los para
modelar todo tipo de objeto do mundo real, incluindo organizações,
empresas, caminhões, estações de processamento, recursos, cidades,
revendedores, objetos físicos, controladores, entre outros.
• Cada agente normalmente representa uma das seções lógicas do modelo. Isto
permite decompor um modelo em vários níveis de detalhe.
Nosso modelo tem um tipo de agente, Main. Para adicionar os consumidores,
precisaremos criar um tipo de agente que represente os consumidores, e
depois criar uma população de agentes composta de instâncias deste tipo de
agente consumidor. No AnyLogic 7, você pode usar o assistente New agent
para criar os agentes.
6. Nós queremos adicionar um novo elemento ao modelo, mas primeiro
precisamos mudar para a visão Palette, clicando na aba Palette.
7. Abra a paleta Agent. Para abrir uma paleta específica, vá na visão Palette e
passe o mouse sobre o painel de navegação vertical da visão.
8. Ele se expandirá mostrando o nome de todas as paletas para que você possa
selecionar a que precisa. Clique na paleta Agent na lista para selecioná-la.
AnyLogic 7 em Três Dias 29
Uma vez que estiver familiar com os ícones, você pode clicar no ícone da paleta
que desejar na barra de navegação.
9. Arraste o Agent da paleta Agent para o diagrama Main, e o assistente New
agent abrirá.
9
30 AnyLogic 7 em Três Dias
10. No Passo 1, página Choose what you want to create, selecione a opção que
melhor atende as suas necessidades. Como queremos criar múltiplos agentes
do mesmo tipo, selecione Population of agents e clique em Next.
10
AnyLogic 7 em Três Dias 31
11. No Passo 2, página Creating new agent type, no campo Agent type name,
digite Consumer. O conteúdo do campo Agent population name
automaticamente mudará para consumers.
11
12
13
AnyLogic 7 em Três Dias 33
15
16
15. Na seção à esquerda, na tabela Parameters, clique em <add new…> para criar
um parâmetro.
16. No campo Parameter, altere o nome padrão do parâmetro para
AdEffectiveness, e escolha double como Type do parâmetro. Assumiremos que
uma média de 1% dos usuários potenciais do nosso modelo desejará comprar
o produto durante determinado dia, então especifique 0.01 como o valor do
parâmetro.
17. Clique em Next.
34 AnyLogic 7 em Três Dias
18. Na página Population size, digite 5000 no campo Create population with …
agents para criar 5.000 instâncias do tipo Consumer. Cada instância da
população modelará um agente consumidor específico.
Embora tenhamos criado a nossa população de agentes, não veremos 5,000
figuras de animação Person no diagrama Main. Ao invés disso, o AnyLogic
usará os 5,000 agentes da população consumers para simular o mercado
quando executarmos o modelo.
Ambiente do agente
O agente Main atua como ambiente para a população consumers. Como o ambiente
define o espaço, o layout, a rede e a comunicação que nossos agentes usam,
precisaremos de um ambiente para organizar as apresentações dos agentes e
modelar a propaganda “boca a boca” que acontece quando nossos agentes
interagem entre si.
24. Clique em Main, em Projects, para abrir suas propriedades na visão Properties
(você encontrará Properties na metade direita da janela do AnyLogic).
Na seção Space and network das propriedades de Main, você pode ajustar as
configurações do ambiente para a população de agentes consumers.
AnyLogic 7 em Três Dias 37
A visão Properties
• A visão Properties é uma visão
sensível ao contexto das
propriedades do elemento.
25
Como você pode ver na figura a seguir, a forma de animação define o canto
superior esquerdo de área 500x500 píxeis onde os agentes ficarão quando
executarmos o modelo.
AnyLogic 7 em Três Dias 39
27
Como você pode ter muitos modelos abertos ao mesmo tempo – e cada modelo
pode ter vários experimentos – você deve selecionar o experimento correto.
Depois que você inicializa o modelo, a janela de apresentação mostra o
experimento lançado Simulation . Por padrão, a janela de apresentação exibe o
nome do modelo e o botão Run.
28. Clique no botão Run para executar o modelo.
28
40 AnyLogic 7 em Três Dias
Você verá a apresentação do modelo (a apresentação que você criou para o agente
Main) que mostra as 5,000 animações dos agentes que formam a população de
consumers. Como não criamos nenhum comportamento para nossos agentes, a
animação aparece imóvel.
29
42 AnyLogic 7 em Três Dias
Diagramas de estados
• Os diagramas de estados são as estruturas mais avançadas para descrever
comportamentos baseados em eventos e no tempo. Para alguns objetos, esta
ordem evento-temporal das operações é tão comum que você pode melhor
caracterizar seu comportamento usando um diagrama de transição de
estados – um diagrama de estados.
Por favor, preste atenção – é fácil confundir o Statechart Entry Point com o
Initial State Pointer, ou uma Transition, uma vez que eles são parecidos.
Você pode ver como o AnyLogic destacou o statechart entry point em vermelho.
Isso significa que o ponto de entrada não está conectado a um estado, e que o
diagrama de estados atual é inválido.
Vamos adicionar o primeiro estado ao diagrama de estados do consumidor.
4. Arraste o State da paleta Statechart para o diagrama gráfico, e conecte-o ao
ponto de entrada do diagrama.
6. Use o campo Fill color para alterar a cor do estado para lavander.
Mac OS). A janela que aparece lista os elementos do modelo que estão
disponíveis no contexto dado, como as variáveis, parâmetros ou funções do
modelo.
10. Desenhe uma transição do estado PotentialUser para o estado User para
modelar como as pessoas compram o produto e se tornam usuárias. Para
fazer isso, dê um clique duplo no elemento Transition (o ícone da paleta do
elemento deve mudar para ) da paleta statechart, clique no estado
PotentialUser, e clique em User .
48 AnyLogic 7 em Três Dias
Você pode ver que o ícone desenhado sobre a transição mudou de para .
Este sinal indica o tipo de gatilho da transição.
Para mover o nome ou o ícone da transição, selecione a transição, e use o mouse
para arrastar o elemento correspondente para uma nova posição.
AnyLogic 7 em Três Dias 49
Gatilho de Descrição
transição
Nossa transição é acionada com uma taxa especificada. No nosso caso, quando o
diagrama de estados entra no estado PotentialUser, uma projeção da distribuição
exponencial é realizada e o timeout é estabelecido. Cada tempo de adoção do
consumidor diferirá, embora uma média de 1% dos usuários potenciais comprará
o produto em determinado dia.
14. Agora, vamos configurar a unidade de tempo do modelo. Para ajustar a
configuração do modelo, mude de Palette para Projects, e depois clique no
item do modelo na árvore (o objeto do topo da árvore, Market). Na visão
Properties, escolha days como Model time units.
14
AnyLogic 7 em Três Dias 51
significa que o modelo executa duas vezes mais rápido que a velocidade
especificada para o modelo.
A barra de ferramentas Time scale permite que você ajuste a velocidade de
execução do modelo:
Desacelerar
Definir tempo real Alternar para
como escala padrão modo real/virtual
Acelerar
16. Para ajustar a velocidade de execução do modelo, clique nos botões Slow
down ou Speed up. Se você aumentar a velocidade para 10x – você verá que a
velocidade em que a população se torna verde aumenta.
54 AnyLogic 7 em Três Dias
Agora, vamos adicionar um gráfico para mostrar as estatísticas que estas funções
coletam e exibir a dinâmica do processo de adoção.
6. Abra a paleta Analysis e arraste o Time Stack Chart da paleta Analysis para o
diagrama Main para criar um gráfico que exibirá as dinâmicas dos usuários e
dos usuários potenciais. Aumente o tamanho do gráfico como mostrado na
figura abaixo:
AnyLogic 7 em Três Dias 57
Gráficos
O AnyLogic fornece vários gráficos que você pode usar para visualizar os dados
que o seu modelo gera. Você pode encontrá-los na seção Charts da paleta Analysis.
Bar Chart
Stack Chart
Pie Chart
Plot
Desempenha um papel de
diagrama de fases. Cada data
set é formado de pares <x,y>.
O Plot exibe os valores-Y de
um data set em relação aos
valores-X. Os Valores-X são
mapeados para o eixo-X, os
valores-Y para o eixo-Y. Pode
exibir vários data sets ao
mesmo tempo.
Time Plot
Histogram
Exibe as estatísticas coletadas
pelos objetos de Dados de
Histograma. Os histogramas
também são dimensionados
juntos ao eixo Y para que a
barra mais alta do histograma
ocupe a maior altura da figura.
Você pode optar também por
mostrar as barras em PDF,
CDF e média local.
60 AnyLogic 7 em Três Dias
Histogram2D
Exibe uma coleção de
histogramas 2D. Cada um é
desenhado com um conjunto
de pontos coloridos refletindo
o valor PDF ou a função
contínua correspondente em
(X,Y). Os eixos do gráfico
sempre são escalados para
caberem no histograma.
Adicione dois itens de dados ao gráfico para exibição. Aqui chamaremos as nossas
funções estatísticas de NUser e NPotential que definimos para a população
consumers no passo anterior.
7. Clique em Add data item para adicionar as estatísticas que você quer plotar
no gráfico.
• Color: yellowGreen
• Value: consumers.NUser()
• Color: lavender
• Value: consumers.NPotential()
14
15. Execute o modelo e o use o gráfico time stack chart para analisar o processo.
66 AnyLogic 7 em Três Dias
Agora, deixaremos nossos agentes interagirem entre si. Isto representa o boca a
boca que convencerá uma porcentagem dos consumidores a comprar o produto.
Interações do agente
O AnyLogic suporta um mecanismo de comunicação único para a modelagem
baseada em agentes: envio de mensagens.
• Para enviar uma mensagem para outro agente, você usa uma função específica
do agente. As informações abaixo listam as funções mais frequentemente
usadas para enviar mensagens de um agente para outro(s):
sendToAll( msg ) – envia a mensagem para todos os agentes da mesma
população.
sendToRandom( msg ) – envia a mensagem para um agente escolhido
aleatoriamente da mesma população.
send( msg, agent ) – envia a mensagem para o agente dado (você passa a
referência do agente destinatário como segundo argumento da função)
68 AnyLogic 7 em Três Dias
Transições internas
• Uma transição interna é uma transição cíclica que fica dentro de um estado. Os
pontos inicial e final ficam na borda do estado.
• Como uma transição interna não sai do estado que a contém, ela não leva o
diagrama de estados para outro estado. Nem as ações de entrada e saída são
executadas quando a transição ocorre, e o estado atual não é alterado.
8. Modifique as propriedades da transição. Esta transição acontecerá com a Rate
especificada ContactRate (use o autocomplemento de código ao invés de
AnyLogic 7 em Três Dias 69
12
2. Este parâmetro definirá a vida útil do nosso produto. Escolha Time como Type
do parâmetro, clique em months na lista Unit, e digite 6 como Default value.
3. Desenhe uma transição do estado User para o estado PotentialUser para
modelar os descartes do produto. Para desenhar uma transição com curvas
como aquelas mostradas na figura, dê um clique duplo no elemento
Transition da paleta Statechart (isto deve mudar o ícone do elemento na
paleta para ), clique no estado de origem da transição, User, clique nos
pontos de curva e clique no estado de destino, PotentialUser.
AnyLogic 7 em Três Dias 73
Para consertar o erro, dê um clique duplo nele na visão Problems. Se o erro for
gráfico, o AnyLogic destacará o elemento que causou o erro no editor gráfico. Se o
erro é em uma propriedade do elemento, o AnyLogic abrirá as propriedades do
elemento e mostrará o campo onde o problema ocorreu.
Nosso trabalho para modelar os descartes do produto está completo, e qualquer
descarte gerará uma necessidade imediata de comprar um novo produto.
5. Execute o modelo e observe como os descartes afetam a dinâmica de adoção.
Mesmo depois que o nosso produto satura o mercado, você notará descartes
de produtos ocasionais.
AnyLogic 7 em Três Dias 75
3
AnyLogic 7 em Três Dias 77
7. Vamos assumir que geralmente um usuário leva dois dias para comprar o
produto. Isto significa que uma vez que o diagrama do consumidor entre no
estado WantsToBuy, ele procederá para o estado User em dois dias. Com isto
em mente, configure um timeout de dois dias para a transição Purchase:
78 AnyLogic 7 em Três Dias
8
AnyLogic 7 em Três Dias 79
9. Em Main, selecione time stack chart, e adicione outro item de dado para ser
mostrado com o gráfico: consumers.NWantToBuy() com o título Want to buy e
cor gold.
10
10. Deixe o novo item de dado definido em segundo na lista selecionando a seção
Nós assumimos que leva de 1 a 25 dias – com uma média de dois dias – para
entregar o produto. Com isto em mente, vamos alterar o tempo de entrega de um
período de entrega fixo de dois dias para a expressão estocástica que descreve
esse padrão.
10. Desenhe a última transição CantWait que vai do estado WantsToBuy para o
estado PotentialUser. Esta transição modelará como a impaciência de um
consumidor o motiva a mudar sua decisão de compra, e o diagrama Consumer
parecerá como este:
10
11. Altere as propriedades da transição para que ela seja engatilhada pelo
Timeout que é igual a triangularAV(main.MaxWaitingTime, 0.15) days
AnyLogic 7 em Três Dias 87
Controles
Os controles (controls) do AnyLogic podem ajudar a adicionar interatividade ao
seu modelo. Você pode usá-los para configurar parâmetros antes da execução do
modelo e alterar o modelo em execução. O controle pode executar códigos ou
fazer alterações nos parâmetros do modelo.
Você também pode associar uma ação arbitrária como uma chamada a uma
função, agendar um evento, enviar uma mensagem ou parar o modelo com um
controle. A ação é executada toda vez que o usuário tocar no controle. O valor do
controle é normalmente disponível como value no campo de código Action e
também é retornado pela função getValue() do controle.
A tabela abaixo descreve resumidamente cada controle.
Controle Descrição
• Combo Box
• List Box
• File Chooser
• Progress Bar
12. Volte para o diagrama Main. Abra a paleta Controls e arraste dois Sliders para
o diagrama abaixo do gráfico. Vincularemos os sliders aos nossos dois
parâmetros.
Alguns controles têm rótulos padrões, mas você deve usar a forma Text para criar
manualmente um texto para os sliders.
15. Abra a paleta Presentation, arraste duas formas Text para o diagrama, e as
posicione acima dos sliders. Vamos configurar os títulos desses controles.
AnyLogic 7 em Três Dias 91
16
4. O dataset mantém uma quantidade limitada dos itens de dados mais recentes,
e limitaremos o tamanho da nossa amostra a 500. Configure o dataset para
Keep up to 500 latest samples. Defina o Update data automatically com valor
padrão Recurrence time: 1 . Adicionaremos uma amostra para um dia do
tempo de vida do modelo.
AnyLogic 7 em Três Dias 95
11. Nós queremos que o experimento simule o modelo para apenas 500 dias.
Para fazer isso, selecione o experimento CompareRuns na árvore de Projects.
Nas propriedades do experimento, abra a seção de propriedades Model time
e digite 500 no campo Stop time.
98 AnyLogic 7 em Três Dias
12
13. Na janela do modelo, clique no botão Run para ver o resultado associado com
os valores padrões dos parâmetros. Depois, altere os valores dos parâmetros
e clique em Run novamente para observar o comportamento do sistema para
novas configurações. O gráfico exibe todos os resultados para sua análise.
AnyLogic 7 em Três Dias 99
15. Você pode copiar os datasets clicando na legenda e selecionando Copy all ou
Copy selected no menu de contexto.
Agora que você acabou de desenvolver o modelo baseado em agentes Market, você
pode estendê-lo tornando a lógica do consumidor mais sofisticada (por exemplo,
introduzindo produtos concorrentes). Você pode encontrar o modelo Statechart
for Choice of Competing Products na seção Models de “Big Book of Simulation
Modeling” dos modelos de exemplo do AnyLogic. Para visualizar os modelos,
escolha Examples no menu Help.
AnyLogic 7 em Três Dias 101
• Modelar o sistema como uma estrutura causal fechada que define o seu
próprio comportamento.
O modelo SEIR
Estamos prestes a construir um modelo que mostre a disseminação de uma
doença contagiosa em uma grande população. Nosso modelo terá uma população
de 10,000 pessoas – um valor que chamamos de TotalPopulation – das quais uma
está infectada.
• Durante a fase infecciosa, uma pessoa entra em contato com uma média
de ContactRateInfectious = 1.25 pessoas por dia. Se uma pessoa infectada
entra em contato com uma pessoa suscetível, a probabilidade de infecção
da pessoa suscetível é de Infectivity = 0.6.
Estoques e fluxos
Em Dinâmica de Sistemas, estoques (também conhecidos como níveis,
acumulações ou variáveis de estado) representam estoques reais de materiais,
conhecimento, pessoas, dinheiro, etc. Fluxos definem suas taxas de mudança –
como os valores dos estoques mudam e definem a dinâmica do sistema. Aqui
estão alguns exemplos de estoques e fluxos:
O fluxo pode sair de um estoque e entrar em outro. Tal fluxo é de saída para o
primeiro estoque e de entrada para o segundo, ao mesmo tempo:
6. Você pode ver as fórmulas dos estoques Susceptible e Exposed. Como o fluxo
ExposedRate reduz o valor do estoque Susceptible e aumenta Exposed, as
fórmulas devem ser as mesmas, como na figura acima. O AnyLogic
automaticamente criou essas fórmulas quando você adicionou o fluxo.
AnyLogic 7 em Três Dias 107
Fórmulas de estoques
O AnyLogic gera automaticamente a fórmula de um estoque de acordo com o
diagrama de estoque e fluxo do usuário.
O valor do estoque é calculado de acordo com os fluxos de entrada e saída do
estoque. O valor das entradas – os fluxos que aumentam o valor do estoque – é
adicionado e o valor das saídas – fluxos que reduzem o estoque – é subtraído do
valor atual do estoque:
fluxoEntrada1 + fluxoEntrada2 … - fluxoSaída1 - fluxoSaída2 …
No sistema clássico, apenas a notação dos fluxos aparece na fórmula. A fórmula
não é editável e nenhum outro tipo de elemento, a não ser os fluxos de entrada e
saída, podem aparecer na fórmula.
7. Adicione um fluxo de Exposed para Infectious e o nomeie como
InfectiousRate.
9. Reorganize os nomes dos fluxos como mostrado na figura abaixo. Para fazer
isso, selecione um fluxo e arraste seu nome.
9
108 AnyLogic 7 em Três Dias
• Infectivity = 0.6
• ContactRateInfectious = 1.25
• AverageIncubationTime = 10
• AverageIllnessDuration = 15
10
12
Conexões de Dependência
Os diagramas de estoque e fluxo têm dois tipos de dependências:
13
14
20
21
114 AnyLogic 7 em Três Dias
21. Para mudar a janela de inspeção para o modo gráfico, clique no ícone mais à
esquerda em sua barra de ferramentas.
22. Aumente a velocidade de execução do modelo para fazer a simulação ir mais
rápido.
AnyLogic 7 em Três Dias 115
1
116 AnyLogic 7 em Três Dias
2. Vá para as Properties do ciclo, mude seu Type para R (de Reforço), mantenha
Clockwise Direction, e especifique o texto que o AnyLogic exibirá perto do
ícone do ciclo: Contagion.
Identificadores de Ciclos
Ciclo (Loop) é um identificador gráfico com um rótulo que descreve
resumidamente o significado do ciclo e uma seta que mostra o seu sentido.
No lugar de definir o ciclo causal, ele fornece informações sobre como as variáveis
do diagrama de estoque e fluxo afetam umas às outras. Ao adicionar um ciclo,
você pode ajudar outros usuários a entenderem as influências e as dependências
causais do diagrama de estoque e fluxo.
O ciclo Contagion é de reforço. Um aumento em Infectious leva a um aumento
da ExposedRate que, por sua vez, leva a um aumento maior de Exposed. Todos as
conexões deste ciclo são positivas.
Descubra quais são os outros ciclos neste diagrama de estoque e fluxo. Quais são
seus sentidos e tipos?
Vamos adicionar um Time Plot para plotar as pessoas em Susceptible, Exposed,
Infectious e Recovered.
6. Adicione três itens de dados para exibir os valores dos estoques Exposed,
Infectious e Recovered do mesmo jeito – e não esqueça de definir os Títulos
correspondentes.
118 AnyLogic 7 em Três Dias
AnyLogic 7 em Três Dias 119
7. Concluímos nosso modelo. Agora, execute o modelo e use o gráfico que você
adicionou para ver sua dinâmica.
120 AnyLogic 7 em Três Dias
8. Para garantir que cada execução simule exatamente 300 dias, precisamos
limitar o tempo de vida do modelo para 300 dias. Clique em
ContactRateVariation na árvore de Projects para abrir suas propriedades. Na
visão Properties, abra a seção Model time, selecione Stop at specified time na
lista Stop, e digite 300 no campo Stop time.
Agora, adicionaremos um Time Plot para mostrar os resultados do nosso
experimento. Nosso primeiro passo é coletar os dados sobre a quantidade de
pessoas infectadas.
9. Abra o diagrama Main, clique com o botão direito no estoque Infectious e
depois clique em Create Data Set.
124 AnyLogic 7 em Três Dias
10. Depois que o data set InfectiousDS aparecer, vá até suas propriedades. Como
queremos ver a dinâmica da doença infecciosa, deixe o checkbox Use time as
horizontal axis value marcado.
AnyLogic 7 em Três Dias 125
11. Escolha Update data automatically e deixe Recurrence time: 1 para adicionar
uma amostra ao nosso dataset para cada dia de vida do modelo.
12. Para obter as amostras de toda a execução do modelo, configure o dataset
para Keep up to 300 latest samples.
Estamos prontos para adicionar um gráfico ao diagrama do experimento
ContactRateVariation que exibirá nossos resultados.
14. Abra as propriedades do Time Plot. Na seção Scale, certifique-se que o Time
Plot mostre dados para 300 unidades de tempo do modelo configurando a
Time window para 300 model time units.
126 AnyLogic 7 em Três Dias
15
16
Embora queiramos que o nosso gráfico mostre múltiplas curvas – uma para cada
execução da simulação – não podemos adicionar os dados de cada execução
diretamente nas propriedades de Data do gráfico. Cada execução do modelo
destrói o agente principal e seus dados, e como nosso modelo não consegue
AnyLogic 7 em Três Dias 127
18. Estamos prontos para executar o experimento e usar nosso gráfico para
observar os dados coletados de múltiplas execuções da simulação. Na barra
de ferramentas, na lista Run, selecione SEIR / ContactRateVariation.
19
O AnyLogic realiza uma série de execuções que usa diferentes valores para o
parâmetro ContactRateInfectious e depois adiciona a saída da simulação ao
gráfico.
Se você analisar os resultados do experimento de variação de parâmetros, verá
como as taxas de contato elevadas permitem que a infecção avance mais
rapidamente. Verá também que o gráfico exibe 18 iterações – em outras palavras,
18 cenários de infecção para taxas de contato que variam de 0.3 a 2 – que
representam os 18 passos do intervalo de variação de parâmetros que definimos
anteriormente. Você pode destacar uma curva clicando em seu valor de Taxa de
Contato (CR) na legenda.
AnyLogic 7 em Três Dias 129
Experimento de calibração
• O experimento de calibração usa o otimizador nativo OptQuest para
localizar os valores de parâmetros do modelo que correspondam a saída
da simulação que melhor se ajusta aos dados fornecidos.
Funções tabela
• Função tabela (table function) é uma função definida no forma de tabela.
O usuário define uma função fornecendo alguns pares (argumento,
valor), e depois o AnyLogic usa uma combinação dos dados e o tipo de
interpolação selecionado para construir a função tabela. Uma chamada a
função que passa um valor como argumento retornará (possivelmente,
interpolado) um valor da função.
3
AnyLogic 7 em Três Dias 131
4. Você pode visualizar a curva feita pela função tabela na seção Preview das
propriedades da função tabela.
5. Defina a opção Out of range como Nearest para assegurar que a função
considere casos onde o argumento da função exceda o valor de 300 que
definimos em Table data.
Estamos usando a opção Nearest para garantir que o argumento válido mais
próximo extrapole a função. Isto quer dizer que em todos os argumentos à
esquerda do intervalo, a função tomará o valor do ponto mais à esquerda. Do
mesmo modo, todos os argumentos à direita do intervalo, a função tomará o valor
no ponto mais à direita. A visualização do gráfico reflete as interpolações e
extrapolações atuais.
Estamos prontos para criar o experimento.
6. Clique com o botão direito do mouse no item de modelo (SEIR) na árvore de
Projects, vá para New, e depois clique em Experiment. No assistente New
Experiment, escolha Calibration como Experiment type e depois clique em
Next. Neste momento, usaremos o assistente para configurar os parâmetros.
• Coefficient: 1.0
Novamente, o agente principal Main está disponível aqui como root. Nós usamos o
dataset InfectiousDS para manter a saída do modelo no fim da execução da
simulação e compará-la com os dados históricos da função tabela
InfectiousHistory.
Embora nosso modelo tenha um critério, você pode usar coeficientes se o seu
modelo tiver vários critérios.
9. Clique em Finish. O diagrama do experimento Calibration mostrará a interface
de usuário configurada (UI).
AnyLogic 7 em Três Dias 133
12. Depois que a calibração for concluída, você pode copiar os valores otimizados
dos parâmetros clicando no botão copy da janela de experimento e depois
colá-los dentro do experimento de simulação clicando no botão Paste from
clipboard que você encontrará na página propriedades do experimento
Simulation.
Depois que você tiver colado os valores do parâmetro no experimento, você pode
executar Simulation com os valores de parâmetros recém-criados.
AnyLogic 7 em Três Dias 135
• Utilização de recursos
• Tempos de espera
• Filas
• Desempenho do sistema
• Gargalos
AnyLogic 7 em Três Dias 137
Modelo de Fábrica
Nosso objetivo é criar um modelo de evento discreto que simulará os processos
de fabricação e transporte de uma pequena fábrica. As matérias-primas que são
entregues na plataforma de recebimento são armazenadas até que o
processamento se inicie na máquina CNC .
3
138 AnyLogic 7 em Três Dias
Bloqueando formas
• Você pode bloquear uma forma para garantir que ela não responda ao clique
do mouse e você não consiga selecioná-la no editor gráfico. Você descobrirá
que isto é muito útil enquanto desenha formas em cima de layouts que
representam instalações como fábricas ou hospitais.
• Se precisar desbloquear uma forma, clique com o botão direito sobre o editor
gráfico e selecione Unlock All Shapes no menu de contexto.
• Um Path é uma rota que os agentes podem usar para se mover entre os nós.
Juntos, nós e caminhos formam uma rede que os agentes de um modelo podem
usar para se mover ao longo dos menores caminhos entre os nós de origem e
destino. Você geralmente criará uma rede quando os processos do modelo
ocorrerem em um espaço físico definido e tiverem agentes e recursos se
movendo. Supõe-se que os seguimentos da rede têm capacidade ilimitada, e os
agentes não interferem uns aos outros.
Agora que você sabe um pouco sobre redes e suas componentes, estamos prontos
para criar uma rede que definirá os caminhos para os paletes do modelo. O
primeiro passo é usar nós retangulares para definir áreas específicas sobre o
layout da fábrica.
Desenhe um nó retangular na entrada da fábrica, como mostrado na figura abaixo,
para representar a plataforma de recebimento de paletes do modelo.
7. Abra a paleta Space Markup, e arraste o elemento Rectangular Node para o
diagrama Main. Redimensione o nó. O nó deve parecer com o da figura abaixo.
10
11
AnyLogic 7 em Três Dias 143
Prateleiras de paletes
O elemento de marcação de espaço Pallet Rack representa as prateleiras de
paletes que você normalmente vê em armazéns ou áreas de armazenamento.
Como você pode ver abaixo, o elemento tem três configurações alternativas.
13
14
16
18. Adicione um bloco Delay para simular como os paletes ficam na prateleira e
depois nomeie o bloco de rawMaterialInStorage.
18
Você deve ter notado que o AnyLogic automaticamente conecta a porta da direita
do bloco à porta da esquerda do bloco seguinte. Cada bloco da Biblioteca de
Modelagem de Processos tem uma porta de entrada à esquerda e uma porta de
saída à direita, mas você somente deve conectar portas de saída à portas de
entrada.
19. Na área Properties do bloco rawMaterialInStorage, faça o seguinte:
a. No campo Delay time, digite triangular(15, 20, 30) e selecione
minutes na lista.
20
22
150 AnyLogic 7 em Três Dias
23. Nós terminamos de construir este modelo simples, e agora você pode
executar e observar seu comportamento. Execute o modelo (experimento Job
Shop / Simulation).
Recursos
Recursos são objetos que os agentes utilizam para realizar uma determinada ação.
Um agente deve obter o recurso, realizar a ação, e depois liberar o recurso.
Alguns exemplos de recursos incluem:
• Recursos portable podem ser movidos por agentes ou por recursos móveis.
No AnyLogic, o bloco ResourcePool da Biblioteca de Modelagem de Processos
define cada conjunto de recursos. As unidades de recursos podem ter atributos
individuais, e cada recurso tem um diagrama gráfico onde você pode adicionar
elementos como diagramas de estados, parâmetros e funções.
Os recursos do nosso modelo são as empilhadeiras que movem os paletes da área
de descarga para uma prateleira e depois leva os paletes da prateleira para a área
de produção.
c. Clique em Finish.
O diagrama de tipo de agente ForkliftTruck abrirá e mostrará a forma de
animação que você selecionou no assistente.
AnyLogic 7 em Três Dias 153
Definimos nossos recursos, mas ainda precisamos ter certeza de que os blocos do
fluxograma do nosso modelo os usarão durante os processos simulados.
7. Na área Properties do bloco storeRawMaterial, faça o seguinte:
a. Clique na seta para expandir a área Resources.
b. Marque o checkbox Use resources to move.
c. Na lista Resource sets (alternatives), clique em forklifts para garantir que
o bloco do fluxograma use os recursos selecionados – no nosso caso, as
empilhadeiras – para mover os agentes.
d. Na área Return home, escolha if no other tasks para garantir que as
empilhadeiras retornem para o local inicial depois que completarem suas
tarefas.
1
AnyLogic 7 em Três Dias 159
Janelas 3D
Além de ter a opção de adicionar várias câmeras ao seu modelo, você também
pode adicionar várias janelas 3D para que cada uma mostre a mesma cena 3D de
diferentes pontos de visualização.
3. Deixe a câmera “tirar” a foto para a janela 3D. Na área Properties da janela 3D,
clique em camera na lista Camera.
4. Impeça a câmera de tirar a foto de debaixo do chão selecionando a opção
Limited to Z above 0, na lista Navigation type.
5. Execute o modelo.
Quando você cria uma janela 3D, o AnyLogic adiciona uma área de
visualização para que você navegue facilmente para a visão 3D em tempo de
execução. Para mudar para a visão 3D, clique no botão Navigate to view
area… da barra de ferramentas e depois clique em [window3d].
5
160 AnyLogic 7 em Três Dias
NOTA: Se você não conseguir localizar a sua câmera, você pode usar a árvore de
Projects. Ela mostrará a camera no ramo Presentation do agente Main.
11
12. Faça o seguinte para desenhar paredes ao redor da área de trabalho do layout
da fábrica:
a. Clique na posição do editor gráfico onde você quer começar a
desenhar a parede.
b. Mova o ponteiro em qualquer direção para desenhar uma linha reta,
e depois clique em qualquer ponto onde você quiser mudar de
direção.
162 AnyLogic 7 em Três Dias
12
15
17
c. Clique em Finish.
18
O AnyLogic cria o tipo de agente Pallet e abre o diagrama Pallet que mostrará a
animação que selecionamos no assistente. Nosso próximo passo será adicionar a
animação de produtos em cima da animação do palete, mas primeiro
ampliaremos a visualização para nos aproximarmos do palete.
19. Usando a barra de ferramentas Zoom, amplie o diagrama Pallet para 500%, e
depois mova o canvas para a direita e para baixo para visualizar o ponto de
origem dos eixos e a forma de animação palete.
AnyLogic 7 em Três Dias 165
Reduzir
20
19
21. Como esta caixa parece ser muito grande se comparada ao palete, vamos
mudar a Scale da caixa para 75%.
166 AnyLogic 7 em Três Dias
21
Ctrl + drag
23
Se você abrir a área Properties do bloco sourcePallets , verá que Pallet está
selecionado como New agent. Este bloco gerará agentes do tipo Pallet .
25. Execute o modelo.
Você verá que as formas dos paletes tiveram os cilindros coloridos
substituídos. Contudo, se você ampliar a cena 3D, você observará que as
empilhadeiras não estão transportando os paletes. Corrigiremos este
problema ao movermos a animação de palete do nosso modelo de uma
maneira que permita a empilhadeira pegar os paletes.
25
26
5. Nomeie o nó de exitNode.
6. Desenhe um Path para conectar exitNode ao receivingDock .
15
Os dois blocos Source do nosso modelo geram dois tipos de agentes: os caminhões
que aparecem a cada hora e os paletes que são gerados a cada cinco minutos.
Como queremos que os paletes apareçam quando o caminhão descarregar,
mudaremos o modo de chegada para o bloco Source que os gera.
16
17. Faça o seguinte para que o bloco sourcePallets gere paletes quando um
caminhão entra no bloco unloading:
a. Na área Properties do bloco unloading, expanda a seção Actions.
b. No campo On enter, digite o seguinte:
sourcePallets.inject(16);
Esta função Java garantirá que o nosso modelo gere 16 paletes todas as
vezes que um caminhão começar a descarregar.
17
Agora que adicionamos caminhões ao nosso modelo, vamos fazer com que a
primeira entrega apareça na inicialização do modelo para que não tenhamos que
esperar uma hora do tempo do modelo passar.
18. Na área Properties do agente Main, expanda a seção Agent actions e depois
digite a seguinte função Java no campo On startup:
sourceDeliveryTrucks.inject(1);
AnyLogic 7 em Três Dias 177
18
Neste exemplo, self é um atalho que usamos para nos referir ao bloco
storeRawMaterial.
21
22
24
Attractors em nós
Os attractors permitem controlar a localização do agente dentro de um nó.
Precisaremos criar caminhos para conectar estes dois nós a nossa rede. As
empilhadeiras do nosso modelo precisarão deles para chegarem às máquinas
CNC.
3. Na paleta Space Markup, clique no elemento Path e desenhe os caminhos como
mostrado na figura abaixo. Para conectar um caminho a um point node, clique
no centro do point node.
NOTA: Certifique-se de que os caminhos desenhados conectam o nodeCNC1 e
nodeCNC2 à rede. Você pode testar a conexão de um caminho clicando duas
vezes para selecioná-lo. Se o caminho estiver conectado à rede, destaques em
azul turquesa aparecerão ao redor de seus pontos finais.
182 AnyLogic 7 em Três Dias
Com nosso conjunto de recursos completo, estamos prontos para criar um novo
tipo de recurso.
6. Sob a lista New resource unit, clique no link create a custom type.
7. No assistente New agent, faça o seguinte:
a. No campo Agent type name, digite CNC.
b. Na lista abaixo, expanda a última seção (CNC Machines) e selecione
CNC Vertical Machining Center 2 State 1.
c. Clique em Finish.
8. Feche o diagrama do novo tipo CNC e volte para o diagrama Main.
9. Na área Properties do bloco ResourcePool cnc, faça o seguinte para colocar as
duas máquinas CNC do nosso modelo nos lugares definidos pelos point nodes,
nodeCNC1 e nodeCNC2.
Estamos prontos parar modificar o fluxograma que o modelo usa para definir o
comportamento dos paletes, adicionando um bloco Seize que usará as máquinas
CNC. Mais tarde, um bloco Delay simulará o processamento de matérias primas de
uma máquina CNC, e um bloco Release liberará uma máquina CNC para que ela
possa processar a matéria prima do próximo palete.
NOTA: Lembre-se que o fluxograma do nosso modelo já tem um bloco
pickRawMaterial para simular os recursos móveis (as empilhadeiras) que levam os
paletes para as máquinas CNC.
AnyLogic 7 em Três Dias 185
11
14
16
18. Na visão Projects, dê um clique duplo no agente CNC para abrir seu diagrama.
19. Mova a animação para a direita e gire a forma da máquina CNC usando a alça
circular, ou configurando a propriedade Rotation da figura para 90 graus.
19
Estamos prontos para usar duas formas de animação 3D para animar as máquinas
CNC: uma forma representará a máquina ociosa e a outra representará a máquina
processando matérias primas. Definiremos valores dinâmicos para a propriedade
Visible de cada forma que permitirá que o nosso modelo use o estado da máquina
CNC, para determinar qual forma o modelo exibirá em tempo de execução.
20. Faça o seguinte para alterar a configuração de visibilidade da forma de
animação CNC:
a. Selecione a forma de animação CNC.
20
Propriedades dinâmicas
Quando você define uma expressão para um valor dinâmico da propriedade,
nosso modelo reavaliará a expressão para cada frame da animação durante o
tempo de execução, e depois usará o valor resultante como o valor atual da
propriedade. Fornecer valores dinâmicos para a posição, altura, largura ou cor de
uma forma permite aos usuários do AnyLogic animarem seus modelos.
Se você não digita um valor dinâmico, a propriedade mantém o valor estático
padrão durante toda a simulação.
AnyLogic 7 em Três Dias 189
21
22. Expanda a seção People da paleta 3D Objects e arraste a forma Worker para o
diagrama CNC.
190 AnyLogic 7 em Três Dias
22
Modelagem de Pedestres
A simulação de tráfego de pedestres é uma parte importante da construção,
expansão ou redesenho de instalações como shoppings, aeroportos, estações de
trem e estádios. Estas análises podem ajudar arquitetos a melhorarem seus
projetos, proprietários a revisarem uma mudança potencial num prédio, e
autoridades civis a simularem rotas de evacuação possíveis. Dado que fluxos de
pedestres podem ser complexos, eles exigem uma simulação bem desenvolvida.
Pedestres seguem regras básicas que têm sido determinadas por estudos teóricos
detalhados; eles se movem a taxas predeterminadas, eles evitam espaços físicos
como paredes bem como outras pessoas, e eles usam informações sobre as
pessoas em volta para ajustar suas distâncias e velocidades. Os resultados têm
sido provados muitas vezes em pesquisas de campo e aplicações de clientes.
Você pode criar métricas como o tempo de viagem total entre pontos
especificados e variar seus experimentos para destacar estas medidas durantes os
momentos de pico. Finalmente, você pode importar layouts, plantas baixas e
mapas, e criar múltiplas visões 3D que deixarão a análise do fluxo de pedestres
mais fácil de entender.
O AnyLogic pode ajudar a resolver estes problemas de tráfego de pedestres:
Modelo de aeroporto
Vamos construir um modelo que simule como passageiros se movem dentro de
um pequeno aeroporto que tem duas companhias aéreas, cada uma com seu
próprio portão. Os passageiros chegam ao aeroporto, fazem check in, passam pela
segurança e vão para a área de embarque. Depois que o embarque começa, os
representantes de cada companhia verificam as passagens dos seus passageiros
antes de deixarem eles embarcar.
Usaremos uma abordagem em seis fases para desenvolver o nosso modelo. Na
fase final, você aprenderá como ler dados de voos de uma base de dados
(disponível em uma planilha Excel) e configurar os pedestres, atribuindo
informações de voo a eles.
AnyLogic 7 em Três Dias 193
Biblioteca de Pedestres
• Os métodos de modelagem tradicionais, como eventos discretos e filas, podem
não funcionar bem em áreas de alta circulação de pedestres.
Paredes
Wall – Use esta forma para desenhar paredes externas ou internas.
Rectangular Wall – Use esta forma para desenhar áreas retangulares como
áreas de trabalho que não são acessíveis para pedestres.
Circular Wall - Use esta forma para desenhar obstáculos circulares como
colunas, piscinas e fontes.
196 AnyLogic 7 em Três Dias
Vamos mudar a aparência da nossa parede escolhendo uma nova cor e uma nova
altura.
6. Vá até as propriedades da parede e selecione Color: dodgerBlue na seção
Appearance.
AnyLogic 7 em Três Dias 197
Linhas de Destino
Em um modelo de dinâmica de pedestres, o elemento Linha de Destino define os
locais onde os pedestres aparecem no espaço simulado, onde eles esperam
(embora áreas normalmente definam locais de espera) e seus destinos.
7. Defina o local onde os passageiros do seu modelo aparecem arrastando o
elemento Target Line da paleta Pedestrian Library para o diagrama gráfico,
como mostrado na figura abaixo.
198 AnyLogic 7 em Três Dias
PedSource – Este bloco gera pedestres de uma forma parecida com a que o
Source usa para gerar agentes em um fluxograma da Biblioteca de Modelagem
de Processos. Você geralmente usará este bloco como o ponto de partida do
fluxo de pedestres.
200 AnyLogic 7 em Três Dias
10
12
11
13
14
15. Adicione um bloco PedSink para descartar os pedestres que chegam. O fluxo
de pedestres normalmente começa com um bloco PedSource e termina com
um bloco PedSink.
15
16
204 AnyLogic 7 em Três Dias
2. No assistente New agent, no campo Agent type name, digite Passenger e clique
em Finish.
3. Depois que o diagrama Passenger abrir, retorne ao diagrama Main.
Navegação no cenário em 3D
• Mova a câmera para a esquerda, para a direita, para frente ou para trás
arrastando o mouse na direção selecionada.
• Mova a câmera para mais perto ou mais longe do centro da cena girando o
scroll do mouse.
10
Se não conseguir localizar a câmera, use a árvore de Projects para localizá-la. Você
a encontrará sob o ramo Presentation do agente Main do aeroporto.
11. Execute o modelo uma segunda vez e veja a visão 3D que a posição da nova
câmera proporciona.
208 AnyLogic 7 em Três Dias
• Service with Lines – Esta forma de marcação define um serviço como uma
catraca ou uma área de checkout onde pedestres esperam em uma fila até que
o serviço esteja disponível.
• Service with Area – Esta forma de marcação define um serviço como uma
bilheteria ou um banco com uma fila eletrônica onde pedestres esperam em
uma área ao lado até que o serviço esteja disponível.
Depois de desenhados os serviços do seu modelo, você definirá a lógica de fluxo
de pedestres adicionando o bloco PedService da Biblioteca de Pedestres ao
fluxograma.
Adicionaremos cinco pontos de inspeção, o que significa que adicionaremos cinco
serviços e cinco filas para cada ponto de serviço.
1. Arraste o elemento Service with Lines da paleta Pedestrian Library para o
layout do terminal. Por padrão, um serviço terá dois pontos de serviço e duas
filas que levam aos pontos de serviço.
AnyLogic 7 em Três Dias 209
2. Abras as propriedades do Service With Lines, use o campo Name para nomear
a forma scpServices - neste caso, “scp” significa security checkpoints – e
depois mude o Type of service para Linear.
Depois que mudar o tipo de serviço de pontual para linear, as formas de serviço
mudarão de pontos para linhas.
210 AnyLogic 7 em Três Dias
11. Como assumimos que leva de 1 a 2 minutos para passar pelo ponto de
inspeção, digite uniform(1, 2) minutes como o Delay time.
12. Agora vamos adicionar modelos 3D dos pontos de inspeção. Usando a paleta
3D Objects, os elementos Metal Detector e XRay Scanner da seção Airport,
desenhe cinco pontos de inspeção. Mude a Scale das formas XRay Scanner
para 75%.
214 AnyLogic 7 em Três Dias
13. Execute o modelo. Você verá que agora os passageiros são escaneados nos
pontos de inspeção de segurança.
AnyLogic 7 em Três Dias 215
2. Coloque a forma no local mostrado na figura abaixo. Para fazer a linha parecer
com o que você vê na figura, mova a linha para o local requerido, e depois
coloque o ponto final onde a linha começa uma curva.
216 AnyLogic 7 em Três Dias
3. Adicione mais pontos de curva à linha. Clique com o botão direito na linha da
fila, escolha Add points no menu de contexto, e depois clique no ponto final da
linha de onde você quer continuar a desenhar a linha.
4. Adicione mais pontos clicando onde você quer colocar os pontos de curva da
linha. Finalize o desenho da linha dando um duplo clique. Finalmente você
deve ter a linha da fila da seguinte forma:
7. Como assumimos que leva de 2 a 4 minutos para fazer o check in, digite
uniform(2, 4) minutes como Delay time.
12. Na aba 3D Objects da paleta, selecione a seção Office, e arraste quatro cópias
do objeto Table para o diagrama. Como as tabelas não estão apontando para a
direção correta, use suas áreas Position da seção Properties para definir
Rotation, Z: 90 degrees.
12
13. Execute o modelo. Você verá alguns passageiros fazerem check in e depois
passarem pelo detector de metais.
Agora adicionaremos barreiras que são comuns em áreas onde passageiros fazem
check in dos seus voos.
14. Use o elemento de marcação de espaço Wall para desenhar duas barreiras.
AnyLogic 7 em Três Dias 221
14
15. Mude a Color da parede para dodgerBlue, a Line width para 1, Z: 5 e Z-Height:
5.
Nós queremos que os passageiros aguardem antes deles irem para o portão. Para
fazer isso, precisamos desenhar uma área de embarque onde os passageiros
aguardarão e depois adicionaremos um bloco (PedWait) para simular a espera.
16. Desenhe a área de embarque antes dos portões usando o elemento Polygonal
Area da seção Space Markup da paleta Pedestrian Library. Alterne para o
modo desenho e desenhe a área como mostrado na figura abaixo clicando
toda vez que quiser adicionar um ponto. Quando acabar, dê um clique duplo.
222 AnyLogic 7 em Três Dias
17
19. Execute o modelo novamente, você verá que os passageiros agora levam em
consideração as barreiras, e aguardam na área de embarque antes de
procederem para o portão.
224 AnyLogic 7 em Três Dias
Nós queremos definir a classe dos passageiros quando eles chegam ao terminal do
aeroporto.
6. Retorne ao diagrama Main e adicione uma Function da paleta Agent, com nome
setupPassenger.
8. Chame esta função quando um novo pedestre é criado pelo bloco pedSource.
Nas propriedades do pedSource, clique na seta para expandir a seção Actions,
e digite o código a seguir no campo On exit: setupPassenger(ped);
10
11. Desenhe uma área no portão com o elemento Rectangular wall, e depois
adicione uma mesa e dois modelos 3D woman à mesa.
11
14
232 AnyLogic 7 em Três Dias
4. Use a paleta Agent para adicionar uma Collection com o nome passengers , e
depois defina Collection class como LinkedList, e Elements class como
Passenger. Esta coleção armazenará a lista de passageiros que compraram as
passagens para o voo.
AnyLogic 7 em Três Dias 235
Coleções
Coleções (Collections) definem objetos de dados que agrupam múltiplos
elementos em uma estrutura para armazenar, recuperar e manipular dados
agrupados. Elas normalmente representam itens de dados que formam um grupo
natural.
5. Agora que criamos o agente Flight, adicionaremos um parâmetro flight ao
diagrama Passenger e definiremos Type como Flight. Este parâmetro
armazenará o voo do passageiro.
• boolean isEmpty() - Retorna true, se a coleção não tem elementos; false, caso
contrário.
A paleta Conectividade
A paleta Connectivity tem um conjunto de ferramentas de fácil uso que você pode
usar para acessar dados externos.
Excel File – Proporciona acesso a arquivos do Excel (.xsl, .xslx). Permite ler e escrever
arquivos usando a API fornecida.
Text File – Permite ler e escrever arquivos de texto usando as funções do elemento.
238 AnyLogic 7 em Três Dias
Query – Preenche uma população de agentes com agentes cujos atributos são lidos a
partir de uma tabela.
Key-Value Table – Carrega uma tabela <key,value> da base de dados e permite que os
usuário a acessem.
Update – Atualiza uma linha em uma tabela; a linha é identificada por uma chave.
Diagramas de ação
• Modelagens de simulação complexas exigem algoritmos que realizem
processamento de dados ou cálculos. O AnyLogic suporta diagramas de ação
(action charts) – gráficos de blocos estruturados que permitem definir
algoritmos graficamente em um estilo que se assemelha a programação
estruturada.
Usamos uma extensão bem conhecida de uma abordagem sugerida por
Dijkstra que divide os algoritmos em subseções com um único ponto de
entrada. Ela estabelece que três formas de combinar programas—sequencial,
seleção, e iteração—são suficientes para expressar qualquer algoritmo
computável. O estilo resume o entendimento de um algoritmo ao
entendimento de sua estrutura.
• Diagramas de ação são muito úteis, e você pode usá-los para definir
algoritmos mesmo se não estiver familiarizado com a sintaxe dos operadores
em Java.
10
11. Adicione uma Local Variable. Para inserir um bloco, arraste-o sobre o
diagrama de ação, e depois o solte quando ver que o AnyLogic destacou a área
reservada para inserção em azul turquesa, como mostrado na figura abaixo.
11
12. Você usará esta variável local para guardar o nome da planilha do Excel.
AnyLogic 7 em Três Dias 241
Sintaxe Exemplo
13. Insira o Loop For no diagrama de ação e, em seguida, ajuste o loop para contar
até 12 para refletir as 12 entradas de dados da planilha.
242 AnyLogic 7 em Três Dias
13
14. Adicione outra Local variable dentro do loop for para configurar os voos.
Criando um voo adicional e usando a função add_<populationName> do
AnyLogic para adicioná-lo à população flights, permitimos que a variável local
f armazene a referência para o agente recém-criado Flight .
14
AnyLogic 7 em Três Dias 243
15. Finalmente, insira o Código abaixo dentro da área do Loop For para definir o
código que lê os dados do arquivo Excel selecionado. No campo Code, digite o
seguinte:
f.destination = excelFile.getCellStringValue (sheet, i+2, 1);
f.departureTime = excelFile.getCellDateValue (sheet, i+2, 2);
f.gate = (int)excelFile.getCellNumericValue (sheet, i+2, 3);
O código usa getCellStringValue() para ler o texto da planilha. Ele começa obtendo
o destino do voo na primeira coluna, e depois o atribui ao parâmetro destination
do agente flight. O código então se move para as colunas seguintes da planilha
para obter o horário de partida e o número do portão do voo.
15
16
18. Adicione outro bloco PedGoTo para modelar como os passageiros se movem
para o segundo portão. Selecione gateLine2 como Target line do bloco.
19. Para businessBoarding2, defina Services: business2. Para economyBoarding2,
defina Services: economy2. Para ambos, defina Service time: uniform(2, 5)
seconds.
20. Com os voos configurados, podemos mudar as condições do
pedSelectOutput1 que definem qual portão os nossos passageiros selecionam.
20
AnyLogic 7 em Três Dias 247
Eventos dinâmicos
Agora usaremos eventos dinâmicos que agendam as ações definidas pelos
usuários do modelo para programar ações de embarque e partida. Um modelo
pode ter várias instâncias do mesmo evento dinâmico programadas
concorrentemente, e elas podem ser inicializadas por dados que estão
armazenados nos parâmetros do evento.
Você deve usar eventos dinâmicos no seu modelo:
21. Adicione dois elementos Dynamic Event da paleta Agent para o diagrama
Main.
248 AnyLogic 7 em Três Dias
21
Neste exemplo, estamos usando um Loop For para iterar pela coleção passengers
definidas em flight. Os passageiros que estão embarcando no avião precisam
deixar a área de embarque.
26. Defina uma função planBoardings para programar o embarque de todos os
voos registrados. A função itera sobre a população de agentes flights no loop
For. Ela permite que voos que foram agendados para decolar antes do tempo
de embarque mudem para iniciar o embarque imediatamente. Voos que não
satisfazem esta condição começarão seus processos de embarque 40 minutos
antes do horário de partida como definimos no parâmetro boardingTime.
AnyLogic 7 em Três Dias 253
clique em Stop at specified date e depois defina Stop date para 21/12/2014,
22:00:00.
29. Use a paleta Pictures para adicionar um elemento Clock que exibirá a data do
modelo.
29
30. Execute o modelo. Você verá que os passageiros aguardam pelo anúncio de
embarque na área de embarque e depois vão para os portões.
AnyLogic 7 em Três Dias 255
Você pode achar este modelo mais complexo do que aqueles mostrados
anteriormente, especialmente depois que mostramos como usar o AnyLogic para
definir a lógica personalizada que se baseia em eventos, funções e diagramas de
ação.
Para ir para o próximo passo no desenvolvimento dos seus projetos de simulação,
recomendamos usar a Ajuda do AnyLogic bem como os modelos de exemplo que
demonstram técnicas de modelagem específicas. Conforme você avalia o
AnyLogic, você pode usar o botão Get Support para entrar em contato com a
equipe de suporte. Eles ficarão felizes em responder as suas dúvidas sobre o
AnyLogic e ajudar a resolver qualquer problema que pode ocorrer enquanto você
desenvolve seus modelos.
256 AnyLogic 7 em Três Dias
Referências
Borshchev, A. (2013). The Big Book of Simulation Modeling. Multimethod modeling
with AnyLogic 6. AnyLogic North America.
Compartmental models in epidemiology. (s.d.). Último acesso em 1/06/2014,
Wiki: http://en.wikipedia.org/wiki/Compartmental_models_in_epidemiology
Conway's Game of Life. (s.d.). Último acesso em 15/05/2014, Wiki:
http://en.wikipedia.org/wiki/Conway's_Game_of_Life
Geer Mountain Software Corporation (2002) Stat::Fit (Version 2) [Software]. Geer
Mountain Software Corporation. Disponível em: http://www.geerms.com
Oracle. (2011). Java™ Platform, Standard Edition 6. API Specification. [Online].
Disponível em: http://docs.oracle.com/javase/6/docs/api/ [Acessado em
23/05/2013]
Random number generator. (s.d.). Último acesso em 29/06/2014, Wiki:
http://en.wikipedia.org/wiki/Random_number_generator
Sterman,J. (2000). Business dynamics : Systems thinking and modeling for a
complex world. New York: McGraw.
Sun Microsystems, Inc. (1999). Code Conventions for the Java TM Programming
Language. [Online]. Disponível em: http://www.oracle.com/technetwork/java/
javase/documentation/codeconvtoc-136057.html [Acessado em 23/05/2014]
System Dynamics Society, Inc. (2014). System Dynamics Society [Online].
Disponível em: www.systemdynamics.org [Acessado em 23/05/2014]
The AnyLogic Company. (2014). AnyLogic Help. [Online]. Disponível em:
http://www.anylogic.com/anylogic/help/
The Game of Life. (s.d.). Último acesso em 15/06/2014, Wiki:
http://en.wikipedia.org/wiki/The_Game_of_Life
UML state machine. (s.d.). Último acesso em 15/06/2014, Wiki:
http://en.wikipedia.org/wiki/UML_state_machine