optimização
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 PresentationTRANSCRIPT
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.
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.
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.
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).
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.
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
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
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
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
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
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
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
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
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
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
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.
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
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.
19
Optimização
O SICStus permite a optimização quer em MIP quer em IP