210 likes | 304 Views
AULA COMPUTACIONAL Síntese de Sistemas de Separação (Cap. 7). 20 DE OUTUBRO DE 2008.
E N D
AULA COMPUTACIONAL • Síntese de Sistemas de Separação (Cap. 7) 20 DE OUTUBRO DE 2008
7.6 Resolução por Método de Busca Orientada por Árvore de Estados7.6.1 Descrição do Método de Rodrigo & Seader7.6.2 Resolução do Problema Ilustrativo pelo Método de Rodrigo & Seader
Localização de alimentação e/ou refluxo de colunas de destilação
As variáveis inteiras, z, com limites superiores e inferiores dados, zlz zu, podem ser expressas como um vetor de variáveis binárias, y Y = {0,1}q, pela seguinte fórmula: onde q é o número mínimo de variáveis 01 necessárias para representar z. Este número mínimo é dado por: sendo que a função “int” trunca o argumento real para um valor inteiro.
Programação linear inteira mista (MILP) min cT x + dT y sujeito a: A x + B yb x 0 xXn, yY = {0,1}q
Método de Branch & Bound O método de branch and bound está baseado nas idéias chaves de: Separação Relaxação Sondagem
Separação Denotando o problema MILP abaixo por (P) e o conjunto de suas soluções viáveis por FS(P). Então o conjunto de subproblemas (P1), (P2), ..., (Pn) de (P) é uma separação de (P) se: • uma solução viável de qualquer subproblema (P1), (P2), ..., (Pn) é também uma solução viável de (P); • cada solução viável de (P) é uma solução viável de exatamente um de seus subproblemas. Neste caso, o problema (P) é chamado de problema Pai e os subproblemas (P1), (P2), ..., (Pn) são chamados de problemas Filhos.
Uma questão importante no método de branch and bound é de como gerar uma separação do problema (P). A maneira geralmente utilizada é a introdução de restrições contraditórias em uma única variável binária (ou inteira) a cada estágio. Por exemplo, selecionando a variável binária y1 de (P), pode-se separá-lo, ou ramificá-lo (branching), em dois subproblemas (P1) e (P2):
Relaxação Um problema de otimização, denotado por (RP), é uma relaxação do problema (P) se o conjunto de soluções viáveis de (P) é um subconjunto de soluções viáveis de (RP), isto é, FS(P) FS(RP) Deste modo, se (RP) não tem solução viável, então (P) também não tem. Além disto, se zP é a solução ótima de (P) e zRP é a solução ótima de (RP), então: zRP zP ou seja, a solução do problema relaxado fornece um limite inferior para a solução do problema original. Naturalmente, se a solução ótima de (RP) é viável para (P), então ela é a solução ótima de (P).
A forma de relaxação mais freqüentemente utilizada em problemas MILP é tornar as variáveis binárias em variáveis contínuas: 0 y 1 gerando um problema LP relaxado. Outra forma de relaxação é remoção de algumas restrições de (P). Porém, existe um compromisso entre a relaxação e a qualidade do limite inferior (zRP) para a solução ótima. Em geral, quanto mais fácil for a solução do problema relaxado (maior relaxamento), maior será a diferença entre zRP e zP.
Sondagem Seja (CS) um subproblema candidato para a solução de (P). Deseja-se então determinar se a região viável de (CS), FS(CS), contém uma solução ótima de (P), para então encontrá-la. Este subproblema (CS) será considerado sondado se uma das seguintes condições for satisfeita: • estiver garantido que FS(CS) não pode conter uma solução melhor que a melhor solução já encontrada em estágios anteriores (ou solução titular, z*). Se nenhuma solução viável havia sido encontrada, então z* = ; • uma solução ótima de (CS) foi encontrada, zCS Em qualquer uma destas situações o subproblema (CS) não necessita de novas separações.
Denotando por (RCS) uma relaxação do subproblema (CS), e zRCS a sua solução ótima, então os critérios gerais de sondagem em um algoritmo de branch and bound, baseado em relaxação, são: • Se (RCS) não possui solução viável, então (CS) também não possui e pode ser considerado sondado; • Se zRCSz* então (CS) está sondado; • Se uma solução ótima de (RCS) é viável para (CS), então ela é também uma solução ótima de (CS), portanto o problema (CS) pode ser considerado sondado. Neste caso, a solução também é viável para (P) e se zRCS < z*, então a solução titular é substituída por esta nova solução, senão zRCS é um limite superior para o problema
Note que é possível ter zCSz* > zRCS e neste caso (CS) não pode ser considerado sondado, sendo zRCS um limite inferior para o problema. Portanto, quanto menor a diferença entre a solução do problema (RCS) e o problema (CS), mais freqüentemente estes critérios serão utilizados para eliminar ramificações. O sucesso dos algoritmos de branch and bound está baseado no percentual de eliminação de subproblemas e no esforço requerido para resolver os subproblemas candidatos.
Um algoritmo genérico para os métodos de branch and bound: • Inicializar a lista de subproblemas (CS) = (P), ou árvore binária, z* = ; • Se a lista de subproblemas (CS) estiver vazia, entãoFIM (se z* = , então não existe solução viável); • Selecionar um candidato da lista, tornado-o candidato (CS) corrente; • Selecionar e resolver uma relaxação (RCS) do (CS) corrente, obtendo a solução zRCS; • Aplicar os três critérios de sondagem: • Se (RCS) é inviável, então o (CS) corrente não tem solução viável e (ir para 2); • SezRCS z*, então o (CS) corrente não tem solução viável melhor que z* e (ir para 2); • Se a solução ótima de (RCS) é viável para (CS) e zRCS < z*, entãoz* zRCS e (ir para 2); • Separar o (CS) corrente e adicionar os seus subproblemas filhos na lista de subproblemas (CS). (ir para 2).
Existem três alternativas principais para selecionar os candidatos da árvore binária: • Busca em primeira profundidade (depth-first search) com retrocesso (LIFO: Last-In-First-Out). Técnica padrão da maioria dos algoritmos; • Busca em primeira largura (breadth-first search); • Busca pelo melhor limite.
Exemplo: Para ilustrar o método de branch and bound com relaxação das variáveis binárias, seja o seguinte problema: onde a solução ótima ocorre no ponto x* = 0 e y* = [1 0 1]T, com o valor da função objetivo S(x*,y*) = z* = 6.
nível 0 raiz nível 1 nível 2 nível 3 Busca em primeira largura Busca em primeira profundidade