Calculadora de Programação Linear (Método Gráfico)

Use esta Calculadora de Programação Linear (Método Gráfico) para informar valores, ajustar opções e analisar resultados em uma área de trabalho compacta e responsiva.

Os resultados são calculados automaticamente conforme você informa os dados.

Função objetivo

Use x e y como variáveis de decisão.

Restrições

Arraste uma linha de fronteira no gráfico para ajustar o lado direito.

Solução ótima -
Método dos pontos de canto e observações de sensibilidade

▼ Veja explicações e dicas abaixo ▼

O que é programação linear?

Programação linear é um método para escolher os melhores valores das variáveis de decisão quando o objetivo e as restrições podem ser escritos com expressões lineares. Em um problema com duas variáveis, elas geralmente são chamadas de \(x\) e \(y\). O objetivo é tornar o valor da função objetivo o maior ou o menor possível, ainda satisfazendo todas as restrições.

Um modelo simples de programação linear tem três partes:

  • Variáveis de decisão: as quantidades que estão sendo escolhidas, como o número de unidades de dois produtos a fabricar.
  • Função objetivo: o valor a maximizar ou minimizar, como lucro, custo, tempo ou distância.
  • Restrições: limites ou requisitos escritos como inequações ou equações lineares.

Em um modelo com duas variáveis, a função objetivo geralmente tem a forma:

$$ z = c_x x + c_y y $$

As restrições geralmente têm formas como:

$$ a x + b y \le \text{rhs} $$
$$ a x + b y \ge \text{rhs} $$
$$ a x + b y = \text{rhs} $$

A calculadora resolve exatamente problemas contínuos de programação linear com duas variáveis a partir de entradas decimais. Ela verifica pontos de vértice, representantes viáveis das fronteiras e direções de recessão. Assim, também pode classificar semiplanos, faixas, retas, modelos inviáveis e funções objetivo ilimitadas.


Por que a programação linear é importante

A programação linear é útil porque muitas decisões reais envolvem recursos limitados. Uma empresa pode querer maximizar o lucro com mão de obra e materiais limitados. Uma transportadora pode querer minimizar o custo atendendo aos requisitos de entrega. Um estudante pode usá-la para entender como sistemas de inequações se relacionam com a otimização.

O valor da programação linear não está apenas no número final. Ela também ajuda a perceber quais restrições são mais importantes. Uma restrição ativa na solução pode ser o motivo pelo qual não é possível melhorar ainda mais a função objetivo. Uma restrição com folga pode não afetar a melhor resposta para o modelo atual.


Termos importantes

  • Variável de decisão: uma quantidade que você está tentando escolher. Nesta calculadora, as variáveis são \(x\) e \(y\).
  • Função objetivo: a expressão que será maximizada ou minimizada, como \(z = 40x + 30y\).
  • Restrição: um limite ou requisito, como \(2x + y \le 100\).
  • Ponto viável: um ponto \((x, y)\) que satisfaz todas as restrições.
  • Região viável: o conjunto de todos os pontos viáveis.
  • Reta de fronteira: a reta criada ao substituir uma inequação por uma igualdade. Por exemplo, \(2x + y \le 100\) tem a reta de fronteira \(2x + y = 100\).
  • Vértice: um vértice da região viável, geralmente onde duas retas de fronteira se encontram.
  • Restrição ativa: uma restrição que é exatamente atingida na solução.
  • Folga: espaço não utilizado em uma restrição \(\le\). Por exemplo, se um limite de recurso não for totalmente utilizado, ele terá folga.
  • Função objetivo ilimitada: um caso em que a função objetivo pode continuar melhorando sem um melhor valor finito.
  • Modelo inviável: um caso em que nenhum ponto satisfaz todas as restrições ao mesmo tempo.

Como funciona o método gráfico dos vértices

O método gráfico funciona porque uma inequação linear com duas variáveis divide o plano cartesiano em um semiplano. Já uma restrição de igualdade limita os pontos viáveis à sua reta de fronteira. Quando todas as restrições são representadas juntas, sua sobreposição é a região viável. Se existir um ótimo finito para uma região viável poligonal limitada, ele poderá ser encontrado em um vértice.

O processo básico é:

  1. Escreva a função objetivo.
  2. Escreva cada restrição como uma restrição linear.
  3. Represente graficamente as retas de fronteira das restrições.
  4. Identifique a região onde todas as restrições são verdadeiras.
  5. Encontre os vértices viáveis.
  6. Calcule a função objetivo em cada vértice viável.
  7. Escolha o maior valor para um problema de maximização ou o menor valor para um problema de minimização.

Para a função objetivo:

$$ z = c_x x + c_y y $$

onde:

  • \(x\) = primeira variável de decisão
  • \(y\) = segunda variável de decisão
  • \(c_x\) = coeficiente da função objetivo para \(x\)
  • \(c_y\) = coeficiente da função objetivo para \(y\)
  • \(z\) = valor da função objetivo

Uma restrição típica é:

$$ a x + b y \le \text{rhs} $$

onde:

  • \(a\) = coeficiente de \(x\)
  • \(b\) = coeficiente de \(y\)
  • \(\text{rhs}\) = lado direito da restrição

Para um limite de recurso \(\le\), a folga pode ser escrita como:

$$ \text{slack} = \text{rhs} - (a x + b y) $$

Para um requisito mínimo \(\ge\), a ideia semelhante é o excedente:

$$ \text{surplus} = (a x + b y) - \text{rhs} $$

Um valor de folga ou excedente igual a zero significa que a restrição está ativa nesse ponto.


Exemplos práticos de programação linear

Exemplo 1: maximizando uma função objetivo de dois produtos

Suponha que uma pequena oficina fabrique dois produtos. Seja \(x\) o número de unidades do primeiro produto e \(y\) o número de unidades do segundo produto. A função objetivo é:

$$ \text{Maximize } z = 40x + 30y $$

As restrições são:

$$ \begin{aligned} 2x + y &\le 100 \\ x + y &\le 80 \\ x &\le 40 \\ x &\ge 0 \\ y &\ge 0 \end{aligned} $$

Os vértices viáveis são:

Vértice Valor da função objetivo \(z = 40x + 30y\)
\((0, 0)\) \(0\)
\((40, 0)\) \(1600\)
\((40, 20)\) \(2200\)
\((20, 60)\) \(2600\)
\((0, 80)\) \(2400\)

O maior valor da função objetivo é \(2600\), portanto o melhor vértice é:

$$ (x, y) = (20, 60) $$

Nesse ponto, as duas primeiras restrições estão ativas, enquanto a restrição \(x \le 40\) tem folga.


Exemplo 2: minimizando um modelo baseado em requisitos

Agora suponha que o objetivo seja minimizar:

$$ \text{Minimize } z = 6x + 8y $$

com as restrições:

$$ \begin{aligned} x + y &\ge 12 \\ 2x + y &\ge 16 \\ x + 3y &\ge 18 \\ x &\ge 0 \\ y &\ge 0 \end{aligned} $$

Esse tipo de modelo descreve uma situação em que requisitos mínimos precisam ser atendidos. Como as inequações usam \(\ge\), a região viável fica do lado de cada reta que satisfaz o mínimo.

Alguns vértices viáveis e seus valores da função objetivo são:

Vértice Valor da função objetivo \(z = 6x + 8y\)
\((0, 16)\) \(128\)
\((4, 8)\) \(88\)
\((9, 3)\) \(78\)
\((18, 0)\) \(108\)

O menor valor listado é \(78\), portanto o vértice que minimiza a função é:

$$ (x, y) = (9, 3) $$

Exemplo 3: uma função objetivo ilimitada

Uma região viável ilimitada não significa automaticamente que o modelo não tenha uma resposta útil. A questão importante é saber se a função objetivo pode continuar melhorando indefinidamente dentro da região viável.

Por exemplo:

$$ \text{Maximize } z = x + y $$

sujeita apenas a:

$$ \begin{aligned} x &\ge 0 \\ y &\ge 0 \end{aligned} $$

Não há limite superior para \(x\) nem para \(y\). Avançar pelo primeiro quadrante continua aumentando \(z\), portanto não existe um máximo finito.


Como interpretar o resultado

Um resultado finito como “Máx. \(z\) em \((x, y)\)” ou “Mín. \(z\) em \((x, y)\)” geralmente vem da comparação entre vértices viáveis em uma região poligonal não degenerada. Modelos formados apenas por igualdades podem ter um valor finito ao longo de uma reta ou semirreta; nesse caso, a calculadora informa um ponto representativo e descreve o conjunto completo de pontos ótimos.

Quando o modelo tem vértices, a tabela de vértices mostra os candidatos comparados, e sua linha ótima é o melhor vértice finito selecionado. Um modelo finito formado apenas por igualdades pode não ter vértices, então sua tabela pode ficar vazia.

Uma restrição ativa tem folga igual a zero ou quase zero no ponto ótimo. Isso significa que o ponto ótimo está na reta de fronteira dessa restrição. Um valor de folga positivo geralmente indica que a restrição não foi totalmente utilizada na solução selecionada.

Se o resultado disser que o modelo é inviável, as restrições entram em conflito e nenhum ponto satisfaz todas elas. Se o resultado disser que a função objetivo é ilimitada, o modelo ainda pode ser matematicamente válido, mas não possui um melhor valor finito na direção escolhida. Para um modelo finito formado apenas por igualdades e sem vértices, use o ponto representativo e a descrição do conjunto ótimo em vez de esperar uma linha na tabela.

O gráfico é um recurso visual. Os números informados vêm das equações do modelo, das interseções candidatas, das verificações de viabilidade e das comparações dos valores da função objetivo.


Erros e equívocos comuns

  • Esquecer a não negatividade: se \(x\) e \(y\) representarem quantidades como unidades, caixas, horas ou porções, valores negativos geralmente não fazem sentido. Inclua \(x \ge 0\) e \(y \ge 0\) quando necessário.
  • Usar a direção errada da inequação: limites de recursos geralmente usam \(\le\), enquanto requisitos mínimos geralmente usam \(\ge\).
  • Colocar os coeficientes da função objetivo nas linhas de restrição: a função objetivo descreve o que você quer otimizar. As restrições descrevem os limites ou requisitos que precisam ser satisfeitos.
  • Usar uma direção de objetivo nula: se os dois coeficientes da função objetivo forem zero, todo ponto viável terá valor da função objetivo igual a \(0\), então toda a região viável será ótima.
  • Usar uma restrição constante: uma linha com dois coeficientes iguais a zero é sempre verdadeira e redundante, ou sempre falsa e torna o modelo inviável.
  • Esperar respostas inteiras: uma solução gráfica de programação linear pode incluir decimais. Se as variáveis precisarem ser números inteiros, o problema será de programação inteira, não um problema padrão de programação linear com duas variáveis.
  • Supor que toda região ilimitada é um problema: uma região pode ser ilimitada e ainda ter um ótimo finito para algumas direções da função objetivo.
  • Interpretar demais a janela do gráfico: um gráfico cortado ou ampliado pode esconder partes distantes da região viável, mas o cálculo se baseia em interseções numéricas e testes de viabilidade.
  • Ignorar ótimos alternativos: em alguns modelos, um segmento, uma semirreta, uma reta ou uma região viável inteira fornece o mesmo melhor valor da função objetivo. O resultado das soluções ótimas descreve esse conjunto completo.

Quando usar programação linear

Use um modelo de programação linear com duas variáveis quando:

  • Você tiver duas variáveis de decisão.
  • A função objetivo puder ser escrita como uma expressão linear.
  • Toda restrição puder ser escrita como uma inequação ou equação linear.
  • Você precisar maximizar ou minimizar uma quantidade.
  • Um gráfico da região viável ajudar a explicar a decisão.
  • Você quiser comparar vértices candidatos em vez de resolver um modelo de otimização maior.

Exemplos comuns em sala de aula e na prática incluem planejamento da produção, problemas de dieta ou mistura, modelos de transporte, distribuição de orçamento, programação com dois tipos de atividade e problemas de lucro ou custo limitados por recursos.


Limitações e pontos importantes

O método gráfico dos vértices foi desenvolvido para modelos lineares com duas variáveis. Ele não se destina a problemas com três ou mais variáveis, fórmulas não lineares, inequações estritas, entradas aleatórias, múltiplos objetivos ou decisões que precisem ser exclusivamente inteiras.

A calculadora aceita coeficientes numéricos decimais e negativos, mas o significado desses valores depende do modelo. Um coeficiente negativo pode fazer sentido em alguns modelos algébricos e não em outros. As variáveis e os coeficientes não têm unidades fixas, então você precisa decidir o que \(x\), \(y\), os lados direitos e o valor da função objetivo representam.

Restrições de igualdade são mais restritivas que inequações porque mantêm apenas os pontos que estão exatamente sobre uma reta. Um modelo com várias restrições de igualdade pode facilmente se tornar inviável ou produzir um conjunto viável sem uma comparação útil entre vértices.

Entradas decimais e em notação científica são convertidas em valores racionais exatos antes das verificações de viabilidade e otimização. Resultados fracionários são exibidos exatamente, com uma aproximação decimal quando útil. O gráfico converte esses resultados exatos em coordenadas de tela, portanto o recorte do gráfico e o arredondamento visual não afetam a resposta informada. As entradas aceitam até 30 algarismos significativos, expoentes de \(-300\) a \(300\) e 100 restrições do usuário.

Esse tipo de calculadora não substitui o julgamento profissional. Quando um resultado de otimização afetar dinheiro, segurança, trabalho de engenharia, obrigações legais, registros oficiais ou decisões relacionadas à saúde, verifique cuidadosamente o modelo e consulte um profissional qualificado quando apropriado.


Como usar esta calculadora

  1. Escolha se a função objetivo deve ser maximizada ou minimizada.
  2. Digite os coeficientes da função objetivo para \(x\) e \(y\).
  3. Ative as variáveis não negativas se o modelo dever incluir \(x \ge 0\) e \(y \ge 0\).
  4. Digite cada restrição usando um coeficiente de \(x\), um coeficiente de \(y\), um operador e um lado direito.
  5. Adicione ou remova linhas de restrição conforme necessário.
  6. Consulte o título do resultado para saber se o modelo tem um ótimo finito, é inviável ou é ilimitado. Em um modelo finito formado apenas por igualdades, leia também a descrição do conjunto ótimo.
  7. Compare a tabela de vértices quando o modelo tiver vértices viáveis e valores da função objetivo.
  8. Use o gráfico para visualizar as restrições, a região viável, os vértices e o ótimo selecionado.
  9. Baixe o gráfico se precisar de uma imagem salva do modelo.

Perguntas frequentes

Qual é a diferença entre maximizar e minimizar?

Maximizar significa escolher \(x\) e \(y\) para tornar o valor da função objetivo o maior possível. Minimizar significa escolhê-los para tornar o valor da função objetivo o menor possível. As restrições permanecem iguais; apenas a direção da comparação da função objetivo muda.


Por que o método gráfico verifica os vértices?

Em um problema de programação linear com duas variáveis, a região viável é formada por fronteiras retas. Para uma região viável limitada com um ótimo finito, o melhor valor de uma função objetivo linear ocorre em um vértice; portanto, verificar os vértices é suficiente para encontrar o ótimo.


O que significa uma restrição estar ativa?

Uma restrição ativa é exatamente atingida na solução. O ponto ótimo está sobre a reta de fronteira dessa restrição, e sua folga é zero ou próxima de zero. As restrições ativas costumam ser importantes porque limitam novas melhorias da função objetivo.


O que significa um resultado inviável?

Um resultado inviável significa que as restrições não podem ser todas verdadeiras ao mesmo tempo. Por exemplo, uma restrição pode exigir que um valor seja pelo menos \(10\), enquanto outra exige que a mesma expressão seja no máximo \(5\). Nesse caso, nenhum ponto pode satisfazer o modelo completo.


O que significa um resultado ilimitado?

Um resultado ilimitado significa que a região viável contém uma direção na qual a função objetivo pode continuar melhorando sem limite. Isso não significa necessariamente que as entradas foram digitadas incorretamente. Muitas vezes, significa que falta ao modelo uma restrição superior ou inferior realista.


Este método resolve problemas com mais de duas variáveis?

O método gráfico dos vértices usado aqui é destinado a modelos com duas variáveis. Problemas com mais de duas variáveis geralmente precisam de métodos algébricos de otimização, como o método simplex, abordagens baseadas em matrizes ou softwares especializados de otimização.


Fontes e referências

Livros e livros didáticos abertos

  1. OpenStax. Contemporary Mathematics. OpenStax, 2023. Section 5.11, “Linear Programming.” https://openstax.org/books/contemporary-mathematics/pages/5-11-linear-programming
  2. OpenStax. Intermediate Algebra 2e. OpenStax, 2020. Section 4.7, “Graphing Systems of Linear Inequalities.” https://openstax.org/books/intermediate-algebra-2e/pages/4-7-graphing-systems-of-linear-inequalities
  3. LOUIS: The Louisiana Library Network. Finite Mathematics. Pressbooks, 2024. Chapter 3.3, “Linear Programming.” https://louis.pressbooks.pub/finitemathematics/chapter/3-3-linear-programming/