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

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

Programação Linear Método Simplex Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação.

Apresentações semelhantes


Apresentação em tema: "Programação Linear Método Simplex Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação."— Transcrição da apresentação:

1 Programação Linear Método Simplex Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação

2 Programação Linear Variáveis: x1, …, xn Restrições: conjunto de inequações lineares em x1, …, x Função objetivo: função linear nas variáveis x1, …, xn Objetivo: encontrar os valores de x1,…,xn: Verificando todas as restrições Maximizando (ou minimizando) a função objetivo

3 Exemplo Variáveis: x1, x2 Restrições: m+n inequações Função objetivo: m = 3 n = 2

4 Espaço das Soluções: n-dimensional

5 Espaço das soluções Limitado: polígono convexo ou Ilimitado ou Impossível Problema da Programação Linear Inteira: NP-completo

6 Idéia do método simplex Partir de um vértice Caminhar para o vértice vizinho quemelhora o valor da função objetivo Caso encontre um vértice onde todos os vizinhos tem valor igual ou pior para a função objetivo, páre. Retorna o valor deste vértice.

7 Exemplo

8 Por que o método funciona ? Espaço das soluções é região convexa no espaço, dilimitada por hiperplanos n-1 dimensionais. Os pontos (x 1,…,x n,y) tais que y = f(x 1,…,x n ), f = função objetivo, representam um hiperplano deslocando-se no espaço quando este hiperplano deslocante encontra um ponto P onde onde todos os outros pontos da região ficam abaixo do hiperplano, este será o valor optimal. Se os vértices vizinhos de P ficam abaixo do hiperplano passando por P, então todos os pontos da região também ficam abaixo do hiperplano, já que a região é convexa.

9 Outro exemplo Variáveis : x1, x2, x3 Restrições : total = Função objetivo

10 Questões importantes 1) Como determinar se um ponto é um vértice ? 1) Como determinar se dois vértices são vizinhos ?

11 Vértices Cada inequação representando uma restrição corresponde a uma região n-dimensional no espaço n-dimensional das soluções A equação correspondente representa a fronteira desta região, um hiperplano (dimensão n-1). Chamamos tais equações de equações fronteira Um vértice é o único ponto onde algum subconjunto de hiperplanos se encontram.

12 Definição de vértice e vértices vizinhos Seja n = número de variáveis Um vértice é a solução de n equações fronteira. Dois vértices são vizinhos se têm em comum n-1 de suas respectivas equações fronteira. Pergunta: quantos vizinhos pode ter um vértice (em termos de m e n ?) Resposta: m.n vizinhos !

13 Exemplo Vertice B = ou =

14 Hipóteses Origem O= (0,0,...0) está no espaço das soluções Um vértice V é gerado por um único subconjunto de n inequações. Sempre podemos supor que o objetivo é maximar a função objetivo pois: min {f(x1,...,xn)} = max {– f(x1,...,xn)} Se O está no espaço das soluções então O é um vértice pois é solução de n inequações x1 0,..., xn 0

15 Algoritmo Simplex 1) V = (0,0,...0) 2) Enquanto V não é optimal faça 1) Determina vértice vizinho V para onde se mover 2) V = V

16 Como testar se O é optimal ? f(x1,...,xn) = c 1 x c n x n f(0,...0) = 0 Se f(0,...,0) = max{c 1 x c n x n }então ci 0, para todo i = 1,...,n Logo, se um dos ci é positivo, O não é otimal. Se O não é otimal, em quais das direções caminhar para aumentar o valor de f(0,...0) = 0? Basta escolher uma direção i onde ci > 0. Até onde podemos caminhar nesta direção ? Até que o ponto que se desloca (0,0,...0, c, 0,...0) torna-se solução de uma das equações fronteira. Seja E esta equação. Este é o próximo vértice V a ser testado. V é solução de n equações fronteira: x j 0 (para i j) e E

17 Exemplo Origem (0,0) não é otimal Escolhemos a direção x2 para caminhar Os pontos deste caminho são do tipo: (0,x2) A primeira inequação que é violada com o crescimento de x2 é (3) já que: (1)x2 - 4 (2)x2 4.5 (3)x2 3

18 Como transformar um vértice na origem Sejam E 1,...,E n as n inequações que determinam um vértice u: E i : a i1 x1 + a i2 x a in xn b i (para i = 1,...,n) y i = a distância de qualquer ponto da região ao hiperplano E i y i = b i – (a i1 x1 + a i2 x a in xn) y i 0 Transformar variáveis x1,...,xn nas variáveis y1,..., yn Escrever x1,...,xn em função de y1,...,yn A origem deste novo sistema é (y1,...,yn) onde yi=0 para todo i = 1,...,n = vértice u

19 Programa transformado Restrições são transformadas em inequações nas novas coordenadas Acrescenta-se as restrições y i 0, para i = 1,...,n A origem do novo programa é o vértice u A nova função objetivo é: Max(G) onde G é obtida substituindo as antigas coordenadas x1,...,xn por suas expressões envolvendo as novas y1,...,yn

20 Exemplo Programa original Programa transformado

21 Complexidade de Simplex Simplex executa no pior dos casos k iterações, uma para cada vértice do poliedro fronteira O número de vértices é De fato: n = número de variáveis n + m = número de inequações (m restrições + as restrições xi >= 0) Cada vértice corresponde a um conjunto de n inequações Logo: número de vértices = número de subconjuntos de tamanho n em um conjunto de tamanho n+m Existem exemplos de programas onde todos os vértices são testados Logo: complexidade de Simplex é exponencial

22 Discussão Simplex é um método exponencial Somente em casos raros o pior caso é atingido Na maioria dos casos, Simplex não verifica todos os vértices e finaliza rapidamente. Programação Linear inteira é NP-completo Será que Programação Linear (real) é polinomial ? Por muito tempo pensou-se que não !

23 Histórico 1979: Leonid Khachiyan propôs o algoritmo Elipsoid que resolve PL em tempo polinomial. Paradoxo: Elipsoid, embora polinomial, na prática é menos eficiente do que Simplex 1984: Narendra Kamarkar propôs o algoritmo de Karmarkar que resolve PL em tempo polinomial e é eficiente na prática. Diferente de simplex, o algoritmo alcança o máximo atravessando o interior do poliedro através de um caminho especial. Chamado: Método do ponto interior Códigos super rápidos atuais são baseados em simplex combinado com o método do ponto interior de Karmarkar.


Carregar ppt "Programação Linear Método Simplex Profa. Sandra de Amo Disciplina: Análise de Algoritmos Pós-graduação em Ciência da Computação."

Apresentações semelhantes


Anúncios Google