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

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

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

Apresentações semelhantes


Apresentação em tema: "Enumeração Implícita de Balas Eduardo Rodrigues Viana Jorge von Atzingen dos Reis."— 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 c j x j s. a. n j=1 a ij x j <=b i i=1,...,m x j {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 Passo adiante (Forward step): fixar uma variável em 1; Passo atrás (Backtrack step): fixar uma variável em 0; Enumeração Implícita

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

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

7 Critérios da Enumeração Implícita Função Objetivo e Restrições: T = {j: x j é livre, z+c j < z j, a ij <0 para cada i que y i = b i - jEJ a ij x j < 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 y i <0 e y i - jEJ min(0,a ij )< 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 x j criamos o conjunto M j M j = {i: y i - a ij < 0} v j = iEMj (y i -a ij ) Ou v j = 0 se M j é vazio Se todos os M j forem vazios é feito um passo atrás, selecionamos as variáveis x j que maximizam v j

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 y i = b i - jEJ a ij x j Y= min y i, i=1,...,m Z= jEJ c j x j Se Y>=0 e z

12 Balas Zero-One Additive Algorithm Passo 3: Crie o subconjunto T T = {j: x j é livre, z+c j < z j, a ij <0 para cada i que y i < 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 y i <0 e y i - jET min(0,a ij ) <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 x j crie um conjunto M j M j = {i: y i -a ij <0} Se todos Mj forem vazios vá ao passo 6. Caso Contrário, calcule v j = iEMj (y i -a ij ) Se Mj for vazio, v j =0 adicione a variável x j que maximiza v j à 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 Eduardo Rodrigues Viana Jorge von Atzingen dos Reis."

Apresentações semelhantes


Anúncios Google