Aprenda como aplicar técnicas de otimização nos problemas do dia a dia

Aprenda como aplicar técnicas de otimização nos problemas do dia a dia
João Vitor de Miranda
João Vitor de Miranda

Compartilhe

Você já esteve em situações em que teve que tomar decisões a partir de muitas possibilidades e gostaria de saber como realizar a otimização de problemas para sempre encontrar uma solução ótima?

Nestes casos, o ramo da pesquisa operacional pode ser extremamente útil. A partir dela os problemas do mundo real podem ser convertidos em modelos matemáticos que serão resolvidos por algoritmos que encontram a melhor solução possível em situações onde os recursos são limitados.

Existem diversas ferramentas de otimização neste ramo que se dividem entre problemas de programação linear e programação não linear. Embora possa parecer um conceito complexo à primeira vista, a aplicação de técnicas de otimização pode simplificar e aprimorar muitos aspectos do cotidiano.

Assim, exploraremos o que é a otimização, onde podemos aplicá-la e como utilizá-la para resolver problemas práticos do dia a dia.

O que é otimização

A otimização é um segmento da pesquisa operacional que lida com situações em que se busca maximizar ou minimizar uma função, linear ou não linear, sujeita a um conjunto de restrições. Esta função é chamada de função objetivo, sendo construída a partir do alvo do problema a ser solucionado.

As funções e restrições do problema exigem ser representadas em expressões matemáticas para que o algoritmo consiga entender as características do problema e consiga encontrar uma solução. O ponto chave para a resolução de um problema de otimização é justamente como traduzir um problema do mundo real para estas expressões matemáticas.

Exemplo:

Estrutura de um problema de otimização

Vamos imaginar que uma empresa tem recursos limitados, como por exemplo horas de trabalho e materiais, e deseja maximizar seus lucros produzindo uma combinação de diferentes produtos. Esta fábrica produz dois tipos de produtos: blusas ( B ) e calças ( C ).

A empresa tem disponíveis 40 horas de mão de obra por semana e 800 metros de tecido. Cada blusa requer 2 horas de trabalho e 4 metros de tecido, enquanto cada calça requer 4 horas de trabalho e 6 metros de tecido. O lucro por unidade é de $10 para blusas e $15 para calças. O objetivo é determinar quantas blusas ( B ) e quantas calças ( C ) a empresa deve produzir por semana para maximizar seu lucro.

Para solucionar este problema, precisamos traduzir a ideia para um modelo matemático. A quantidade de blusas e calças ideal será a solução para o nosso problema, e como é um valor que pode se alterar baseado na solução, precisamos definir as chamadas variáveis de decisão a partir dessas quantidades.

Variáveis de decisão

  • B: quantidade de blusas a serem produzidas por semana
  • C: quantidade de calças a serem produzidas por semana

Função objetivo

A partir das variáveis de decisão, podemos definir a função objetivo do nosso problema, que é maximizar o lucro com base na quantidade de blusas e calças produzidas. Como cada blusa gera um lucro de $10 e cada calça gera um lucro de $15, o lucro total gerado será:

  • Lucro total = 10B + 15C

O nosso alvo é maximizar esse lucro total, ou seja, encontrar o maior valor possível para essa função, com base nas limitações do nosso problema.

Restrições

Para obter o maior lucro possível, basta produzir a maior quantidade de blusas e calças, certo? Mas a empresa possui limitações, as quais devem ser definidas e consideradas a fim de se encontrar a melhor quantidade de blusas e calças a serem fabricadas.

Restrição de mão de obra: A empresa só pode usar no máximo 40 horas de trabalho por semana. Como cada blusa demanda 2 horas de trabalho e cada calça demanda 4 horas de trabalho, temos:

  • Mão de obra: 2B + 4C ≤ 40

Restrição de tecido: A empresa só pode usar no máximo 800 metros de tecido por semana. Como cada blusa utiliza 4 metros de tecido e cada calça utiliza 6 metros de tecido, temos:

  • Tecido: 4B + 6C ≤ 800

Por fim, é necessário definir as restrições simples mas muito importantes para o nosso problema. A quantidade de produtos a ser produzida precisa ser naturalmente maior ou igual a zero, portanto não podemos encontrar resultados negativos para as variáveis de decisão. Essas restrições são conhecidas como restrições de não-negatividade:

  • B ≥ 0, C ≥ 0

Como todas as expressões matemáticas são inequações lineares e a solução da quantidade de blusas e calças precisa ser um valor inteiro, uma vez que não faz sentido um número decimal na resposta, este problema se classifica como um problema de programação linear inteira. Dentro da otimização, existem outros tipos de problema, como os problemas de programação linear ou programação não linear. Essa tipificação do problema implica em mudanças na modelagem do problema ou na utilização de ferramentas diferentes para obter a solução.

Imersão dev Back-end: mergulhe em programação hoje, com a Alura e o Google Gemini. Domine o desenvolvimento back-end e crie o seu primeiro projeto com Node.js na prática. O evento é 100% gratuito e com certificado de participação. O período de inscrição vai de 18 de novembro de 2024 a 22 de novembro de 2024. Inscreva-se já!

Aplicações práticas

O exemplo da empresa é apenas um dentre os mais diversos possíveis que se possa imaginar. As aplicações da otimização são amplas no mundo real, bastando conseguir traduzir o problema para expressões matemáticas, definindo uma função objetivo para encontrar a melhor solução possível. Dentre os principais exemplos que podemos encontrar no dia a dia, temos:

  • Planejamento financeiro: Imagine que você queira maximizar seu lucro mensal, sujeito a restrições como salário, despesas fixas e variáveis. Podemos usar a otimização linear para alocar recursos de forma eficiente e atingir o objetivo de maximizar o lucro.
  • Produção e logística: Empresas frequentemente enfrentam o desafio de maximizar a produção sujeita a restrições como tempo, recursos humanos e materiais. A otimização linear pode ser aplicada para otimizar a programação de produção e a logística, minimizando custos e maximizando eficiência.
  • Dieta e Nutrição: Ao planejar uma dieta equilibrada, podemos utilizar a otimização linear para maximizar a ingestão de nutrientes, respeitando restrições como o número de calorias diárias e limitações alimentares específicas.
  • Otimização de tempo: Imagine que você tem um dia cheio de tarefas e compromissos. Seu objetivo é maximizar a eficiência e minimizar o tempo gasto em deslocamentos. Você pode tomar decisões estratégicas sobre a ordem das tarefas ou os meios de transporte para otimizar seu tempo e chegar ao final do dia com mais momentos livres.

Ferramentas

A resolução manual de problemas de otimização linear pode ser desafiadora. Felizmente, existem várias ferramentas computacionais que facilitam a resolução desses problemas. É possível solucionar problemas de otimização com o Excel e o MATLAB. Entretanto, uma ferramenta muito poderosa é a biblioteca pyomo da linguagem de programação Python.

A biblioteca pyomo permite construir modelos matemáticos personalizados, inserindo variáveis de decisão, função objetivo e restrições, se integrando a algoritmos de solução de problemas como o GLPK, BARON, CBC, CPLEX e Gurobi, o que torna essa ferramenta muito versátil e apta a resolver os mais variados tipos de problema de otimização.

Na Alura, você pode encontrar conteúdos que exploram as técnicas e ferramentas para estes problemas na Formação Otimização com Python.

Conclusão

Aplicar técnicas de otimização nos problemas do dia a dia não apenas melhora a eficiência, mas também promove um estilo de vida mais equilibrado e satisfatório. Ao compreender os desafios, priorizar tarefas, tomar decisões embasadas e otimizar recursos, é possível transformar obstáculos em oportunidades de crescimento. A incorporação dessas práticas no cotidiano contribui para uma vida mais produtiva e realizadora.


Créditos

João Vitor de Miranda
João Vitor de Miranda

Bacharel em Matemática e pós graduado em Data Science e Analytics. Com conhecimento em Matemática, Estatística, Excel, Python, R e SQL/NoSQL.

Veja outros artigos sobre Data Science