Você está na página 1de 10

Captulo 3

AnyLogic

Neste captulo, a ferramenta de simulao usada, o AnyLogic, apresentada enumerando as


suas reas de actuao, bem como os paradigmas presentes e a sua interligao. Ainda neste
captulo so descritos alguns objectos do AnyLogic que foram usados neste trabalho, em particular
os objectos da Enterprise Library que tiveram particular interesse.

3.1

Introduo

O AnyLogic uma ferramenta de simulao que permite a modelao de sistemas atravs de


trs mtodos: Dinmica de Sistemas (System Dynamics), Simulao Orientada a Eventos Discretos (Discrete Event Simulation) e Modelao Baseada em Agentes (Agent-Based Modeling).
possvel usar combinaes de dois ou mesmo destes trs paradigmas atravs de simples mtodos
presentes no ambiente de modelao do AnyLogic. Atravs destes paradigmas, o utilizador pode
facilmente encontrar um ponto de comunho em que o sistema que pretende simular se situar.
Desta forma compreende-se as vrias reas onde a ferramenta pode ser aplicada [18]:
Sistemas de Produo
Gesto na Cadeia de Fornecedores (Supply Chain Management)
Logstica e Transportes
Defesa Militar e Aeroespacial
Processos de Negcio
Economia e Banca
Centros de Atendimento
Planos de Emergncia e Evacuao
15

16

AnyLogic

Redes e Comportamentos Sociais


Movimento de Pessoas e Veculos
Anlise de Estratgias de Negcio
Indstria Automvel
Sade e Biologia
A lista anterior, embora curta, demonstra a capacidade da ferramenta em alcanar vrias reas
e vrios mercados onde poucas outras ou at mesmo nenhumas conseguem alcanar.
O estudo das potencialidades da ferramenta de simulao AnyLogic foi realizado em dissertaes anteriores [1] [2] e por isso, neste trabalho, no foram exploradas as diferentes tcnicas
oferecidas pelo software, nem fazia parte dos objectivos o estudo aprofundado da ferramenta.
Assim, este projecto situa-se na fase seguinte ao estudo do AnyLogic enquanto ferramenta de simulao (captulo 1). Tendo isto em conta, apenas ser feita uma breve descrio sobre o que est
por trs da ferramenta em termos programticos, e uma explicao simples sobre os aspectos fundamentais do ambiente de modelao do AnyLogic, necessrios para a compreenso do trabalho
desenvolvido.

3.1.1

As Bases do AnyLogic

O AnyLogic baseado na framework Eclipse [19], na linguagem de programao Java [20] e


na de modelao UML (Unified Modeling Language).
O Java uma linguagem de programao orientada a objectos (POO), ou seja, usa objectos e
as suas interaco no desenho de programas e aplicaes computacionais; ao contrrio dos mtodos de programao mais tradicionais onde um programa uma lista de tarefas a executar. Em
Programao Orientada a Objectos, no se definem objectos mas sim classes de objectos. Uma
classe um modelo para mltiplos objectos com caractersticas semelhantes e um objecto uma
instncia de uma classe.
Os Active Objects so os principais objectos usados no AnyLogic para a modelao de sistemas. Basicamente, so objectos Java que contm parmetros, variveis, funes, eventos ou at
outros objectos, sejam eles outros Active Objects ou simples objectos de apresentao, como por
exemplo um boto.

3.1.2

Ambiente de Modelao

O ambiente de modelao tem o aspecto da figura 3.1.


Do lado esquerdo temos a janela de projectos, que uma vista hierrquica dos modelos abertos
e onde se pode ver as vrias classes de Active Objects, classes Java e Simulaes de cada modelo.
Abaixo desta vista temos a de erros, onde aparecem as respectivas mensagens de erros detectados
durante a compilao. Ao centro temos a vista principal, o editor grfico; aqui que toda a
programao grfica efectuada, desde a ligao de portas como desenhos de grficos de estado
Verso 1.00 (6 de Fevereiro de 2009)

3.1 Introduo

17

Figura 3.1: Ambiente de Modelao do AnyLogic

ou ainda de objectos de apresentao como botes, figuras geomtricas, etc. Em baixo temos a
janela de propriedades e a consola java. Esta ltima usada, principalmente, para observar quais
os erros ocorridos durante o runtime. Finalmente, direita, est a vista das bibliotecas, que na
verso educacional constituda por 6 grupos:
Model - contm parmetros, eventos, variveis, grficos de estados, etc.
Action - contm objectos para criao de funes graficamente, atravs um diagrama.
Analysis - contm objectos de anlise de dados como grficos de tempo, histogramas, etc.
Presentation - contm objectos de apresentao como figuras geomtricas, botes, caixas
de texto, etc.
Connectivity - contm objectos de ligao e utilizao de base de dados ou de um flat file
(este ltimo apenas na verso Professional do AnyLogic).
Enterprise Library - contm objectos para simulao de sistemas orientados a eventos discretos.
Nem todos os objectos das bibliotecas presentes na verso educacional podem ser usados pois
fazem parte do pacote da verso profissional da ferramenta. Por exemplo, no grupo Connectivity
apenas 1 dos 6 objectos presentes pode ser usado. Existem mais bibliotecas, mas mais uma vez
apenas esto disponveis para a verso profissional.
Verso 1.00 (6 de Fevereiro de 2009)

18

AnyLogic

3.2

Enterprise Library

O trabalho desenvolvido neste projecto de simulao foi na sua maioria baseado em objectos
da Enterprise Library. Esta biblioteca a fonte principal de objectos do AnyLogic para a modelao de sistemas orientados a eventos discretos. Atravs destes objectos a modelao realizada
em termos de entidades, processos e recursos. Neste contexto, as entidades podem representar o
movimento de pessoas, produtos, veculos, etc. J os processos representam aces, operaes,
uso de recursos, etc. Desta forma, a modelao de sistemas usando esta biblioteca toma a forma de
fluxogramas, o que facilita a compreenso da lgica do sistema modelado, pois uma linguagem
grfica bastante intuitiva e de fcil compreenso. O transporte de entidades entre objectos efectuado atravs de portas presentes nos mesmos e conectadas entre si. Existe outra forma de retirar
ou injectar entidades nos objectos, mas este ponto ser abordado mais tarde aquando da descrio
de alguns objectos desta biblioteca.
Para realizar este projecto, foram usados vrios objectos desta biblioteca do AnyLogic, principalmente, por 2 razes que caracterizam tanto o tipo de sistema a modelar como as vantagens de
a usar:
Primeiro, porque os componentes da biblioteca que se criou podem ser modelados usando
eventos discretos.
Em segundo, devido facilidade de recolha de estatsticas e de criao de animaes mais
elaboradas.
Este ltimo ponto ganha vantagem em relao possibilidade de programar usando mquinas
de estado, pois a visualizao da simulao atravs de animaes (por exemplo, movimentos) e
grficos bastante mais til do que apenas nmeros e resultados.
Aquando desta dissertao, a Enterprise Library do AnyLogic continha todos os elementos
presentes na figura 3.2.

Figura 3.2: Objectos da Enterprise Library

A lgica e o funcionamento desta biblioteca baseado no fluxo de entidades atravs do fluxograma criado. As entidades que percorrem o fluxograma so anlogas aos tokens das Redes de
Petri. No AnyLogic, as entidades saem dos objectos atravs de portas que estes contm. Um erro
Verso 1.00 (6 de Fevereiro de 2009)

3.2 Enterprise Library

19

pode ocorrer se a entidade tenta sair de um objecto e a porta deste no est ligada a numa outra
de outro objecto ou ainda se a entrada noutro objecto viola alguma regra. Como por exemplo
entrar um segundo objecto num Queue quando j est um l dentro e a capacidade do mesmo
de apenas 1. No AnyLogic, estas entidades esto associadas a classes Java. Visto que esta ferramenta nos permite a criao das nossas prprias classes, assim possvel uma personalizao dos
parmetros associados s entidades. A classe usada por defeito para as entidades a Entity [21].
No entanto, ao criarmos a nossas prprias classes, estas devem ser derivadas da j existente para
que possam ser associadas s entidades, ou seja, tm de ser subclasses da classe Entity. Derivando
a nova classe da Entity j existente, possvel acrescentar atributos e operaes que se pretender,
mantendo todas as propriedades e funcionalidades da classe base.
A figura 3.3 mostra a declarao da classe Customer usada no modelo Bank. Este modelo
baseado num tutorial [21] disponibilizado pelo fabricante do AnyLogic com o intuito de apresentar
a Enterprise Library e as suas possibilidades.

Figura 3.3: Definio da classe Customer

De notar que a classe criada (Customer) derivada da Entity. necessrio que assim seja para
que possamos associar as classes criadas s entidades, sem violar as regras internas de funcionamento do fluxo de entidades da Enterprise Library. Fica assim possvel o uso desta nova classe na
criao de novas entidades que percorrem os objectos do modelo (figura 3.4).
Todos os objectos desta biblioteca contm eventos, a grande parte deles do tipo onEnter ou
onExit que ocorrem quando as entidades entram ou sai, respectivamente, do objecto. H ainda
objectos que contm outros eventos, como o caso do objecto Queue, mas este ponto ficar mais
claro aquando da sua explicao [3.2.2]. O que importa realar neste momento, a possibilidade
de se programar os objectos de forma a que quando as entidades passem por estes sejam efectuadas
as instrues que se deseje.
Verso 1.00 (6 de Fevereiro de 2009)

20

AnyLogic

Figura 3.4: Modelo Bank

De seguida ser feita uma descrio de alguns dos objectos da biblioteca, aqueles que tm
uma influncia relevante no trabalho desenvolvido. Estes objectos tm vrias propriedades, no
entanto, neste dissertao, e em particular nas seces que se seguem, apenas se far uma explicao das funcionalidades do objecto, sua importncia dentro de um modelo e tambm das suas
potencialidades em termos de animaes.

3.2.1

Source e Sink

O objecto Source e o objecto Sink servem, respectivamente, para a criao e despejo das entidades. Por esta razo, so, normalmente, os objectos usados no incio e final de um fluxograma.
Como se pode ver pela figura 3.5, o objecto Source apenas tem uma porta de sada e o Sink uma
de entrada.

Figura 3.5: Source e Sink

Existem vrias maneiras de definir como e quando as entidades no objecto Source so geradas,
podem ser em funo do tempo ou manualmente usando o mtodo inject() deste tipo de objecto.
Para alm destes parmetros, , tambm, possvel a alterao do nmero de entidades a gerar
quando a forma de criao das mesmas outra que no a manual. As entidades geradas por
defeito so do tipo Entity, no entanto, aps a criao de uma classe personalizada, logo que seja
uma subclasse da Entity, esta pode ser associada na criao de novas entidades. H, no entanto,
outra hiptese de criar e eliminar as entidades que atravs do cdigo directamente, gerando uma
nova instncia da subclasse criada ou da existente por defeito, a Entity. Na situao de criao das
entidades sem ser atravs do objecto Source, estas podem ser injectadas no fluxograma atravs do
objecto Enter[3.2.4], recorrendo ao mtodo take() do mesmo.
Nestes objectos, os eventos existentes e os respectivos momentos de ocorrncia so:
Source - evento onExit que ocorre quando a entidade sai do objecto.
Sink - evento onEnter que ocorre quando a entidade entra no objecto.
Verso 1.00 (6 de Fevereiro de 2009)

3.2 Enterprise Library

21

No Source possvel definir uma forma de apresentao (Shape) para animao das entidades.
Se nenhuma forma de animao for definida e existir animao nos objectos por onde passam as
entidades, o AnyLogic cria por defeito Shapes para as entidades.
Quando um objecto do tipo Source cria uma entidade, esta sai imediatamente e por isso
necessrio garantir que a entidade pode, de facto, sair do objecto, caso contrrio ocorrer um erro
durante a simulao. Assim, quando no se pode prever que o objecto seguinte capaz de receber
a entidade, aconselhvel usar um objecto que funcione como um buffer, por exemplo um objecto
do tipo Queue [3.2.2].

3.2.2 Queue
A figura 3.6 representa o objecto Queue que tem uma porta de entrada e trs de sada. A
porta rotulada com P" serve para expulsar entidades por razes de prioridade e a rotulada com
T" serve para a sada de entidades por questes de timeout.

Figura 3.6: Queue

O objecto Queue funciona como um buffer, ou seja, um objecto que guarda as entidades que
nele entram, como se de um local de stock se tratasse. As entidades permanecem no Queue at o
processo seguinte permitir a entrada das mesmas (uma ou mais). tambm possvel a remoo
das entidades atravs do mtodo remove().
A ordem das entidades neste objecto pode ser do tipo FIFO (First In First Out) ou ento
baseada em prioridades. A primeira hiptese a mais usual e baseia-se no conceito da primeira
entidade a entrar a primeira a sair. Se usarmos o mtodo baseado em prioridades, quando uma
entidade entra no objecto, este avalia a sua prioridade em relao s entidades j presentes no
Queue e coloca-a na posio correspondente. Neste modo, o objecto aceita sempre a entidade
que entra, mas caso esteja cheio e aps avaliar a sua prioridade decide se expulsa a entidade que
acaba de entrar caso esta tenha prioridade inferior ou igual ltima j existente no objecto ou
ento expulsa a ltima caso a entidade da que entrou seja superior a esta. Mas caso a ordem das
entidades seja do tipo FIFO e uma entidade tenta entrar, ir ocorrer um erro durante a simulao.
tambm possvel associar s entidades que entram no Queue um tempo de timeout que
quando termina, o objecto expulsa a entidade em causa.
Para alm dos eventos comuns existentes na maioria dos objectos desta biblioteca (onEnter e
OnExit), este objecto tem tambm outros 3 eventos:
onAtExit - ocorre quando uma entidade chega sada do objecto mas no sai (ao contrrio
do onExit que executado quando a entidade sai).
Verso 1.00 (6 de Fevereiro de 2009)

22

AnyLogic

onExitPreempted - idntico ao onExit mas quando a entidade sai pela porta outPreempted
(ordem das entidades baseada em prioridades).
onExitTimeout - idntico ao onExit mas quando a entidade sai pela porta outTimeout (ordem
das entidades baseada em prioridades).
semelhana de muitos objectos desta biblioteca, tambm o Queue tem possibilidade de
animaes das entidades nele presentes. Estas animaes podem, por exemplo, representar as
entidades numa fila, umas atrs das outras. Para isto basta indicar neste objecto qual o objecto de
apresentao que representa o Queue (por exemplo, um objecto da classe Polyline).

3.2.3

Delay

O objecto Delay (figura 3.7) tem por funo reter uma ou mais entidades durante um tempo
definido. Este tempo pode ser definido explicitamente ou ento atravs do comprimento do objecto
de animao dividido por um parmetro de velocidade.

Figura 3.7: Delay

possvel remover as entidades do objecto mesmo que o tempo de delay ainda no esteja
terminado. O Delay tambm permite o acesso ao tempo que falta para a entidade sair.
Se uma entidade tenta entrar no objecto e este j est na sua capacidade mxima, ocorrer um
erro durante a simulao. O aconselhvel o uso de um objecto do tipo Queue (3.2.2) antes ou
ento garantir que nenhuma entidade tentar entrar no Delay com este na sua capacidade mxima.
Este objecto, em termos de eventos apenas contm os mais usuais: onEnter e onExit (j explicados anteriormente em 3.2).
O Delay permite animar as entidades nele retidas de forma semelhante usada no Queue
(3.2.2). A principal diferena que enquanto que no Queue no se conhece o tempo que a entidade
vai l permanecer, no Delay esse tempo conhecido e por isso permite animaes dinmicas
como por exemplo o movimento de um carro ou de uma pessoa ao longo de uma linha. Quando
a animao envolve movimentao das entidades, estas percorreram o caminho todo durante o
tempo de delay, ou seja, a velocidade das entidades determinada pela distncia que tm de
percorrer e pelo tempo de delay.

3.2.4

Enter e Exit

Os objectos Enter e Exit (figura 3.8) permitem, respectivamente, inserir e retirar entidades
do fluxograma. Estes objectos so usados quando se pretende mover entidades entre diferentes
fluxogramas, ou ento quando se quer transferir as entidades entre objectos como acontece no
Verso 1.00 (6 de Fevereiro de 2009)

3.2 Enterprise Library

23

trabalho desenvolvido. Desta forma, possvel a criao de fluxogramas que no comecem com
Sources nem terminem em Sinks, respectivamente.

Figura 3.8: Enter e Exit

Para inserir as entidades no Enter usa-se o mtodo take() do objecto.


Os eventos destes objectos so semelhantes aos encontrados nos Source e Sink [3.2.1].

3.2.5 Hold
O objecto Hold (figura 3.9) tem a funo de bloquear o fluxo de entidades. usado para
impedir entidades de entrar ou sair de objectos apenas quando se pretende. Por exemplo, impedir
a sada de um Queue ou a entrada num Delay.

Figura 3.9: Hold

No entanto, este objecto no retm entidades, apenas impede que passem para jusante enquanto estiver bloqueado. Desta forma, as entidades permanecem no objecto anterior que tenha
capacidade de reteno de entidades (por exemplo o objecto Queue). Caso contrrio ocorrer um
erro durante a simulao. Assim, e em termos de eventos, o Hold apenas contm o onEnter que
executado quando a entidade passa pelo objecto.
Este objecto tem dois estados possveis: bloqueado ou desbloqueado. Esta opo pode ser
alterada atravs de programao usando o mtodo setBlocked().

3.2.6 Select Output

Figura 3.10: Select Output

O objecto Select Output (figura 3.10) reencaminha a entidade que nele entra por uma de duas
portas, segundo uma condio, sendo ela de verdadeiro ou falso, ou uma probabilstica. Em ambos
os casos, o teste feito quando a entidade entra no objecto e reencaminhada para a porta de
Verso 1.00 (6 de Fevereiro de 2009)

24

AnyLogic

sada respectiva. A deciso de reencaminhamento pode depender de factores externos ou at de


parmetros da entidade.
Como no caso do Hold (3.2.5), a entidade no fica retida no objecto, passa instantaneamente
durante a simulao. Embora a entidade no tenha qualquer perodo de reteno no objecto,
este contm trs eventos: onEnter que ocorre quando a entidade entra no objecto, onExitTrue para
quando a entidade sai do objecto pela porta correspondente condio ser verdadeira e onExitFalse
para quando a condio falsa.

Verso 1.00 (6 de Fevereiro de 2009)

Você também pode gostar