1 / 19

Optimização

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.

adin
Download Presentation

Optimização

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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. • 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ção • Na 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ção Exemplo 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 + MZ 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ção Exemplo 2: Escolha de pelo menos k de m restrições Pretende-se satisfazer k de m restrições A11 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ção Exemplo 3: Não proporcionalidade da função objectivo Em muitos casos os custos não são lineares às unidades produzidas (C = c1Xi), 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ção Exemplo 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 + 1X1para0  X  1 Z2 Y2 = 1 + 3X2para1  X  2 Z3 Y2 = 4 + 5X3para2  X  3 Z4 Y3 = 9 + 7X4para3  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 + ... + Y4e Z1 + ... + Z4 = 1 E a ligação entre as variáveis X e Zi é feita por M(1-Z3)  X-3eM(1-Z3)  2-X

  7. Optimização • A 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 Max Z = 9x1 + 5 x2 +6 x3 + 4x4 Suj a 6x1 +3x2+ 5x3+ 2x4 10 -x3+ 2x4 1 -x1 + x3 0 -x2 + x4 0 Como as variáveis são binárias X1 = 0 / 1 e o problema decompõe-se nos problemas 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ção A 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ção A 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ção Deste 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ção Decompondo o problema na variável X2 teremos: 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.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

  13. Optimização Pelas razões anteriores prosseguiremos com X1=1 e X2=1: 16 c/(1,1,0,.5) Max 14 +6 x3 + 4x4 Suj 5x3+ 2x4 1 -x3+ x4 1 x3 1 x4 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

  14. Optimização Prosseguindo com X1=1 , X2=1 e X3=0 : 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 18 Suj 2  1 1  1 0  0 1  1 16 com (1,1,0,0) Max 14 Suj 0  1 0  1 0  0 0  1

  15. Optimização Analisando a solução X1=1 , X2=1 , X3=0 e X4 = 0: 16 com (1,1,0,0) Max 14 Suj 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

More Related