instituto de engenharia de sistemas e computadores de ... · na maior parte dos problemas de...

34
1 Instituto de Engenharia de Sistemas e Computadores de Coimbra Institute of Systems Engineering and Computers INESC - Coimbra Joana Dias, M. Eugénia Captivo e João Clímaco Problema de Localização Dinâmica com Abertura, Fecho e Reabertura de Serviços: Formulação e Heurística Primal-Dual No. 6 2002 ISSN: 1645-2631 Instituto de Engenharia de Sistemas e Computadores de Coimbra INESC - Coimbra Rua Antero de Quental, 199; 3000-033 Coimbra; Portugal www.inescc.pt

Upload: dangnhan

Post on 08-Nov-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

1

Instituto de Engenharia de Sistemas e Computadores de Coimbra

Institute of Systems Engineering and Computers

INESC - Coimbra

Joana Dias, M. Eugénia Captivo e João Clímaco

Problema de Localização Dinâmica com Abertura, Fecho e Reabertura de Serviços: Formulação e Heurística

Primal-Dual

No. 6 2002

ISSN: 1645-2631

Instituto de Engenharia de Sistemas e Computadores de Coimbra

INESC - Coimbra

Rua Antero de Quental, 199; 3000-033 Coimbra; Portugal

www.inescc.pt

Page 2: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

2

Problema de Localização Dinâmica com Abertura, Fecho e

Reabertura de Serviços: Formulação e Heurística

Primal-Dual JOANA DIAS(1), M. EUGÉNIA CAPTIVO(2) E JOÃO CLÍMACO(1)

(1) Faculdade de Economia e INESCC Universidade de Coimbra

Av. Dias da Silva 3000 Coimbra

Portugal (2) DEIO e CIO

Faculdade de Ciências da Universidade de Lisboa Campo Grande, Bloco C2, Piso 2

1749-016 Lisboa Portugal

Sumário:

Neste relatório iremos apresentar a formulação em Programação Inteira de um Problema de

Localização Dinâmica com Abertura, Fecho e Reabertura de Serviços. Este problema considera

a possibilidade de, durante o horizonte temporal considerado, ser possível abrir, fechar e reabrir

serviços. Através da bibliografia consultada, pensamos poder afirmar ser a primeira vez que

este problema de localização é estudado. Tendo como caso especial o problema de localização

simples, é imediato concluir que se trata de um problema NP-difícil. Foi desenvolvida uma

heurística, baseada nos trabalhos de Erlenkotter (1978) e Van Roy e Erlenkotter (1982), que

garante o cálculo de soluções primais e duais admissíveis, e que tenta forçar a

complementaridade entre elas. Desta forma, mesmo que não se atinja a solução óptima,

conhece-se sempre um limite inferior e um limite superior para o valor da função objectivo

primal. Descreve-se ainda um algoritmo de pesquisa em árvore em que esta heurística é

inserida, para que seja possível calcular a solução óptima do problema primal.

ABSTRACT: In this research report we will present the formulation of the dynamic location

problem with opening, closing and reopening of services. This problem considers the

possibility of opening, closing and reopening services during the planning horizon established.

The Simple Plant Location Problem is a special case of the problem described. We can

therefore state that it is a problem NP-Hard. We developed an heuristic, based on the work of

Erlenkotter (1978) and Van Roy and Erlenkotter (1982), that guarantees the construction of

admissible primal and dual solutions, and tries to force the complementary between them. The

Page 3: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

3

calculation of a lower and upper bound to the objective function optimum value is always

guaranteed. It is also described a tree search algorithm which uses the heuristic developed, and

that enables the calculation of the optimum solution.

1. Introdução O problema que consiste na escolha das localizações onde instalar serviços (tais como

armazéns, fábricas, hospitais, etc), de tal forma que seja satisfeita a procura de um determinado

produto por parte de um conjunto de clientes, minimizando os custos totais envolvidos chama-

se problema de localização simples (PLS). Geralmente são considerados custos fixos de

abertura dos serviços e custos variáveis de afectação de clientes a serviços. Como não se

consideram capacidades associadas aos serviços abertos, cada cliente será servido por um e um

só serviço (aquele a que corresponde o menor custo de afectação entre todos os serviços

abertos) (Cornuejols et al, 1990).

O problema de localização dinâmica é uma generalização do PLS, em que se considera que

a localização dos serviços pode ser feita ao longo de um horizonte temporal determinado. Em

cada período temporal tem de se garantir a afectação de cada cliente a um serviço aberto.

Duas características principais obrigam à utilização de um modelo dinâmico (Erlenkotter,

1981): alterações significativas ao longo do tempo nos custos de afectação de clientes a

serviços; custos significativos de fecho e abertura em novas localizações de serviços. Se a

primeira característica estiver ausente, significa que se poderia utilizar um problema estático.

Se a segunda não existir, significa que se poderão considerar vários problemas estáticos e não

relacionados entre si.

Um dos primeiros artigos a referir um problema de localização dinâmica deve-se a

Wesolowsky (1973). Neste artigo, o autor generaliza o problema de Weber, considerando a

existência de vários períodos temporais. Wesolowsky e Truscott(1975) descrevem um

problema de localização discreto, em que se fixa, para cada período temporal, o número de

serviços abertos. Em cada período temporal um serviço pode ser aberto ou removido de uma

determinada localização. Apresentam um método de resolução em que utilizam programação

dinâmica. Fong e Srinivasan (1981a,1981b) analisam o problema em que se pretende criar um

plano temporal de expansão de serviços para uma determinada empresa (e que consiste na

determinação da localização, tamanho e timing de construção de novos serviços). Van Roy e

Erlenkotter (1982) descrevem o problema de localização dinâmica simples sem capacidades,

em que se considera a hipótese de se abrirem novos serviços no início de cada período temporal

Page 4: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

4

ou se fecharem serviços já existentes no início do primeiro período temporal. Laporte e Dejax

(1989) descrevem um problema dinâmico em que consideram simultaneamente a localização

de serviços e o problema de rotas óptimas que lhe está associado. Shulman (1981) descreve um

problema de localização dinâmica em que os serviços a localizar têm capacidade finita.

Considera-se um número limitado de capacidade possíveis, e é possível localizar mais do que

um serviço na mesma localidade em diferentes períodos temporais (aumentando-se assim a

capacidade numa determinada localidade). Galvão e Santibãnez-Gonzalez (1992) consideram a

generalização do problema da p-mediana a vários períodos temporais (os clientes deverão ser

afectos a um conjunto de K serviços no período k, tendo como objectivo a minimização de

custos de instalação e de transporte). Melachrinoudis et al (1995) propõem um modelo

dinâmico, multiobjectivo de localização de aterros sanitários com capacidades. Hinojosa et al

(2000) lidam com um problema de localização dinâmica, considerando a procura de mais do

que um produto por parte dos clientes, e o transporte dos vários produtos desde as localizações

onde são produzidos até armazéns e destes até aos clientes. Antunes e Peeters (2001)

apresentam um problema de localização dinâmica baseado num problema real, cujas decisões

se prendem com a abertura de novos serviços e o fecho, a redução ou expansão de serviços já

existentes.

Na maior parte dos problemas de localização dinâmica definidos na literatura, que têm em

conta simultaneamente a hipótese de se abrirem e fecharem serviços, considera-se a

possibilidade de abertura de novos serviços num período temporal t, mantendo-se estes

serviços abertos até ao fim do horizonte temporal considerado, e a possibilidade de fecho de

serviços que já se encontravam abertos em t =1, e que se manterão fechados até ao fim do

horizonte temporal. Uma excepção é o artigo de Wesolowsky e Truscott(1975), mas neste

artigo os custos fixos de abertura considerados não têm em conta se numa dada localização já

esteve ou não em funcionamento anteriormente um serviço. Além disso, não são considerados

custos fixos de funcionamento dos serviços durante os períodos temporais em que se encontram

abertos, nem custos de encerramento de serviços.

O problema que iremos formular considera a possibilidade de abertura, fecho e reabertura

de serviços. A distinção entre a abertura de um serviço e a sua reabertura numa mesma

localidade permite que se distingam os custos fixos respectivos. Existem diversas situações em

que a reabertura de um determinado serviço numa localidade tem associado um custo fixo

diferente do custo fixo de abertura (por exemplo, se já se tiverem adquirido anteriormente as

instalações, se já tiverem sido feitos anteriormente estudos de impacto ambiental no caso de

instalações de serviços obnóxios). O modelo proposto permite ainda a consideração de custos

Page 5: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

5

de funcionamento e de encerramento de serviços (que na maior parte das situações não devem

ser ignorados). É também possível considerar a situação da existência de serviços abertos no

início do horizonte temporal.

Como o modelo descrito é uma generalização do PLS, é imediato concluir que se trata de

um problema NP-difícil (Krarup e Pruzan, 1983). Foi desenvolvida uma heurística para a

resolução deste problema, que constrói soluções duais e primais admissíveis tentando forçar a

complementaridade entre elas. Mesmo nas situações em que a heurística não consegue

encontrar a solução óptima, consegue sempre encontrar uma solução primal admissível e

fornecer um limite inferior para o valor da função objectivo primal (permitindo aferir a

qualidade da solução primal encontrada).

Na secção seguinte descreve-se um modelo matemático que formula o problema descrito.

Na secção 3 formula-se o problema dual linear do problema primal apresentado. Na secção 4

descreve-se a heurística primal-dual desenvolvida. Na secção 5 descreve-se um possível

mecanismo de pesquisa em árvore que poderá ser utilizado sempre que a heurística não

conseguir encontrar a solução óptima. Finalmente, na secção 6 apontam-se algumas

possibilidades de desenvolvimento de trabalho futuro.

2. Formulação do problema e descrição do modelo Considere-se:

J = {1,...,n} conjunto de índices correspondentes às localizações dos clientes;

I = {1,...,m} conjunto de índices correspondentes às possíveis localizações dos serviços;

T = número de períodos temporais a considerar;

cijt = custo de afectar o cliente j ao serviço i no período t;

FAitξ = custo fixo de abrir um serviço em i no início do período t, mantê-lo aberto até ao fim do

período ξ e encerrá-lo nessa altura;

FRitξ = custo fixo de reabrir um serviço em i no início do período t, mantê-lo aberto até ao fim

do período ξ e encerrá-lo nessa altura;

=

contrário caso em 0

período do fim ao até aberto mantém se e período do iníciono aberto é serviço o se 1

ξξti

ait

1,contrário caso em 0

período do fim ao até aberto mantém se e período do iníciono reabertoé serviço o se 1

>

= t

tirit

ξξ

Page 6: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

6

=contrário caso em 0

período no serviço ao afectoestá cliente o se 1 tijx t

ij

O problema de localização dinâmica de serviços considerando a possibilidade de abertura ,

fecho e reabertura de serviços ao longo do horizonte temporal considerado pode ser formulado

como PLDAFR:

PLDAFR:

ξ

ξ

ξξ

ξ

ξit

t i

T

titit

t i

T

tit

tij

t i j

tij rFRaFAxcMin ∑∑ ∑∑∑ ∑∑∑∑

==++ ( 1 )

sujeito a:

1=∑i

tijx , ∀ j,t ( 2 )

( ) 01

≥−+∑ ∑= =

ttij

T

tii xra

τ ξ

ξτ

ξτ , ∀ i,j,t ( 3 )

01

1

1≥− ∑∑ ∑

=

=

=

T

tit

t t

i raξ

ξ

τ τξ

ξτ , ∀ i,t ( 4 )

∑ ∑= =

≤T

t

T

tita

11

ξ

ξ , ∀ i ( 5 )

( ) 11

≤+∑ ∑= =

t T

ii raτ τξ

ξτ

ξτ , ∀ i,t ( 6 )

{ }{ } ttir

ttjixa

it

tijit

≥>∀∈

≥∀∈

ξ

ξξ

ξ

,1,,1,0,,,,1,0,

( 7 )

O conjunto de restrições (2) garante que, em cada período temporal, cada cliente é servido

por exactamente um serviço; o conjunto de restrições (3) garante que, em cada período

temporal, um cliente só pode ser servido por um serviço que esteja aberto no período

correspondente; o conjunto de restrições (4) garante que um serviço só poderá ser reaberto no

início do período t se já tiver sido aberto anteriormente e se encontre fechado; o conjunto de

restrições (5) garante que um serviço só pode ser aberto na localidade i uma vez durante todo o

Page 7: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

7

período temporal; o conjunto de restrições (6) garante que, em cada período temporal, só pode

estar em funcionamento um único serviço na localidade i.

Se existir um conjunto Ic ⊂ I onde existem serviços abertos em t =1, esta informação

poderá ser incluída no modelo apresentado. Bastará para tal considerar ri1ξ=0,∀ i ∈ Ic, ξ ≥1, e

considerar que o somatório de todas as variáveis ai1ξ,∀ i ∈ Ic, ξ ≥1 tenha de ser igual a um,

adequando os custos fixos de abertura no período t = 1 à situação de já existirem serviços

abertos (o que significa que FAi1ξ , para i ∈ Ic, representará os custos de manter o serviço aberto

desde t =1 até ao fim do período ξ e de encerrá-lo, não sendo necessário incluir os custos de

abertura).

As restrições (5) e (6) só precisam de ser consideradas explicitamente quando se considera

a possibilidade dos custos fixos poderem tomar valores não positivos. O conjunto de restrições

(6) poderia ser substituído por:

11

≤∑ ∑= =

t T

irτ τξ

ξτ , ∀ i,t ( 8 )

Como um serviço só poderá ser aberto uma vez, e só pode ser reaberto se já não estiver em

funcionamento após essa abertura, (8) tem exactamente a mesma interpretação de (6). No

entanto consideraram-se as restrições (6), pois estas facilitam o desenvolvimento da heurística

primal-dual.

3. Formulação do problema dual

3.1. Problema Dual

Na construção do problema dual de PLDAFR consideraram-se as restrições (5’) e (6’) em

vez de (5) e (6):

∑ ∑= =

−≥−T

t

T

tita

11

ξ

ξ , ∀ i,t ( 5’ )

( ) 11

−≥+−∑ ∑= =

t T

ii raτ τξ

ξτ

ξτ , ∀ i,t ( 6’ )

Associando às restrições (2) as variáveis duais vjt, às restrições (3) as variáveis duais wij

t, às

restrições (4) as variáveis duais uit, às restrições (5’) as variáveis duais ρi, e às restrições (6’) as

variáveis duais πit , o problema dual virá:

Page 8: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

8

D-PLDAFR:

∑ ∑∑∑∑ −−t t i

ti

ii

j

tjvMax πρ ( 9 )

sujeito a: tij

tij

tj cwv ≤− , tji ,,∀ ( 10 )

ξξ

τ

τ

ξτ

τξ

τ

τ πρ itt

iiT

ij t

ij FAuw ≤−−+ ∑∑∑ ∑=+== 1

, Ttti ,,,, L=∀ ξ ( 11 )

ξξ

τ

τξ

τ

τ π itt

iti

j tij FRuw ≤−− ∑∑ ∑

==, Ttti ,,,, L=∀ ξ ( 12 )

0,,, ≥tii

ti

tij uw πρ , tji ,,∀

Considerando { }t

ijtj

tij cvmaxw −= ,0 , constrói-se o dual condensado:

DC-PLDAFR:

∑ ∑∑∑∑ −−t t i

ti

ii

j

tjvMax πρ

sujeito a:

{ } ∑∑∑ ∑=+==

++−≤−ξ

τ

τ

ξτ

τξξ

τ

ττ πρt

iiT

iitj t

ijj uFAcvmax1

,0 , Ttti ,,,, L=∀ ξ ( 13 )

{ } ∑∑ ∑==

++≤−ξ

τ

τξξ

τ

ττ πt

itiit

j tijj uFRcvmax ,0 , Ttti ,,,, L=∀ ξ ( 14 )

0,, ≥tii

tiu πρ , tji ,,∀

Considerar as restrições primais (6) em vez de (8) faz com que a parcela ∑=

ξ

τ

τπt

i apareça

simultaneamente em (13) e em (14), o que vai facilitar a construção de soluções duais

admissíveis.

Page 9: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

9

3.2. Condições de Complementaridade

Tendo formulado os problemas primal e dual, podem agora enunciar-se as condições de

complementaridade que terão de ser satisfeitas pelas soluções primal e dual óptimas, na

ausência de gap de dualidade.

Considere-se:

{ }∑ ∑∑∑==+=

−−++−=j t

ijjt

iiT

iitit cvmaxuFASAξ

τ

ττξ

τ

τ

ξτ

τξξ πρ ,01

, Ttti ,,,, L=∀ ξ ( 15 )

{ }∑ ∑ ∑= =

−−++=ξ

τ

ξ

τ

τττξξ πt j t

ijjitiitit cvmaxuFRSR ,0 , Ttti ,,,, L=∀ ξ ( 16 )

{ }ξξξititit SRSAminS ,= , Ttti ,,,, L=∀ ξ ( 17 )

As condições de complementaridade podem ser enunciadas como:

( ) ,01

=

−+∑ ∑

= =

tij

ttij

T

tii wxra

τ ξ

ξτ

ξτ tji ,,∀ ( 18 )

,01

1

1=

− ∑∑ ∑

=

=

=

ti

T

tit

t t

i uraξ

ξ

τ τξ

ξτ ti,∀ ( 19 )

,011

=

−∑ ∑

= =i

T

t

T

tita ρ

ξ

ξ i∀ ( 20 )

( ) ,011

=

−+∑ ∑

= =

ti

t T

ii ra πτ τξ

ξτ

ξτ ti,∀ ( 21 )

,0=⋅ ξξitit aSA Ttti ,...,,, =∀ ξ ( 22 )

,0=⋅ ξξitit rSR Ttti ,...,,, =∀ ξ ( 23 )

Page 10: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

10

4. Heurística Primal-Dual

4.1. Descrição

A heurística primal-dual que foi desenvolvida para resolver o problema PLDAFR constrói

soluções duais e primais admissíveis, tentando forçar a satisfação de todas as condições de

complementaridade (18)-(23). Se se conseguir calcular uma solução primal e uma solução dual

admissíveis e complementares, então conseguiu-se descobrir a solução óptima do problema.

Caso contrário a melhor solução dual encontrada fornece um limite inferior ao valor óptimo da

função objectivo primal, permitindo aferir a qualidade da melhor solução primal calculada pela

heurística.

O funcionamento da heurística pode ser descrito através do seguinte algoritmo:

1. Inicialização de todas as variáveis duais; 2. Execução do Procedimento Dual Ascendente para as variáveis vj

t; 3. Execução do Procedimento Primal; 4. Execução do Procedimento de Ajuste Dual para as variáveis ρi. Se a solução dual for

alterada ir para 3. 5. Enquanto a função objectivo do problema dual melhorar, executar o Procedimento de

Ajuste Dual-Primal para as variáveis vjt;

6. Execução do Procedimento de Ajuste Dual para as variáveis ρi. Se a solução dual for alterada ir para 3.

7. Execução do Procedimento Dual Ascendente para as variáveis uit; Se a solução dual for

alterada ir para 3. 8. Execução do Procedimento Dual Descendente para as variáveis ui

t; Se a solução dual for alterada ir para 3.

9. Execução do Procedimento de Ajuste Dual para as variáveis πit . Se a solução dual for

alterada ir para 3. Senão Parar.

Se em algum momento o melhor valor da função objectivo dual igualar o melhor valor da

função objectivo do primal, o algoritmo será terminado (significa que foi encontrada a solução

primal óptima).

A inicialização das variáveis duais poderá ser feita da seguinte forma:

Inicialização das variáveis duais

1. { } ititiutjcminv iti

ti

tij

itj ∀=∀=∀=∀= ,0 ;,,0 ;,,0 ;,, ρπ

2. Se tiFRminmaxuFR itt

ttiit ,,,0,0 ∀

−=<∃

ξ

ξ

ξ

Page 11: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

11

3. Se tiuFAminmaxFAT

iitt

tiit ,,,0,0

1∀

−−=<∃ ∑

+=≥ ξτ

τξ

ξ

ξ ρ

Nas secções seguintes descrevem-se todos os procedimentos referidos. Através da

aplicação da heurística a vários problemas gerados aleatoriamente foi possível verificar que

todos os procedimentos indicados contribuem para a melhoria do valor da função objectivo

dual ou primal.

4.2. Procedimento dual ascendente para as variáveis duais vjt

Neste procedimento considera-se um conjunto J+ ⊂ J e tenta-se aumentar o valor das

variáveis duais +∈ Jjvtj , , considerando uma solução inicial { }t

jv e todos os custos tijc

reindexados como descrito em Van Roy e Erlenkotter, 1982. Quando este procedimento é

executado no ponto 2 da heurística primal-dual, o conjunto J+ é exactamente igual ao conjunto

J. Sempre que este procedimento é executado dentro de outros procedimentos (como acontece,

por exemplo, com o procedimento de ajuste dual para as variáveis vjt ), o conjunto J+ é definido

dentro desses procedimentos.

O valor das variáveis duais vjt é, sempre que possível, aumentado para o menor custo cij

t

maior do que vjt. Sempre que tal não seja possível devido ao valor de uma slack Siτ

ξ, aumenta-

se para o maior valor possível tal que a solução dual continue admissível. Sempre que o valor

de uma variável vjt aumenta é necessário actualizar o valor de todas as slacks SAiτ

ξ e SRiτξ, tais

que τ ≤ t ≤ ξ, diminuindo o seu valor da mesma quantidade de que vjt foi aumentada (no caso de

vjt ser maior ou igual do que cij

t). Todas as slacks têm de apresentar valores maiores ou iguais a

zero. O procedimento termina quando já não for possível aumentar o valor de nenhuma

variável vjt .

Procedimento dual ascendente para vjt

1. Considere-se uma qualquer solução admissível { }tjv tal que

( ) ttiStjcv ittj

tj ≥∀≥∀≥ ξξ ,,,0,,,1 . Para cada ( )tj, defina-se ( ) { }tk

jtj cvkmintjk ≤= :, . Se

( )tjtkj

tj cv ,= então ( ) ( ) 1,, +← tjktjk .

2. ( ) ( ) 0;1;,, 1 =←← δqtjtj .

3. Se ( ) +∉ Jtj, , então ir para 7.

Page 12: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

12

4. { }ξτξτ ≤≤≥=∆ tcvSmin t

ijtjii

tj e :

5. Se ( ) tj

tjtkj

tj vc −>∆ , então ( ) ( ) ( ) 1,,;1;, +←=−=∆ tjktjkvc t

jtjtk

jtj δ

6. Para cada serviço i, se 0≥−+ tij

tj cv , então ξτξ

τξτ ≤≤∆−= tSS t

jii , . tj

tj

tj vv ∆+= .

7. Se ( ) ( ) ;1;,,,# 1 +←←≠ ++ qqtjtjJq q Ir para 3.

8. Se 1=δ ir para 2. STOP.

4.3. Construção de Soluções Primais Admissíveis

A heurística primal-dual pretende construir soluções admissíveis para o problema

PLDAFR, a partir de soluções duais admissíveis, tentando forçar a satisfação de todas as

condições de complementaridade. Definam-se os seguintes conjuntos:

I* = { (i,t,τ):Sitτ = 0}

I*t = {i : ( i,τ,ξ ) ∈ I* e τ ≤ t ≤ ξ}

It+ = {i : o serviço i está aberto no período t}

IA+ = { ( i,τ,ξ ) : aiτ

ξ = 1}

IR+ = { ( i,τ,ξ ) : riτ

ξ = 1}

O conjunto I* corresponde a todos os trios (i,t,τ) tais que SAiτξ e/ou SRiτ

ξ são iguais a zero.

É a partir deste conjunto que se vão escolher as variáveis que se irão colocar nos conjuntos IA+

e IR+, constituindo estes conjuntos a solução primal construída. I*

t indica o conjunto de

serviços que poderão estar abertos durante o período t, e I+t o conjunto de serviços que

efectivamente estão abertos no período t. Estes conjuntos poderão não ser iguais, pois tenta

sempre abrir-se o menor número de serviços possíveis tal que se garanta que todos os clientes

são servidos por um serviço aberto.

No procedimento primal começam por se incluir em I+t aqueles serviços que pertencem a

I*t e que são considerados essenciais no período t. Um serviço i é considerado essencial para o

período t se existe pelo menos um cliente j tal que o valor da variável dual vjt é maior ou igual

do que cijt apenas para esse serviço i∈ I*

t . Cada cliente j nestas condições será afecto, no

período t, ao serviço i que lhe é essencial. Para todos os outros clientes, verifica-se se poderão

ser afectos a um serviço pertencente a I+t. No caso de tal não ser possível coloca-se em I+

t o

serviço i ∈I*t a que corresponde o menor custo de afectação cij

t. Para tentar evitar que se abram

mais serviços do que os necessários, voltam a repetir-se estes passos, mas agora considerando o

conjunto I*t igual a I+

t , ou seja, para os serviços que foram considerados abertos no período t,

Page 13: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

13

vai verificar-se quais destes são essenciais. Os serviços essenciais são os primeiros a serem

considerados abertos. Os restantes serviços só serão abertos se for necessário.

Procedimento Primal

1. IA+ = IR

+ = 0. It+ = 0,∀t. Construir os conjuntos I* e It

*. Vezes =0;

2. Para t =1 até T incluir em It+ todos os serviços i ∈ It

* tais que

iicvcvj tji

tj

tij

tj ≠∀<≥∃ ', e : ' .

3. Para cada cliente j tal que ++ ∈∀< ttij

tj Iicv , , incluir em It

+ o serviço i tal que

tjit

jictjv

tij cminc '

'≥= . Vezes = vezes+1. Se vezes = 1 então IA

+ = IR+ = 0. It

* = It+ e It

+ = 0,∀t , ir

para 2. Senão ir para 4.

4. Construir os conjuntos IA+ e IR

+ . Actualizar It+. Para t =1 até T, afectar cada cliente j ao

serviço i ∈ It+ com menor cij

t.

5. Verificar satisfação das condições de complementaridade (19)-(21).

Neste procedimento os passos 4 e 5 requerem especial atenção. De facto, a construção dos

conjuntos IA+ e IR

+ é bastante mais complexa do que a construção do conjunto I+ no algoritmo

Dynaloc (Van Roy e Erlekotter, 1982), porque poderão ter de se considerar períodos de

abertura e reabertura para um mesmo serviço que garantam a admissibilidade da solução primal

construída. Sempre que, para um determinado serviço i e período t se tem i ∈ It+ com Siτ

ξ = 0, τ

≤ t ≤ ξ para mais do que um par (τ,ξ), a escolha de qual variável inserir nos conjuntos IA+ ou IR

+

pode tornar-se um problema combinatório por si só.

Os conjuntos IA+ e IR

+ são construídos tendo em conta, para cada serviço i, quais os

períodos temporais em que tem de estar aberto. Considerando:

t1 = min{τ : i∈Iτ+ } e t2 = max {τ : i∈Iτ

+ }

vai verificar-se se (i, t1, t2) ∈ I*. Se (i, t1, t2) ∈ I*, inclui-se a variável 21

tita em IA

+. Caso contrário

serão executados dois procedimentos (figura 1 e 2) que incluem em IA+ e IR

+ variáveis que

garantem que o serviço i estará aberto em todos os períodos t tais que i ∈ It+. Estes dois

procedimentos são muito semelhantes, residindo a diferença entre eles no facto de num se

começar a construir os conjuntos IA+ e IR

+ no que diz respeito ao serviço i desde t =1 até t =T, e

no outro se fazer o inverso. Desta forma executam-se ambos os procedimentos, escolhendo-se

depois a melhor solução entre ambas.

Page 14: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

14

Os procedimentos de construção da solução primal tentam, para cada serviço i ∈ It+ ,

incluir em IA+ ou IR

+ o trio ( i,τ,ξ ) ∈ I* e τ ≤ t ≤ ξ, que abranja o maior número de períodos

temporais possível. O procedimento 1 começa a construir a solução considerando t = t1, e vai

tentar inserir em IA+ o trio ( i,τ,ξ ), considerando τ = 1 e ξ = T. Se tal não for possível porque (

i,τ,ξ )∉ I*, então vai diminuir-se ξ em uma unidade, até que ( i,τ,ξ )∈ I* ou então ξ < t1. Se (

i,τ,ξ )∈ I*, então insere-se (i,τ,ξ) em IA+, avança-se τ para ξ+1 (porque não podem existir

sobreposições nos períodos temporais devido às restrições (6) ) e avança-se t para o próximo

período temporal tal que i ∈ It+, repetindo-se o processo (todos os outros trios ( i,τ,ξ )∈ I* que

forem considerados serão inseridos em IR+). Se ξ < t1, significa que não foi possível encontrar

nenhum trio ( i,τ,ξ )∈ I* que incluísse o período t, pelo que se incrementa o valor de τ em uma

unidade até que seja encontrado ( i,τ,ξ )∈ I* ou então τ > t1.

No primeiro caso, procede-se como já descrito. No segundo caso significa que não vai ser

possível construir a solução primal recorrendo apenas a ( i,τ,ξ )∈ I*. Vai ter de se inserir em

IR+ uma variável tal que Siτ

ξ ≠ 0, o que provoca violação das condições de complementaridade.

O procedimento 2 constrói a solução primal de forma semelhante, mas começando por

considerar t = t2, incrementando primeiro o valor de τ e diminuindo depois o valor ξ sempre

que não se encontra ( i,τ,ξ )∈ I*.

Em ambos os procedimentos tentam experimentar-se, para cada período t, todas as

possibilidades (i,τ,ξ ) que incluam este período, tendo em conta as variáveis já incluídas em IA+

e IR+ e respeitando as restrições (6).

A utilização destes procedimentos para cada serviço i garante a construção de uma solução

admissível para PLDAFR, mas pode originar violações das condições de complementaridade

(22) e (23). Optou-se por minimizar o número de violações, garantindo-se que, para cada

serviço i, haverá no máximo uma violação de (22) ou (23).

Note-se que a construção dos conjuntos IA+ e IR

+ não tem em conta outras variáveis duais

para além das variáveis vjt . Isto faz com que a solução primal construída possa violar algumas

condições de complementaridade, nomeadamente (19), (20) e (21). Por este motivo construiu-

se um outro procedimento (figura 3) que será executado no passo 5 do procedimento primal.

Aqui vai verificar-se se existe ou não violação de alguma das condições de complementaridade

indicadas. Em caso afirmativo, tenta alterar-se a solução primal, forçando a satisfação das

condições de complementaridade que estão a ser violadas.

Page 15: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

15

Procedimento 1

Início = 1;Tempo = t1; stop = false; abertura = true; ENQUANTO tempo ≤ t2

SE i ∈ I+tempo ENTÃO

τ = inicio; ξ = T; t = tempo; ENQUANTO τ ≤ t e não stop ENQUANTO ξ ≥ t e não stop SE ∃ (i , τ ,ξ ) ∈ I* ENTÃO SE abertura ENTÃO (i , τ ,ξ )→IA

+ abertura = false FIMSE SENÃO (i , τ ,ξ )→IR

+ FIMSENÃO

Tempo = inicio = ξ +1 Stop = true FIMSE SENÃO ξ = ξ -1 FIMSENÃO FIMENQUANTO τ = τ +1; ξ = T

FIMENQUANTO SE não stop ENTÃO SE abertura ENTÃO

(i , inicio,t2 )→IA+

abertura = false FIMSE

SENÃO (i , inicio,t2 )→IR+ FIMSENÃO

Tempo = t2 + 1 FIMSE

FIMSE Tempo = tempo +1

FIMENQUANTO

Figura 1

As condições de complementaridade (19) a (21) obrigam a que:

§ Se ρi ≠ 0, então tem de se abrir um serviço em i durante o horizonte temporal

considerado.

§ Se πit ≠ 0, então tem de estar aberto um serviço na localidade i no período t.

§ Se uit ≠ 0, então, se tiver sido aberto um serviço na localidade i antes de t, tal que

esteja fechado no período t, então esse serviço terá de ser reaberto em t.

No caso de se ter simultaneamente ρi , πit e ui

t diferentes de zero, se as condições de

complementaridade relativas a uit estiverem satisfeitas, o mesmo acontecerá com as condições

de complementaridade relativas às restantes variáveis. Da mesma forma, se ρi e πit forem

Page 16: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

16

simultaneamente diferentes de zero e as condições de complementaridade (21) forem

satisfeitas, então pode garantir-se que as condições (20) também são satisfeitas.

Procedimento 2

fim = T;Tempo = t2 ; stop = false; ENQUANTO tempo ≥ t1

SE i ∈ I+tempo ENTÃO

τ = 1; ξ = fim; t = tempo; ENQUANTO ξ ≥ t e não stop ENQUANTO τ ≤ t e não stop

SE ∃ (i , τ ,ξ ) ∈ I* ENTÃO SE τ ≤ t1 ENTÃO (i , τ ,ξ )→IA

+ FIMSE SENÃO (i , τ ,ξ )→IR

+ FIMSENÃO

Tempo = fim =τ -1 Stop = true FIMSE

SENÃO τ = τ +1 FIMSENÃO FIMENQUANTO ξ = ξ -1; τ =1

FIMENQUANTO SE não stop ENTÃO

(i , t1, fim )→IA+

Tempo = t1 - 1 FIMSE

FIMSE Tempo = tempo -1

FIMENQUANTO

Figura 2

O procedimento de verificação das condições de complementaridade não garante que

deixe de haver violações, pois para tal poderia ter de se construir soluções primais não

admissíveis (poderiam ser violadas as restrições (4) e (6)).

O que o procedimento de verificação das condições de complementaridade faz é começar

por verificar se existe violação das condições (19). Se tal acontecer, tenta reabrir o serviço i no

período t, mas respeitando as restrições (6) (verificando se existe alguma variável riτξ em IR

+ o

que, em caso afirmativo, faz com que só se possam considerar variáveis de reabertura ritζ, com

ζ < τ). Algo de semelhante acontece quando existe violação das condições de

complementaridade (21). Tenta (re)abrir-se o serviço i de modo a que esteja em funcionamento

no período t, mas considerando apenas intervalos de tempo que não incluam períodos já

abrangidos por variáveis que pertençam a IR+ ou IA

+. Quanto às condições de

complementaridade (20), se estas não forem satisfeitas, significa que não existe nenhum serviço

Page 17: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

17

aberto em i em nenhum dos períodos temporais considerados. Neste caso pode escolher-se uma

qualquer variável cuja slack seja igual a zero e colocá-la em IA+ (não existe o perigo de

violação das restrições (6) ).

Procedimento de verificação das condições de complementaridade

i = 1 ENQUANTO i ≤ #I ρsatisfeito = false; πsatisfeito =false; t =1; ENQUANTO t ≤ T SE ui

t ≠0 e ∃ (i, τ ,ξ) ∈ IA+, ξ < t ENTÃO

SE ∃/ (i, t ,ξ) ∈ IR+ ENTÃO

tmax = T tmax = min {tmax , min {τ : (i, τ ,γ) ∈ IR

+ e τ > t } } SE ∃ (i, t ,ξ) ∈ I*, ξ < tmax ENTÃO

(i, t ,ξ)→ IR+

ρsatisfeito = true ; πsatisfeito =true FIMSE FIMSE SENÃO ρsatisfeito = true; πsatisfeito =true FIMSENÃO FIMSE SE πi

t = 0 e πsatisfeito = false ENTÃO SE i ∉ It

+ ENTÃO SE ∃ ( i ,τ , ξ ) ∈ IA

+ ENTÃO tmin = max {ξ : (i, τ , ξ ) ∈ IA

+ ∪ IR+, ξ < t }

tmax = min { τ: (i, τ , ξ ) ∈ IA+ ∪ IR

+, τ > t } FIMSE SENÃO tmin = 1 ; tmax = T FIMSENÃO SE ∃ ( i ,τ , ξ ) ∈ I* : τ ≥ tmin e ξ ≤ tmax ENTÃO ( i ,τ , ξ ) → IA

+ ou IR+

ρsatisfeito = false

FIMSE FIMSE SENÃO ρsatisfeito = true FIMSENÃO FIMSE FIMENQUANTO SE ρsatisfeito = false e ρi ≠ 0 ENTÃO Escolher ( i ,τ , ξ ) ∈ I*

( i ,τ , ξ ) → IA+

FIMSE FIMENQUANTO

Figura 3

No fim da execução do procedimento primal encontra-se uma solução primal admissível

para PLDAFR. Esta solução poderá violar as condições de complementaridade (22) ou (23),

Page 18: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

18

pois poder-se-á construir uma solução em que ( i ,τ , ξ )∈ IA+ com SAiτ

ξ ≠0 e SRiτξ =0, ou então

(i,τ , ξ )∈ IR+ com SRiτ

ξ ≠0 e SAiτξ =0. Os procedimentos que a seguir se descrevem irão lidar

com estas situações.

4.4. Procedimento de ajuste dual para as variáveis ρi

Se for possível diminuir o valor de uma variável ρi que seja diferente de zero, mantendo-se

a admissibilidade da solução dual, estar-se-á a melhorar o valor da função objectivo de DC-

PLDAFR. O valor de ρi poderá ser diminuído sempre que SAiτξ≠0,∀1 ≤ τ ≤ ξ. Este

procedimento começa por verificar se isto acontece. Em caso afirmativo, diminui o valor da

variável dual, actualizando o valor de todas as slacks SAiτξ. Caso contrário, tenta aumentar-se o

valor da variável dual.

Se se aumentar o valor de uma variável dual ρi, vão aumentar-se todas as slacks SAiτξ. O

aumento destas slacks poderá fazer com que seja possível aumentar o valor de variáveis vjt que

estejam impedidas de crescer por alguma slack SAiτξ. No entanto as variáveis duais ρi entram na

função objectivo do problema dual DC-PLDAFR com o coeficiente –1, pelo que só deverão ser

aumentadas se a correspondente diminuição do valor da função objectivo for compensada pelo

aumento das variáveis vjt. Note-se ainda que só valerá a pena aumentar SAiτ

ξ se a slack SRiτξ for

maior do que zero. Caso contrário não se alteraria o valor de Siτξ. Esta situação ocorre sempre

que existe uma violação das condições de complementaridade descritas na secção anterior: (i, τ

, ξ )∈ IR+ com SRiτ

ξ ≠0 e SAiτξ =0. Aumentar o valor da variável dual ρi é uma maneira de

tentar evitar estas violações das condições de complementaridade. Sempre que se aumenta o

valor de ρi contrói-se o conjunto J+que irá corresponder a todas as variáveis vjt cujo valor

poderá aumentar. É então executado o procedimento dual ascendente para as variáveis vjt . No

caso de o aumento de ρi não ter sido totalmente aproveitado pelo aumento das variáveis vjt ,

diminui-se ρi, garantindo-se que a função objectivo dual nunca será piorada.

Considere-se ( ) ( ){ }tij

tj

tj cvIitiI ≥∈≤≤∃= e ,,| com ,: ** ξτξτξτ .

Procedimento de ajuste dual para as variáveis ρi

1. i ← 1;

2. { }ξτ

ξτρ ii SAmin

≤←∆ ;Se Δρi = 0 então ir para 3. Senão ir para 7.

Page 19: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

19

3. ( ){ }0 e 0 com ,,: ≠=∈∃=∆ + ξτ

ξτ

ξτ ξτρ iiRii SRSAIiSRmax .

4. Se 0≠∆ iρ então iii ρρρ ∆+← ; τξτρξτ

ξτ ≥∀∆+← ,,iii SASA . Senão ir para 8.

5. ( ) { }{ }tiItjJ tj ∀==+ ,:, * . Executar o Procedimento Dual Ascendente para as variáveis t

jv .

JJ =+ . Executar o Procedimento Dual Ascendente para as variáveis tjv

6. ξτ

τξτ

ρ ii SAmin

=∆ .

7. { }iii min ρρρ ,∆=∆ .Se 0≠∆ iρ então τξτρξτ

ξτ ≥∀∆−← ,,iii SASA ; iii ρρρ ∆−←

8. Se Ii #= então parar. Senão ;1+← ii ir para 2.

Apresenta-se em seguida a prova de que o algoritmo apresentado nunca poderá piorar o

valor da função objectivo de DC-PLDAFR.

Hipótese: O procedimento de ajuste dual para as variáveis ρi não piora o valor da função

objectivo dual de DC-PLDAFR.

Prova:

Ao diminuir o valor da variável ρi, mantendo-se a solução dual admissível, está a

melhorar-se o valor da função objectivo dual, pois a variável ρi contribui com o coeficiente –1

para a função objectivo dual.

Ao aumentar o valor de ρi , executa-se o procedimento de ajuste dual para as variáveis vjt .

Seja ∆vjt a variação ocorrida no valor da variável vj

t. Seja ∆1ρi o aumento relativo ao ponto 4,

∆2ρi a diminuição relativa ao ponto 7 e ∆ρi = ∆1ρi - ∆2ρi . Sejam SA’iτξ as slacks que se obtêm

após execução do procedimento de ajuste dual. Note-se que ∆1ρi ≥ ∆2ρi . Para verificar esta

desigualdade basta pensar na slack SA’iτξ que era igual a zero e que foi aumentada em ∆1ρi.

Durante a execução do procedimento dual ascendente para as variáveis vjt, esta slack só poderá

diminuir, pelo que ∆2ρi ≤ SA’iτξ ≤ ∆1ρi . Após a execução do procedimento, duas situações

podem ocorrer:

Page 20: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

20

1. Se existir alguma slack SA’iτξ que tenha retomado o seu valor inicial, isto significa que este

aumento foi totalmente aproveitado pelo aumento das variáveis duais vjt, e por isso garante-

se que ∑∑ ∆≥∆j

it

tjv ρ1 (não se piora o valor da função objectivo). Com efeito:

∑ ∑=

∆−∆+=j t

tjiii vSASA

ξ

τ

ξτ

ξτ ρ' ,logo se SA’iτ

ξ =SAiτξ então 0=∆−∆ ∑ ∑

=j t

tji v

ξ

τρ .

2. Se todas as slacks SA’iτξ são maiores do que eram antes de se alterar o valor de ρi, então

significa que todas elas são maiores do que zero, pelo que se irá diminuir o valor de ρi .

Considere-se a slack SA’iτξ, com t

ijtj cv ≥ , que após a execução do ponto 6 do procedimento

de ajuste dual ficou: ∑ ∑=

∆−∆+=j t

tjiii vSASA

ξ

τ

ξτ

ξτ ρ1' .

Como SA’iτξ > SAiτ

ξ, isto significa que:

01 ≥∆−∆ ∑ ∑=j t

tji v

ξ

τρ , ou seja, ∑ ∑

=∆≥∆

j t

tji v

ξ

τρ1 .

Se o valor de ρi se mantivesse poderia haver uma deterioração no valor da função objectivo

dual. No entanto, o valor desta variável irá ser diminuído em ∆2ρi calculado como em 7.

Isto significa que pelo menos uma slack irá tomar o valor zero, o que significa que todo o

aumento de ρi foi compensado pelo aumento nas variáveis duais vjt:

0' 21 =∆−∆−∆+= ∑ ∑=j t

tjiiii vSASA

ξ

τ

ξτ

ξτ ρρ .

Como 0≥ξτiSA significa que:

021 ≤∆−∆−∆ ∑ ∑=j t

tjii v

ξ

τρρ , ou seja, ∑ ∑

=∆≤∆−∆

j t

tjii v

ξ

τρρ 21 .

Na pior das hipóteses, diminui-se a variável ρi exactamente do mesmo valor que tinha

aumentado antes, e a função objectivo não terá piorado nem melhorado.

4.5. Procedimento de Ajuste dual-primal para as variáveis vjt

O procedimento de ajuste dual-primal para as variáveis vjt tem como objectivo detectar

violações das condições de complementaridade (18), diminuindo o valor de algumas variáveis

vjt, e permitindo o aumento de outras variáveis vj

t. Desta forma pretende-se forçar a satisfação

Page 21: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

21

das condições (18) e, simultaneamente, melhorar o valor da função objectivo dual. O

procedimento desenvolvido baseia-se no trabalho de Erlenkotter(1978) e Van Roy e Erlenkotter

(1982), com as obrigatórias alterações para o problema DC-PLDAFR.

Considere-se:

( ) ( ){ }tij

tj

tj cvIitiI ≥∈≤≤∃= e ,,| com ,: ** ξτξτξτ

{ }tij

tjt

tj cvIiiI >∈= ++ e :

( ) { } ( ){ }ξγττξγξγτ τ ≤≤<<≤≤∉==+ ttIiiIjJ jti ou ,,, e :, **

{ }tij

tj

tij

itj cvcc >=− :max

O conjunto +tjI indica, para cada cliente j, todos os serviços abertos no período t tais que a

variável vjt é maior do que o custo de afectação cij

t. Só existe violação das condições de

complementaridade (18) se existir pelo menos um par ( j , t ) tal que o cardinal de +tjI seja

maior do que um. Ao diminuir o valor de uma variável vjt tal que o cardinal de +t

jI é maior do

que um, significa que se vão aumentar pelo menos as slacks Siτξ,τ ≤ t ≤ ξ, para dois serviços

distintos. É isto que permite que o valor da função objectivo dual possa melhorar.

O conjunto +tiJ representa todas as variáveis vj

τ cujo valor poderá ser aumentado com o

aumento de uma slack Siτξ,τ ≤ t ≤ ξ. É a partir deste conjunto que se contrói J+, sendo depois

executado o procedimento dual ascendente para as variáveis vjt.

As variáveis vjt estão organizadas numa sequência de pares ( j, t ).

Procedimento de ajuste dual-primal para as variáveis vjt

1. Inicializar ( j , t ) ← ( j , t )1; q ←1; δ ← 0.

2. Se 1# ≤+tjI ir para 9.

3. Se 0/=

+Utijct

jvi

tiJ então ir para 9.

4. Para cada ( ) tij

tj cvti >≤≤ e ,,, ξτξτ fazer −−+= t

jtjii cvSS ξ

τξτ ; −= t

jtj cv .

5. Utijct

jvi

tiJJ

++ = . Executar o Procedimento Dual Ascendente para as variáveis tjv .

Page 22: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

22

( )tjJJ ,∪= ++ .Executar o Procedimento Dual Ascendente para as variáveis tjv .

JJ =+ . Executar o Procedimento Dual Ascendente para as variáveis tjv .

6. Se vjt tiver sido alterado, então ir para 2.

7. Executar o procedimento primal.

8. Se tiver havido melhorias no valor da função objectivo primal ou dual então δ ← 0. Senão

δ←δ+1.

9. Se o valor actual da função objectivo primal for igual ao da função objectivo dual, ou δ

=δmax ou TJq ×≠# então parar; senão q ← q + 1; ( j , t ) ← ( j , t )q, ir para 2.

4.6. Procedimento dual ascendente para uit

Ao aumentar o valor de uma variável uit, aumentam-se as slacks SRit

ξ, ξ ≥ t, mas

diminuem-se as slacks SAiτξ, τ ≤ ξ < t. Se se conseguir aumentar slacks Siτ

ξ que estejam a

impedir o aumento de variáveis vjt, diminuindo slacks Siτ

ξ que não limitam o crescimento de

nenhuma variável vjt, será possível melhorar o valor da função objectivo de DC-PLDAFR.

Só interessará aumentar o valor de uma variável uit se existir SRit

ξ = 0 e SAitξ ≠ 0. Esta

situação ocorre, por exemplo, quando ( i, t, ξ )∈ IA+ com SAit

ξ ≠0 e SRitξ =0. Neste caso

interessa aumentar SRitξ no máximo no valor de SAit

ξ pois a partir daqui qualquer aumento em

SRitξ não se vai repercutir em Sit

ξ . Por outro lado, a variável uit poderá ser aumentada, no

máximo, no valor mínimo de SAiτξ,∀ τ ≤ ξ < t, para que se conserve a admissibilidade da

solução dual. Aumentar o valor da variável uit pode ajudar a combater a violação da restrição de

complementaridade (22).

O procedimento começa por verificar se é possível aumentar o valor de uit, mantendo-se a

admissibilidade da solução dual. Caso seja possível, aumenta-se o valor da variável,

actualizam-se as slacks, verifica-se quais as variáveis vjt que poderão ser aumentadas (aquelas

que estão impedidas de crescer devido, unicamente, a slacks que irão aumentar. Estas variáveis

constituem o conjunto J+) e executa-se o procedimento dual ascendente para as variáveis vjt.

Considere-se que as variáveis uit estão organizadas numa sequência de pares (i,t).

Procedimento Dual Ascendente para uit

Page 23: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

23

1. Inicializar ( i , t ) ← ( i , t )1; q ←1.

2. ξ ← t ; ∆uit ← 0; δ ←0.

3. Se SRitξ = 0 e SAit

ξ ≠ 0, então ∆uit ← max { ∆ui

t , SAitξ } e δ ←1.

4. Se ξ = T ir para 5, senão ξ ←ξ +1, ir para 3.

5. Se δ = 0, ir para 7. Senão

∆←∆

<≤

γτ

γτit

ti

ti SAminuminu , , SRit

ξ ← SRitξ + ∆ui

t,∀ξ ≥ t.

SAiτξ ← SAiτ

ξ - ∆uit,∀ τ ≤ ξ < t e ui

t ← uit + ∆ui

t.

6. ( ) { }{ }tiItjJ tj ∀==+ ,:, * . Executar o Procedimento Dual Ascendente para as variáveis vj

t.

JJ =+ . Executar o Procedimento Dual Ascendente para as variáveis vjt.

7. Se q =#I ×T então parar. Senão q ← q + 1; ( i , t ) ← ( i , t )q, ir para 2.

4.7. Procedimento dual descendente para uit

Ao diminuir o valor de uma variável dual uit, diminuem-se as slacks SRit

ξ,ξ ≥ t, e

aumentam-se as slacks SAiτξ,τ ≤ ξ < t. Para que seja garantida a admissibilidade da solução

dual, só se poderá diminuir uit se SRit

ξ > 0, ∀ξ ≥ t. Também neste caso será possível melhorar a

função objectivo dual, desde que se consiga aumentar slacks Siτξ que estejam a impedir o

aumento de variáveis vjt , diminuindo slacks Siτ

ξ que não limitam o crescimento de nenhuma

variável vjt. Verifica-se quais as variáveis vj

t que podem aumentar o seu valor, e executa-se o

procedimento dual ascendente para as variáveis vjt.

Procedimento Dual Descendente para uit

1. Inicializar ( i , t ) ← ( i , t )1; q ←1.

2. Se uit =0 ir para 6; Caso contrário, ∆ui

t ← 0; δ ←0.

3. Se SRitξ > 0, ∀ξ ≥ t, então { } ξ

ξitt

ti SRminu

≥←∆ e δ ←1.

4. Se δ = 0 ir para 6. Senão ∆uit ← min { ∆ui

t , uit }; SRit

ξ ← SRitξ - ∆ui

t,∀ξ ≥ t.

SAiτξ ← SAiτ

ξ + ∆uit,∀ τ ≤ ξ < t e ui

t ← uit - ∆ui

t.

5. ( ) { }{ }tiItjJ tj ∀==+ ,:, * . Executar o Procedimento Dual Ascendente para vj

t.

JJ =+ . Executar o Procedimento Dual Ascendente para vjt.

6. Se q =#I ×T então parar. Senão q ← q + 1; ( i , t ) ← ( i , t )q, ir para 2.

Page 24: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

24

4.8. Procedimento de ajuste dual para as variáveis πit

Ao aumentar o valor das variáveis πit aumenta-se o valor das slacks Siτ

ξ,τ ≤ t ≤ ξ. O

aumento destas slacks poderá permitir que variáveis vjt aumentem o seu valor. Aliás, só

compensa aumentar πit se aquilo que se perde na função objectivo (porque esta variável

contribui com o coeficiente –1) for compensado pelo que se ganha com o aumento de variáveis

vjt .

Se se diminuir o valor das variáveis πit, mantendo-se a admissibilidade da solução dual,

melhora-se automaticamente o valor da função objectivo de DC-PLDAFR.

O procedimento que a seguir se apresenta tenta diminuir ou aumentar o valor das variáveis

duais πit , mantendo a admissibilidade da solução dual e garantindo que o valor da função

objectivo dual não piora. Omite-se a prova, por ser semelhante à apresentada para o

procedimento de ajuste dual para as variáveis ρi .

Se todas as slacks Siτξ,τ ≤ t ≤ ξ forem maiores do que zero, significa que não vale a pena

aumentar o valor da variável πit . Se esta variável for maior do que zero, significa que se pode

descer o seu valor, actualizando-se as slacks Siτξ,τ ≤ t ≤ ξ . Se existir alguma slack igual a zero,

aumenta-se o valor da variável πit em M (um valor positivo e maior do que os custos

considerados no problema). Verifica-se quais as variáveis duais que poderão aumentar o seu

valor e executa-se o procedimento dual ascendente para as variáveis vjt. Se o aumento de πi

t não

for aproveitado na totalidade pelo aumento das variáveis vjt, significa que todas as slacks Siτ

ξ,τ

≤ t ≤ ξ serão maiores do que zero, procedendo-se de seguida à diminuição de πit.

Procedimento de ajuste dual para as variáveis πit

1. Inicializar ( i , t ) ← ( i , t )1; q ←1.

2. ξτ

ξτπ it

ti Smin

≤≤=∆ . Se ∆πi

t ≠0, então ir para 6. Senão ∆πi

t ← M.

3. Siτξ ← Siτ

ξ + ∆πit,∀ τ ≤ t ≤ ξ ; πi

t =πit +∆πi

t .

4. ( ) { }{ }tiItjJ tj ∀==+ ,:, * . Executar o Procedimento Dual Ascendente para as variáveis vj

t .

JJ =+ . Executar o Procedimento Dual Ascendente para as variáveis vjt .

5. ξτ

ξτπ it

ti Smin

≤≤=∆ .

6. ∆πit =min {∆πi

t , πit }. Se ∆πi

t ≠ 0 então Siτξ ← Siτ

ξ - ∆πit,∀ τ ≤ t ≤ ξ . πi

t =πit -∆πi

t .

7. Se q =#I ×T então parar. Senão q ← q + 1; ( i , t ) ← ( i , t )q, ir para 2.

Page 25: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

25

4.9. Exemplos de Aplicação

Exemplo 1

Considere-se o seguinte problema, com três períodos temporais, em que não se considera a

hipótese de reabertura no período 1:

Custos de afectação:

t =1

i j 1 2 3 4

1 4 5 3 8

2 3 0 4 5

3 4 2 0 2

t =2

i j 1 2 3 4

1 6 6 4 9

2 5 1 5 5

3 5 4 0 3

t =3

i j 1 2 3 4

1 7 7 6 9

2 6 4 6 6

3 5 5 2 4

Custos fixos de abertura e reabertura:

i FAi11 FAi1

2 FAi13 FAi2

2 FRi22 FAi2

3 FRi23 FAi3

3 FRi33

1 4 8 5 10 9 10 9 5 5

2 7 6 5 10 9 10 9 6 5

3 5 10 20 6 6 10 8 4 4

Após o Procedimento Dual Ascendente para vjt ficamos com os seguintes valores para

as variáveis duais:

t j 1 2 3 4

1 4 2 3 4

2 6 2 4 3

3 6 4 4 4

Page 26: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

26

E para as slacks:

i SAi11 SAi1

2 SAi13 SAi2

2 SRi22 SAi2

3 SRi23 SAi3

3 SRi33

1 4 8 5 10 9 10 9 5 5

2 4 1 0 8 7 8 7 6 5

3 0 0 7 1 1 2 0 1 1

A função objectivo do dual tem o valor 46.

I* = {(3,1,1),(3,1,2),(2,1,3),(3,2,3)}

I1*={2,3}; I2

*={2,3}; I3*={2,3}

I1+={3}; I2

+={2,3}; I3+={2,3}

O Procedimento 1 dará origem à solução:

IA+={(3,1,2),(2,1,3)}; IR

+={(3,3,3)} que viola condições de complementaridade pois SR333≠0. O

custo total desta solução é de 48.

O Procedimento 2 dará origem à solução:

IA+={(3,1,1),(2,1,3)}; IR

+={(3,2,3)}. O custo total desta solução é de 47. Existe violação das

condições de complementaridade porque v12>c21

2 e v12>c31

2.

O Procedimento de ajuste dual para as variáveis ρi não altera a solução dual, pelo que ρi = 0,∀i.

J22+={(2,2),(2,3)}; J3

2+={(3,2),(3,3),(4,2),(4,3)}.

A solução dual resultante do procedimento de ajuste dual-primal será:

t j 1 2 3 4

1 4 2 3 4

2 5 3 5 3

3 6 4 4 4

As slacks não sofrem alterações.

A função objectivo do dual fica com o valor 47, o que significa que a melhor solução

calculada anteriormente é a solução óptima.

Page 27: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

27

Exemplo 2

Considere-se um exemplo com os mesmos custos de afectação do exemplo 1, e com os

seguintes custos fixos de abertura e reabertura:

i SAi11 SAi1

2 SAi13 SAi2

2 SRi22 SAi2

3 SRi23 SAi3

3 SRi33

1 4 8 5 10 9 10 9 5 5

2 7 7 5 10 9 10 7 6 5

3 10 2 20 6 6 10 3 6 5

Após o Procedimento Dual Ascendente para vjt ficamos com os seguintes valores para

as variáveis duais e para as slacks:

t j 1 2 3 4

1 4 2 2 2

2 5 3 0 3

3 6 4 4 4

i SAi11 SAi1

2 SAi13 SAi2

2 SRi22 SAi2

3 SRi23 SAi3

3 SRi33

1 4 8 5 10 9 10 9 5 5

2 4 2 0 8 7 8 5 6 5

3 8 0 15 6 6 7 0 3 2

A esta solução dual corresponde o valor da função objectivo igual a 39.

I* = {(3,1,2),(2,1,3),(3,2,3)}

I1*={2,3}; I2

*={2,3}; I3*={2,3}

I1+={3}; I2

+={2,3}; I3+={2,3}

O Procedimento 1 dará origem à solução:

IA+={(3,1,2),(2,1,3)}; IR

+={(3,3,3)} que viola condições de complementaridade pois SR333≠0. O

custo total desta solução é de 41.

O Procedimento 2 dará origem à solução:

IA+={(3,1,1),(2,1,3)}; IR

+={(3,2,3)}. O custo total desta solução é de 47. A solução viola

condições de complementaridade pois SA311≠0.

O Procedimento de ajuste dual para as variáveis ρi não altera a solução dual, pelo que ρi = 0,∀i.

O Procedimento de Ajuste Dual-Primal para as variáveis vjt não altera a solução dual.

Como SR323 = 0 e SA32

3 ≠ 0, faz-se ∆u32 = 7 (∆u3

2 = min{ SA323, SA31

1}).

Page 28: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

28

Alterando-se as slacks respectivas e executando o procedimento de ajuste dual, ficamos com a

solução dual:

t j 1 2 3 4

1 4 2 2 2

2 5 3 0 3

3 6 4 6 4

i SAi11 SAi1

2 SAi13 SAi2

2 SRi22 SAi2

3 SRi23 SAi3

3 SRi33

1 4 8 5 10 9 10 9 5 5

2 4 2 0 8 7 8 5 6 5

3 1 0 13 6 13 5 5 1 0

O valor da função objectivo dual é 41, o que mostra que já tínhamos calculado a solução

óptima.

Exemplo 3

Considere-se o seguinte problema, com três períodos temporais, em que não se

considera a hipótese de reabertura no período 1:

Custos de afectação:

t =1

i j 1 2 3 4

1 7 2 4 0

2 5 1 3 4

3 3 0 5 9

t =2

i j 1 2 3 4

1 8 3 4 2

2 6 1 8 5

3 4 5 1 6

t =3

i j 1 2 3 4

1 9 6 5 3

2 5 8 3 6

3 5 4 4 10

Page 29: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

29

Custos fixos de abertura e reabertura:

i FAi11 FAi1

2 FAi13 FAi2

2 FRi22 FAi2

3 FRi23 FAi3

3 FRi33

1 3 4 10 4 10 5 10 6 20

2 4 6 20 3 10 5 10 6 20

3 3 4 16 2 10 5 10 6 20

Após o Procedimento Dual Ascendente para vjt ficamos com os seguintes valores para

as variáveis duais:

t j 1 2 3 4

1 5 1 4 3

2 5 3 1 3

3 8 5 3 6

E para as slacks:

i SAi11 SAi1

2 SAi13 SAi2

2 SRi22 SAi2

3 SRi23 SAi3

3 SRi33

1 0 0 3 3 9 1 6 3 17

2 3 3 14 1 8 0 5 3 17

3 0 0 8 1 9 0 5 2 16

A função objectivo do dual tem o valor 47.

I* = {(1,1,1),(1,1,2),(3,1,1),(3,1,2),(2,2,3),(3,2,3)}

I1*={1,3}; I2

*={1,2,3}; I3*={2,3}

I1+={1,3}; I2

+={3,1}; I3+={2,3}

O Procedimento 1 dará origem à solução:

IA+={(1,1,2),(2,2,3),(3,1,2}; IR

+={(3,3,3)} que viola condições de complementaridade pois

SR333 ≠ 0. O custo total desta solução é de 66.

O Procedimento 2 dará origem à solução:

IA+={(1,1,2),(2,2,3),(3,1,1)}; IR

+={(3,2,3)}. O custo total desta solução é de 55. Como SA323 = 0

e SR323≠0, teremos de alterar o valor de ρ3, que irá passar a ser igual a 5.

Alterando as slacks e voltando a executar o Procedimento Dual Ascendente, ficamos com:

Page 30: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

30

t j 1 2 3 4

1 7 2 4 3

2 6 3 2 3

3 8 7 3 6

i SAi11 SAi1

2 SAi13 SAi2

2 SRi22 SAi2

3 SRi23 SAi3

3 SRi33

1 0 0 2 3 9 0 5 2 16

2 0 0 11 1 8 0 5 3 17

3 2 0 6 4 7 1 1 5 14

Esta solução tem como valor da função objectivo 49.

I* = {(1,1,1),(2,1,1),(1,1,2),(2,1,2),(3,1,2),(1,2,3),(2,2,3)}

I1*={1,2,3}; I2

*={1,2,3}; I3*={1,2}

I1+={1}; I2

+={1,3}; I3+={1,2}

O Procedimento 1 dará origem à solução:

IA+={(1,1,2),(2,2,3),(3,1,2)}; IR

+={(1,3,3)}, que viola condições de complementaridade pois

SR133 ≠ 0. O custo total desta solução é de 65.

O Procedimento 2 dará origem à solução:

IA+={(1,1,1),(2,2,3),(3,1,2)}; IR

+={(1,2,3)}. O custo total desta solução é de 54.

Como SA123 = 0 e SR12

3 ≠ 0, teremos de alterar o valor de ρ1, que irá passar a ser igual a 5. Após

a execução do procedimento dual ascendente, o seu valor irá ser diminuído para 3. A solução

dual obtida é:

t j 1 2 3 4

1 7 2 4 4

2 6 3 2 5

3 8 8 3 6

i SAi11 SAi1

2 SAi13 SAi2

2 SRi22 SAi2

3 SRi23 SAi3

3 SRi33

1 2 0 1 4 7 0 2 4 15

2 0 0 11 1 8 0 5 3 17

3 2 0 5 4 7 0 0 4 13

Esta solução tem como valor da função objectivo 50.

I* = {(2,1,1),(1,1,2),(2,1,2),(3,1,2),(1,2,3),(2,2,3),(3,2,3)}

Page 31: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

31

I1*={1,2,3}; I2

*={1,2,3}; I3*={1,2,3}

I1+={1}; I2

+={2,3}; I3+={2}

O Procedimento 1 dará origem à solução:

IA+={(1,1,2),(2,2,3),(3,1,2)}. O custo total desta solução é de 50. Esta é a solução óptima para o

problema. Como se pode verificar o valor da função objectivo dual é igual ao valor da função

objectivo primal, logo não são violadas quaisquer condições de complementaridade.

5. Cálculo da solução óptima através de pesquisa em

árvore Sempre que a heurística primal-dual não consegue encontrar a solução óptima de

PLDAFR, pode iniciar-se um processo de pesquisa em árvore. Este processo poderá ser

iniciado com a solução encontrada pela heurística, escolhendo as variáveis a fixar através das

condições de complementaridade que estiverem a ser violadas. Para se fixarem as variáveis a

zero ou a um podem utilizar-se os mecanismos descritos em Erlenkotter, 1978.

As condições de complementaridade que poderão ser violadas pela solução primal

calculada através da heurística são:

§ aiτξ=1 e SAiτ

ξ ≠ 0. Neste caso escolher a variável riτξ para fixar a zero e/ou a um.

§ riτξ=1 e SRiτ

ξ ≠ 0. Neste caso escolher a variável aiτξ para fixar a zero e/ou a um.

§ uit ≠0 e rit

ξ=0,∀ξ ≥ t. Escolher a variável ritξ tal que SRiτ

ξ = 0 para fixar igual a zero

e/ou a um.

§ πit ≠ 0 e ait

ξ = ritξ=0,∀τ ≤ t ≤ ξ. Escolher a variável ait

ξ ou ritξ tal que Siτ

ξ = 0 para fixar

igual a zero e/ou a um.

§ vjt > cij

t, para mais do que um serviço i ∈ I+. Neste caso escolher a variável aiτξ ∈ IA

+

ou riτξ ∈ IR

+ ,τ ≤ t ≤ ξ, para fixar igual a zero e/ou a um.

Page 32: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

32

Fixam-se variáveis a zero e a um, utilizando a heurística primal-dual em cada nó da árvore

para encontrar soluções primais admissíveis. Só se poderá retroceder quando a heurística

encontrar a solução óptima de um nó da árvore.

6. Desenvolvimentos Futuros Vamos efectuar testes computacionais que nos permitam tirar conclusões

fundamentadas sobre o desempenho desta heurística: o número de vezes que consegue atingir a

solução óptima e, no caso de não a atingir, qual a distância a que fica do melhor limite inferior

conhecido; quais as dimensões do problema (quer em relação ao nº de clientes e serviços, quer

em relação ao n.º de períodos temporais considerados) com que consegue lidar.

Pretendemos também comparar o desempenho do algoritmo de pesquisa em árvore

descrito com o desempenho de um general solver.

Se a heurística e o algoritmo de pesquisa em árvore tiverem, como se espera, um bom

desempenho pode também pensar-se em generalizar o PLDAFR considerando capacidades

máximas associadas aos serviços.

7. Bibliografia Antunes, A. e D. Peeters (2001), “On solving complex multi-period location models using

simulated annealing”, European Journal of Operational Research,130, pp 190-201

Cornuejols, G., G. Nemhauser e L. Wolsey (1990), “The Uncapacitated Facility Location

Problem”, in Discrete Location Theory, Mirchandani e Francis Edts., Wiley Interscience, pp

119-172

Erlenkotter, D. (1978), “A Dual-Based Procedure for Uncapacitated Facility Location”,

Operations Research, 26(6), pp 992-1009

Erlenkotter, D. (1981), “A Comparative Study of Approaches to Dynamic Location Problems”,

European Journal of Operational Research, 6, pp 133-143

Fong, C. O. e V. Srinivasan (1981a), “The Multiregion Dynamic Capacity Expansion Problem -

Part I”, Operations Research, 29 (4), pp 787-799

Page 33: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

33

Fong, C. O. e V. Srinivasan (1981b), “The Multiregion Dynamic Capacity Expansion Problem

- Part II”,Operations Research, 29 (4), pp 800-816

Galvão, R. D. e E. del R. Santibañez-Gonzalez (1992), “A Lagrangean Heuristic for the

P-Median Dynamic Location Problem”,European Journal of Operational Research, 58, pp 250-

262

Hinojosa, Y., J. Puerto e F.R. Fernández (2000), “A Multiperiod two-echelon multicommodity

capacitated plant location problem”, European Journal of Operational Research, 123, pp 271-

291

Krarup, J. e P. Pruzan (1983), “The Simple Plant Location Problem: Survey and Synthesis”,

European Journal of Operational Research, 12, pp 36-81

Laporte, G. e P. Dejax (1989), “Dynamic Location-Routing Problems”, Journal of the

Operational Research Society, 40 (5), pp 471-482

Melachrinoudis, E., H. Min, X. Wu (1995), “A Multiobjective Model for the Dynamic Location

of Landfills”, Location Science, 3(3), pp 143-166

Min, H. (1988), “The Dynamic Expansion and Relocation of Capacitated Public Facilities: a

Multi-Objective Approach”, Computers and Operations Research, 15(3), pp 243-252

Saldanha da Gama, F. e M. E. Captivo (1996), “A Note on Dual Based Procedure for Dynamic

Facility Location”,Working Paper 11/96 - Centro de Investigação Operacional - Faculdade de

Ciências da Universidade de Lisboa

Shulman, A. (1991), “An Algorithm for Solving Dynamic Capacitated Plant Location Problems

with Discrete Expansion Sizes”, Operations Research, 39(3), pp 423-436

Sweeney, D. J. e R. Tatham (1976), “An Improved Long-Run Model for Multiple Warehouse

Location”, Management Science, 22 (7), pp 748-758

Page 34: Instituto de Engenharia de Sistemas e Computadores de ... · Na maior parte dos problemas de localização dinâmica definidos na ... mecanismo de pesquisa em árvore que poderá

34

Van Roy, T. e D. Erlenkotter (1982), “A Dual-Based Procedure for Dynamic Facility

Location”, Management Science, 28 (10), pp 1091-1105

Wesolowsky, G. O. (1973), “Dynamic Facility Location”, Management Science,19(11), pp

1241-1248

Wesolowsky, G. e W. Truscott (1975), “The Multiperiod Location-Allocation Problem with

Relocation of Facilities”,Management Science, 22 (1), pp 57-65