Edgard Jamhour
Disciplina que estuda métodos analíticos para auxiliar na tomada de decisões. Procura encontrar soluções ótimas ou próximo de ótimas para problemas de engenharia industrial, economia e finanças, comunicações, planejamento e escalonamento de serviços e recursos, etc. P.O. é originária da Segunda Guerra Mundial, quando os cientistas de várias disciplinas se reuniram para resolver problemas militares de natureza tática e estratégica.
Existe grande superposição entre essas áreas Pesquisa Operacional busca obter soluções ótimas modelando o problema de forma matemática. Inteligência artificial busca resolver problemas de forma similar a humana, muitas vezes evitando a modelagem matemática do problema.
Solucionar problemas reais; Tomar decisões embasadas em fatos, dados e correlações quantitativas; Conceber, planejar, analisar, implementar, operar e controlar sistemas por meio da tecnologia bem como de métodos de outras áreas do conhecimento; Minimizar custos e maximizar o lucro; Encontrar a melhor solução para um problema, ou seja, a solução ótima.
1. otimização de recursos; 2. roteirização; 3. localização; 4. carteiras de investimento; 5. alocação de pessoas; 6. previsão de planejamento; 7. alocação de verbas de mídia; 8. determinação de mix de produtos; 9. escalonamento e planejamento da produção; 10. planejamento financeiro; 11. análise de projetos e etc.
Modelos obrigam os tomadores de decisão a tornarem explícitos seus objetivos. Modelos foçam a identificação e armazenamento de diversas decisões que influenciam no atingimento dos objetivos. Modelos forçam a identificação e armazenamento das relações entre diferentes decisões. Modelos forçam a identificação de limitações. Modelos forçam a determinação de variáveis a serem consideradas e sua quantificação. Modelos permitem a comunicação e o trabalho em grupo.
Variáveis do problema. São fatores controláveis e quantificáveis. Representam as variáveis de decisão. Parâmetros do problema. São os valores fixos do problema. Os valores financeiros dos dados os ou custos fixos da produção são alguns exemplos. Restrições. São aspectos que limitam a combinação de valores e variáveis de soluções possíveis. Função objetivo. É uma função que busca maximizar ou minimizar, dependendo do objetivo do problema. Ela é essencial na definição da qualidade da solução em função das incógnitas encontradas.
Um jovem estava saindo com duas namoradas: Sandra e Regina. Sabe, por experiência, que: Sandra, elegante, gosta de frequentar lugares sofisticados, mais caros, de modo que uma saída de três horas custará R$240,00; Regina, mais simples, prefere um divertimento mais popular, de modo que, uma saída de três horas custará R$160,00; Seu orçamento permite dispor de R$960,00 mensais para diversão; Seus afazeres escolares lhe darão liberdade de dispor de, no máximo, 18 horas e 40.000 calorias de sua energia para atividades sociais; Cada saída com Sandra consome 5.000 calorias, mas com Regina, mais alegre e extrovertida, gasta o dobro; Ele gosta das duas com a mesma intensidade.
Como deve planejar sua vida social para obter o número máximo de saídas? Variáveis de decisão: X 1 = número de saídas com Sandra; X 2 = número de saídas com Regina. Função objetivo: Maximizar z = x 1 + x 2 Restrições: 240x1 + 160x2 960 3x1 + 3x2 18 5000x1 + 10000x2 40000
NMaximize[ {x1+x2, 240x1 + 160 x2 <= 960, 3 x1 + 3x2 <= 18, 5000x1 +10000x2 <= 40000}, {x1,x2}] {5.,{x1->2.,x2->3.}}
1) Formulação do problema Determinar o objetivo O que se deseja maximizar (objetivo) ou minimizar (custo) Identificar as restrições Definir as variáveis controláveis Variáveis que não podem ser ajustadas Exemplo: quantidade a ser produza Definir as variáveis não controláveis (ou fixas) Variável que não se tem controle Exemplo: preço da matéria prima
2) Construção do modelo Modelagem matemática da função objetivo ou função custo Modelagem matemática das restrições como um conjunto de equações ou inequações A função objetivo e as restrições precisam ser formuladas em termos das variáveis controláveis
3) Resolução do Modelo Selecionar a técnica mais adequada para resolução do problema Técnicas possíveis: Programação Linear Programação Não-linear Programação Inteira Programação Inteira-Mista
4) Teste do modelo e da solução Verifica-se se a solução proposta atende aos requisitos do problema Técnicas de simulação podem ser utilizadas para testar a solução antes de implantação em campo 5) Implantação e acompanhamento Monitorar se as variáveis não controláveis ainda estão de acordo com o problema formulado. Medir resultados parciais e efetuar ajustes
Seja f(x) a função objetivo e x = {x 1, x 2,...,x n } as variáveis controláveis: Problema de minimização: encontrar x tal que f(x) é mínimo f(x) nesse caso é chamada função custo min x f(x) Problema de maximização: encontrar x tal que f(x) é máximo f(x) nesse caso é chamada função objetivo max x f(x)
Problemas sem restrições: Qualquer valor do vetor x corresponde a uma solução admissível ou realizável O valor de x encontrado é o mínimo ou máximo global da função f(x) Problemas com restrições: Existe restrições sobre quais valores o vetor x pode assumir Uma solução com valores de x que violam as restrições é dia não admissível ou não realizável Exemplo: minimize f(x) subject to 10 < x < 100
Programação Linear (PL) A função objetivo f(x) e as restrições são lineares em relação a x: Exemplo: f(x) = c 1 x 1 + c 2 x 2 +... + c n x n Região admissível: { x ϵ R n A x = b, x > 0 } A não é quadrada, mas tem mais colunas que linhas Programação Não-Linear (PNL) A função objetivo f(x) e/ou as restrições são não-lineares em relação a x: Exemplo: f(x) = c 1 x 2 1 + c 2 x 1 x 3 2 +... + c n 2 xn Região admissível: { x ϵ R n 5< x1*x2 <10; x2 2 <10; 2 xn <x 3 }
Otimização contínua As variáveis do modelo são números reais, e podem assumir qualquer valor em um intervalo: Exemplo: 5 < x 1 < 10 Otimização discreta Algumas ou todas as variáveis do modelo estão restritas a um conjunto discreto: Exemplo: x 2 ϵ {1,2,5,7,9,15} Otimização Combinatórica O problema consiste em encontrar uma ordem específica para elementos de um conjunto discreto Exemplo: Problema do caixeiro viajante, Minimum Spanning Tree, etc. Programação Inteira Todas as variáveis do modelo são número inteiros Se apenas algumas variáveis do modelo tiverem a restrição de ser inteiros, o problema é dito de Programação inteira mista Programação inteira pode ser linear ou não linear
Line Search Methods Trust-Region Methods Truncated Newton Methods Difference Approximations Quasi-Newton Methods Nonlinear Conjugate Gradient Method Nonlinear Simplex Method Ver https://neos-guide.org/content/algorithms-by-type
Bound Constrained Optimization Newton Methods Gradient Projection Methods Linear Programming Simplex Method Interior Point Methods Quadratic Programming Algorithms for Quadratic Programming Nonlinear Programming Augmented Lagrangian Methods Reduced Gradient Methods Sequential Quadratic Programming Feasible Sequential Quadratic Programming Semi-infinite Programming Central Cutting Plane Methods Discretization Methods KKT Reduction Methods SQP Reduction Methods
Um problema recorrente para os métodos de otimização para problemas não lineares é a convergência para uma solução ótima local: máximo global máximo local mínimo local mínimo global
Método iterativo utilizado para resolver problemas de otimização sem restrição. Procura encontrar a direção (s 0 ), para o qual o vetor inicial x 0 deve ser movido para reduzir o valor da função objetivo f(x). x = x 0 + a s 0 f(x 0 + a s 0 ) < f(x 0 )
Seja f(x) a função objetivo, com múltiplas variáveis controláveis, representadas pelo vetor x={x 1, x 2,..., x n }. Define-se o gradiente de f(x) como: f(x) = ( f/ x 1, f/ x 2,..., f/ x n ) Passo da iteração do gradiente descendente: x k+1 = x k - k f(x) O objetivo é obter: f(x 0 ) > f(x 1 ) > f(x 2 ) >... f(x n )
Como a convergência para o mínimo pode ser muito lenta, pode-se impor a seguintes condições de convergência: 1) Número máximo de passos 2) A função custo para de diminuir ou diminui muito pouco entre iterações sucessivas: f(x k+1 )= f(x k )=f(x k-1 )
f(x) = x 2 + 10 x ponto inicial: x 0 = 2 máximo de iterações: 20 Passo 0.1 Passo 0.01
Se o passo k for muito pequeno, o método vai convergir muito lentamente. Se o passo k for muito grande, o método pode não convergir. Veja o efeito do passo no endereço: http://www.onmyphd.com/?p=gradient.descent
Existe vários métodos apara ajustar k de forma adaptativa, a cada iteração (line search). Exemplos: Cauchy: gradiente mais descendente k é o valor de que minimiza a função: f(x k - f(x k ) ) Aproximação Barzilai and Borwein (1988) x k+1 = x k - k f(x k ) k = (x k -x k-1 ) T ( f(x k ) - f(x k-1 ) )/ f(x k ) - f(x k-1 ) 2
f(x) = x 2 + 10 x máximo de iterações: 20 x 0 = 2, x1 = 1.8 x 0 = 1, x1 = 2
Sistemas lineares podem ser resolvidos usando o método gradiente descendente: Ax b =0 Função custo: (mínimos quadrados) f(x)= Ax b 2 Gradiente: f(x) = 2 A T (Ax-b)
Seja um sistema de equações não lineares: G(x) = 0 Define-se a função custo: f(x) = 0.5 G(x)T G(x) Exemplo: G(x) = f(x) =
f(x) = Para h= 0.001 e x 0 = {0,0,0} Custo de x 0 : f(x 0 ) = 58.4561 x 1 = x 0 - h f(x 0 ) x 1 = {0.0075,0.002,-0.20944} Custo de x 1 : f(x 1 ) = 23.3064 x 2 = x 1 - h f(x 1 ) x 2 = {0.015005,0.0015482,-0.335103} Custo de x 2 : f(x 2 ) = 10.617 x 3 = x 2 - h f(x 2 ) x 1 = {0.0224955,0.00166978,-0.410501} Custo de x 3 : f(x 3 ) = 6.01309 x 4 = x 3 - h f(x 3 ) x 4 = {0.0299761,0.00163444,-0.455739} Custo de x 4 : f(x 4 ) = 4.31996