Degenerescência, ciclagem e eficiência do Simple Prof.: Eduardo Uchoa http://www.logis.uff.br/~uchoa/poi 1
Modelo: maimizar z = 4,0 mad + 6,0 al Sujeito a 1,5 mad + 4,0 al 24 3,0 mad + 1,5 al 21 1,0 mad + 1,0 al 8 mad, al 0 24 2 3 2 = 3 + 5 5 5 5 21 3 39 = + 5 5 10 16 2 8 1 = + 3 5 5 5 5 208 4 14 z = 5 5 5 4 3 5 3 5 al 4,8 3,2 Solução ótima: 1 = 3,2 2 = 4,8 Lucro = 41,6 Obs.: 5 Z = 41,6 mad 4 = 4,2 (folga da montagem) 2
Alterando a 2ª restrição: Modelo: maimizar z = 4,0 mad + 6,0 al Sujeito a 1,5 mad + 4,0 al 24 1,0 mad + 3,0 al 18 al 1,0 mad + 1,0 al 8 mad, al 0 5 mad 3
Introduzir as variáveis de folga maimizar z = 4,0 1 + 6,0 2 Sujeito a 1,5 1 + 4,0 2 + 1 3 = 24 1,0 1 + 3,0 2 + 1 4 = 18 1,0 1 + 1,0 2 + 1 5 = 8 1, 2, 3, 4, 5 0 4
Montar o 1o dicionário isolando as variáveis de folga = 24 3 2 4 = 18 3 3 1 2 4 1 2 = 8 5 1 2 z = 4 + 6 1 2 5
Qual variável vai sair da base? = 24 3 2 4 = 18 3 3 1 2 4 1 2 = 8 5 1 2 z = 4 + 6 1 2 2 2 24 18 8 = min,, 4 3 1 = 6 6
Qual variável vai sair da base? = 24 3 2 4 = 18 3 3 1 2 4 1 2 = 8 5 1 2 z = 4 + 6 1 2 2 2 2 entra na base 24 18 8 = min,, 4 3 1 = 6 3 e 4 empataram no critério de seleção da variável que sairá da base. Logo, eistirão duas opções para o próimo dicionário. 7
1ª Opção: se 2 entrar e 3 sair da base: = 6 3 1 8 4 = 0 1 3 + + 8 4 = 2 5 1 + 8 4 z = 36 7 3 + 4 2 2 1 3 4 1 3 5 1 3 1 3 8
2ª Opção: se 2 entrar e 4 sair da base: = 0 1 4 + 6 3 = 6 1 1 3 3 = 2 2 1 + 3 3 z = 36 + 2 2 3 1 4 2 1 4 5 1 4 1 4 9
2ª Opção: se 2 entrar e 4 sair da base: = 0 1 4 + 6 3 = 6 1 1 3 3 = 2 2 1 + 3 3 z = 36 + 2 2 3 1 4 2 1 4 5 1 4 1 4 Nas duas opções, tem-se uma solução degenerada, onde uma variável básica tem valor zero na solução do dicionário. 10
Continuando na 2ª opção = 0 1 4 + 6 3 = 6 1 1 3 3 = 2 2 1 + 3 3 z = 36 + 2 2 3 1 4 2 1 4 5 1 4 1 4 11
Continuando na 2ª opção = 0 1 4 + 6 3 = 6 1 1 3 3 = 2 2 1 + 3 3 z = 36 + 2 2 3 1 4 2 1 4 5 1 4 1 4 1 1 entra na base 0 6 2 = min,, 1 6 1 3 2 3 12
Continuando na 2ª opção = 0 1 4 + 6 3 = 6 1 1 3 3 = 2 2 1 + 3 3 z = 36 + 2 2 3 1 4 2 1 4 5 1 4 1 4 1 1 1 3 entra na base 0 6 2 = min,, 1 6 1 3 2 3 = 0 sai da base 13
O novo dicionário: = 0 6 + 8 1 3 4 = 6 + 2 3 2 3 4 = 2 + 4 5 5 3 4 z = 36 12 + 14 3 4 14
= 0 6 + 8 1 3 4 = 6 + 2 3 2 3 4 = 2 + 4 5 5 3 4 z = 36 12 + 14 3 4 Houve a mudança de base, mas a solução tem o mesmo valor da solução dada pelo dicionário anterior. Quando isso ocorre, tem-se uma iteração degenerada do Simple. 15
Continuando: = 0 6 + 8 1 3 4 = 6 + 2 3 2 3 4 = 2 + 4 5 5 3 4 z = 36 12 + 14 3 4 4 4 4 5 entra na base 6 2 = min, 3 5 = 2 5 sai da base 16
16 2 8 1 = + 3 5 5 5 5 24 2 3 2 = 3 + 5 5 5 5 2 4 1 4 = + 3 5 5 5 5 208 4 14 z = 5 5 5 3 4 Este dicionário dá a solução ótima do problema com: 1 = 16/5 2 = 24/5 z = 208/5 17
Degenerescência em PL Definição: Um PL é degenerado se há pelo menos uma solução básica viável com uma variável básica com valor zero (=0). Essa solução é dita degenerada. Ao longo do Simple, a degenerescência surge quando há empate na seleção da variável que sairá da base. A iteração seguinte pode uma iteração degenerada. 18
Consequencias da Degenerescência Se um PL possui muitas soluções degeneradas, o método Simple pode demorar mais iterações do que o usual para chegar na solução ótima. Em certos casos etremamente raros, pode ocorrer ciclagem, o Simple pode visitar uma sequencia de soluções degeneradas (todas de mesmo custo) que se repetem infinitamente. Nesse caso, o método não chegaria na solução ótima. 19
Ciclagem no método Simple Não é fácil construir um PL que possa fazer o Simple ciclar. 20
Eemplo de um PL que pode ciclar min s. a 3 1 1 + 202 3 + 64 4 2 1 1 82 3 + 94 4 1 1 1 122 3 + 74 2 2 0 0 1,,, 0 1 2 3 4 3 21
Evitando a ciclagem Eistem algumas escolhas dentro do método Simple que garantem que a ciclagem nunca vai ocorrer. A mais simples é a Regra de Bland: Dentre as variáveis que podem entrar na base, escolha sempre a com menor índice; dentre as variáveis que podem sair da base também escolha a com menor índice Essas regras só precisam ser ativadas após uma longa sequencia de iterações degeneradas, quando se desconfia que está ocorrendo ciclagem. 22
Eficiência do método Simple O número de soluções básicas de um PL é finito Tomando um pouco de cuidado para não ocorrer ciclagem, cada iteração do Simple visita uma solução básica diferente O método Simple sempre termina em um número finito de iterações 23
Eficiência do método Simple Entretanto, o número de soluções básicas de um PL pode ser muito grande: n n! = m m! ( n m)! Eistem alguns PLs criados artificialmente em que o Simple visita todas as soluções básicas antes de chegar no ótimo! 24
Na prática o método Simple é muito eficiente! Na maioria dos casos, o Simple visita menos do que 2m soluções Quando o PL é muito degenerado isso pode chegar a 10m. De qualquer forma, com software adequado, problemas com milhões de variáveis/restrições são resolvíveis em um notebook. 25
OBSERVAÇÃO Este material refere-se às notas de aula do curso TEP117 (Pesquisa Operacional I) da Universidade Federal Fluminense (UFF) e foi criado a partir das notas do Prof. Rodrigo A. Scarpel do ITA (www.mec.ita.br/~rodrigo) e não pode ser reproduzido sem autorização prévia de ambos os autores. Quando autorizado, seu uso é eclusivo para atividades de ensino e pesquisa em instituições sem fins lucrativos. 26