Como eliminar as restrições hard e começar a viver

Ou: um manual de autoajuda para otimização combinatória.

Poucas coisas são tão frustrantes quanto encarar um INFEASIBLE após horas trabalhando em um modelo de programação linear inteira.

Em problemas de otimização, temos as variáveis, a função objetivo e as restrições. As variáveis são onde podemos mexer; a função objetivo é o que queremos maximizar; e as restrições definem as fronteiras de até onde podemos ir.

O solver vasculha o espaço de busca para encontrar a combinação que otimiza a função objetivo respeitando os limites impostos. 

Na teoria, tudo certo. O que não está escrito em livro algum, é que, na vida real, nem toda restrição é uma restrição de verdade.

Restrição Hard vs. Soft

Uma restrição hard deve ser obrigatoriamente cumprida, sob o risco de a solução não fazer sentido físico ou lógico. É um binário: ou você vai pelo caminho A ou pelo B. Não conseguimos entrar em superposição e percorrer ambos (a menos que sejamos do tamanho de um átomo).

Já uma restrição soft pode ser descumprida, desde que você aceite as consequências. Não fazer uma prova de matemática não é o fim do mundo, mas você terá que arcar com o zero no boletim…

Como lidar com cenários sem solução?

Se o seu modelo travou em um impasse, aqui estão algumas sugestões:

Solução irrestrita: Comece simulando o melhor cenário possível, um “mundo sem restrições”. É o análogo ao exercício mental: o que você faria se não tivesse limites de tempo ou orçamento?

Relaxar as restrições: Será que o que você rotulou como hard é mesmo inegociável? Transformar uma barreira rígida em uma restrição soft talvez já mostre um caminho.

Questionar o modelo: A restrição precisa mesmo existir? Será que não dá para pensar de outra forma, reformular o problema?

Essas são algumas formas de lidar com restrições severas, tanto na matemática quanto no cotidiano!

Baseado em capítulo do livro “Algoritmos para Viver” e conversas com o Pedro Calais e Júlio Tanomaru.

O Compêndio de Ideias do Prof. Arnaldo: https://asgunzi.github.io/Compendium/

Deixe um comentário