article

Paula Carneiro Martins avatar image
1 Like"
Paula Carneiro Martins posted Paula Carneiro Martins edited

Tutorial em Português - Como utilizar o recurso List para reduzir as conexões e direcionar as entidades (Versão 2017.1.2)

Lembre-se que para o desenvolvimento desse passo a passo, foi utilizado a versão 2017. Update 1, caso você esteja modelando utilizando outra versão algumas alterações podem ser necessários. Nesse exemplo será construído um modelo que usa listas para relações básicas de roteamento de itens. Os itens serão enviados de três filas para um dos quatro processos.Uma lista de itens (item list) será utilizada para resolver esse problema. As filas irão empurrar os itens para a lista e os processos irão puxar os itens da lista e processa-los. De início será construído um modelo puxado simples,e depois um modelo puxado com restrições e priorizações.

Passo 1. Montar Layout

Para esse exemplo, crie um novo layout. A Figura 1 mostra quais objetos devem ser adicionados Observe que NÃO há ligação entre as filas e os processos.

Figura 1- Layout exemplo 2

Passo 2. Configurar source

  1. Na janela de propriedades do source, em inter-arrivaltime coloque exponential (0 ,2.5,0).

Figura 2- Inserir inter- arrival time

2.Na aba FLOW, em send to port abra a lista de opções e escolha a opção random port.

Figura 3- Sent to port

3. Na aba trigger, adicione uma Oncreation trigger para configurar o tipo e a cor. OnCreation> Data > Set item type and color> duniform(1,3).

Figura 4- Configurar tipo e cor

Passo 3. Adicionar lists

Para adicionar a lógica é preciso criar um item list. Em Toolbox> > Global list> Item list(Figura 5).

Figura 5- Adicionar item list

Ao clicar em Item list irá abrir janela de propriedades da lista (Figura 6), por agora apenas feche a aba. A sua lista deve estar nomeada como ItemList1.

Figura 6- Janela de propriedades Itemlist

**Não é necessário definir nenhuma das configurações agora. Apenas feche a janela de propriedades.**

Passo 4. Configurar queue

Para configurar a queue para empurrar os itens para a lista, clique sobre cada uma das filas> Aba Flow> Send to port> abra a lista de opções> Escolha use list> Push to item list. CONFIRA se o o nome da lista corresponde ao nome da lista que você criou.

Figura 7- Push to item list

**OBS: Faça o Passo 4 para TODAS as filas**

Passo 5. Configurar Processos

Para fazer com que os processos puxem da lista, configure cada input de processos para todos os 4 processos. Clique em um dos processos, na aba Flow vá na parte de input, marque a opção pull strategy. Na aba de escolha da estratégia(Pull Strategy) >Use list>Pull from item list. Deixe o campo QUERY em branco. E confira se o nome da lista escolhida é o mesmo da lista que você criou no Passo 3.

Figura 8- Estratégia puxada

**Obs: Faça o Passo 5 para todos os processors.**

Faça um test rápido! Reset seu modelo e confira como estão as entradas e saídas da sua lista, para verificar se até aqui as coisas estão funcionando da maneira correta. Nas propriedades do ItemList1, vá na aba General e clique no botão a esquerda “ View Back Orders”.

Figura 9- View Back Orders

Sua lista deve estar parecida com a da Figura 10. Mudando apenas os nomes dos processos de acordo como os seus estão nomeados.

Figura 10- Janela de pedidos pendentes

A Figura 10 representa que os processos começaram a puxar da lista, mas como não há itens que foram empurados para a lista, eles estão aguardando para poderem puxar e se tornarem fulfilled(preenchidos). Execute o modelo (Run) e você perceberá os itens entrando nas filas e sendo empurrados para a lista (View entries-Figura 9) fazendo com que os pedidos pendentes sejam atendidos e então começam a ser processados. Quando um item é empurrado para a lista e existe pedidos pendentes o item será imediatamente puxado da lista. Dessa forma o pedido pendente irá se tornar Fulfilled e será removido da lista de pedidos Back Orders.

Eventualmente, todos os processos irão puxar os itens e dessa forma a lista de pedidos pendentes se tornará vazia, já que todos estão em operação. Então a lista de entradas vai crescendo(Figura 11) até que um dos processos termine o processamento e requisite puxar um item da lista.

Figura 11- Entradas na lista aguardando serem puxadas

Quando os itens são empurrados para a lista, eles são adicionados no fim da lista. Assim se o sistema puxado não utilizar prioridades como parte da sua tomada de decisão, os itens irão ser puxados como FIFO( first-in-first-out), ou seja, seguindo a ordem de quem chegou primeiro sai primeiro. O mesmo acontece com os pedidos pendentes, a primeira máquina que fica disponível puxa o primeiro item que está na lista. Salve seu modelo e ele está pronto para ser executado.

ex2.fsm

Modelos experimentos

Para testar diferentes configurações das operações puxadas faça os seguintes cenários.

Cenário 1- Filtrar por tipo de item

Considere que um dos processos (Processor 1) pode apenas processar o tipo de item 2. Para vincular essa lógica na simulaçao utilize um Query nesse processo. Clique sobre o processo que deseja restringuir a entrada ao tipo 2 de item, na janela de propriedades, vá em FLOW > Pull strategy > em Query digite a restrição WHERE Type == 2 (Figura 12).

Figura 12- Adicionar query para tipo de item

Salve o modelo como Exemplo2_cenario1. Reset seu modelo e execute.

ex2cenario1.fsm

Cenário 2- Puxar pelo LIFO

Agora todos os processos puxam seguindo a ordem último a chegar primeiro a sair (LIFO) ao invés do padrão FIFO, o que significa que o item mais recentemente adicionado na lista deve ser o primeiro a ser puxado . Crie essa lógica na simulação, implementando um Query.

Abra o arquivo do exemplo 2, e salve como exemplo2_cenario2. Para cada um dos 4 processos faça o seguinte:

Clique no processo >vá em FLOW > Pull strategy > em Query no adicionar> ORDER BY> AGE (Figura 13).

Figura 13- Lógica LIFO

Repita o 1) para TODOS os processos.

Salve o modelo e coloque para executar.

ex2cenario2.fsm

flexsim users manuallistlistsconnectionstutorial em portuguesconnectionless
figura-21.png (145.0 KiB)
figura-22.png (41.2 KiB)
figura-23.png (69.9 KiB)
figura-24.png (61.3 KiB)
figura-25.png (82.1 KiB)
figura-26.png (119.0 KiB)
figura-27.png (36.2 KiB)
figura-28.png (41.3 KiB)
figura-29.png (33.7 KiB)
figura-30.png (49.8 KiB)
figura-31.png (8.9 KiB)
figura-32.png (65.0 KiB)
figura9.png (22.4 KiB)
figura4.png (44.6 KiB)
ex2.fsm (17.8 KiB)
ex2cenario1.fsm (17.9 KiB)
ex2cenario2.fsm (18.0 KiB)
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

Article

Contributors

paula.carneiro_martins contributed to this article