Otimização
Otimização matemática (otimização de escrita alternativa) ou programação matemática é a seleção de um melhor elemento, com relação a algum critério, de algum conjunto de alternativas disponíveis.[1] Problemas de otimização surgem em todas as disciplinas quantitativas, desde ciência da computação e engenharia[2] até pesquisa operacional e economia, e o desenvolvimento de métodos de solução tem sido de interesse da matemática há séculos.[3]
No caso mais simples, um problema de otimização consiste em maximizar ou minimizar uma função real escolhendo sistematicamente valores de entrada de um conjunto permitido e computando o valor da função. A generalização da teoria e técnicas de otimização para outras formulações constitui uma grande área da matemática aplicada. De maneira mais geral, a otimização inclui encontrar os "melhores valores disponíveis" de alguma função objetivo dado um domínio (ou entrada) definido, incluindo uma variedade de diferentes tipos de funções objetivas e diferentes tipos de domínios.
Problemas de otimização
editarUm problema de otimização pode ser representado da seguinte forma:
- Dados: uma função f : A R de algum conjunto A de números reais;
- Buscando: um elemento x0 em A tal que f(x0) ≤ f(x) para todo x em A ("minimização") ou tal que f(x0) ≥ f(x) para todo x em A ("maximização").
Tal formulação é chamada de um problema de otimização ou um problema de programação matemática (um termo não diretamente relacionado à programação de computadores, mas ainda em uso, por exemplo, na programação linear). Muitos problemas do mundo real e teóricos podem ser modelados nessa estrutura geral. Problemas formulados usando esta técnica nos campos da física e da visão computacional podem se referir à técnica como minimização de energia, tratando o valor da função f como representativo da energia do sistema sendo modelado.
Normalmente, A é algum subconjunto do espaço euclidiano Rn, muitas vezes especificado por um conjunto de restrições, igualdades ou desigualdades que os membros de A devem satisfazer. O domínio A de f é chamado de espaço de busca ou o conjunto de escolha, enquanto os elementos de A são chamados de soluções candidatas ou soluções viáveis.
A função f é chamada, alternadamente, de função objetivo, função de custo (minimização), função utilidade (maximização), ou, em certos campos, função de energia, ou energia funcional. Uma solução viável que minimiza (ou maximiza, se este é a intenção) a função objetivo é chamada de uma solução ótima.
Por convenção, a forma padrão de um problema de otimização é definida em termos de minimização. Geralmente, a menos que tanto a função objetivo quanto a região viável sejam convexas em um problema de minimização, pode haver alguns mínimos locais, onde um mínimo local x* é definido como um ponto para o qual existe algum δ > 0 de modo que para todo x
a expressão
é verdadeira. Ou seja, em alguma região ao redor de x* todos os valores de função são maiores ou iguais ao valor naquele ponto. Os máximos locais são definidos de forma similar.
Um grande número de algoritmos propostos para resolver problemas não-convexos - incluindo a maioria dos programas comercialmente disponíveis - não são capazes de fazer uma distinção entre soluções ótimas locais e soluções ótimas rigorosas, e irão tratar as primeiras como verdadeiras soluções para o problema original. O ramo da matemática aplicada e da análise numérica que se preocupa com o desenvolvimento de algoritmos deterministas que são capazes de garantir convergência em um tempo finito à solução ótima verdadeira de um problema não-convexo é chamada de otimização global.
Notação
editarOs problemas de otimização são normalmente expressos com uma notação especial. Aqui estão alguns exemplos.
Valor mínimo e máximo de uma função
editarConsidere a seguinte notação:
Ela denota o valor mínimo de uma função objetivo x2 , ao escolher x de um conjunto de números reais . O valor mínimo neste caso é , ocorrendo em .
Da mesma forma, a notação
pede pelo valor máximo de uma função objetivo 2x, onde x pode ser qualquer número real. Neste caso, não há qualquer máximo visto que a função objetivo é irrestrita, então a resposta é "infinito" ou "indefinida".
Argumentos ótimos de variáveis
editarConsidere a seguinte notação:
ou de forma equivalente
Ela representa o valor (ou valores) do argumento x no intervalo que minimiza (ou minimizam) a função objetivo x2 1 (o verdadeiro valor mínimo da função pelo qual o problema não perguntou). Neste caso, a resposta é x = -1, desde que x = 0 é inviável, i.e., não pertence ao conjunto candidato.
De forma semelhante,
ou equivalentemente
representa o par (ou pares) que maximiza (ou maximizam) o valor da função objetivo , com a restrição adicional de que x está no intervalo (novamente, o valor máximo verdadeiro da expressão não importa). Neste caso, as soluções são os pares da forma (5, 2kπ) e (−5,(2k 1)π), onde k varia sobre todos os números inteiros.
Arg min e arg max algumas vezes são escritos como argmin e argmax, e correspondem a argumento do mínimo e argumento do máximo.
História
editarO método do gradiente ("gradient descent"), ou "método da descida mais íngreme" ("steepest descent"), e o método dos mínimos quadrados são técnicas de otimização que remontam a Gauss. Historicamente, a terminologia programação linear ("linear programming"), criada por George Dantzig, foi a primeira utilizada, embora muito da teoria tivesse sido introduzida por Leonid Kantorovich, em 1939. Dantzig publicou o algoritmo simplex, em 1947, e John von Neumann desenvolveu a teoria da dualidade no mesmo ano. Nesse contexto, "programação" não se refere a programação de computadores (apesar destes serem extensivamente usados hoje em dia para resolver problemas matemáticos), mas ao termo "programa", utilizado pelos militares norte-americanos para referirem-se à agenda proposta de horários para treinamentos e ações logísticas, que eram os problemas que Dantzig estava estudando à época. (Além disso, mais tarde, a utilização do termo "programação" foi aparentemente importante para obtenção de financiamento público, pois estava associada a áreas de pesquisa de alta tecnologia consideradas importantes.)
Outros importantes matemáticos no campo da otimização são:
Aplicações
editarAnteriormente, a principal preocupação do desenhista era conceber e construir um sistema com uma capacidade previamente especificada, enquanto a eficiência e o custo eram de secundária importância. Atualmente, a tarefa é muito mais demandante e consiste em atingir o objetivo principal (capacidade), porém com o máximo possível de efeitos positivos (eficiência, réditos, benefícios sociais e ambientais) e/ou o mínimo possível de efeitos adversos (consumo de combustível, custos, degradação ambiental). Em outras palavras, o objetivo da otimização de um sistema energético é encontrar a estrutura e os valores dos parâmetros do sistema que minimizam o custo final dos produtos, considerando as restrições impostas pela confiabilidade, disponibilidade, manutenção, operabilidade e impacto ambiental desejados para o sistema. Contudo, a complexidade dos sistemas e processos é tal que a busca pelo máximo ou mínimo de um critério de desempenho pode não ser atingido efetivamente a menos que procedimentos matemáticos determinísticos ou estocásticos, chamados geralmente de otimização, sejam usados. Para aplicar tais procedimentos, o problema considerado deve estar bem definido (objetivos e restrições), requerendo-se primeiro construir um modelo matemático que descreva o desempenho do sistema energético tão fielmente como for possível. Contudo, embora os objetivos estejam bem definidos, os dados frequentemente estão incompletos ou expressados em forma qualitativa ao invés de quantitativa e, além disso, as restrições são fracas ou imprecisas, ambos os casos devendo ser manejados pela expertise do engenheiro e a análise de sensibilidade. Diferentes ferramentas computacionais como são MATLAB, GAMS, LINGO, EXCEL, APMonitor, entre outras, são usadas para a solução desse tipo de problemas.
Ver também
editarReferências
- ↑ "The Nature of Mathematical Programming Arquivado em 2014-03-05 no Wayback Machine," Mathematical Programming Glossary, INFORMS Computing Society.
- ↑ Martins, Joaquim R. R. A.; Ning, Andrew (1 de outubro de 2021). Engineering Design Optimization (em inglês). [S.l.]: Cambridge University Press. ISBN 978-1108833417
- ↑ Du, D. Z.; Pardalos, P. M.; Wu, W. (2008). «History of Optimization». In: Floudas, C.; Pardalos, P. Encyclopedia of Optimization. Boston: Springer. pp. 1538–1542
Ligações externas
editar- Mathematical Programming Society
- COIN-OR— Infraestrutura Computacional para Pesquisa operacional
- Glossário de programação matemática
- Otimização global
- Ligações relacionadas à Otimização
- Decision Tree for Optimization SoftwareLigações para códigos fontes de algoritmos de otimização
- Optimization OnlineUm repositório para e-prints de otimização
- The Basics of Practical OptimizationUm texto sobre otimização
- Linguagens de modelagem
- Solvers
- CONOPT
- CPLEX- linear, quadratic, and mixed-integer programming solver
- JOpt
- Moocho- a very flexible open-source NLP solver
- Mosek
- SAS/OR
- Free Optimization Software by Systems Optimization Laboratory, Stanford University
- TANGO Project- Trustable Algorithms for Nonlinear General Optimization
- SmartDO- Engineering global optimization (commercial) software
- Bibliotecas
- OOL (Open Optimization library)- a set of optimization routines in C.
- CPLEX Component Libraries
- IOptLib (Investigative Optimization Library)- a free open source library for development of optimization algorithms (ANSI C).
- ALGLIBOptimization sources. C , C#, Delphi, Visual Basic.
- OAT (Optimization Algorithm Toolkit)- a set of standard optimization algorithms and problems in Java.