1 / 23

Programação Linear Método Simplex

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. 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

eliza
Download Presentation

Programação Linear Método Simplex

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programação LinearMé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 que “melhora” 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 (x1,…,xn,y) tais que y = f(x1,…,xn), 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 = 4 + 3 Função objetivo

  10. Questões importantes • Como determinar se um ponto é um vértice ? • 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çõesfronteira. • 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 = 2 + 3 + 4 ou = 2 + 4 + 5

  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 • V = (0,0,...0) • Enquanto V não é optimal faça • Determina vértice vizinho V’ para onde se mover • V = V’

  16. Como testar se O é optimal ? • f(x1,...,xn) = c1x1 + ... + cnxn • f(0,...0) = 0 Se f(0,...,0) = max{c1x1 + ... + cnxn}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: xj ≥ 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: • x2 ≥ - 4 • x2 ≤ 4.5 • x2 ≤ 3

  18. Como transformar um vértice na origem Sejam E1,...,En as n inequações que determinam um vértice u: Ei: ai1x1 + ai2x2 + ... ain xn ≤ bi (para i = 1,...,n) yi = a distância de qualquer ponto da região ao hiperplano Ei yi = bi – (ai1x1 + ai2x2 + ... ain xn) yi ≥ 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 yi ≥ 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. Programa original Programa transformado Exemplo

  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.

More Related