10
Inclui CD com cópia do software ARENA 12.0 e exemplos do livro. Série Pesquisa Operacional - Volume 3 INU === 5TS 4

INU - universo-7n2-2014-1.webnode.com

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: INU - universo-7n2-2014-1.webnode.com

Inclui CD com cópia do software

ARENA 12.0 e exemplos do livro.

Série Pesquisa Operacional - Volume 3

INU=== 5TS 4

Page 2: INU - universo-7n2-2014-1.webnode.com

Capítulo 12

Os Módulos Assign e Variables

Efetuar operações com valores é bastante comum em modelagem. O Arenapossibilita a utilização de valores dentro das seguintes categorias: variáveis,atributos e expressões. Cada um destes recursos de armazenamento devalores tem suas características próprias:

• As variáveis são globais (ou seja, disponíveis para qualquer entidade) e seusvalores podem ser modificados ou utilizados pelas entidades. Exemplos:• Total de automóveis produzidos.• Custo de funcionamento do novo sistema.

• O atributo pertence exclusivamente a uma única entidade que se move pelosistema. Exemplos:• Cor de um determinado automóvel.

109

Page 3: INU - universo-7n2-2014-1.webnode.com

• Por meio de "expressões" podemos definir uma fórmula que é calculada pelapassagem de uma entidade.

Neste capítulo teceremos considerações apenas sobre variáveis e, nopróximo capítulo, trataremos de atributos. A categoria Expressions seráabordada no capítulo "Expressões e Valores".

12.1 - O Módulo AssignEste módulo, que pertence ao template Basic Process, é freqüentemente usado

por programadores profissionais. Dentre suas inúmerasfuncionalidades, ele permite que façamos igualdades aritméticase que coloquemos o resultado da igualdade dentro de umavariável (figura ao lado). Exemplos:

X1 = 2.5Y1 = Custo(5)Z1 = Local(2,3)

Considere o exemplo Assign1.doe: trata-se de uma variação do exemplo dafábrica de roupas (Cenarioz.doe), visto nos capítulos anteriores (Figura 12.1).Neste caso, o bloco Assign foi utilizado com a função de efetuar a contagem daspeças produzidas com defeito. Assim, ele foi inserido logo após o teste (móduloDecide), feito pelo inspetor, para verificar a qualidade da roupa.

1_ FABRICA-::Ol:~ •\L_

o M ôdulo A SSIGN.

A qui foi criada a operação matemática:

Totol com Defeito = Totai com Defeito + 1A nimação da Variável'Totot comDefeito"

Figura 12.1 - Usando o bloco Assign (Assign1.doe).

Para verificar como solicitamos a contagem de peças no bloco Assign, dê umduplo clique neste bloco. A tela obtida tem o formato da Figura 12.2-esquerda.Clique em Edit e a nova tela tem o formato da Figura 12.2-direita. Algunscomentários:

110

o

Page 4: INU - universo-7n2-2014-1.webnode.com

• Veja em Type (tipo de designação ou tipo de igualdade) que escolhemosVariable. Observe, ainda, a variedade de opções existentes.

• Observe que preenchemos o campo Variable Name comTotal com Defeito- -e o campo New Value comTotal com Defeito + 1.- -

• O efeito disto é:Total com Defeito Total com Defeito + 1

Assign - l~ 'iiW:W

t:!ame:

~, Pecas com Dele<o ::::J A.ssign~nts -"-1-'ii·1IiiiiEiíiiii

~gnments:

Variab~. T01:,,1com Defeito. Tot~ com O ~dcL IIwe: ~afiable Name:.. Iv.'iabIe ::::J IToIaLcom_Defe<o ::::J.E:clt... I t:!ewValue:

Qele!_ I IT otaLcom_Defeito + 1

I OK I Ceocel I li-'" II OK I Eencei I Help I

Figura 12.2 - O bloco Assign (Assign1.doe).

Ou seja, por meio do bloco Assign a variável Total_com_Defeito sofrerá umacréscimo de 1 sempre que uma entidade passar por este bloco.

12.2 - Edit Via DialogO conteúdo do módulo Assign pode ser visto na Área de Planilha. Para isto, dêum dique neste módulo na Área de Templates e surgirá, na Área de Planithas,uma tela semelhante á Figura 12.3-esquerda. Clicando no campo "1 rows" dacoluna Assignments, surgirá uma tela semelhante à Figura 12.3-direita. Seuconteúdo é análogo ao da tela mostrada na Figura 12.2-direita e, inclusive, podeser utilizada para alterações (basta cllcar no campo desejado e efetuar aalte ração).

Assignments liIIIIÍIi!lD"Bâsic-Pr_ I I Type I Variable Mame I NewValue II I Name I Assignmentsl

, Ivariable ..•..1TotaLcom_Defeito l TotaLcom_Defeíto + 1._._ ..._ ...... _ .._ .._ ........ _-I' IAssign 1 Pecas com Defeito i 11 rows l I Oouble-c6ck here to add a new row.

Figura 12.3 - O Módulo Assign na Área de Planilha (Assign1.doe).

Outro uso conveniente para a tela da Figura 12.3-esquerda é o uso da funçãoEdit via Dialog. Ela pode ser ativada colocando o curso sobre qualquer posição

111

Page 5: INU - universo-7n2-2014-1.webnode.com

112

da linha desejada, dando um clique com o botão direito do mouse e escolhendoEdit via Dialog: surgirá uma tela semelhante à da Figura 12.2-esquerda.

Para continuar trabalhando com o Arena, feche a tela Assignments clicando noX existente à direita da tela (ou aperte "Esc" no teclado).

12.3 - O Módulo VariablesToda variável criada em um módulo Assign passa, automaticamente, a pertencertambém ao módulo Variables. É por meio deste módulo que podemos definirvalores iniciais para as variáveis ou atributos. Lembramos que este módulopertence ao tempiete Basic Process e é um módulo de dados, ou seja, nãoparticipa da Area de Trabalho. Seu conteúdo somente pode ser visto na Area dePlanilha.

Definindo Valores Iniciais

Uma situação comum em modelagem é a necessidade de designarmos valoresiniciais a variáveis, que podem ser escalares ou matriciais. No caso de variáveisescalares, quando seu valor inicial no modelo é zero, não é necessário efetuarsua definição. Quando isto não ocorre, é necessário efetuar a definiçãoutilizando o módulo Variables. Com relação a matrizes, o Arena aceita até duasdimensões e as seguintes regras são válidas:

• As matrizes sempre devem ser definidas, mesmo quando seus valoresiniciais são nulos;

• Uma variável escalar e uma matriz não podem ter o mesmo nome;• Ao inicializar uma matriz com o bloco Variables, devem-se fornecer os

valores, conforme a seqüência de colunas.

Matrizes

Carregue o exemplo Matriz1.doe, no qual definimos as variáveis A 1, C1 e C2.Dê um clique no módulo Variable (template Basic Process da Área deTemplates) e observe o que surge na Área de Planilha (Figura 12.4-superior).(Atenção: para que isto ocorra é necessário que a tela esteja dividida em duaspartes, o que pode ser obtido em View + Split Screen).

Alguns comentários:

• A variável escalar A 1 foi inicializada com o valor 50.• A matriz "C3" foi definida como sendo de 3 linhas por 4 colunas e seus

valores iniciais estão zerados (não foi fornecido nenhum valor em "InitialValues').

• A variável escalar "Linha" foi iniciada como 1.• A variável escalar "Coluna" foi iniciada como 1.

Page 6: INU - universo-7n2-2014-1.webnode.com

• As matrizes "C1" (3 linhas e 1 coluna) e "C2" (3 linhas e 4 colunas) foraminicializadas com os seguintes valores:

~

1102030

C21 2 3 45 6 7 89 10 11 12

Veja na Figura 12.4 os dados fornecidos para as matrizes C1 e C2.

m1102030

Imt,al Values

11 102 203 30

1A 1 = 50 1130 ,Imt,al Values

1 rows...................]"-- __ -L, .

In,t,al Value.1 2 3 4

1 1 2 3 42 5 6 7 83 9 10 11 12

C2

2 3 47 85 6

9 1110 12

Figura 12.4 - Definindo valores iniciais com o módulo Variables (Matriz1.doe).

Como fornecer valores iniciais

=>arafornecer valores iniciais de uma determinada variável, clique com o botãoesquerdo na coluna Inicial Values da linha da variável em questão e forneça osalores na planilha que surge.

= possível também clicar com o botão direito e escolher Edit via Dialog ou Edit'a Spreadsheet. Neste caso, os dados devem ser fornecidos na seqüência dealores que se obtém percorrendo todas as colunas no sentido vertical, iniciando

Ia primeira coluna (Figura 12.5). Esta opção é útil para criar matrizes'dimensionais ou acima.

2.4 - Efetuando Operações com Matrizes== emos usar o módulo Assign para efetuar operações matemáticas com.....atrizes. No Exemplo Matriz1.doe inserimos este módulo para efetuar aseguinte igualdade:

C3(Linha,Coluna) Al + Cl(Linha,l)+ C2(Linha,Coluna)

113

Page 7: INU - universo-7n2-2014-1.webnode.com

Assignments

Variable

!,!ame:

Bows: .[;;olumns:

Qata Type:

IReal :::JCleal option:

ISystem :::JlnitialValues:

159261037

e,dd.8 .E.diL

Qelete

OK Cancel I l:!elp

Figura 12.5 - Definindo valores iniciais com Edit via Dialog (Matriz1.doe).

Para inserir esta igualdade, veja a Figura 12.6, referente ao módulo Assign"Efetua Igualdade" (dê um duplo clique no módulo Assign e, a seguir, clique nobotão Edit):

lYpe: Qthes:r-I O-th-ef-----3-.T IC3(linha.Coluna)

!,!ewValue:

IA1 + C1(linha.1) + C2(Linha.Coluna)

OK Cancel I Help

Figura 12.6 - Usando o módulo Assign para trabalhar com matrizes (Matriz1.doe).

• No campo Type escolhemos Other (para trabalhar com matrizes).• No campo Otherdigitamos C3 (Linha, Coluna) .

114

Page 8: INU - universo-7n2-2014-1.webnode.com

• No campo New Value digitamos AI + CI (Linha, 1) + C2 (Linha, ColunaO efeito das operações acima é:

C3(Linha,Coluna) = AI + CI(Linha,I)+ C2(Linha,Coluna)

Lembre-se de que, neste modelo, as variáveis "Linha" e "Coluna" foraminicializadas como "1".

Sim íFiM\~ "-----.JC3 (i,j) = A1 + C1 (i,1) + C2 (i,j)

Figura 12.7 - A lógica do modelo Matriz1.doe.

uns comentários:

lógica deste modelo está mostrada na Figura 12.7. Para facilitar oentendimento, criamos o diagrama de blocos auxiliar, mostrado naparte inferior da Figura 12.7. Neste diagrama utilizamos a letra "i" para

esignar linha e a letra "j" para designar coluna.erifique que, no bloco Create, solicitamos a criação de uma única

entidade. Ela fica circulando pelo sistema até ser eliminada pelos:estes. Neste momento o programa é encerrado. Veja também Run +

un Setup + Replication Parameters, onde fornecemos Replication =finde. Desta forma, quando a única entidade é eliminada, o programa

6. encerrado.

115

Page 9: INU - universo-7n2-2014-1.webnode.com

Decide

Importante:Para que a animação deste modelo funcione corretamente, é necessário

que esteja ativada a opção encontrada em Object + Animate Connectors.

12.5 - O Bloco DecideNeste exemplo usamos dois blocos Decide para avaliarse os contadores de linha e coluna atingiram valoresexigidos pela lógica. Veja na Figura 12.8 como foicodificado este módulo para o caso do teste do contadorde colunas. Observe que o tipo de escolha é "2-way by .condition", ou seja:

• Se o valor da variável "Coluna" é igual a 4, a entidade segue pela saídahorizontal do bloco Decide, onde se lê 'True" (veja figura ao lado).

• Do contrário, a entidade segue pela saída vertical do bloco Decide, onde selê UFa/se".

• Portanto, para este tipo de bloco Decide, devemos informar somente aprimeira condição ("TrueJ

).

ti ame: lYpe:

"=ICo"":"lu-na"":"lgu-a"":"14-:-----------3"'"t 12.waybyCondition3

!I: tiamed: [s:

r-IV-aria-bl-e--3-' IColuna

'{alue:

OK Cancel I l::!elp

Figura 12.8 - O módulo Decide (Matriz1.doe).

12.6 - Exercícios1. No exemplo Assign1.doe, inclua um novo bloco Assign para calcular o custodas peças produzidas. A variável deve ter o nome CUSTO, e vale $2,50 paracada peça produzida.

116

Page 10: INU - universo-7n2-2014-1.webnode.com

2. Defina as matrizes A1 e A2, conforme dados abaixo. Defina a matriz A3 de 3linhas por 5 colunas e com todos os elementos "zerados". Faça um programa parasomar os elementos de A 1 nos correspondentes elementos de cada linha de A2para produzir os elementos de A3.

10 20 I 30 1---:-40-=---__ 5_0_Matriz A1

Matriz A21 2 3 4 56 7 8 9 1011 12 13 14 15

117