po 201 introduÇÃo a pesquisa operacionalrodrigo/disciplinas/po201/slides.pdf · análise de...

153
PO 201 INTRODUÇÃO A PESQUISA OPERACIONAL Professor: Rodrigo A. Scarpel [email protected] www.ief.ita.br/~rodrigo

Upload: others

Post on 19-Nov-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

PO – 201

INTRODUÇÃO A

PESQUISA OPERACIONAL

Professor: Rodrigo A. Scarpel

[email protected]

www.ief.ita.br/~rodrigo

“Pesquisa Operacional é o uso do método científico com o objetivo

de prover departamentos executivos de elementos quantitativos

para a tomada de decisões” Kittel ( 1947)

“A Pesquisa Operacional é a aplicação do método científico, por

equipes multidisciplinares, a problemas envolvendo o controle de

sistemas organizados de forma a fornecer soluções que melhor

interessam a determinada organização” Ackoff (1968)

Conceitos-chave:

a) uso ou aplicação para resolver problemas reais

b) apoio a tomada de decisões

c) multidisciplinariedade

Pesquisa Operacional

2

Durante a Segunda Guerra Mundial, os líderes militares solicitaram que

cientistas estudassem problemas como posicionamento de radares,

armazenamento de munições e transporte de tropa, etc...

A aplicação do método científico e de ferramentas matemáticas em

operações militares passou a ser chamado de Pesquisa Operacional.

Pesquisa Operacional

A Pesquisa Operacional é uma ciência aplicada voltada para a

resolução de problemas reais, tendo como foco a tomada de

decisões.

3

Modelagem e Simulação:

Conceptualization: decisions

about the variables that need to

be included in the model, and the

scope of the problem and model

to be addresses.

Modeling: build the quantitative

model by defining causal

relationships between the variables.

OBS: The research cycle can arguably

begin and end at any of the phases

in the cycle (according to the

selected research type)

Definição do problema:

1. Quais são as alternativas para a decisão?

2. Sob quais restrições a decisão é tomada?

3. Qual seria um critério objetivo para avaliar as

alternativas?

Construção do modelo:

Resolução do modelo:

1. Utilização de algoritmos ou métodos de

resolução

2. Análise de sensibilidade

Validação do modelo:

1. Formulação está adequada?

2. Resolve o problema?

Implementação da solução

Construção do modelo:

Relacionamento

funcional f(•)

Valores das variáveis

independentes

Técnicas de Pesquisa

Operacional

Conhecido,

bem definido

Desconhecido,

mal definido

Conhecido,

bem definido

Conhecido ou sob o

controle do tomador

de decisão

Conhecido ou sob o

controle do tomador

de decisão

Desconhecido ou

incerto

Programação linear,

não linear, inteira,

Redes, Combinatória,

entre outras

Prescritivos

(determinísticos)

Preditivos

Descritivos

(estocásticos)

Análise de regressão,

Análise de séries

temporais, entre outras

Simulação, teoria de

filas, otimização

robusta, entre outros

M

O

D

E

L

O

S

Categorias de modelos:

5

Problema 1: Mix de Produção

Giapetto Woodcarving, Inc fabrica dois tipos de brinquedos de madeira:

soldados e trens. Um soldado é vendido por $27 e usa $10 de matéria-prima.

Cada soldado fabricado incrementa os custos variáveis de trabalho e

"overhead" por $14. Um trem é vendido por $21 e usa $9 de matéria-prima.

Cada trem produzido incrementa os custos variáveis de trabalho e "overhead"

por $10. A fabricação de soldados de madeira e de trens requer dois tipos de

trabalho qualificado: carpintaria e acabamento. Um soldado requer 2 horas de

trabalho de acabamento e 1 hora de trabalho de carpintaria. Um trem requer 1

hora de trabalho de acabamento e 1 hora de trabalho de carpintaria. A cada

semana, Giapetto pode obter toda a matéria prima necessária, mas dispõe de

somente 100 horas de trabalho de acabamento e 80 horas de trabalho de

carpintaria. A demanda para os trens é ilimitada, mas no máximo 40 soldados

são vendidos a cada semana. A Giapetto deseja determinar seu mix de

produção de forma a maximizar seu lucro semanal (faturamento menos custos). 6

Problema 2: Problema da Mistura

Um fabricante de bebidas pretende lançar um novo refrigerante que é obtido

misturando refrigerante sabor laranja e suco de laranja. Análises executadas

pelo fabricante mostraram que cada ml de refrigerante sabor laranja tem 5 mg

de açúcar e 1 mg de vitamina C e que cada 1 ml de suco de laranja tem 2 mg

de açúcar e 3 mg de vitamina C. O custo de produção de 100 ml de

refrigerante sabor laranja é de R$0,20 e de 100 ml de suco de laranja é de

R$0,50. O departamento de marketing da empresa decidiu que o novo

refrigerante será comercializado em embalagens de 300 ml e que cada

unidade do produto deve conter no mínimo 600 mg de vitamina C e no

máximo 1.200 mg de açúcar. O fabricante deseja determinar a composição do

novo refrigerante de forma a minimizar o custo para produzir o produto.

7

6

3

3

2101,2

7,0xE

r

EwtRigidez

Ewt

radeSensitivid

Problema 3: Projeto do anel de um dinamômetro

Uma empresa geradora de energia possui 3 usinas termoelétricas (A, B

e C) e abastece 3 cidades (1, 2 e 3). O custo estimado de levar energia

de cada uma das usinas para cada uma das cidades (em R$/kWh),

assim como a demanda de cada uma das cidades e a capacidade de

geração de cada usina é dada na tabela abaixo:

Formule o problema que determine a quantidade de energia que será

enviada de cada usina para cada cidade ao mínimo custo.

ORIGENS DESTINOS CAPACIDADE

(kWh) CIDADE 1 CIDADE 2 CIDADE 3

PLANTA A 24 18 27 700

PLANTA B 16 11 7 340

PLANTA C 30 10 4 400

DEMANDA (kWh) 650 450 340

Problema 4: Distribuição de energia elétrica

Uma empresa de transporte urbano de passageiros quer determinar a

quantidade mínima de ônibus necessários para atender sua programação.

Dados:

1. Devido à manutenção diária obrigatória, cada ônibus só pode circular

apenas 8 horas sucessivas por dia

2. Necessidade:

10

Problema 5: Dimensionamento de recursos

Uma empresa fabrica rolos de papel com 20 pés de comprimento (diâmetro

padrão). Em uma certa semana recebeu 3 pedidos:

Como fazer os cortes de forma a minimizar a perda? 11

Problema 6: Corte e empacotamento

Programação da disciplina:

Semana Conteúdo

1 Apresentação da disciplina. Introdução à Programação Linear (PL). Resolução gráfica de problemas de PL.

2 Resolução de Problemas de PL pelo método simplex. A matemática do método simplex.

3 Feriado

4 Análise de Sensibilidade. Problemas com soluções iniciais (Métodos das 2 fases e o do Big-M). Degeneração,

ciclagem e convergência do método simplex.

5 O problema dual. Formulação e Interpretação econômica do problema dual. Teoremas da dualidade.

6 Prova 1 (26/3)

7 Algoritmos simplex adicionais. Análise pós-otimização.

8 Otimização multiobjetivo. Programação por metas.

9 (1) O Problema do transporte.

10 (2) O problema do transbordo e o problema da atribuição.

11 (3) Programação Linear Inteira (PLI). Métodos de resolução de PLI: Branch and Bound (B&B) e planos de corte.

12 (4) Prova 2 (14/5).

13 (5) Formulação e resolução de problemas de otimização combinatória.

14 (6) Otimização em Redes (formulação e resolução utilizando métodos exatos e heurísticos): os problemas do caixeiro

viajante e do caminho mínimo.

15 (7) Otimização em Redes (formulação e resolução utilizando métodos exatos e heurísticos): os problemas do caminho

crítico, do fluxo máximo e da árvore geradora mínima.

16 (8) Fechamento do curso.

Avaliação:

• 3 provas (1o Bimestre, 2o Bimestre e Exame Obrigatório)

13

Bibliografia:

Taha, H. A., Pesquisa Operacional, 8a edição. Pearson

(Prentice-Hall), 2008.

Taha, H. A. Operations Research – An Introduction,

8th.edition. Pearson (Prentice Hall), 2007.

Winston, W.L., Operations Research, 4th.edition. Brooks/Cole

(Thomson), 2004.

Wagner, H.M., Pesquisa Operacional, 2a edição. Prentice-Hall

do Brasil, 1986.

Hillier, F.S. and Lieberman, G.J., Introduction to Operations

Research, McGraw Hill, 2000.

PO – 201

PROGRAMAÇÃO

LINEAR

Professor: Rodrigo A. Scarpel

[email protected]

www.ief.ita.br/~rodrigo 14

Problemas de programação linear (PPL):

Z: função objetivo

ai: coeficientes da função objetivo, i = 1,…,n

xi: variáveis de decisão, i = 1,…,n

bji: coeficientes tecnológicos, i = 1,…,n e j = 1,…,k

cj: constantes do lado direito (right-hand-side), j = 1,…,k

0 x, .... ,x ,x

...b

...b

...b :a

... )/(

n21

221k1

22222121

11212111

2211

knknk

nn

nn

nn

cxbxbx

cxbxbx

cxbxbxSujeito

xaxaxaZMinimizarMaximizar

15

...

...

...

...

Hipóteses em Programação Linear:

Proporcionalidade: todos os retornos / custos e recursos

utilizados variam proporcionalmente a variável de decisão (não há

economia de escala);

Aditividade: o efeito total de quaisquer duas variáveis é a soma

dos efeitos individuais (não há sinergia ou efeito de substituição).

Exemplo: o custo total é a soma dos custos individuais;

Divisibilidade: as variáveis de decisão podem assumir valores

fracionados. Se essas variáveis só puderem assimir valores

inteiros o problema é de programação inteira (PI);

Certeza (Determinístico): todos os parâmetros do modelo são

constantes conhecidas (não são variáveis aleatórias);

16

Problema 1: Mix de Produção

Giapetto Woodcarving, Inc fabrica dois tipos de brinquedos de madeira:

soldados e trens. Um soldado é vendido por $27 e usa $10 de matéria-prima.

Cada soldado fabricado incrementa os custos variáveis de trabalho e

"overhead" por $14. Um trem é vendido por $21 e usa $9 de matéria-prima.

Cada trem produzido incrementa os custos variáveis de trabalho e "overhead"

por $10. A fabricação de soldados de madeira e de trens requer dois tipos de

trabalho qualificado: carpintaria e acabamento. Um soldado requer 2 horas de

trabalho de acabamento e 1 hora de trabalho de carpintaria. Um trem requer 1

hora de trabalho de acabamento e 1 hora de trabalho de carpintaria. A cada

semana, Giapetto pode obter toda a matéria prima necessária, mas dispõe de

somente 100 horas de trabalho de acabamento e 80 horas de trabalho de

carpintaria. A demanda para os trens é ilimitada, mas no máximo 40 soldados

são vendidos a cada semana. A Giapetto deseja determinar seu mix de

produção de forma a maximizar seu lucro semanal (faturamento menos custos). 17

Formas de Representação:

Formato padão: todas as restrições são igualdades e todas as

variáveis são não-negativas.

Formato canônico: (problema de minimização) todas as

variáveis são não-negativas e todas as restrições são do tipo .

18

Método Simplex – Formalização (Problema de Maximização):

Inicialização:

Encontrar uma solução básica viável ( B).

Passo principal:

Seja zk - ck = Mínimo {zj - cj: j R}. Se zk - ck 0 pare - a solução é ótima.

Caso contrário examine yk.

Se yk 0 pare – a solução ótima é ilimitada.

Se yk > 0 determine o índice r como:

Atualize o tableau pivotando em yik (atualize as variáveis básicas e as não

básicas com xk que entra na base e xi que sai).

Repita o passo principal

0:1

ikik

i

miy

y

bMinimor

19

B R

Em cada iteração: xB = B-1.b

w = cBT.B-1

z = w.b = cB.B-1.b

zj - cj = w.aj - cj

yj = B-1. aj

A matemática do método simplex:

1000aa

010aa

001aa

A

m,nm,1

2,n2,1

1,n1,1

m

1

b

b

b ,

m

1

n

1

f

f

x

x

x

,

0

0

c

c

cn

1

,

20

...

...

...

...

...

...

...

...

...

...

...

...

...

...

Problema 2: Problema da Mistura

Um fabricante de bebidas pretende lançar um novo refrigerante que é obtido

misturando refrigerante sabor laranja e suco de laranja. Análises executadas

pelo fabricante mostraram que cada ml de refrigerante sabor laranja tem 5 mg

de açúcar e 1 mg de vitamina C e que cada 1 ml de suco de laranja tem 2 mg

de açúcar e 3 mg de vitamina C. O custo de produção de 100 ml de

refrigerante sabor laranja é de R$0,20 e de 100 ml de suco de laranja é de

R$0,50. O departamento de marketing da empresa decidiu que o novo

refrigerante será comercializado em embalagens de 300 ml e que cada

unidade do produto deve conter no mínimo 600 mg de vitamina C e no

máximo 1.200 mg de açúcar. O fabricante deseja determinar a composição do

novo refrigerante de forma a minimizar o custo para produzir o produto.

21

Inicialização:

Encontrar uma solução básica viável ( B).

Alternativas (se a origem não for uma solução viável): Método das 2 fases / Big-M

Passo principal:

Seja zk - ck = Máximo {zj - cj: j R}. Se zk - ck 0 pare - a solução é ótima.

Caso contrário examine yk.

Se yk 0 pare – a solução ótima é ilimitada.

Se yk > 0 determine o índice r como:

Atualize o tableau pivotando em yik (atualize as variáveis básicas e as não

básicas com xk que entra na base e xi que sai).

Repita o passo principal

0:1

ikik

i

miy

y

bMinimor

Método Simplex – Formalização (Problema de Minimização):

22

PO –201

DEGENERAÇÃO,

CICLAGEM E

CONVERGÊNCIA DO

SIMPLEX

Professor: Rodrigo A. Scarpel

[email protected]

www.ief.ita.br/~rodrigo 23

Degeneração em programação linear:

Definição: Um PPL é degenerado se há pelo menos uma solução

básica viável com uma variável básica com valor zero (=0). Se há,

essa solução é uma solução básica viável degenerada.

A degeneração ocorre quando há empate na saída (regra da razão).

Consequências da degeneração:

Se um PPL é degenerado o simplex pode apresentar

inconsistências.

Se um PPL tem muitas soluções básicas viáveis

degeneradas o simplex costuma ser ineficiente.

Se um PPL é degenerado pode haver ciclismo, o que pode

interferir na convergência do algoritmo.

24

Exemplo de PPL degenerado, inconsistente e ineficiente:

FO: Max Z = 5*x1 + 3*x2

S.A. 4*x1 + 2*x2 12

4*x1 + 1*x2 10

1*x1 + 1*x2 4

x1, x2 0

x1

x2

x1 x2 x3 x4 x5 RHS

Z -5 -3 0 0 0 0

x3 4 2 1 0 0 12

x4 4 1 0 1 0 10

x5 1 1 0 0 1 4

Z 0 -7/4 0 5/4 0 25/2

x3 0 1 1 -1 0 2

x1 1 1/4 0 1/4 0 5/2

x5 0 3/4 0 1/4 1 3/2

Z 0 0 7/4 -1/2 0 16

x2 0 1 1 -1 0 2

x1 1 0 -1/4 1/2 0 2

x5 0 0 -3/4 1/2 1 0

Z 0 0 1 0 1 16

x2 0 1 -1/2 0 2 2

x1 1 0 1/2 0 -1 2

x4 0 0 -3/2 1 2 0

25

Exemplo de ciclagem:

FO: Min -¾ x1+20x2 –½ x3+6x4

S.A. ¼ x1 – 8x2 – x3 + 9x4 0

½ x1 –12x2 –½ x3 +7x4 0

x3 1

x1, x2 , x3 , x4 0

x1 x2 x3 x4 x5 x6 x7 RHS

Z 3/4 -20 1/2 -6 0 0 0 0

x5 1/4 -8 -1 9 1 0 0 0

x6 1/2 -12 -1/2 3 0 1 0 0

x7 0 0 1 0 0 0 1 1

Z 0 4 7/2 -33 -3 0 0 0

x1 1 -32 -4 36 4 0 0 0

x6 0 4 3/2 -15 -2 1 0 0

x7 0 0 1 0 0 0 1 1

Z 0 0 2 -18 -1 -1 0 0

x1 1 0 8 -84 -12 8 0 0

x2 0 1 3/8 -15/4 -1/2 1/4 0 0

x7 0 0 1 0 0 0 1 1

Z -1/4 0 0 3 2 -3 0 0

x3 1/8 0 1 -21/2 -3/2 1 0 0

x2 -3/64 1 0 3/16 1/16 -1/8 0 0

x7 -1/8 0 0 21/2 3/2 -1 1 1

Z 1/2 -16 0 0 1 -1 0 0

x3 -5/2 56 1 0 2 -6 0 0

x4 -1/4 16/3 0 1 1/3 -2/3 0 0

x7 5/2 -56 0 0 -2 6 1 1

Z 7/4 -44 -1/2 0 0 2 0 0

x5 -5/4 28 1/2 0 1 -3 0 0

x4 1/6 -4 -1/6 1 0 1/3 0 0

x7 0 0 1 0 0 0 1 1

Z 3/4 -20 1/2 -6 0 0 0 0

x5 1/4 -8 -1 9 1 0 0 0

x6 1/2 -12 -1/2 3 0 1 0 0

x7 0 0 1 0 0 0 1 1

26

Regra para previnir o ciclismo:

Regra Lexicográfica:

Passo principal:

Seja zk-ck = Max {zj-cj: jR}. Se zk - ck 0 pare - a solução é ótima.

Caso contrário examine yk.

Se yk 0 pare – a solução ótima é ilimitada.

Se yk > 0 determine o índice r como:

Em caso de empate, deixará a base a variável com o menor yik

Atualize o tableau pivoteando em yik (atualize as variáveis básicas e as

não básicas com xk que entra na base e xi que sai).

Repita o passo principal

0:1

ikik

i

miy

y

bMinimor

27

FO: Max Z = 5*x1 + 3*x2

S.A. 4*x1 + 2*x2 12

4*x1 + 1*x2 10

1*x1 + 1*x2 4

x1, x2 0

x1

x2

x1 x2 x3 x4 x5 RHS

Z -5 -3 0 0 0 0

x3 4 2 1 0 0 12

x4 4 1 0 1 0 10

x5 1 1 0 0 1 4

Z 0 -7/4 0 5/4 0 25/2

x3 0 1 1 -1 0 2

x1 1 1/4 0 1/4 0 5/2

x5 0 3/4 0 1/4 1 3/2

Z 0 0 0 2/3 7/3 16

x3 0 0 1 -2/3 -4/3 0

x1 1 0 0 1/3 -1/3 2

x2 0 1 0 -1/3 4/3 2

Exemplo de PPL degenerado, inconsistente:

28

Regra para previnir o ciclismo:

Regra de Brant:

Passo principal:

Seja zk-ck = Max (Min) {zj-cj: jR}. Se zk - ck () 0 pare - a solução é

ótima.

Caso contrário examine yk.

Se yk 0 pare – a solução ótima é ilimitada.

Se yk > 0 determine o índice r como:

Em caso de empate, deixará a base a variável com o menor (maior) yik

Atualize o tableau pivoteando em yik (atualize as variáveis básicas e as

não básicas com xk que entra na base e xi que sai).

Repita o passo principal

0:1

ikik

i

miy

y

bMinimor

29

FO: Max Z = 5*x1 + 3*x2

S.A. 4*x1 + 2*x2 12

4*x1 + 1*x2 10

1*x1 + 1*x2 4

x1, x2 0

x1

x2

x1 x2 x3 x4 x5 RHS

Z -5 -3 0 0 0 0

x3 4 2 1 0 0 12

x4 4 1 0 1 0 10

x5 1 1 0 0 1 4

Z 0 -7/4 0 5/4 0 25/2

x3 0 1 1 -1 0 2

x1 1 1/4 0 1/4 0 5/2

x5 0 3/4 0 1/4 1 3/2

Z 0 0 0 2/3 7/3 16

x3 0 0 1 -2/3 -4/3 0

x1 1 0 0 1/3 -1/3 2

x2 0 1 0 -1/3 4/3 2

Exemplo de PPL degenerado, inconsistente:

30

Convergência do método simplex:

Teorema: se todas as soluções básicas viáveis de um PPL

forem não degeneradas, o método simplex é finito.

Implicações:

Número máximo de soluções básicas viáveis: n! / (n-m)!m!

Na prática observa-se que o número máximo de iterações

não passa de 3m/2. Assim, este pode ser considerado um

bom ponto de parada.

Como se houver degeneração, no caso extremo pode

haver ciclismo, se houver degeneração o método simplex

pode não ser finito.

31

PO – 201

O PROBLEMA DUAL

Professor: Rodrigo A. Scarpel

[email protected]

www.ief.ita.br/~rodrigo

Problemas Primal e Dual:

Para cada problema de programação linear que

resolvemos, existe um outro problema associado que

também é resolvido simultâneamente.

Este problema satisfaz algumas propriedades importantes

que podem ser usadas para resolver o problema original.

Denominaremos o problema original de PRIMAL e o novo

problema de DUAL.

Primal Dual

Maximizar Minimizar

Função objetivo Termo independente (RHS)

I-ésima linha de coeficientes I-ésima coluna de coeficientes

J-ésima coluna de coeficientes J-ésima linha de coeficientes

I-ésima relação I-ésima variável não negativa

I-ésima relação de = I-ésima variável irrestrita

I-ésima variável não negativa Restrição

I-ésima variável irrestrita Restrição de =

Problemas Primal e Dual:

SIMETRIA: O dual do problema dual é o problema primal.

Propriedades do problema Dual:

0

,

j

ij

m

1j

ij

j

m

1j

j

y

n1,...,i cya

:S.A.

yb (v) Min

DUAL

0

,...,1,

i

j

n

1i

iij

i

n

1i

i

x

mj bxa

:S.A.

xc (z) Max

PRIMAL

TEOREMA FRACO DA DUALIDADE

Se x e y são soluções viáveis dos problemas maximização

(primal) e minimização (dual), respectivamente, então:

cT x bT y

Implicações práticas: o valor da função objetivo de

qualquer solução viável de um problema dual de

minimização (maximização) fornece um limitante superior

(inferior) para o valor ótimo do problema primal de

maximização (minimização).

Propriedades do problema Dual:

TEOREMA FORTE (FUNDAMENTAL) DA DUALIDADE

Se o problema primal (dual) tem uma solução ótima finita, então o

dual (primal) também tem uma solução finita e ótima e o valor da

função objetivo de ambos problemas é igual. Assim, uma das

seguintes situações é verdadeira:

i) Ambos os problemas têm solução ótima x* ey* com z* = v*;

ii) Um problema é ilimitado e o outro é inviável;

iii) Ambos os problemas são inviáveis.

Propriedades do problema Dual:

TEOREMA DAS FOLGAS COMPLEMENTARES

Sendo x* e y* as soluções ótimas dos problemas primal e dual:

Possibilidades:

Propriedades do problema Dual:

j e i ,0 cyax e 0 xaby j

m

1j

jiji

n

1i

iijjj

****

0 cya ou x

e

0 xab ou y

j

m

1j

jiji

n

1i

iijjj

**

**

0

0

Exemplo de aplicação do teorema das folgas complementares:

Min Z = 2*x1 + 5*x2 + 2*x3 + 3*x4

S.A. 1*x1 + 2*x2 + 1*x3 + 3*x4 4

2*x1 + 3*x2 + 1*x3 + 1*x4 3

x1, x2 , x3 , x4 0 j e i ,0 cyax

e 0 xab-y

j

m

1j

jiji

n

1i

iijjj

**

**

Z x1 x2 x3 x4 x5 RHS

1 -4 -6 0 0 0 0

x3 1,5 4 1 0 0 24 x4 3 1,5 0 1 0 21

x5 1 1 0 0 1 8

1 -7/4 0 3/2 0 0 36

x2 3/8 1 1/4 0 0 6 x4 39/16 0 -3/8 1 0 12

x5 5/8 0 -1/4 0 1 2

1 0 0 4/5 0 14/5 208/5

x2 0 1 2/5 0 -3/5 24/5 x4 0 0 3/5 1 -39/10 21/5

x1 1 0 -2/5 0 8/5 16/5

Max Z = 4,0*xmad + 6,0*xalu

S.A. 1,5*xmad + 4,0*xalu 24

3,0*xmad + 1,5*xalu 21

1,0*xmad + 1,0*xalu 8

xmad, xalu 0

Método simplex (problema primal):

Min z = 24*ycorte + 21*ymont + 8*yacab

S.A. 1,5*ycorte + 3*ymont + 1*yacab 4

4*ycorte + 1,5*ymont + 1*yacab 6

ycorte, ymont, yacab 0

Z ycorte ymont yacabam x4 x5 a1 a2RHS

1 -24 -21 -8 0 0 -M -M 0

1 -24+(3/2)M -21+3M -8+M -M 0 0 -M 4M

1 -24+(11/2)M -21+(9/2)M -8+2M -M -M 0 0 10M

a13/2 3 1 -1 0 1 0 4

a24 3/2 1 0 -1 0 1 6

1 0 -12+(39/16)M -2+(5/8)M -M -6+(3/8)M 0 6-(11/8)M 36+(7/4)M

a10 39/16 10/16 -1 6/16 1 -6/16 28/16

ycorte1 3/8 1/4 0 -1/4 0 1/4 3/2

1 0 0 42/39 -192/39 -162/39 (192/39)-M (162/39)-M 1740/39

ymont0 1 10/39 -16/39 6/39 16/39 -6/39 28/39

ycorte1 0 2/13 2/13 -4/13 -2/13 4/13 16/13

1 0 -21/5 0 -624/195 = -3,2 -936/195 = -4,8 3,2-M 4,8-M 8112/195 = 41,6

yacabam0 39/10 1 -16/10 6/10 16/10 -6/10 28/10 = 2,8

ycorte1 -3/5 0 26/65 -26/65 -26/65 26/65 52/65 = 0,8

Método simplex (problema dual):

Problemas da alocação de recursos:

Uma empresa de transporte urbano de passageiros quer determinar a

quantidade mínima de ônibus necessários para atender sua programação.

Dados:

1. Devido à manutenção diária obrigatória, cada ônibus só pode circular

apenas 8 horas sucessivas por dia

2. Necessidade:

42

Uma empresa fabrica rolos de papel com 20 pés de comprimento (diâmetro

padrão). Em uma certa semana recebeu 3 pedidos:

Como fazer os cortes de forma a minimizar a perda? 43

Problemas de corte e empacotamento:

Interpretação Econômica do problema dual:

Min V = 24*ycorte + 21*ymont + 8*yacab

S.A. 1,5*ycorte + 3*ymont + 1*yacab 4 (Porta de madeira)

4*ycorte + 1,5*ymont + 1*yacab 6 (Porta de alumínio)

ycorte, ymont, yacab 0

ycorte : preço pago por 1 hora de corte

ymont : preço pago por 1 hora de montagem

yacab : preço pago por 1 hora de acabamento

V: preço total pago pelo

recursos (shadow price)

Função objetivo: Minimizar o preço total pago pelos recursos.

Restrições: Mínimo a ser pago pela combinação das variáveis de decisão

(pois com essa combinação gera-se uma unidade do produto).

1. Interpretação econômica das variáveis duais:

Interpretação Econômica do problema dual:

2. Interpretação econômica do teorema das folgas complementares:

j e i ,0 cyax e 0 xaby j

m

1j

jiji

n

1i

iijjj

****

Sendo x* e y* as soluções ótimas dos problemas primal e dual:

NA SOLUÇÃO, SE HÁ FOLGA DE ALGUM RECURSO SEU VALOR

(PREÇO DUAL) NECESSARIAMENTE É ZERO

NA SOLUÇÃO, SE UM DETERMINADO RECURSO TEM VALOR (>0)

NECESSARIAMENTE A FOLGA É ZERO

Interpretação Econômica do problema dual:

3. Interpretação econômica das restrições duais:

n1,...,i ,cya

0y

:S.A.

yb (v)Min

ij

m

1j

ij

j

j

m

1j

j

Utilização dos recursos

Valor dos recursos

Ganho proporcionado

Um novo produto só

será fabricado se

ij

m

1j

ij cya

Todo produto fabricado

ij

m

1j

ij cya

A teoria da dualidade proporciona um suporte teórico que

permite:

Calcular limites superiores (em problemas de

maximização) e inferiores (em problemas de

minimização) para o valor da função objetivo.

Interpretação econômica dos resultados da

otimização.

Desenvolvimento de métodos mais eficientes para

resolver problemas reais.

Dualidade:

PO – 201

ALGORITMOS SIMPLEX

ADICIONAIS

Professor: Rodrigo A. Scarpel

[email protected]

www.ief.ita.br/~rodrigo

Método Simplex:

• Condições de Viabilidade X Condições de Otimalidade

• Opção A: O simplex pode ser visto como um método que

busca atender as condições de otimalidade mantendo as

condições de viabilidade.

• Opção B: O simplex pode ser visto como um método que

busca a viabilidade do problema dual mantendo a

viabilidade do problema primal.

Problema 2: Problema da Mistura

Um fabricante de bebidas pretende lançar um novo refrigerante que é obtido

misturando refrigerante sabor laranja e suco de laranja. Análises executadas

pelo fabricante mostraram que cada ml de refrigerante sabor laranja tem 5 mg

de açúcar e 1 mg de vitamina C e que cada 1 ml de suco de laranja tem 2 mg

de açúcar e 3 mg de vitamina C. O custo de produção de 100 ml de

refrigerante sabor laranja é de R$0,20 e de 100 ml de suco de laranja é de

R$0,50. O departamento de marketing da empresa decidiu que o novo

refrigerante será comercializado em embalagens de 300 ml e que cada

unidade do produto deve conter no mínimo 600 mg de vitamina C e no

máximo 1.200 mg de açúcar. O fabricante deseja determinar a composição do

novo refrigerante de forma a minimizar o custo para produzir o produto.

Método Dual Simplex (PPL primal de Maximização):

Inicialização:

Encontrar uma solução básica que atenda as condições de otimalidade,

mas que não atenda as condições de viabilidade.

Passo principal:

Seja xB a solução corrente. Se o termo de xB 0 pare - a solução é ótima.

Caso contrário escolha o termo de xB mais negativo para sair da base.

Determine a variável que vai entrar na base por

Se todos yik 0 pare o problema não tem solução viável

Atualize o tableau pivotando em yik (atualize as variáveis básicas e as não

básicas com xk que entra na base e xi que sai).

Repita o passo principal

0,

1ik

ik

ii

miy

y

czmínimo

Generalização do Método Simplex:

• Opção A: O simplex pode ser visto como um método que

busca atender as condições de otimalidade mantendo as

condições de viabilidade.

• Opção B: O simplex pode ser visto como um método que

busca a viabilidade do problema dual mantendo a viabilidade

do problema primal.

• Opção C: O simplex pode ser visto como um método que

busca atender as condições de viabilidade mantendo as

condições de otimalidade.

Essas opções podem ser combinadas de acordo com

a necessidade para “talhar” novos métodos

(exemplos: método primal-dual, método simétrico,

método entrecruzado e método multiplex).

PO – 201

ANÁLISE PÓS-

OTIMIZAÇÃO

Professor: Rodrigo A. Scarpel

[email protected]

www.ief.ita.br/~rodrigo

Princípios:

• Em problemas reais as alterações (disponibilidade dos

recursos, preço dos insumos,…) demandam o recálculo

periódico da solução ótima.

• A análise de pós-otimização auxilia na determinação da nova

solução de modo eficiente.

ALTERNATIVAS POSSÍVEIS MOTIVOS AÇÃO RECOMENDADA

SOLUÇÃO ATUAL (BASE)

PERMANECE ÓTIMA E VIÁVEL- NENHUMA

ALTERAÇÕES NO RHS (RECURSOS)

ADIÇÃO DE NOVAS RESTRIÇÕES

ALTERAÇÕES NOS COEFIC. DA F.O.

ADIÇÃO DE UMA NOVA ATIVIDADE

SOLUÇÃO ATUAL SE TORNA

NÃO-ÓTIMA E INVIÁVELCOMBINAÇÃO DOS ITENS ANTERIORES

USAR, SE POSSÍVEL, O SIMPLEX

GENERALIZADO PARA OBTER NOVA

SOLUÇÃO

SOLUÇÃO ATUAL SE

TORNA INVIÁVEL

USAR O DUAL SIMPLEX PARA

RECUPERAR A VIABILIDADE

SOLUÇÃO ATUAL SE

TORNA NÃO-ÓTIMA

USAR O SIMPLEX (PRIMAL) PARA

RECUPERAR A OTIMALIDADE

Alterações no RHS (recursos):

Recurso gargalo:

A base fica inalterada: -7 A 8

Função objetivo:

(B e C: ctes)

208/5 + 4/5 A + 0 B + 14/5 C

xmadeira 5

xalu

mín

io

5

A = +10 (há alteração na base)

Z x1 x2 x3 x4 x5 RHS

1 0 0 4/5 0 14/5 208

/5 + 4/5 A + 0 B +

14/5 C

x2 0 1 2/5 0 -3/5 24

/5 + 2/5 A + 0 B -

3/5 C

x4 0 0 3/5 1 -39/10 21

/5 + 3/5 A + 1 B -

39/10 C

x1 1 0 -2/5 0 8/5 16

/5 - 2/5 A + 0 B +

8/5 C

Alterações no RHS (recursos):

Z x1 x2 x3 x4 x5 RHS

1 0 0 4/5 0 14/5 248

/5

x2 0 1 2/5 0 -3/5 44

/5

x4 0 0 3/5 1 -39/10 51

/5

x1 1 0 -2/5 0 8/5 -4

/5

1 2 0 0 0 6 48 + 6C

x2 1 1 0 0 1 8 + C

x4 3/2 0 0 1 -1,5 9 +B – 1,5 C

x3 -5/2 0 1 0 -4 2 + A – 4C

5

xalu

mín

io

5

FO: Max Z = 4,0*x1 + 6,0*x2

S.A. 1,5x1+ 4,0x2+ 1x3 = 34 + A

3,0x1+ 1,5x2 + 1x4 = 21 + B

1,0x1+ 1,0x2 + 1x5 = 8 + C

x1, x2, x3 , x4 , x5 0

FO: Maximizar Z = 4,0*xmadeira + 6,0*xalumínio

S.A. 1,5*xmadeira + 4,0*xalumínio 24

3,0*xmadeira + 1,5*xalumínio 21

1,0*xmadeira + 1,0*xalumínio 8

xmadeira, xalumínio 0

Adição de novas restrições:

• Quando novas restrições são adicionadas, há 2 possibilidades:

• A restrição ser redundante

• A solução atual se tornar inviável

Nova restrição: Demanda xmadeira 4 (Restrição é redundante)

xmadeira 3 (Solução atual é inviável)

Solução ótima:

x1 (madeira) = 16/5 = 3,2

x2 (alumínio) = 24/5 = 4,8

Lucro = 208/5 = 41,6

FO: Max Z = 4,0*x1 + 6,0*x2

S.A. 1,5x1+ 4,0x2+ 1x3 = 34

3,0x1+ 1,5x2 + 1x4 = 21

1,0x1+ 1,0x2 + 1x5 = 8

1,0x1 + 1x6 = 3

x1, x2, x3 , x4 , x5 , x6 0

Adição de novas restrições:

Z x1 x2 x3 x4 x5 x6 RHS

1 0 0 4/5 0 14/5 0 208/5

x2 0 1 2/5 0 -3/5 1 24/5

x4 0 0 3/5 1 -39/10 0 21/5

x1 1 0 -2/5 0 8/5 0 16/5

x6 1 0 0 0 0 1 3

1 0 0 4/5 0 14/5 0 208/5

x2 0 1 2/5 0 -3/5 1 24/5

x4 0 0 3/5 1 -39/10 0 21/5

x1 1 0 -2/5 0 8/5 0 16/5

x6 0 0 2/5 0 -8/5 1 -1/5

Adição de novas restrições:

Z x1 x2 x3 x4 x5 x6 RHS

1 0 0 4/5 0 14/5 0 208/5

x2 0 1 2/5 0 -3/5 1 24/5

x4 0 0 3/5 1 -39/10 0 21/5

x1 1 0 -2/5 0 8/5 0 16/5

x6 0 0 2/5 0 -8/5 1 -1/5

1 0 0 3/2 0 0 7/4 825/20

x2 0 1 1/4 0 0 -3/8 195/40

x4 0 0 -15/40 1 0 -195/80 375/80

x1 1 0 0 0 0 1 3

x5 0 0 -1/4 0 1 -5/8 1/8

Solução ótima:

x1 (madeira) = 3

x2 (alumínio) = 4,875

Lucro = 208/5 = 41,25

xmadeira(x1) 5 x

alu

mín

io(x

2)

5

PO – 201

O PROBLEMA DO

TRANSPORTE

Professor: Rodrigo A. Scarpel

[email protected]

www.ief.ita.br/~rodrigo

O problema do transporte:

Problema do transporte (ou de distribuição) Otimização de redes lineares

Decisões estratégicas: selecionar rotas de transporte (para distribuir a

produção de várias fábricas a vários depósitos ou pontos terminais)

Utilidade: planejamento (criação de planos de distribuição)

Fábricas Depósitos

S1

S2

S3

Sm ...

D1

D2

D3

Dn

...

Fornecimentos

disponíveis

(capacidade)

Demandas

Formulação do problema do transporte:

m

i

n

j

ijij xc Minimizar1 1

cij é o custo unitário de transporte da origem i para o destino j

Var. decisão: xij quantidade a ser transportada da origem i para o destino j

j e i todos para x

(demanda) n1,...,j para Dx

(oferta) m1,...,i para Sx

AS

ij

j

m

i

ij

i

n

j

ij

0

..

1

1

Balanceamento no problema do transporte:

Se o problema não for balanceado (a soma das capacidades de oferta for

igual à soma das demandas) este deve ser balanceado.

j

j

i

i DS PROBLEMA BALANCEADO

j

j

i

i DS PROBLEMA COM SOLUÇÃO INVIÁVEL

j

j

i

i DS PROBLEMA DEVE SER BALANCEADO

CRIA-SE UM PONTO FICTÍCIO DE DEMANDA

COM CUSTO DE TRANSPORTE = 0

Exemplo - problema do transporte:

Uma empresa geradora de energia possui 3 usinas termoelétricas (A, B

e C) e abastece 3 cidades (1, 2 e 3). O custo estimado de levar energia

de cada uma das usinas para cada uma das cidades (em R$/kWh),

assim como a demanda de cada uma das cidades e a capacidade de

geração de cada usina é dada na tabela abaixo:

Formule o problema que determine a quantidade de energia que será

enviada de cada usina para cada cidade ao mínimo custo.

ORIGENS DESTINOS CAPACIDADE

(kWh) CIDADE 1 CIDADE 2 CIDADE 3

PLANTA A 24 18 27 700

PLANTA B 16 11 7 340

PLANTA C 30 10 4 400

DEMANDA (kWh) 650 450 340

Exemplo - problema do transporte:

MIN Z = 24XA1 + 18XA2 + 27XA3 + 16XB1 + 11XB2 +7XB3 +30XC1 + 10XC2 + 4XC3

S.A.

XA1 + XA2 + XA3 700

XB1 + XB2 + XB3 340

XC1 + XC2 + XC3 400

XA1 + XB1 + XC1 650

XA2 + XB2 + XC2 450

XA3 + XB3 + XC3 340

XA1, XA2, XA3, XB1, XB2, XB3, XC1, XC2, XC3 0

O método simplex para o problema do transporte:

PASSO 1: Selecionar até m+n-1 rotas que resultem em uma

solução básica inicial factível.

PASSO 2: Verifique se a solução pode ser melhorada,

introduzindo xij não básica na base (nova rota). Se

puder vá para o passo 3, caso contrário, PARE

(solução ótima).

PASSO 3: Determine qual rota deve sair da base quando xij

entrar.

PASSO 4: Ajuste os fluxos das outras variáveis básicas e

volte para o passo 2.

Formulação do dual do problema do transporte:

m

i

n

j

ijij xc Minimizar1 1

j e i todos para x

(demanda) n1,...,j para Dx

(oferta) m1,...,i para Sx

AS

ij

j

m

i

ij

i

n

j

ij

0

..

1

1

m

i

n

j

jjii wDvS Maximizar1 1

sirrestrito wv

n1,...,j e m1,...,i para cwv

AS

ji

ijji

,

..

DUAL

m

i

n

j

jjii wDvS Maximizar1 1

sirrestrito wv

n1,...,j e m1,...,i para cwv

AS

ji

ijji

,

..

Formulação do dual do problema do transporte:

SE NO PROBL. PRIMAL xij > 0 (básica) NO PROBL. DUAL vi + wj = cij

SE NO PROBL. PRIMAL xij = 0 (não básica) NO DUAL vi + wj < cij

Variações do problema do transporte:

O problema do transporte com custo fixo (fixed charge transportation

problem)

Exemplo:

Capacidade das fábricas: 350 unidades/mês

1

2 3

4 5

6

7

A

B

Variações do problema do transporte:

O problema do planejamento agregado da produção:

Exemplo:

Um fabricante de barcos deve decidir quantas unidades serão fabricadas

nos próximos 4 trimestres.

Em sua carteira de pedidos há 30 barcos a serem entregues no primeiro

trimestre, 60 no segundo trimestre, 75 no terceiro trimestre e 25 no quarto

trimestre.

O fabricante tem capacidade de produzir 40 barcos por trimestre (nesse

caso cada barcos custa $40.000).

Há a possibilidade de produzir 20 unidades adicionais, porém o custo

unitário vai para $45.000.

O custo de carregamento (manter um barco estocado) é de $2.000.

Faça o planejamento da produção objetivando minimizar o custo total nos

próximos 4 trimestres.

Decisões estratégicas: selecionar rotas de transporte (para distribuir a

produção de várias fábricas a vários depósitos ou pontos terminais passando

ou não por pontos de transbordo)

Utilidade: planejamento (criação de planos de distribuição)

Variações do problema do transporte:

O problema do transbordo:

Exemplo - problema do transbordo:

Uma empresa possui 2 plantas (unidades de produção) localizadas em Memphis e

Denver com capacidade para produzir 150 e 200 unidades, respectivamente, e

abastece 2 grandes centros (Los Angeles e Boston) que demandam 130 unidades

cada. No transporte de seus produtos há a possibilidade de entregar diretamente

nos grandes centros ou passar por pontos de transbordo (em Nova York e em

Chicago). O custo de transporte de cada uma das origens para cada um dos

destinos é dado na tabela abaixo:

Formule o problema que determine a quantidade de produtos que deverá enviada

de cada origem para cada destino.

Exemplo - problema do transbordo:

MIN Z = 8XM,NY+13XM,C+25XM,LA+28XM,B+ 15XD,NY+12XD,C+26XD,LA+25XD,B+

6XNY,C+16XNY,LA+17XNY,B+ 6XC,NY+14XC,LA+16XC,B

S.A.

XM,NY + XM,C + XM,LA + XM,B 150

XD,NY + XD,C + XD,LA + XD,B 200

XM,LA + XD,LA + XNY,LA + XC,LA 130

XM,B + XD,B + XNY,B + XC,B 130

XM,NY + XD,NY + XC,NY = XNY,LA + XNY,B + XNY,C

XM,C + XD,C + XNY,C = XC,LA + XC,B + XC,B + XC,NY

XM,NY, XM,C, XM,LA, XM,B, XD,NY, XD,C, XD,LA, XD,B, XNY,C, XNY,LA, XNY,B, XC,NY,

XC,LA, XC,B 0

Exemplo - problema do transbordo:

PO – 201

PROBLEMA DA

ATRIBUIÇÃO

Professor: Rodrigo A. Scarpel

[email protected]

www.ief.ita.br/~rodrigo

O problema da atribuição:

Problema da atribuição Otimização de redes lineares

Descrição: cada uma de n tarefas pode ser executada por qualquer um de n

agentes. O custa da tarefa i sendo executada pelo agente j é cij.

Decisão: designar um agente para cada tarefa de forma a minimizar o custo total

TAREFAS AGENTES

Formulação do problema da atribuição:

m

i

n

j

ijij xc Minimizar1 1

cij é o custo da tarefa sendo executada pelo agente j

Var. decisão: xij = 1, se a tarefa i for executada pelo agente j

0, caso contrário para i=1,…,n e j=1,…,n

j e i os todos para 1ou 0x

n1,...,j para x

n1,...,i para x

AS

ij

n

i

ij

n

j

ij

1

1

..

1

1

Exemplo - problema da atribuição:

Machineco possui 4 máquinas e 4 tarefas a serem realizadas.

Dependendo da atribuição das tarefas, o tempo de execução é diferente:

Formule o problema que determine qual máquina fará qual tarefa se o

objetivo é minimizar o tempo total de execução.

Tempo de Execução

Tar 1 Tar 2 Tar 3 Tar 4

Maq A 14 5 8 7

Maq B 2 12 6 5

Maq C 7 8 3 9

Maq D 2 4 6 10

MIN Z = 14XA1+5XA2+8XA3+7XA4+2XB1+12XB2+6XB3+5XB4

+7XC1+8XC2+3XC3 +9XC4 +2XD1+4XD2+6XD3 +10XD4

S.A.

XA1+XA2+XA3+XA4 = 1

XB1+XB2+XB3+XB4 = 1

XC1+XC2+XC3+XC4 = 1

XD1+XD2+XD3+XD4 = 1

XA1 +XB1 +XC1 +XD1 = 1

XA2 +XB2 +XC2 +XD2 = 1

XA3 +XB3 +XC3 +XD3 = 1

XA4 +XB4 +XC4 +XD4 = 1

XA1,XA2,XA3,XA4, XB1,XB2,XB3,XB4, XC1,XC2,XC3,XC4 , XD1,XD2,XD3,XD4 {0,1}

Exemplo - problema da atribuição:

O método húngaro para resolução do probl. da atribuição:

PASSO 1: Encontre o mínimo de cada linha na matriz de custo n x n.

Construa uma nova matriz subtraindo o valor do mínimo da

linha. Nesta nova matriz, encontre o mínimo de cada coluna.

Construa uma nova matriz (matriz de custos reduzidos)

subtraindo o mínimo da coluna.

PASSO 2: Desenhe o número mínimo de linhas (horizontais e verticais)

para que todos os zeros sejão cobertos. Se n linhas são

necessárias, então a solução é ótima (são os n zeros

cobertos). Se um número menor que n linhas são

necessárias, vá para o passo 3.

PASSO 3: Encontre o menor valor não zero (k) na matriz de custos

reduzidos que não esteja coberto pelas linhas desenhadas

no passo 2. Agora subtraia k de cada elemento não coberto

e some k em cada elemento coberto por 2 linhas. Volte para

o passo 2.

O método húngaro para resolução do probl. da atribuição:

PASSO 1: Encontre o mínimo de cada linha na matriz de custo n x n.

Construa uma nova matriz subtraindo o valor do mínimo da

linha. Nesta nova matriz, encontre o mínimo de cada coluna.

Construa uma nova matriz (matriz de custos reduzidos)

subtraindo o mínimo da coluna.

10 6 4 2

9 3 8 7

5 6 12 2

7 8 5 14 -5

-2

-3

-2

9 0 3 2

0 10 4 3

4 5 0 6

0 2 4 8

0 -2 0 0

9 0 3 0

0 10 4 1

4 5 0 4

0 2 4 6

O método húngaro para resolução do probl. da atribuição:

PASSO 2: Desenhe o número mínimo de linhas (horizontais e verticais)

para que todos os zeros sejão cobertos. Se n linhas são

necessárias, então a solução é ótima (são os n zeros

cobertos). Se um número menor que n linhas são

necessárias, vá para o passo 3.

9 0 3 0

0 10 4 1

4 5 0 4

0 2 4 6

9 0 3 0

0 10 4 1

4 5 0 4

0 2 4 6

O método húngaro para resolução do probl. da atribuição:

PASSO 3: Encontre o menor valor não zero (k) na matriz de custos

reduzidos que não esteja coberto pelas linhas desenhadas

no passo 2. Agora subtraia k de cada elemento não coberto

e some k em cada elemento coberto por 2 linhas. Volte para

o passo 2.

9 0 3 0

0 10 4 1

4 5 0 4

0 2 4 6

1

9+1 0 3 0

0 10-1 4-1 1-1

4 +1 5 0 4

0 2-1 4-1 6-1

O método húngaro para resolução do probl. da atribuição:

PASSO 2: Desenhe o número mínimo de linhas (horizontais e verticais)

para que todos os zeros sejão cobertos. Se n linhas são

necessárias, então a solução é ótima (são os n zeros

cobertos). Se um número menor que n linhas são

necessárias, vá para o passo 3.

10 0 3 0

0 9 3 0

5 5 0 4

0 1 3 5

10 0 3 0

0 9 3 0

5 5 0 4

0 1 3 5

O método húngaro para resolução do probl. da atribuição:

PASSO 2: Desenhe o número mínimo de linhas (horizontais e verticais)

para que todos os zeros sejão cobertos. Se n linhas são

necessárias, então a solução é ótima (são os n zeros

cobertos). Se um número menor que n linhas são

necessárias, vá para o passo 3.

10 0 3 0

0 9 3 0

5 5 0 4

0 1 3 5

X

X

X

X

Maq A

Maq B

Maq C

Maq D

Tar 1 Tar 2 Tar 3 Tar 4

PO – 201

PROGRAMAÇÃO

LINEAR INTEIRA

Professor: Rodrigo A. Scarpel

[email protected]

www.ief.ita.br/~rodrigo

Hipóteses em PL (suposições tecnológicas e econômicas):

Proporcionalidade: todos os retornos / custos e recursos

utilizados variam proporcionalmente a variável de decisão (não

há economia de escala);

Aditividade: o efeito total de quaisquer duas variáveis é a soma

dos efeitos individuais (não há sinergia ou efeito de

substituição). Exemplo: o custo total é a soma dos custos

individuais;

Divisibilidade: as variáveis de decisão podem assumir valores

fracionados. Se essas variáveis só puderem assimir valores

inteiros o problema é de programação inteira (PI);

Certeza (Determinístico): todos os parâmetros do modelo são

constantes conhecidas (não são variáveis aleatórias);

Problema de programação inteira:

Considere o seguinte problema:

em que xj é inteiro para j = 1,2,…,p (n)

Quando p = n : todas as variáveis devem ter valor inteiro

Problema de Programação Inteira Pura

Quando p < n : algumas variáveis não precisam ter valor inteiro

Problema de Programação Inteira Mista

0 x, .... ,x ,x

...b

...b

...b :a

... )/(

n21

221k1

22222121

11212111

2211

knknk

nn

nn

nn

cxbxbx

cxbxbx

cxbxbxSujeito

xaxaxaZMaximizarMinimizar

Resolução de problemas de Programação Inteira:

Espaço de busca discreto X Espaço de busca contínuo

Computacionalmente é mais fácil tratar o caso contínuo

Abordagem inicialmente sugerida: ARREDONDAMENTO

• Ignore a restrição que faz xi inteiro e resolva como se fosse um PPL

• Se a resposta satisfizer as restrições de inteiros solução do PPI

• Caso contrário, obtenha uma solução inteira arredondando a

resposta do PPL a números inteiros.

Resolução de problemas de Programação Inteira:

Exemplo do método de resolução por ARREDONDAMENTO

Maximizar 21*x1 + 11*x2

Sujeito a: 7*x1 + 4*x2 13, x1,x2 são números inteiros e não-negativos

x1

x2

x1 = 13/7

x2 = 0 Z = 39

ARREDONDAMENTO:

x1 = 2 e x2 = 0 SOLUÇÃO INVIÁVEL

x1 = 1 e x2 = 0 SOLUÇÃO VIÁVEL, MAS NÃO ÓTIMA

SOLUÇÃO ÓTIMA: x1 = 0 e x2 = 3 (Z=33)

Resolução de problemas de Programação Inteira:

CRÍTICAS À ABORDAGEM POR ARREDONDAMENTO:

• É difícil pensar em um procedimento sistemático que seja prático para

arredondar uma solução não-inteira em um problema de médio ou

grande porte

• Mesmo que o arredondamento funcione em alguns casos, é difícil

esperar que esta abordagem funcione sempre.

Abordagem sugerida posteriormente: ENUMERAÇÃO (SOLUÇÕES VIÁVEIS)

• Enumere todas as soluções viáveis e, então, tome a melhor.

Resolução de problemas de Programação Inteira:

Exemplo do método de resolução por ENUMERAÇÃO

Maximizar 21*x1 + 11*x2

Sujeito a: 7*x1 + 4*x2 13, x1,x2 são números inteiros e não-negativos

x1

x2 SOLUÇÕES VIÁVEIS:

x1 = 0 e x2 = 0 Z = 0

x1 = 0 e x2 = 1 Z = 11

x1 = 0 e x2 = 2 Z = 22

x1 = 0 e x2 = 3 Z = 33

x1 = 1 e x2 = 0 Z = 21

x1 = 1 e x2 = 1 Z = 32

SOLUÇÃO ÓTIMA: x1 = 0 e x2 = 3 (Z=33)

Resolução de problemas de Programação Inteira:

CRÍTICAS À ABORDAGEM POR ENUMERAÇÃO DAS SOLUÇÕES VIÁVEIS:

• Essa alternativa torna-se impraticável já em problemas médios:

Exemplo: 100 variáveis de decisão que podem assumir valores 0 ou 1

2100 soluções viáveis

ALTERNATIVA:

• Desenvolvimento de algorítmos que enumeram parcialmente um

número tratável de possibilidades e implicitamente todo o resto

(métodos parcialmente enumerativos)

• OBS: O método simplex emprega o mesmo princípio para resolver

PPLs pois examina sistematicamente somente um sub-conjunto das

soluções básicas possíveis.

Resolução de problemas de Programação Inteira:

MÉTODO BRANCH-AND-BOUND:

• É um método de resolução que se baseia na idéia de desenvolver uma

enumeração inteligente dos pontos candidatos à solução ótima inteira

de um problema, por meio da partição do espaço de soluções e

avaliação progressiva das soluções.

• O termo branch refere-se às partições feitas pelo método e o termo

bound às novas restrições adicionadas.

FO: Maximizar Z = 4,0*xmadeira + 6,0*xalumínio

S.A. 1,5*xmadeira + 4,0*xalumínio 24

3,0*xmadeira + 1,5*xalumínio 21

1,0*xmadeira + 1,0*xalumínio 8

xmadeira, xalumínio inteiros não-negativos

ILUSTRAÇÃO DO MÉTODO:

Método branch-and-bound:

PASSO 1: resolver o problema como se fosse um PPL (LP relaxation)

xalu

mín

io

xmadeira 5 3,2

4,8

Z = 41,6

Método branch-and-bound:

PASSO 2: particionar o problema em 2 adicionando restrições

SUB-PROBLEMA 1:

FO: Maximizar Z = 4,0*xmadeira + 6,0*xalumínio

S.A. 1,5*xmadeira + 4,0*xalumínio 24

3,0*xmadeira + 1,5*xalumínio 21

1,0*xmadeira + 1,0*xalumínio 8

1,0*xmadeira 3

xmadeira, xalumínio inteiros não-negativos

SUB-PROBLEMA 2:

FO: Maximizar Z = 4,0*xmadeira + 6,0*xalumínio

S.A. 1,5*xmadeira + 4,0*xalumínio 24

3,0*xmadeira + 1,5*xalumínio 21

1,0*xmadeira + 1,0*xalumínio 8

1,0*xmadeira 4

xmadeira, xalumínio inteiros não-negativos

Método branch-and-bound:

PASSO 2: particionar o problema em 2 adicionando restrições

xalu

mín

io

xmadeira 5

SU

B-P

RO

BL

EM

A 1

SU

B-P

RO

BL

EM

A 2

Método branch-and-bound:

PASSO 3: resolver os problemas como se fossem PPLs (LP relaxation)

xalu

mín

io

xmadeira 5

SU

B-P

RO

BL

EM

A 2

SUB-PROBLEMA 1:

SUB-PROBLEMA 2:

xMAD = 3

xALU = 4,875 Z = 41,25

xMAD = 4

xALU = 4 Z = 40

SU

B-P

RO

BL

EM

A 1

Método branch-and-bound:

PASSO 2: particionar o problema em 2 adicionando restrições

SUB-PROBLEMA 3:

FO: Maximizar Z = 4,0*xmadeira + 6,0*xalumínio

S.A. 1,5*xmadeira + 4,0*xalumínio 24

3,0*xmadeira + 1,5*xalumínio 21

1,0*xmadeira + 1,0*xalumínio 8

1,0*xmadeira 3

1,0*xalumínio 4

xmadeira, xalumínio inteiros

e não-negativos

SUB-PROBLEMA 4:

FO: Maximizar Z = 4,0*xmadeira + 6,0*xalumínio

S.A. 1,5*xmadeira + 4,0*xalumínio 24

3,0*xmadeira + 1,5*xalumínio 21

1,0*xmadeira + 1,0*xalumínio 8

1,0*xmadeira 3

1,0*xalumínio 5

xmadeira, xalumínio inteiros

e não-negativos

Método branch-and-bound:

PASSO 3: resolver os problemas como se fossem PPLs (LP relaxation)

SUB-PROBLEMA 3:

SUB-PROBLEMA 4:

xMAD = 3

xALU = 4 Z = 36

xMAD = 2,67

xALU = 5 Z = 40,67

xalu

mín

io

xmadeira 5

SU

B-P

RO

BL

EM

A 2

SU

B-P

RO

BL

EM

A 3

S-P 4

Método branch-and-bound:

PASSO 2: particionar o problema em 2 adicionando restrições

SUB-PROBLEMA 5:

FO: Maximizar Z = 4,0*xmadeira + 6,0*xalumínio

S.A. 1,5*xmadeira + 4,0*xalumínio 24

3,0*xmadeira + 1,5*xalumínio 21

1,0*xmadeira + 1,0*xalumínio 8

1,0*xmadeira 3

1,0*xalumínio 5

1,0*xmadeira 3

xmadeira, xalumínio inteiros

e não-negativos

SUB-PROBLEMA 6:

FO: Maximizar Z = 4,0*xmadeira + 6,0*xalumínio

S.A. 1,5*xmadeira + 4,0*xalumínio 24

3,0*xmadeira + 1,5*xalumínio 21

1,0*xmadeira + 1,0*xalumínio 8

1,0*xmadeira 3

1,0*xalumínio 5

1,0*xmadeira 2

xmadeira, xalumínio inteiros

e não-negativos

Método branch-and-bound:

PASSO 3: resolver os problemas como se fossem PPLs (LP relaxation)

SUB-PROBLEMA 5: NÃO HÁ SOLUÇÃO VIÁVEL

SUB-PROBLEMA 6: xMAD = 2

xALU = 5,25 Z = 39,5 x

alu

mín

io

xmadeira 5

SU

B-P

RO

BL

EM

A 2

SU

B-P

RO

BL

EM

A 3

S-P 6

Método branch-and-bound:

SOLUÇÃO DO PROBLEMA DE PROGRAMAÇÃO INTEIRA:

SUB-PROBLEMA 5: NÃO HÁ SOLUÇÃO VIÁVEL

SUB-PROBLEMA 6: xMAD = 2

xALU = 5,25 Z = 39,5 x

alu

mín

io

xmadeira 5

SU

B-P

RO

BL

EM

A 2

SU

B-P

RO

BL

EM

A 3

S-P 6

SUB-PROBLEMA 2: xMAD = 4

xALU = 4 Z = 40

Método branch-and-bound:

PROBLEMA:

Z = 41,60

xMAD = 3,2

xALU = 4,8

SUB-PROBLEMA 1:

Z = 41,25

xMAD = 3

xALU = 4,875

SUB-PROBLEMA 2:

Z = 40,00

xMAD = 4

xALU = 4

xMAD 3 xMAD 4

SUB-PROBLEMA 3:

Z = 36,00

xMAD = 3

xALU = 4

xALU 4

SUB-PROBLEMA 4:

Z = 40,68

xMAD = 2,67

xALU = 5

xALU 5

SUB-PROBLEMA 5:

NÃO HÁ

SOLUÇÃO

VIÁVEL

xMAD 3

SUB-PROBLEMA 6:

Z = 39,50

xMAD = 2

xALU = 5,25

xMAD 2

Método dos planos de corte de Gomory:

Objetivo: obter uma aproximação da envoltória convexa da região viável de

um PLI que contenha um ponto extremo correspondente a uma

solução ótima.

Passos: 1. Resolver o PLI relaxado (como um PPL)

2. Se a solução for inteira, então é a solução ótima do PLI. Caso

contrário, vá para o passo 3

3. Escolha uma linha do tableau com solução não inteira e construa o

corte de Gomory. Resolva o PPL com a nova restrição.

PO – 201

OTIMIZAÇÃO

COMBINATÓRIA

Professor: Rodrigo A. Scarpel

[email protected]

www.ief.ita.br/~rodrigo

Problemas de otimização combinatória:

Objetivo: encontrar, dentre todos os possíveis subconjuntos, aquele cuja

função objetivo seja a melhor possível.

Algumas aplicações práticas:

1. Problemas de produção: set-up, novos equipamentos, …

2. Problemas de alocação de recursos: mão-de-obra, equipamentos,…

3. Problemas de corte e empacotamento

4. Problemas de localização de facilidades

5. Problemas de distribuição de bens de consumo

6. Problemas de roteamento (otimização de redes: TSP)

Problemas de Produção (set-up, novos equipamentos):

CORTE

MONTAGEM

MADEIRA ALUMÍNIO

ACABAMENTO

PORTA

DE

MADEIRA

L=$4,00

PORTA DE

ALUMÍNIO

L=$6,00

EXPANSÃO DA PRODUÇÃO:

MÁQUINA CORTE:

+5h (INVEST=$50) / +15h (INVEST=$80)

MÁQUINA MONTAGEM:

+6h (INVEST=$30) / +15h (INVEST=$50)

NOVAS RESTRIÇÕES:

INVESTIMENTO NÃO PODE EXCEDER $120

POSSÍVEIS RELAÇÕES DE PRECEDÊNCIA

ALTERNATIVAS MUTUAMENTE EXCLUSIVAS

NECESSIDADE DE SET-UP:

CORTE: +0,5h (MADEIRA) / +1h (ALUMÍNIO) 108

Uma empresa fabrica rolos de papel com 20 pés de comprimento (diâmetro

padrão). Em uma certa semana recebeu 3 pedidos:

Como fazer os cortes de forma a minimizar a perda? 109

Problemas de corte e empacotamento:

Caso 1: O problema da cobertura

Problema da cobertura: selecionar o menor número de colunas para atender

todas as linhas de uma matriz.

Utilidade: localização de instalações (postos de atendimento), divisão de regiões

para exploração da força de vendas, …

Pontos

pretos

indicam

que a

coluna

atende a

linha

110

O problema da localização:

111

O problema da localização:

Caso 1: O problema da cobertura

A

B

C

D

E

FH

I

G

J

K

LN

M

O

P

Q

S

R

X

U

V

T

Z

1,2

1,7

2,1 1,9

1,9

2,2

3,2

1,2

1,2

1,2

1,23,2

0,7

0,5

0,80,7

2,5

0,91,5

2,8

1,3

1,7

0,8

2,8

2,4

1,4

1,4

3,4

2,2

4,2

4,62,2

2,61,2

2,2 2,1

A

B

C

D

E

FH

I

G

J

K

LN

M

O

P

Q

S

R

X

U

V

T

Z

1,2

1,7

2,1 1,9

1,9

2,2

3,2

1,2

1,2

1,2

1,23,2

0,7

0,5

0,80,7

2,5

0,91,5

2,8

1,3

1,7

0,8

2,8

2,4

1,4

1,4

3,4

2,2

4,2

4,62,2

2,61,2

2,2 2,1

AA

BB

CC

DD

EE

FFHH

II

GG

JJ

KK

LLNN

MM

OO

PP

QQ

SS

RR

XX

UU

VV

TT

ZZ

1,2

1,7

2,1 1,9

1,9

2,2

3,2

1,2

1,2

1,2

1,23,2

0,7

0,5

0,80,7

2,5

0,91,5

2,8

1,3

1,7

0,8

2,8

2,4

1,4

1,4

3,4

2,2

4,2

4,62,2

2,61,2

2,2 2,1

Distância máxima: 3 km

A B C D E F G H I J K L M N O P Q R S T U V X Z

A 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

B 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

C 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 1 0 0 1 0 0 0 0 0

D 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0

E 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0

F 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

G 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 0 0

H 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

I 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0

J 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0

K 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0

L 0 0 1 0 1 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0

M 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0

N 0 0 1 0 1 0 1 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 0

O 0 0 1 0 1 0 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 0 0

P 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0

Q 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0

R 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0

S 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 1 0 1 1 1 0 1 0 0

T 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0

U 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1

V 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0

X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0

Z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1

(x1;x2)

P1=(1,05;6,85)

P2=(1,1;3,55)

P3=(1,25;0,85)

P4=(4,0;6,65)

P5=(3,55;2,85)

P6=(6,3;7,25)

P7=(7,0;6,4)

P8=(5,05;3,55)

P9=(7,0;4,35)

P10=(6,4;1,2)

P11=(10,1;6,65)

P12=(9,9;4,85)

P13=(9,6;2,2)

P14=(10,75;0,5)

O problema da localização:

Caso 2: O problema das p-medianas

Resultados:

p = 1 9: (1,2,3,...,13,14)

p = 2 2: (1,2,3,5)

9: (4,6,7,8,9,10,11,12,13,14)

p = 3 5: (1,2,3,5,8,10)

7: (4,6,7,9,11)

13: (12,13,14)

p = 3 5: (1,2,3,5,8,10)

7: (4,6,7,9,11)

13: (12,13,14)

CD

Problemas de distribuição de bens de consumo:

Dados: N pontos de entrega (ponto-a-ponto), ti (i=1,…,N) é o tempo de viagem

do CD ao ponto de entrega (ida e volta) + tempo de descarregar a carga

e T é o tempo disponível (por caminhão).

Decisões: Quantos caminhões serão necessários e qual caminhão fará qual

viagem

Exemplo: N=10 entregas (T = 8 h por caminhão)

V1 V2 V3

V4

V5

V7

V6

V8

V10

V9 t1 = 1,1 h t6 = 1,7 h

t2 = 1,3 h t7 = 2,9 h

t3 = 3,7 h t8 = 3,9 h

t4 = 2,3 h t9 = 5,1 h

t5 = 1,9 h t10 = 7,3 h

Solução: 4 caminhões

1 → V3, V4, V5 (T=7,9)

2 → V10 (T=7,3)

3 → V1, V2, V6, V8 (T=8,0)

4 → V7, V9 (T=8,0)

Problemas de distribuição de bens de consumo:

Dados: N pontos de entrega, ti (i=1,…,N) é o peso da carga que será

transportada do CD ao ponto de entrega (ida e volta) e T é a capacidade

de carga do caminhão.

Decisões: Quantos caminhões serão necessários e qual varejista será visitado

por cada caminhão

Exemplo: N=10 entregas (T = 10 ton por caminhão)

t1 = 1,1 ton t6 = 1,7 ton

t2 = 1,3 ton t7 = 2,9 ton

t3 = 3,7 ton t8 = 3,9 ton

t4 = 2,3 ton t9 = 5,1 ton

t5 = 1,9 ton t10 = 7,3 ton CD

V1 V2 V3

V4

V5

V7

V6

V8

V10

V9

CD

V1 V2 V3

V4

V5

V7

V6

V8

V10

V9

Solução: 4 caminhões

1 → V8, V6, V4, V2 (T=9,2)

2 → V7, V5, V3, V1 (T=9,6)

3 → V10 (T=7,3)

4 → V9 (T=5,1)

PO – 201

OTIMIZAÇÃO EM

REDES

Professor: Rodrigo A. Scarpel

[email protected]

www.ief.ita.br/~rodrigo

Fluxo em Redes (Network Flows) :

Muitos problemas de otimização podem ser melhor analisados se

for utilizada uma representação gráfica ou em forma de redes.

Esses problemas são enquadrados como de otimização em redes

ou fluxo em redes (network flows)

Principais Problemas:

• Transporte (Transportation)

• Transbordo (Transshipment)

• Atribuição ou Designação (Assignment)

• Circuitos Hamiltonianos (TSP)

• Caminho Mínimo (Shortest-Path) / Máximo

• Máximo fluxo (Maximum-flow problems)

• Problema da árvore geradora mínima (Minimum Spanning Tree)

Fluxo em Redes (Network Flows) :

Definições:

Um grafo, ou rede, é definido por dois conjuntos de símbolos:

nós (ou vértices) e arcos.

Um arco consiste de um par ordenado de nós e representa uma

possível direção de movimento que pode ocorrer entre os nós.

Uma seqüência de arcos distintos que ligam nós é chamado de

caminho (path).

Uma árvore é uma rede conectada (todos os nós estão

conectados por no mínimo 1 caminho) sem ciclos.

O problema do caixeiro viajante:

O problema do caixeiro viajante é um problema de otimização associado à

determinação dos circuitos hamiltonianos num grafo qualquer.

Diz-se que um circuito é Hamiltoniano se passar uma e só uma vez por todos os

vértices de uma rede. A designação provém do islandês Hamilton que em 1857

propôs um jogo denominado “Around the World". Nesse jogo, os vértices

representavam as 20 cidades mais importantes do mundo na época. O objetivo

do jogo consistia em encontrar um percurso através dos vértices, com início e fim

no mesmo vértice e que passasse por cada vértice apenas uma vez.

0

1

2

3

4

5 6

0

1

2

3

4

5 6

O problema do caixeiro viajante:

Formulação de Dantzig-Fulkerson-Johnson:

Seja um grafo G = (V,A), em que V é o conjunto de vértices

(cidades) e A é o conjunto de arcos (ligações entre duas cidades).

Var. decisão: xij = 1, se o arco de i para j estiver no caminho

0, caso contrário

i j

ijijxdMinimizar

grafoSSx

ix

xAS

Sjiij

ij

ij

,1

,1

j ,1 ..

,

j

i

O problema do caixeiro viajante:

Exemplo:

5

1 2

4

3 5

1

4

6

2

3

F.O.: MIN 1x1,2 + 1x2,1 + 2x2,3 + 2x3,2 + 3x3,4 + 3x4,3 + 6x1,4 +

6x4,1 + 4x4,5 + 4x5,4 + 5x5,1 + 5x1,5

S.A. x1,2 + x1,4 + x1,5 = 1 x2,1 + x4,1 + x5,1 = 1

x2,3 + x2,1 = 1 x3,2 + x1,2 = 1

x3,2 + x3,4 = 1 x2,3 + x4,3 = 1

x3,4 + x1,4 + x5,4 = 1 x4,3 + x4,1 + x4,5 = 1

x5,4 + x5,1 = 1 x1,5 + x4,5 = 1

O problema do caixeiro viajante:

5

1 2

4

3 5

1

4

6

2

3

5

1 2

4

3 5

1

4

6

2

3

x1,2 + x2,1 + x2,3 + x3,2 + x3,4 + x4,3 + x4,1 + x1,4 3

x1,4 + x4,1 + x4,5 + x5,4 + x1,5 + x5,1 2

5

1 2

4

3 5

1

4

2

3

Solução:

x1,2 = x2,3 = x3,4 = x4,5 = x5,1 = 1

Distância percorrida = 15

5

1

2

4

3

O problema do caixeiro viajante:

Embora a formulação de Dantzig-Fulkerson-Johnson tenha conseguido

resolver o problema há uma dificuldade de implementação: colocar na

formulação de todos os subgrafos de um grafo complexo.

Exemplo:

O problema do caixeiro viajante:

Resolução por branch-and-bound:

Resolver o problema do caixeiro viajante como um problema de

atribuição (relaxado)

Se a solução do problema relaxado for viável para o problema do

caixeiro viajante, esta é ótima. Caso contrário adicione uma

restrição para bloquear o arco (xij = 0).

Repita o procedimento até encontrar uma solução ótima para o

problema relaxado e que atenda o problema de caixeiro viajante.

i j

ijijxdMinimizar

ix

xAS

ij

ij

,1

j ,1 ..

j

i

O problema do caixeiro viajante:

Resolução por branch-and-bound: Exemplo

5

1

2

4

3

O problema do caixeiro viajante:

Resolução pela heurística do vizinho mais próximo:

Passo 1: selecione um ponto de partida.

Passo 2: Conecte este ponto ao seu vizinho mais próximo, desde

que esse não forme um subcircuito.

Repita o passo 2 até que todos os nós tenham sido escolhidos.

Exemplo:

5

1

2

4

3

1 – 5 – 2 – 4 – 3 – 1 D = 668

O problema do caixeiro viajante:

Teste da solução pela heurística da inversão:

É possível buscar melhorar a solução invertendo-se 2 a 2, 3 a 3,

…, n-1 a n-1, em que n é o número de nós de uma rede.

Exemplo:

1 – 2 – 5 – 4 – 3 – 1 D = 737

1 – 5 – 4 – 2 – 3 – 1 D = 962

1 – 5 – 2 – 3 – 4 – 1 D = 704

1 – 4 – 2 – 5 – 3 – 1 D = 964

1 – 5 – 3 – 4 – 2 – 1 D = 807

1 – 3 – 2 – 4 – 5 – 1 D = 962

1 – 5 – 2 – 4 – 3 – 1 D = 668

O problema do caminho mínimo / máximo:

Problema do caminho mínimo / máximo Otimização de redes lineares

Decisões estratégicas: selecionar o caminho mais curto / longo entre nós

Utilidade: caminho mais curto: rota de transporte, substituição de equipam, …

caminho mais longo: PERT, CPM e problema da mochila

Depósito 1 Cidade 1 1

2

3

4

5

6

4

3

3

4

2

2

2

Formulação do problema do caminho mínimo / máximo:

dij é a distância entre a origem i e o destino j

Var. decisão: xij = 1, se o arco (i,j) estiver no caminho mínino / máximo

0, caso contrário

ji,, 0

)( , 1

k outros os todospara 0,

)( , 1

..

ij

iik

jkj

x

sorvedourork

fontesk

xxAS

i j

ijijxdMaximizarMinimizar

Formulação do problema do caminho mínimo / máximo:

MIN / MAX Z = 4X12 + 3X13 + 3X24 + 2X25 + 4X35 + 2X46 + 2X56

S.A. X12 + X13 = 1 (fonte) - X46 - X13 = -1 (sorvedouro)

X12 = X24 + X25

X13 = X35

Var. decisão: xij = 1, se a ligação fizer parte do caminho mínimo / máximo

0, caso contrário

Depósito 1 Cidade 1 1

2

3

4

5

6

4

3

3

4

2

2

2

X46 = X24

X56 = X25 + X35

Resolução do problema do caminho mínimo:

Algoritmo Dijkstra:

Início: rotule o nó fonte de forma permanente com 0 e cada um dos nós

conectados a este, de forma temporária, com a distância do arco que une

1 a este. Todos os outros nós receberão um rótulo temporário .

Depósito 1 Cidade 1 1

2

3

4

5

6

4

3

3

4

2

2

2

1 4

1 3

0 0

*

Resolução do problema do caminho mínimo:

Algoritmo Dijkstra:

Passo 2: Selecione o nó com o menor rótulo temporário e faça-o

permanente. Então rotule cada um dos nós conectados a este, de forma

temporária, com a distância do arco que os une.

Repita o passo 2 até chegar no nó sorvedouro.

Depósito 1 Cidade 1 1

2

3

4

5

6

4

3

3

4

2

2

2

1 4

1 3

0 0

*

*

3 7

Resolução do problema do caminho mínimo:

Algoritmo Dijkstra:

Passo 2: Selecione o nó com o menor rótulo temporário e faça-o

permanente. Então rotule cada um dos nós conectados a este, de forma

temporária, com a distância do arco que os une.

Repita o passo 2 até chegar no nó sorvedouro.

Depósito 1 Cidade 1 1

2

3

4

5

6

4

3

3

4

2

2

2

1 4

1 3

0 0

*

*

2 6

* 2 7

Resolução do problema do caminho mínimo:

Algoritmo Dijkstra:

Passo 2: Selecione o nó com o menor rótulo temporário e faça-o

permanente. Então rotule cada um dos nós conectados a este, de forma

temporária, com a distância do arco que os une.

Repita o passo 2 até chegar no nó sorvedouro.

Depósito 1 Cidade 1 1

2

3

4

5

6

4

3

3

4

2

2

2

1 4

1 3

0 0

*

*

2 6

*

*

2 7

5 8

Resolução do problema do caminho mínimo:

Algoritmo Dijkstra:

Passo 2: Selecione o nó com o menor rótulo temporário e faça-o

permanente. Então rotule cada um dos nós conectados a este, de forma

temporária, com a distância do arco que os une.

Repita o passo 2 até chegar no nó sorvedouro.

Depósito 1 Cidade 1 1

2

3

4

5

6

4

3

3

4

2

2

2

1 4

1 3

0 0

*

*

2 6

*

*

2 7

5 8

*

Resolução do problema do caminho mínimo:

Algoritmo Dijkstra:

Passo 2: Selecione o nó com o menor rótulo temporário e faça-o

permanente. Então rotule cada um dos nós conectados a este, de forma

temporária, com a distância do arco que os une.

Repita o passo 2 até chegar no nó sorvedouro.

Depósito 1 Cidade 1 1

2

3

4

5

6

4

3

3

4

2

2

2

1 4

1 3

0 0

*

*

2 6

*

*

2 7

5 8

*

*

Resolução do problema do caminho mínimo:

Algoritmo Dijkstra:

Depósito 1 Cidade 1 1

2

3

4

5

6

4

3

3

4

2

2

2

1 4

1 3

0 0

*

*

2 6

*

*

2 7

5 8

*

*

Caminho mais curto: 1 – 2 – 5 – 6 : distância = 8

Exemplo - problema do caminho mínimo:

Um carro novo é comprado por US$12,000.00. O custo de manutenção e seu

preço de revenda dependem da idade do carro como segue:

Formule o problema que determine a política ótima de troca de veículos no

horizonte de 5 anos (leia-se política ótima aquela que minimiza a soma dos custos

de compra, manutenção e revenda).

0 1 2 3 4 5

Idade do carro (anos) Custo de Manutenção (US$) Idade do carro (anos) Preço de Revenda (US$)

0 2,000.00 1 7,000.00

1 4,000.00 2 6,000.00

2 5,000.00 3 2,000.00

3 9,000.00 4 1,000.00

4 12,000.00 5 0,000.00

Problema do caminho máximo:

CPM (critical path method)

Exemplo (caminho máximo): CPM (critical path method)

0 1

2

3

5

4

6

7

8 9 10

Número Atividade Atividade de pré-requisito Duração

0 Início do Trabalho - 0

1 Projeto de Simulação 0 2

2 Treinamento de Pessoal 1 6

3 Construção das Instalações 1 4

4 Certificação das Instalações 3,6 1

5 Aquisição de material 1 1

6 Aferição dos instrumentos 5 3

7 Teste do material adquirido 2,4 3

8 Montagem da cabine de simulação 7 1

9 Execução da simulação 8 2

10 Fim 9 0

Problema do caminho máximo: Resolução

CPM (critical path method)

Os cálculos do caminho crítico envolvem dois passos:

Passo 1: Forward pass (tempo mais cedo de ocorrência)

Passo 2: Backward pass (tempo mais tarde de ocorrência)

Uma atividade estará no caminho crítico se:

Exemplo (caminho máximo): CPM (critical path method)

0 1

2

3

5

4

6

7

8 9 10

0 2

8

6

3 6

7

11

12

14

14

0 2

14

14

12

11

2

6

4

1

3

1

3

1

3 1

2 0

8

8

7 4

7

Caminho crítico: 0 – 1 – 2 – 7 – 8 – 9 – 10 : distância = 14

Exemplo (caminho máximo): CPM (critical path method)

Caminho crítico: 0 – 1 – 2 – 7 – 8 – 9 – 10 : distância = 14

0 1

2

3

5

4

6

7

8 9 1000 11

22

33

55

44

66

77

88 99 1010

00 22

88

66

33 66

77

1111

1212

1414

1414

00 22

1414

1414

1212

1111

2

6

4

1

3

1

3

1

3 1

2 0

88

88

7744

77

tempo

1

2

2

8

7

11

8

9

12 14

3

5

6

6

4

O problema da árvore geradora mínima:

Em uma rede com n nós, uma árvore geradora é um grupo de n-1 arcos

que conectam todos os nós de uma rede sem formar loopings.

A árvore geradora mínima é uma árvore geradora em que a soma dos n-

1 arcos é a menor possível

Exemplo:

O problema da árvore geradora mínima:

Exemplo:

F.O. MIN 2Xab + 1Xac + 4Xae + 2Xbd + 3Xbc + 2Xcd + 2Xce + 5Xcg +

3Xeg + 2Xdf + 4Xfg + 4Xfh + 5 Xgh

S.A.

Xab + Xac + Xae 2

Xab + Xbc + Xbd 2

Xac + Xbc + Xcd + Xce + Xcg 2

Xbd + Xcd + Xdf 2

Xae + Xce + Xeg 2

Xdf + Xfg + Xfh 2

Xeg + Xfg + Xgh 1

Xfh + Xgh 1

1 Xab, Xac, Xae, ..., Xgh 0

Xab, Xac, Xae, ..., Xgh inteiras

a

b

c

d

e

f

g

h

a

b

c

d

e

f

g

h

Resolução do problema da árvore geradora mínima:

Algoritmo de resolução:

Seja N={1, 2, …, n} o conjunto de nós de uma rede, Ck o conjunto de nós

conectados de forma permanente na iteração k e Ĉk o conjunto de nós anda

não conectados de forma permanente na iteração k.

Passo 0: C0 = e Ĉ0 = N

Passo 1: Comece em qualquer nó i do conjunto Ĉ0, faça C1 = {i} e Ĉ1 = N-{i}

Passo geral k: selecione o nó j* de Ĉk-1 que resulte no menor arco até um nó

do conjunto Ck-1. Coloque j* permanentemente em Ck-1 e remova este de

Ĉk-1, ou seja,

Ck = Ck-1 + {j*} e Ĉk = Ĉk-1 – {j*}

Resolução do problema da árvore geradora mínima:

Solução:

Passo 0: C0 = e Ĉ0 = {a,b,c,d,e,f,g,h}

Passo 1: C1 = {e} e Ĉ1 = {a,b,c,d,f,g,h}

Passo 2: C2 = {e,c} e Ĉ1 = {a,b,d,f,g,h}

Passo 3: C3 = {e,c,a} e Ĉ1 = {b,d,f,g,h}

Passo 4: C4 = {e,c,a,d} e Ĉ1 = {b,f,g,h}

Passo 5: C5 = {e,c,a,d,b} e Ĉ5 = {f,g,h}

Passo 6: C5 = {e,c,a,d,b,f} e Ĉ5 = {g,h}

Passo 7: C5 = {e,c,a,d,b,f,g} e Ĉ5 = {h}

Passo 8: C5 = {e,c,a,d,b,f,g,h} e Ĉ5 =

Problema do fluxo máximo:

• O problema do fluxo máximo é um problema de enumeração de cortes.

• Um corte define um conjunto de arcos que, quando eliminado da rede,

causará um rompimento total do fluxo entre o nó de origem e o nó

sorvedouro.

• A capacidade do corte é igual à soma das capacidades de seus arcos.

Formulação do problema do fluxo máximo:

Var. decisão: xij = qtde (volume) que deve ir da origem i para o destino j

j)i,(, 0

j)i,(,

destinoouorigemj)i,(, 0 ..

ij

ijij

i

ik

j

kj

x

Cx

xxAS

cortei cortej

ijxZMaximizar

Resolução do problema do fluxo máximo:

• Resolução do problema de fluxo máximo por enumeração:

• Entre todos os possíveis cortes na rede, o que tiver a menor

capacidade dá o fluxo máximo na rede.

• Uma alternativa para determinar o fluxo máximo é enumerar

todos os cortes.

• Em grandes redes a enumeração pode ser uma tarefa difícil.

Assim, nestes casos, a necessidade de um algoritmo (ou

heurística) eficiente é imperativa.

• Alternativa: Algoritmo do fluxo máximo

PO – 201

FECHAMENTO

Professor: Rodrigo A. Scarpel

[email protected]

www.ief.ita.br/~rodrigo

Definição do problema:

1. Quais são as alternativas para a decisão?

2. Sob quais restrições a decisão é tomada?

3. Qual seria um critério objetivo para avaliar as

alternativas?

Construção do modelo:

Resolução do modelo:

1. Utilização de algoritmos ou métodos de

resolução

2. Análise de sensibilidade

Validação do modelo:

1. Formulação está adequada?

2. Resolve o problema?

Implementação da solução

Modelagem e Simulação:

Modelagem e Simulação:

PPG-PO (Programa de Pós-Graduação em Associação – ITA e UNIFESP)

Site: http://www.unifesp.br/campus/sjc/ppgpo

Disciplinas:

Introdução à Pesquisa Operacional (Obrigatória)

Programação Linear (Obrigatória)

Programação Inteira

Programação Não-Linear

Algoritmos em Grafos

Econometria

Gerência de Operações e Logística

Meta-Heurísticas em Otimização Combinatória

Métodos Estocásticos

Métodos Multicritérios de Apoio à Decisão

Modelagem de Investimentos e Riscos

Simulação

OBSERVAÇÃO

Este material refere-se às notas de aula do curso

PO-201 (Introdução a Pesquisa Operacional) do

Instituto Tecnológico de Aeronáutica (ITA). Não

substitui o livro texto, as referências

recomendadas e nem as aulas expositivas. Este

material não pode ser reproduzido sem autorização

prévia do autor. Quando autorizado, seu uso é

exclusivo para atividades de ensino e pesquisa em

instituições sem fins lucrativos.

153