Um jovem atleta sente-se atraído pela parática de dois esportes: natação e ciclismo. Sabe-se, por experiência, que:
O orçamento que o rapaz dispõe para seu treinamento é de R 850,00$. Seus afazeres de aluno da graduação na universidade lhe dão liberdade de empregar, no máximo, 18 horas mensais e 80000 calorias para os esforços físicos;
Passo 1
Vou listar exatamente o que o enunciado nos deu (sem inferir nada além do texto) e o que o enunciado pede — aqui já aviso: o enunciado está incompleto, então vou explicitar isso.
Informações dadas no enunciado:
Orçamento disponível: R\$\,850,00.
Tempo máximo disponível: 18 horas mensais (vou escrever isso como \,18\\ \text{horas}).
Limite de energia (calorias) disponível para esforços: \,80000\\ \text{calorias}.
Há duas atividades possíveis: natação e ciclismo.
O que o enunciado NÃO diz (informações que seriam necessárias para calcular qualquer número):
Não há dados sobre o custo por unidade de prática de cada esporte (por exemplo custo por hora de natação e custo por hora de ciclismo). Vou chamar esses custos de c_{\text{n}} e c_{\text{c}}.
Não há dados sobre quanto tempo “uma unidade” de cada esporte consome (se vamos medir as variáveis em horas, então o tempo por unidade já fica implícito; mais comumente usa-se horas diretamente).
Não há dados sobre quantas calorias são gastas por unidade (ou por hora) em cada esporte. Vou chamar esses gastos calóricos de k_{\text{n}} e k_{\text{c}} (calorias por hora, por exemplo).
Não há indicação do objetivo do problema: deseja-se maximizar o condicionamento físico, minimizar custo, alcançar um dado nível mínimo de preparo com custo mínimo, ou outra coisa? Sem saber o objetivo não há função a otimizar.
Não há limites adicionais (por exemplo, limites mínimos de prática de cada esporte, restrições de disponibilidade por dia, etc.).
Portanto, com os dados atualizados: temos apenas os recursos totais (850 em dinheiro, \,18 horas, \,80000 calorias) e os nomes das duas atividades. Não é possível produzir um valor numérico final sem as informações listadas acima.
Passo 2
Como estudar e resolver esse tipo de problema — modelagem em programação linear (LP) —: primeiro vamos definir as variáveis de forma clara (isso é o que você faria na prova).
Definição de variáveis (modo padrão, simples e direto):
Seja x a quantidade de tempo (em horas por mês) dedicado à natação.
Seja y a quantidade de tempo (em horas por mês) dedicado ao ciclismo.
Observação: escolhi medir em horas porque o enunciado deu limite de horas; essa é a escolha natural. Alternativamente poderia-se usar “número de sessões”, mas então todo o enunciado de tempos/calorias/custos teria que ser por sessão.
Explicando bem: a variável é aquilo que você pode controlar na otimização. Aqui, como o rapaz escolhe quanto tempo em cada esporte, x e y são apropriadas.
Passo 3
Escrevendo as restrições em forma geral (símbolos para os dados que faltam). Cada restrição representa um recurso limitado. Vou explicar o sentido de cada termo.
Restrição orçamentária (dinheiro):
Se o custo por hora de natação for c_{\text{n}} (em reais por hora) e o custo por hora de ciclismo for c_{\text{c}}, então o gasto total é
c_{\text{n}}\,x + c_{\text{c}}\,y.
Como o orçamento máximo é \,R\$\,850,00, a restrição é
c_{\text{n}}\,x + c_{\text{c}}\,y \le 850.
Explicando: multiplica-se o preço unitário pela quantidade (aqui horas) e soma-se para obter o total gasto; isso não pode ultrapassar o orçamento.
Restrição de tempo:
Cada hora de natação é uma hora do mês, cada hora de ciclismo é uma hora do mês. O total de horas usadas é x+y. O enunciado deu máximo de \,18 horas, logo
x + y \le 18.
Explicando: se você dedicar x horas a natação e y horas a ciclismo, soma-se e não pode ultrapassar o tempo disponível.
Restrição de calorias:
Se a natação consome k_{\text{n}} calorias por hora e o ciclismo consome k_{\text{c}} calorias por hora, então o total gasto é
k_{\text{n}}\,x + k_{\text{c}}\,y \le 80000.
Explicando: multiplicar a taxa calórica por hora pela quantidade de horas e somar as atividades.
Restrição de não-negatividade:
x \ge 0,\qquad y \ge 0.
Explicando: tempo não pode ser negativo.
Resumo: o conjunto de restrições, em forma simbólica, fica
\begin{cases} c_{\text{n}}\,x + c_{\text{c}}\,y \le 850,\\[4pt] x + y \le 18,\\[4pt] k_{\text{n}}\,x + k_{\text{c}}\,y \le 80000,\\[4pt] x \ge 0,\; y \ge 0. \end{cases}]
Passo 4
Função objetivo: o enunciado deveria dizer o que maximizar ou minimizar. Vou listar as opções mais comuns e explicar como cada uma se modela, para você saber o que fazer na prova quando o enunciado vier completo.
Possíveis objetivos típicos:
Maximizar melhoria no condicionamento físico: suponha que cada hora de natação dá ganho p_{\text{n}} (pontos/unidade de condicionamento) e cada hora de ciclismo dá p_{\text{c}}. A função objetivo seria
\text{Maximizar}\quad Z = p_{\text{n}}\,x + p_{\text{c}}\,y.
Minimizar custo para atingir um nível mínimo de condicionamento Z_{\min}: aí teria uma restrição extra p_{\text{n}}x + p_{\text{c}}y \ge Z_{\min} e a função objetivo seria minimizar c_{\text{n}}x + c_{\text{c}}y.
Minimizar gasto calórico sujeitando-se a um tempo mínimo de treino, etc.
Explicando: a função objetivo traduz o que o atleta quer (ou a questão pede). Sempre escreva o objetivo explicitamente em termos das suas variáveis.
Passo 5
Como resolver, passo a passo, quando todos os números estiverem presentes (caso típico com duas variáveis: solução gráfica/cantos da região viável):
Desenhe no plano (x,y)\) as retas correspondentes às equações onde cada desigualdade é uma igualdade:
\[c_{\text{n}}x + c_{\text{c}}y = 850,\quad x+y=18,\quad k_{\text{n}}x + k_{\text{c}}y = 80000,
e as semirretas x\ge0,\,y\ge0.
Identifique a região viável (interseção das metades indicadas por \le). É um polígono convexo (possivelmente degenerado).
Teorema útil (e prático): para programação linear com função objetivo linear, o valor máximo (ou mínimo) ocorre em um vértice (extremo) da região viável. Portanto basta:
Encontrar todos os vértices (interseções de pares de retas ou interseções com os eixos).
Avaliar a função objetivo em cada vértice.
Escolher o vértice com maior (ou menor) valor, dependendo se é maximização ou minimização.
Vou mostrar como calcular um vértice genérico: interseção de duas retas. Por exemplo, para interseção entre a restrição orçamentária e a restrição de tempo, resolvemos o sistema linear
\begin{cases} c_{\text{n}}x + c_{\text{c}}y = 850,\\[4pt] x + y = 18. \end{cases}
Resolver esse sistema (método de substituição ou eliminação):
Da segunda equação: y = 18 - x\].
- Substituir na primeira:
\[c_{\text{n}}x + c_{\text{c}}(18-x) = 850.\]
- Agrupar termos em \(x:
x = \dfrac{850 - 18\,c_{\text{c}}}{c_{\text{n}} - c_{\text{c}}},\quad\text{(desde que }c_{\text{n}}\neq c_{\text{c}}\text{)}.
Depois y=18-x.
Observação didática: se (c_{\text{n}}-c_{\text{c}})=0 então as retas são paralelas (mesma inclinação) e a interseção pode ser inexistente ou coincidente — aí trata-se de caso especial, mas a técnica é a mesma: testar vértices formados por outros pares de restrições.
Repita esse procedimento para cada par de restrições (orçamento vs calorias, tempo vs calorias, cada uma com os eixos, etc.) para obter todos os vértices possíveis.]
Passo 6
Exemplo conceitual (sem números concretos): suponha que depois de computar os vértices V_1,V_2,\dots,V_n você obteve coordenadas (x_i,y_i). Para cada vértice calcule
Z_i = p_{\text{n}}\,x_i + p_{\text{c}}\,y_i
(se o objetivo for maximizar o ganho). Compare os Z_i; o maior deles dá a solução ótima. Indico também como interpretar soluções inviáveis: se algum x_i ou y_i for negativo, descarte-o (pois viola x\ge0 ou y\ge0).
Passo 7
Método alternativo (quando não dá para desenhar ou quando há mais restrições/variáveis): Simplex. Conceito rápido e prático:
Transforme as desigualdades em igualdades adicionando variáveis de folga.
Monte a tabela simplex e execute pivoteamentos até que todas as reduções na linha objetivo indiquem otimalidade.
Esse método é algorítmico e funciona muito bem quando há muitas variáveis. Para dois variáveis a solução gráfica é mais rápida e intuitiva na prova.
Não vou desenvolver todo o algoritmo Simplex aqui (posso fazer se quiser), mas saiba que: para provas, com duas variáveis, sempre prefira método gráfico (vértices) — é mais rápido e menos propenso a erro manual.
Passo 8
Conclusão prática e lista de dados que faltam (para você checar rapidamente na prova ou no enunciado):
Dados que o enunciado deveria fornecer para que eu (ou você na prova) pudesse resolver numericamente:
c_{\text{n}}: custo por hora (ou por unidade) da natação, em reais por hora.
c_{\text{c}}: custo por hora do ciclismo.
k_{\text{n}}: calorias gastas por hora de natação.
k_{\text{c}}: calorias gastas por hora de ciclismo.
A função objetivo: exatamente o que queremos maximizar ou minimizar (por exemplo, maximizar ganho de condicionamento com parâmetros p_{\text{n}},p_{\text{c}}, ou minimizar custo sujeito a uma meta).
(Opcional) limites mínimos ou máximos por esporte (por exemplo, o atleta pode querer pelo menos 2 horas de natação por mês, etc.).
Motivação e incentivo rápido: eu sei que está em pânico por faltar tempo para estudar — calma, você já fez a parte mais importante que é modelar o problema. Com os números em mãos, aplicar o passo a passo que eu dei leva só alguns minutos.
Resposta
Não é possível resolver numericamente porque o enunciado está incompleto: faltam os valores de c_{\text{n}},c_{\text{c}},k_{\text{n}},k_{\text{c}} (custos e calorias por hora/unidade) e não foi especificada a função objetivo a ser otimizada.