A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Enumeração Implícita de Balas

Apresentações semelhantes


Apresentação em tema: "Enumeração Implícita de Balas"— Transcrição da apresentação:

1 Enumeração Implícita de Balas
Eduardo Rodrigues Viana Jorge von Atzingen dos Reis

2 Programação Inteira Binária
Forma padrão de um problema de programação linear binária: min z= nj=1 cjxj s. a. nj=1 aijxj <=bi i=1,...,m xj {0,1) j=1,...,n

3 Enumeração Implícita Um nó corresponde a uma possível solução binária para x; Dois nós interligados possuem a mudança no valor de uma variável; Cada variável pode ter um de três estado: fixado em 1, fixado em 0 ou livre.

4 Enumeração Implícita Passo adiante (Forward step): fixar uma variável em 1; Passo atrás (Backtrack step): fixar uma variável em 0;

5 Passos de uma Enumeração Básica
Fixar uma variável livre no valor 1; Resolver o subproblema com as demais variáveis livres; Fixar a mesma variável no valor 0 e repetir o processo para o subproblema com xj= 0;

6 Árvore de Busca – Search Tree
Foward Backtrack Variáveis Livres Variáveis Livres

7 Critérios da Enumeração Implícita
Função Objetivo e Restrições: T = {j: xj é livre, z+cj< zj, aij<0 para cada i que yi= bi- jEJ aijxj< 0} Se T é vazio um passo atrás é executado

8 Critérios da Enumeração Implícita
Teste de inviabilidade: Se T não é vazio identificamos i tal que yi<0 e yi-jEJ min(0,aij)< 0 Se todas as variáveis pertencentes a T forem iguais a 1 a i-ésima restrição é inviável

9 Critérios da Enumeração Implícita
Teste de Ramificação de Balas: Para cada variável xj criamos o conjunto Mj Mj = {i: yi- aij< 0} vj = iEMj (yi-aij) Ou vj = 0 se Mj é vazio Se todos os Mj forem vazios é feito um passo atrás, selecionamos as variáveis xj que maximizam vj

10 Balas Zero-One Additive Algorithm
Passo Inicial: Passo 1: Verifique se b>=0. Se for a solução ótima é X=0. Caso Contrário deixe todas as variáveis livres Z recebe um valor suficientemente grande

11 Balas Zero-One Additive Algorithm
Passos Iterativos: Passo 2: Calcule yi= bi- jEJ aijxj Y= min yi, i=1,...,m Z= jEJ cjxj Se Y>=0 e z<Z, faça Z=z e X=x, x é a nova solução corrente vá para o passo 6. Caso Contrário vá ao passo 3

12 Balas Zero-One Additive Algorithm
Passo 3: Crie o subconjunto T T = {j: xj é livre, z+cj< zj, aij<0 para cada i que yi< 0} Se T é vazio vá para o passo 6. Caso Contrário vá para o passo 4.

13 Balas Zero-One Additive Algorithm
Passo 4: Teste de inviabilidade: avalia se existe um índice i o qual yi<0 e yi- jETmin(0,aij) <0 Se sim vá ao passo 6. Senão vá ao passo 5

14 Balas Zero-One Additive Algorithm
Passo 5: Teste de ramificação de Balas: Para cada variável livre xj crie um conjunto Mj Mj= {i: yi-aij<0} Se todos Mj forem vazios vá ao passo 6. Caso Contrário, calcule vj = iEMj (yi-aij) Se Mj for vazio, vj=0 adicione a variável xj que maximiza vj à solução e retorne ao passo 2

15 Balas Zero-One Additive Algorithm
Passo 6: Backtracking Modifique o vetor u mudando o sinal do elemento mais positivo. Todos os elementos à direita recebem o valor zero. Volte ao passo 2. Se não existir elementos possitivos em u a enumeração implícita está completa. A solução ótima é a corrente. Se Z for infinito, não existe solução viável.

16 Implementação Computacional
Fechem o PowerPoint, abram o C++ Builder e carreguem o arquivo Algorithm_balas.bpr


Carregar ppt "Enumeração Implícita de Balas"

Apresentações semelhantes


Anúncios Google