Análise e Síntese de Algoritmos

Slides:



Advertisements
Apresentações semelhantes
Algoritmos em Grafos.
Advertisements

Fluxo em Redes Prof. Ricardo R. Santos.
Método Simplex Resolução Algébrica
Copiado do site Departamento Matemática da Universidade de Aveiron
Amintas engenharia.
CONTEÚDO PROGRAMÁTICO
Análise e Síntese de Algoritmos
Equações Homogéneas Vitor Maló Machado I. S. T., Maio de 2011.
Problemas de fluxo numa rede
INVESTIGAÇÃO OPERACIONAL
INVESTIGAÇÃO OPERACIONAL
Teorema Fundamental da Programação Linear
Inicialização: Escolher > 0 para ser usado como terminação. Sejam d 1, d 2, …, d n as direcções das coordenadas. Escolher um ponto inicial x 1 e seja y.
Restrições Lineares sobre os Reais/Racionais
Restrições Lineares sobre os Reais/Racionais
1 Optimização Na programação por restrições, há que considerar não apenas a satisfação de restrições mas também a optimização de uma função objectivo.
Prof. M.Sc. Fábio Francisco da Costa Fontes Outubro
CÁLCULO DA INVERSA DA BASE
Problemas de Forma Não-padrão
Resolvendo Programação Linear Em um Microcomputador
Programação Linear Método Simplex
PARTIÇÃO DE BENDERS Secundino Soares Filho Unicamp.
Método SIMPLEX Marcone Jamilson Freitas Souza
SIMPLEX ANÁLISE COMPLETA ANDERSON BESTETTI 1, EDUARDO RIGHES 1, EVERTON FONTOURA 2, GUILHERME LAZZARI 3, RODRIGO SCHRAMM 3, ROGERIO MARTINS 4 1 {anderson.bestetti,
Programação Linear.
Programação Linear Universidade Federal de Itajubá – UNIFEI
Informática Teórica Engenharia da Computação
Otimização Inteira 5a. Aula Franklina.
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.
Análise e Síntese de Algoritmos
Problemas de Fluxo Máximo
Problemas de fluxo em grafos 1º semestre/2012 Prof. André Renato
Sistema de equações lineares
Modelos de decisão Sistemas de Apoio à Decisão.
Otimização Linear Definições e Solução Gráfica
Cálculo da Direção de Caminhada: Gradiente de f(x)
Equações diferenciais ordinárias de segunda ordem
Programação Linear Universidade Federal de Itajubá – UNIFEI
Método Simplex Tópicos em Otimização
MÚLTIPLOS GRAUS DE LIBERDADE
Introdução Prof. Antonio Carlos Coelho
Otimização Numérica de Processos
Análise e Síntese de Algoritmos
EDO’s de 2ª ordem lineares não homogêneas Método dos coeficientes a determinar Cálculo 2 A – Turma H
Capitulo 5: Simplex Voltando ao exemplo da confecção da D. Maria, e modificando um pouco os valores apenas para facilitar nossos cálculos e o entendimento,
Pesquisa Operacional MUROLO ENGENHARIA DE PRODUÇÃO
Capitulo 8: Dualidade O que é um modelo Dual?
Modelos de Decisão com Critérios Multiplos
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
Fundamentos de linguagens de programação
Problemas de Forma Não-Padrão
Exercícios de Fluxo em Redes
Análise e Síntese de Algoritmos
Analise de Algoritmos e Notação Assintótica
Análise e Síntese de Algoritmos
Análise e Síntese de Algoritmos
PROGRAMAÇÃO LINEAR.
Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha.
Prof. Geraldo Nunes Silva
Análise e Síntese de Algoritmos Algoritmos GreedyCLRS, Cap. 16.
Busca Competitiva Disciplina: Inteligência Artificial
Algoritmo de Transportes Objecto de Aprendizagem Manuel Pina MarquesDEIG
              Investigação Operacional Métodos de Programação Linear: Gráfica, Simplex (Mestrado) Engenharia Industrial
Pesquisa Operacional:
Como ir do tableau da base (j 1,...j s-1,j s, j s+1....j m ) para o da base (j 1,...j s-1,k, j s+1....j m ) lembrando que : na coluna associada à x ji.
Professor: Cezar Augusto Pereira dos Santos
Programação Linear ADSA António Câmara.
O Método Simplex Prof. Gustavo Peixoto Silva Departamento de Computação Univ. Federal de Ouro Preto.
Transcrição da apresentação:

Análise e Síntese de Algoritmos Programação Linear CLRS, Cap. 29

Análise e Síntese de Algoritmos Contexto Algoritmos em Grafos (CLRS, Cap. 22-26) ... Fluxos máximos em grafos (CLRS, Cap. 26) Programação Linear (CLRS, Cap. 29) Fluxos de Custo Mínimo (S, Cap. 22) Programação Dinâmica (CLRS, Cap. 15) Algoritmos Greedy (CLRS, Cap. 16) Emparelhamento de Caracteres (CLRS, Cap. 32) Completude NP (CLRS, Cap. 34) Algoritmos de Aproximação (CLRS, Cap. 35) 2003/2004 Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Resumo Motivação Formas Standard e Slack Formulação de Problemas O Algoritmo Simplex Soluções Exequíveis Iniciais Dualidade 2003/2004 Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Exemplo Queremos ganhar pelo menos 50% dos votos (100.000 urbanos, 200.000 suburbanos e 50.000 rurais) Entrada representa o número de votos (em milhares) ganhos por cada 1000 Euros gastos em campanhas 2003/2004 Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Exemplo x1 = estradas; x2 = droga; x3 = subsídios; x4 = Imposto 2003/2004 Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Formulação Geral Programação Linear (LP): Optimizar (minimizar ou maximizar) função linear sujeita a conjunto de restrições lineares Função linear: Restrições lineares: 2003/2004 Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Perspectiva sobre LP Qualquer solução do conjunto de restrições designa-se por solução exequível Cada solução exequível corresponde a um valor da função objectivo (ou de custo) O conjunto de soluções exequíveis é designado por região exequível A região exequível é um conjunto convexo no espaço n-dimensional Conjunto convexo S: qualquer ponto de segmento que liga dois pontos em S está também em S S é designado por simplex Exemplo 2003/2004 Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Perspectiva sobre LP Utilização de representações canónicas: Formas standard e slack Algoritmos: Algoritmo Simplex Exponencial no pior caso; eficiente na prática e muito utilizado Algoritmo da Elipsóide Polinomial; normalmente ineficiente Métodos de Ponto Interior Polinomiais; eficientes na prática, competitivos com Simplex 2003/2004 Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Forma Standard função objectivo restrições Todos os valores cj, aij, bi são valores reais Representação matricial: Em que A = (aij), b = (bi) e c = (cj) e x = (xj) 2003/2004 Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Forma Standard Noções a reter: Solução exequível Solução não exequível Valor da função objectivo: valor objectivo Valor máximo/mínimo: valor objectivo óptimo LP sem soluções exequíveis diz-se não exequível; caso contrário diz-se exequível LP exequível, mas sem solução óptima, diz-se não limitado 2003/2004 Análise e Síntese de Algoritmos

Conversão para Forma Standard Problemas: Minimização em vez de maximização Variáveis sem restrição de serem não negativas Restrições com igualdade Restricões com  2003/2004 Análise e Síntese de Algoritmos

Conversão para Forma Standard Soluções: Minimização vs. Maximização: Multiplicar coeficientes por -1 Variáveis sem restrição de serem não negativas: Substituir xi por duas variáveis xi1 e por xi2, e multiplicar coeficientes de xi2 por –1 Restrições com igualdade: Introduzir duas restrições, uma com  e outra com  Restrições com  : Multiplicar restrição por –1 Exemplo 2003/2004 Análise e Síntese de Algoritmos

Conversão para Forma Slack Objectivo é trabalhar apenas com igualdades Todas as restrições, excepto as restrições das variáveis serem não negativas, são igualdades Para cada restrição introduzir uma nova variável s s: variável de slack Conversão de forma standard para forma slack: Exemplo 2003/2004 Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Forma Slack Nas expressões: Variáveis expressas em função de outras variáveis designam-se por variáveis básicas As variáveis que definem as variáveis básicas designam-se por variáveis não-básicas Definir: Exemplo 2003/2004 Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Forma Slack N: Conjunto de índices das variáveis não básicas, |N| = n B: Conjunto de índices das variáveis básicas, |B| = m Obs: Forma slack descrita por: (N, B, A, b, c, v) v: constante na função objectivo 2003/2004 Análise e Síntese de Algoritmos

Formulação de Problemas de LP Fluxos de Custo Mínimo: Caminhos Mais Curtos Fluxo Máximo ... 2003/2004 Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Outras Formulações Caminhos Mais Curtos Entre s e t: Fluxo Máximo: 2003/2004 Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos O Algoritmo Simplex Definições Pivots Exemplo O algoritmo simplex Soluções exequíveis iniciais Dualidade 2003/2004 Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Forma Slack Nas expressões: Variáveis expressas em função de outras variáveis designam-se por variáveis básicas As variáveis que definem as variáveis básicas designam-se por variáveis não-básicas Definir: Forma slack descrita por: (N, B, A, b, c, v) N: varáveis não básicas; |N| = n B: variáveis básicas; |B| = m v: constante na função objectivo 2003/2004 Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Pivots Exemplo Escolher variável não básica xe para passar a básica Variável de entrada Escolher variável básica xl para passar a não básica Variável de saída Calcular nova forma slack do problema 2003/2004 Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos O Algoritmo Simplex Calcular forma slack inicial Para a qual solução básica inicial é exequível Caso contrário reporta problema não exequível (retorna “unfeasible”) e termina Enquanto existir ce > 0 (i.e. valor de z pode aumentar) xe define variável de entrada (i.e. nova variável básica) Seleccionar xl xl corresponde a linha i que minimiza bi / aie, para aie > 0 Se aie < 0 para todo o i, retornar ‘ unbounded’ Aplicar pivoting com (N, B, A, b, c, v, l, e) 2003/2004 Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos O Algoritmo Simplex Para valores i em B Atribuir valor bi Caso contrário atribuir valor 0 i.e. variáveis em N Exemplos 2003/2004 Análise e Síntese de Algoritmos

Solução Exequível Inicial Um programa linear pode ser exequível, mas solução básica inicial pode não ser exequível Exemplo 2003/2004 Análise e Síntese de Algoritmos

Solução Exequível Inicial Seja L um programa linear na forma standard, e seja Laux definido da forma seguinte: Então L é exequível se e só o valor objectivo óptimo de Laux é 0 Se L tem solução, então Laux tem solução com x0 = 0, o valor óptimo Se o valor óptimo de x0 é 0, então solução é solução para L 2003/2004 Análise e Síntese de Algoritmos

Solução Exequível Inicial A partir de L construir Laux se solução básica inicial não for exequível Determinar indíce l com menor bi Aplicar pivot com e = 0 A solução básica calculada é exequível para Laux Aplicar passos do Simplex para calcular solução óptima Se solução óptima verifica x0 = 0 retornar solução calculada, sem x0 Caso contrário L não é exequível Exemplo 2003/2004 Análise e Síntese de Algoritmos

Solução Exequível Inicial Após a primeira aplicação de pivot, a solução básica é exequível para Laux Prova 2003/2004 Análise e Síntese de Algoritmos

Simplex: Resultados Formais Dado um programa linear (A, b, c): Se o algoritmo Simplex retorna uma solução, a solução é exequível Se o algoritmo Simplex retorna ‘unbounded’, o programa é não limitado Dado um programa linear (A, b, c) na forma standard, e B um conjunto de variáveis básicas, a forma slack é única 2003/2004 Análise e Síntese de Algoritmos

Simplex: Resultados Formais Variação do valor da função objectivo após pivoting: Valor da função objectivo não pode diminuir Variável escolhida tem coeficiente positivo Valor da variável é não negativo, pelo que novo valor da função de custo não pode diminuir Valor da função objectivo pode não aumentar Degenerescência Mas é sempre possível assegurar que algoritmo termina 2003/2004 Análise e Síntese de Algoritmos

Simplex: Resultados Formais O Simplex está em ciclo se existem formas slack idênticas para duas iterações do algoritmo Se o algoritmo Simplex não termina após iterações, então o algoritmo está em ciclo Cada conjunto B determina unicamente a forma slack Existem n+m variáveis e |B| = m Número de modos de escolher B: Número de formas slack distintas: Se algoritmo executar mais de iterações, então está em ciclo Eliminar ciclos: Regra de Bland: desempates na escolha de variáveis através da escolha da variável com o menor indíce 2003/2004 Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Dualidade Conceito essencial em optimização Normalmente associado com existência de algoritmos polinomiais E.g., fluxo máximo corte mínimo Programa linear dual: Programa primal: formulação original Exemplo 2003/2004 Análise e Síntese de Algoritmos

Dualidade Fraca em Programação Linear Seja x uma qualquer solução exequível do programa primal e seja y uma qualquer solução exequível do programa dual. Nestas condições: Prova 2003/2004 Análise e Síntese de Algoritmos

Dualidade em Programação Linear Seja x uma qualquer solução pelo algoritmo Simplex, e sejam N e B os conjuntos de variáveis para a forma slack final. Seja c’ o vector dos coeficientes da forma slack final e seja yi = -cn+i para (n+i)N; 0 caso contrário. Nestas condições: x é solução óptima para o programa primal y é a solução óptima para o programa dual e, Exemplo 2003/2004 Análise e Síntese de Algoritmos

Teorema Fundamental da Programação Linear Qualquer programa linear na forma standard: Ou tem solução óptima com valor finito, Ou não é exequível, Ou não é limitado. Se L não é exequível, o algoritmo Simplex retorna “infeasible” Se L não é limitado, o algoritmo Simplex retorna “unbounded” Caso contrário, o algoritmo Simplex retorna uma solução óptima com um valor objectivo finito 2003/2004 Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Exemplos Adicionais Algoritmo Simplex Solução exequível inicial Dualidade Fluxo máximo com o Simplex 2003/2004 Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Revisão Programação Linear Algoritmo Simplex A seguir: Fluxos de Custo Mínimo (S, Cap. 22) 2003/2004 Análise e Síntese de Algoritmos