Optimização

19
1 Optimização Na programação por restrições, que considerar não apenas a satisfação de restrições mas também a optimização de uma função objectivo. Esta optimização foi explicitamente considerada no caso da programação linear em que o domínio das variáveis eram os números racionais/reais. Há que abordar agora os casos em que • as variáveis podem tomar apenas um número finito de valores (inteiros) • as restrições não sejam lineares. Esta optimização pode ser feita de uma forma construtiva, ou de uma forma reparativa.

description

Optimização. Na programação por restrições, há que considerar não apenas a satisfação de restrições mas também a optimização de uma função objectivo. Esta optimização já foi explicitamente considerada no caso da programação linear em que o domínio das variáveis eram os números racionais/reais. - PowerPoint PPT Presentation

Transcript of Optimização

Page 1: Optimização

1

OptimizaçãoNa programação por restrições, há que considerar não apenas a satisfação de restrições mas também a optimização de uma função objectivo.

Esta optimização já foi explicitamente considerada no caso da programação linear em que o domínio das variáveis eram os números racionais/reais.

Há que abordar agora os casos em que

• as variáveis podem tomar apenas um número finito de valores (inteiros)

• as restrições não sejam lineares.

Esta optimização pode ser feita de uma forma construtiva, ou de uma forma reparativa.

Page 2: Optimização

2

OptimizaçãoNa versão construtiva, o processo de optimização pode ser vista como a progressiva instanciação de valores às variáveis que modelam o problema.

Na versão reparativa, a optimização vai iterativamente procurando, a partir de uma “solução” completa mas não satisfatória, melhores soluções na vizinhança da solução corrente.

A simples extensão da programação linear com variáveis booleanas 0/1 é adequada para modelar uma série de problemas, permitindo:

• A escolha (disjunção) de restrições;• Violações da proporcionalidade;• Não linearidades.

Page 3: Optimização

3

OptimizaçãoExemplo 1: Escolha de 1 de 2 restrições

Pretende-se satisfazer uma de entre as duas restrições

X1 + 2X2 3

2X1 + X2 3

Introduzindo-se uma constante M suficientemente grande, a disjunção anterior pode ser modelada através de uma variável Booleana Z

X1 + 2X2 3 + M Z

2X1 + X2 3 + M (1-Z)

De facto, se Z = 0, a 1ª restrição é imposta e a 2ª restrição é trivialmente satisfeita. Se Z = 1, é a 2ª restrição que é imposta e a 1ª que é trivial.

Page 4: Optimização

4

OptimizaçãoExemplo 2: Escolha de pelo menos k de m restrições

Pretende-se satisfazer k de m restriçõesA11 X1 + ... + A1nXn B1

... Am1 X1 + ... + AmnXn Bm

Introduzindo-se uma constante M suficientemente grande, a selecção anterior pode ser modelada através de variáveis Booleana B1, ..., Bm fazendo para todas as restrições

Ai1 X1 + ... + AinXn Bi + M(1- Zi)

Impondo a restrição adicional Z1 + Z2 + ... + Zm k

O que garante que pelo menos k restrições sejam impostas (não trivialmente satisfeitas).

Page 5: Optimização

5

OptimizaçãoExemplo 3: Não proporcionalidade da função objectivo

Em muitos casos os custos não são lineares às unidades produzidas (C = c1 Xi), mas deve considerar-se um custo fixo de início de produção.

C = 0 se Xi = 0

= ki + ciXi se Xi > 0

Introduzindo-se uma variável booleana Zi, denotando a existência ou não de produção, o custo é expresso por

C = kiZi + ciXi

A condição Xi> 0 Zi=1 é imposta pela restrição

Xi M Zi

A condição Xi=0 Zi=0 é garantida, indirectamente, pela minimização do custo.

Page 6: Optimização

6

OptimizaçãoExemplo 4: Restrições não lineares

As restrições não lineares podem ser aproximadas por troços. Por exemplo, Y = X2, com X entre 0 e 4 pode ser aproximada por

Z1 Y1 = 0 + 1X1 para 0 X 1Z2 Y2 = 1 + 3X2 para 1 X 2Z3 Y2 = 4 + 5X3 para 2 X 3Z4 Y3 = 9 + 7X4 para 3 X 4

Para apenas um troço estar “activo”, a activação de uma só das variáveis Zi que identifica um troço é feita através de

Y = Y1 + ... + Y4 e Z1 + ... + Z4 = 1

E a ligação entre as variáveis X e Zi é feita por

M(1-Z3) X-3 e M(1-Z3) 2-X

Page 7: Optimização

7

OptimizaçãoA optimização feita de uma forma construtiva utiliza de uma forma geral dois tipos de técnicas

•Pesquisa

•Relaxação

Estes conceitos são ilustrados no seguinte problema BIP (Binary Integer Programming)

Max Z = 9x1 + 5 x2 +6 x3 + 4x4

Suj a 6x1 +3x2+ 5x3+ 2x4 10 - x3+ 2x4 10 -x1 + x3 0 - x2 + x4 0

Page 8: Optimização

8

Optimização

Como as variáveis são binárias X1 = 0 / 1 e o problema decompõe-se nos problemas

Max Z = 9x1 + 5 x2 +6 x3 + 4x4

Suj a 6x1 +3x2+ 5x3+ 2x4 10 - x3+ 2x4 1 -x1 + x3 0 - x2 + x4 0

Max 5 x2 +6 x3 + 4x4

Suj 3x2+ 5x3+ 2x4 10 - x3+ 2x4 1 x3 0

- x2 + x4 0

Max 9+5 x2 +6 x3 + 4x4

Suj 3x2+ 5x3+ 2x4 4 - x3+ 2x4 1 x3 1

- x2 + x4 0

Page 9: Optimização

9

OptimizaçãoA relaxação do problema (neste caso) traduz-se em considerar as variáveis não inteiras mas sim tomando valores no intervalo [0..1].

Neste caso, os subproblemas podem ser considerados como problemas de programação linear, o que origina os máximos 9 com (0,1,0,1)

Max 5 x2 +6 x3 + 4x4

Suj 3x2+ 5x3+ 2x4 10 - x3+ 2x4 1 x3 0

- x2 + x4 0

16.2 c/(1,.8,0,.8)

Max 9+5 x2 +6 x3 + 4x4

Suj 3x2+ 5x3+ 2x4 4 - x3+ 2x4 1 x3 1

- x2 + x4 0 Desta forma a pesquisa é mais promissora por X1 =1

Page 10: Optimização

10

OptimizaçãoA relaxação do problema (neste caso) traduz-se em considerar as variáveis não inteiras mas sim tomando valores no intervalo [0..1].

Neste caso, os subproblemas podem ser considerados como problemas de programação linear, o que origina os máximos 9 com (0,1,0,1)

Max 5 x2 +6 x3 + 4x4

Suj 3x2+ 5x3+ 2x4 10 - x3+ x4 1 x3 0

- x2 + x4 0

16.2 c/(1,.8,0,.8)

Max 9+5 x2 +6 x3 + 4x4

Suj 3x2+ 5x3+ 2x4 4 - x3+ x4 1 x3 1

- x2 + x4 0 Desta forma a pesquisa é mais promissora por X1 =1

Page 11: Optimização

11

OptimizaçãoDeste passo interessa considerar que:

O problema X1 = 0 tem uma solução exacta. Assim, só interessará explorar problemas com o potencial de melhorarem o óptimo provisório de 9.

O problema X1 = 1 tem uma solução potencial de 16.2 pelo que parece melhor que o anterior. A heurística de pesquisa é pois de explorar primeiro o subproblema.

16.2 c/(1,.8,0,.8)

Max 9+5 x2 +6 x3 + 4x4

Suj 3x2+ 5x3+ 2x4 4 - x3+ x4 1 x3 1

- x2 + x4 0

Page 12: Optimização

12

OptimizaçãoDecompondo o problema na variável X2 teremos:

13.8 com (1,0,.8,0)

Max 9+ 6 x3 + 4x4

Suj 5x3+ 2x4 4 - x3+ x4 1 x3 0 x4 0

16 c/(1,1,0,.5)

Max 14 +6 x3 + 4x4

Suj 5x3+ 2x4 1 - x3+ x4 1 x3 1 x4 1

16.2 c/(1,.8,0,.8)

Max 9+5 x2 +6 x3 + 4x4

Suj 3x2+ 5x3+ 2x4 4 - x3+ x4 1 x3 1

- x2 + x4 0

Page 13: Optimização

13

OptimizaçãoPelas razões anteriores prosseguiremos com X1=1 e X2=1:

16 com (1,1,0,.5)

Max 14+ 4x4

Suj 2x4 1 x4 1 0 0 x4 1

Max 20 + 4x4

Suj 2x4 -4 x4 2 1 1 x4 1

16 c/(1,1,0,.5)

Max 14 +6 x3 + 4x4

Suj 5x3+ 2x4 1 - x3+ x4 1 x3 1 x4 1

Page 14: Optimização

14

OptimizaçãoProsseguindo com X1=1 , X2=1 e X3=0 :

16 com (1,1,0,0)

Max 14Suj 0 1 0 1 0 0 0 1

16 com (1,1,0,.5)

Max 14+ 4x4

Suj 2x4 1 x4 1 0 0 x4 1

18 com (1,1,0,0)

Max 18Suj 2 1 1 1 0 0 1 1

Page 15: Optimização

15

OptimizaçãoAnalisando a solução X1=1 , X2=1 , X3=0 e X4 = 0:

16 com (1,1,0,0)

Max 14Suj 0 1 0 1 0 0 0 1

Verificamos que

• A solução é inteira.

• O seu valor é melhor que o máximo potencial dos subproblemas em aberto, que podem ser abandonados

Page 16: Optimização

16

Optimização

Estas técnicas de base são usadas pelo algoritmo branch and bound utilizado para a obtenção do óptimo de uma forma construtiva, mesmo que o problema não envolva aenas variáveis binárias.

Assim

• Um problema pode ser subdividido em dois (ou mais) subproblemas (Branch).

• O potencial de cada subproblema é avaliado, por uma técnica de relaxação (aproximação) (Bound)

• Os problemas sem potencial de melhorarem a melhor solução corrente são abandonados.

Page 17: Optimização

17

Optimização

Outras técnicas podem ser utilizadas em alguns casos (BIP)

• Eliminação de restrições redundantes

x4 1

• Fixação de variáveis

x3 0 x3 = 0

• Geração de planos de corte (cutting-planes)

6x1 + 3x2 + 5x3 + 2x4 + 10

Pode gerar

x1 + x3 1

x1 + x2 + x4 2

Page 18: Optimização

18

Optimização

Estas técnicas podem ser utilizadas em Mixed Integer Programming, com as adaptações óbvias

• A decomposição é feita normalmente através de uma valor de corte.

Se X [0..8] então X 4 e X > 4

• A geração de planos de corte é mais problemática

• As aproximações são feitas com aritmética de intervalos que levanta alguns problemas de aproximação, mas permite calcular bounds seguros, mesmo que não muito bons.

Page 19: Optimização

19

Optimização

O SICStus permite a optimização quer em MIP quer em IP