Programação Linear Método Simplex

Slides:



Advertisements
Apresentações semelhantes
Algoritmos de Caminho Mínimo em Grafos
Advertisements

Geometria Computacional Fecho Convexo II
Fluxo em Redes Prof. Ricardo R. Santos.
Método Simplex Resolução Algébrica
Administração de Florestas
Subespaço, base e dimensão
Amintas engenharia.
Programação Linear e Seus Teoremas
INVESTIGAÇÃO OPERACIONAL
A10-1 Definição: Um ponto x*  W diz-se um mínimo relativo ou ponto
Restrições Lineares sobre os Reais/Racionais
Restrições Lineares sobre os Reais/Racionais
2 de Junho de 2005Conclusão1 Pedro Barahona DI/FCT/UNL Junho 2005.
1 Conclusão DI/FCT/UNL 1º Semestre 2004/ Ciclos de Simulação A técnica usada no exemplo da queda livre pode ser utilizada para trajectórias a duas.
Prof. M.Sc. Fábio Francisco da Costa Fontes Outubro
CÁLCULO DA INVERSA DA BASE
Problemas de Forma Não-padrão
CÁLCULO DA INVERSA DA BASE
PERCEPTRON (CONTINUAÇÃO)
Algoritmo de Khachiyan Prof. Júlio Cesar Nievola.
PREDIÇÃO DATA MINING AULA 13 SANDRA DE AMO
Complexidade de Linguagens Influência do Modelo de Computação
Problemas NP-completos
Datalog Recursivo AULA 6 PGC Sistemas de Banco de Dados
PARTIÇÃO DE BENDERS Secundino Soares Filho Unicamp.
Interseção de Semiplanos
2002 LCG/UFRJ. All rights reserved. 1 Programação Linear Claudio Esperança Paulo Roma.
Geometria Computacional Fecho Convexo
Método SIMPLEX Marcone Jamilson Freitas Souza
Estrutura e movimento a partir de imagens
Prof. Rafael Stubs Parpinelli
Pesquisa Operacional profa Úrsula Lisbôa Fernandes Ribeiro
Sistemas Lineares.
Técnicas para algoritmos de superfície visível eficientes (Techniques for efficient visible-surface algorithms) Fabio Utzig Rodrigo Senger.
MATRIZES REAIS ( 3ª AULA ).
Programação Linear.
Programação Linear Universidade Federal de Itajubá – UNIFEI
Matemática para Economia III
Cálculo Numérico / Métodos Numéricos
Programação Linear Rosa Canelas Janeiro 2008.
Solução Básica Factível e Método Simplex Introdução ao Método Simplex Fase I e Fase II.
Alexis Adriano da Silva Vitek Consultoria Ltda.
Aula 5 Programação Inteira
Algoritmos de Busca Local
Cálculo Numérico / Métodos Numéricos
Otimização Linear Definições e Solução Gráfica
Matemática para Economia III
Disciplina Análise de Algoritmos BCC-UFU Profa. Sandra de Amo
Programação Linear Universidade Federal de Itajubá – UNIFEI
Espaços e Subespaços Vetoriais
Introdução Prof. Antonio Carlos Coelho
Otimização Numérica de Processos
Distância Mínima de Edição Profa. Sandra de Amo Bacharelado em Ciência da Computação - UFU.
Capitulo 8: Dualidade O que é um modelo Dual?
Como analisar um algoritmo
A Classe NP Teoria da Computação Profa. Sandra de Amo.
Busca com Informação e Exploração “Busca heurística”
Métodos de Resolução Solução Analítica Solução Numérica
PROGRAMAÇÃO LINEAR 17 DE SETEMBRO DE Definição 2. Aplicações 3. Problema Ilustrativo 3.1 Enunciado 3.2 Dados Físicos e Econômicos 3.3 Modelo.
Problemas NP-completos e Programação Dinâmica
Prof. Edison Oliveira de Jesus
Geometria Computacional Fecho Convexo
Análise e Síntese de Algoritmos
Exercícios de Fluxo em Redes
              Investigação Operacional Métodos de Programação Linear: Gráfica, Simplex (Mestrado) Engenharia Industrial
Pesquisa Operacional:
Professor: Cezar Augusto Pereira dos Santos
Programação Linear ADSA António Câmara.
Comportamento Assintótico
O Método Simplex Prof. Gustavo Peixoto Silva Departamento de Computação Univ. Federal de Ouro Preto.
Transcrição da apresentação:

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 Objetivo: encontrar os valores de x1,…,xn: Verificando todas as restrições Maximizando (ou minimizando) a função objetivo

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

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

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

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.

Exemplo

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.

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

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

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.

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 !

Exemplo Vertice B = 2 + 3 + 4 ou = 2 + 4 + 5

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

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

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

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

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

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

Exemplo Programa original Programa transformado

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

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 !

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.