Introducción
En entradas anteriores hablamos un poco de lo que es la Programación Lineal, de su historia y de cuáles son los tipos de problemas que estudia. Dijimos que un problema de programación lineal es aquel en el que se busca optimizar una función lineal bajo ciertas restricciones lineales. En estas entradas y las siguientes recordaremos algunos ejemplos conocidos de problemas de programación lineal. Comenzaremos con el problema de la dieta.
El problema de la dieta fue uno de los primeros problemas sobre optimización. George Joseph Stigler fue quien lo planteo a finales de la década de los años 30. El problema de régimen alimenticio óptimo para tratar de satisfacer la necesidad del ejército americano por hallar la manera más económica de alimentar a sus tropas, asegurándose de satisfacer al mismo tiempo unos determinados requerimientos nutricionales.
Análisis e interpretación
En este tipo de problemas, nos van a dar una cierta cantidad de alimentos diferentes, digamos $m$ alimentos, y cada alimento va a contener una cantidad finita de nutrientes de interés, digamos $n$ nutrientes. Entonces la cantidad de nutrientes j que va a tener el alimento i por unidad va a quedar representado por una constante dada, digamos $a_{i,j}$.
| —— | Nutriente 1 | Nutriente 2 | $\ldots$ | Nutriente $n-1$ | Nutriente $n$ | Costo del alimento |
| Alimento 1 | $a_{1,1}$ | $a_{1,2}$ | $\ldots$ | $a_{1,n-1}$ | $a_{1,n}$ | $c_1$ |
| Alimento 2 | $a_{2,1}$ | $a_{2,2}$ | $\ldots$ | $a_{2,n-1}$ | $a_{2,n}$ | $c_2$ |
| $\vdots$ | $\vdots$ | $\vdots$ | $\ddots$ | $\vdots$ | $\vdots$ | $\vdots$ |
| Alimento m-1 | $a_{m-1,1}$ | $a_{m-1,2}$ | $\ldots$ | $a_{m-1,n-1}$ | $a_{m-1,n}$ | $c_{m-1}$ |
| Alimento m | $a_{m,1}$ | $a_{m,2}$ | $\ldots$ | $a_{m,n-1}$ | $a_{m,n}$ | $c_m$ |
| Nutrientes requeridos | $b_1$ | $b_2$ | $\ldots$ | $b_{n-1}$ | $b_n$ | —— |
Cada individuo (ya sea persona u otro ser vivo) tiene el mismo requerimiento mínimo de cada uno de estos nutrientes, digamos $b_j, \quad \forall \ j \in {1, \ldots, n}$.
Sea $x_i$ = el número de unidades del alimento i que vamos a asignar a cada individuo
Entonces vamos a tener la restricción de que cada individuo tiene que recibir los nutrientes requeridos por los alimentos que le son dados. Esto se representa de la siguiente manera:
(Alimento 1: cantidad de nutriente j)(Unidades de alimento 1) + (Alimento 2: cantidad de nutriente j)(Unidades de alimento 2) + $\ldots$ + (Alimento m: cantidad de nutriente j) (Unidades de alimento m)$\geq$ Nutriente j requerido
Usando la notación de la tabla y las variables que creamos, se escribiría:
$a_{1,j}x_1 + a_{2,j}x_2 + \ldots + a_{m,j}x_m \geq b_j$ para cualquiera de los n nutrientes.
Cada alimento va a tener un coste dado por unidad, digamos $c_i$.
Como se mencionó, se busca la manera más económica de alcanzar los nutrimentos requeridos de los alimentos asignados a cada individuo, entonces, el problema busca minimizar el costo de los alimentos que elijamos. Esto se traduce como:
Minimizar z = (Costo alimento 1)(Unidades de alimento 1) + (Costo de alimento 2)(Unidades de alimento 2) + $\ldots$ + (Costo de alimento m)(Unidades de alimento m)
Usando la notación de la tabla y las variables que creamos, se escribiría:
$Min \quad z = c_1x_1 + c_2x_2 + \ldots + c_mx_m$
Como la cantidad de alimentos que vamos a asignar es a lo menos cero, nuestras variables $x_i$ van a ser mayores o iguales a cero.
Entonces, en términos generales, el problema quedaría de esta forma:
\begin{align*}
Min \quad z = c_1&x_1 + c_2x_2 + \ldots + c_mx_m\\
sujeto \quad a \quad &(s. a)\\
&a_{1,1}x_1 + a_{2,1}x_2 + \ldots + a_{m,1}x_m \geq b_1\\
&a_{1,2}x_1 + a_{2,2}x_2 + \ldots + a_{m,2}x_m \geq b_2\\
\vdots\\
&a_{1,n}x_1 + a_{2,n}x_2 + \ldots + a_{m,n}x_m \geq b_n\\
&x_i \geq 0\\
\end{align*}
Ejemplo del problema de la dieta
Consideremos el siguiente problema:
Un estudiante de la facultad de ciencias asiste a clases los 5 días de la semana y compra su comida en la facultad. En su hora de comida tiene 3 opciones preferidas: Ir al comedor, comprar una torta o comprar una orden de tacos. Cada opción tiene un aporte nutritivo en miligramos distinto que está representado en la siguiente tabla, así como el costo por de cada opción de alimentación.
| Costo por opción en pesos | Contenido nutritivo por unidad de alimento | ||
| N1 | N2 | ||
| Comedor | $35 | 4mg ($a_{3,2}$) | 10mg ($a_{2,1}$ |
| Torta | $28 | 10mg ($a_{1,2}$) | 7mg ($a_{2,2}$ |
| Orden de tacos | $20 | 6mg ($a_{1,3}$ | 4mg ($a_{3,2}$ |
| Necesidades de nutrición a la semana | 35mg | 35 | |
El estudiante busca cumplir sus necesidades nutricionales semanales y aparte gastar lo menos posible ya que trata de ahorrar lo de su beca lo más posible. Plantea como un problema de programación lineal.
Veamos cómo podemos plantear el problema anterior como un problema de programación lineal usando el análisis que hicimos anteriormente.
Sea $x_1$ el número de veces que va al comedor a tomar la merienda a la semana, $x_2$ el número de veces que va a comer una torta a la semana y $x_3$ el número de veces que va a comer una orden de tacos a la semana. En la tabla nos indican los costos de estas por lo que ya tenemos nuestra función objetivo a minimizar:
$Min \quad z = 35x_1 + 28x_2 + 20x_3$
Luego, tenemos que considerar las restricciones de los nutrientes que son requeridos.
Definamos $a_{1,1}$ como la cantidad de mg del nutriente 1 que contiene la merienda en el comedor, $a_{1,2}$ como la cantidad de mg del nutriente 1 que contiene la torta y $a_{1,3}$ como la cantidad de mg del nutriente 1 que contiene la orden de tacos. Y de manera análoga para el nutriente 2 definimos $a_{2,1}, a_{2,2},$ y $a_{2,3}$
Solo tenemos dos nutrientes a considerar entonces tenemos las siguientes restricciones:
(cantidad de mg del nutriente 1 que contiene la merienda en el comedor)(número de veces que va al comedor a tomar la merienda a la semana) +
(cantidad de mg del nutriente 1 que contiene la torta)(número de veces que come torta a la semana) +
(cantidad de mg del nutriente 1 que contiene la orden de tacos)(número de veces que come una orden de tacos de canasta a la semana) $\geq$
cantidad de mg del nutriente 1 requerido a la semana
Y de manera análoga para las restricciones del nutriente 2:
(cantidad de mg del nutriente 2 que contiene la merienda en el comedor)(número de veces que va al comedor a la semana) +
(cantidad de mg del nutriente 2 que contiene la torta)(número de veces que come torta a la semana) +
(cantidad de mg del nutriente 2 que contiene la orden de tacos)(número de veces que come una orden de tacos de canasta a la semana) $\geq$
cantidad de mg del nutriente 2 requerido a la semana
Escrito en la notación general descrita:
\begin{align*}
&a_{1,1}x_1 + a_{2,1}x_2 + a_{3,1}x_3 \geq b_1\\
&a_{1,2}x_1 + a_{2,2}x_2 + a_{3,2}x_3 \geq b_2\\
\end{align*}
Y usando los valores de el problema, tenemos:
\begin{align*}
&14x_1 + 10x_2 + 6x_3 \geq 45\\
&10x_1 + 7x_2 + 4x_3 \geq 35\\
\end{align*}
Y por último solo cabe mencionar que número de veces que se va a consumir cualquier alimento a la semana es un número mayor o igual a cero, es un número entero y su valor es a lo más 5. Por lo que el planteamiento del problema quedaría de la siguiente manera:
\begin{align*}
Min \quad z = 35&x_1 + 28x_2 + 20x_3\\
s.a&\\
14&x_1 + 10x_2 + 6x_3 \geq 45\\
10&x_1 + 7x_2 + 4x_3 \geq 35\\
&x_1, x_2, x_3 \geq 0\\
\end{align*}
Más adelante…
En las siguientes entradas veremos otros ejemplos más, como el problema de la mochila, el del transporte y otros.
Hasta ahora sólo hemos hablado de qué tipo de problemas queremos resolver, pero no hemos dicho nada con respecto al cómo los resolveremos. Veremos eso un poco más adelante.
Tarea
- ¡Oh no! La inflación llegó y el precio de las meriendas mencionadas subió un $10\%$. Realiza nuevamente la formulación del problema de la dieta del ejemplo bajo este supuesto.
- Imagina que tenemos un problema más sencillo. Sólo se pueden elegir entre tortas y tacos. Cuestan \$30 las tortas y \$20 la orden de tacos. La torta da 12mg de N1 y 8mg de N2. La orden de tacos da 9mg de N1 y 6mg de N2. Imagina que se deben consumir 50mg de N1 y 35mg de N2. Se quiere encontrar la dieta más económica. Plantea este problema como un problema de programación lineal.
- Intenta resolver el problema de programación lineal del inciso anterior con las herramientas con las que cuentes. ¿Cuál sería el plan de meriendas semanal más económico?
- ¿Por qué en el problema de la dieta no tiene sentido preguntarse por la dieta menos económica? Intenta argumentarlo desde el punto de vista práctico y/o matemático.
Respuestas
$\bullet$ \begin{align*}
Min \quad z = 38.5&x_1 + 30.8x_2 + 22x_3\\
s.a&\\
14&x_1 + 10x_2 + 6x_3 \geq 45\\
10&x_1 + 7x_2 + 4x_3 \geq 35\\
&x_1, x_2, x_3 \geq 0\\
\end{align*}
$\bullet$ El cambio es muy simple, solo hay que cambiar las variables de decisión a $x_1$ el número de veces que va a comer una torta a la semana y $x_2$ el número de veces que va a comer una orden de tacos a la semana. Entonces, con los cambios aplicados:
\begin{align*}
Min \quad z = 30&x_1 + 20x_2\\
s.a&\\
12&x_1 + 9x_2 \geq 50\\
8&x_1 + 6x_2 \geq 35\\
&x_1, x_2 \geq 0\\
\end{align*}
$\bullet$ Una idea sería considerar solamente todos los valores posibles a elegir en la semana, revisar que cumplan con las necesidades de nutrición y calcular el gasto que conllevaría cada plan. Vamos a representar esos resultados en la siguiente tabla:
| Combinación alimentaria | N1 $\geq$ 50 | N2 $\geq$ 35 | Costo del plan |
| 5 días torta | 60 | 45 | 150 |
| 4 días torta, 1 día taco | 56 | 42 | 140 |
| 3 días torta, 2 días tacos | 52 | 39 | 130 |
| 2 días torta, 3 días tacos | 48 | 36 | 120 |
| 1 día torta, 4 días tacos | 44 | 33 | 110 |
| 5 días tacos | 40 | 30 | 100 |
Las filas que tienen una casilla roja no cumplen la necesidad nutricional de su respectiva columna.
Entonces, nuestra solución va a ser el plan de alimentación que tenga el menor costo y que tenga las dos casillas de necesidades nutricionales en verde. Esta solución es la de combinar tres días con merienda de torta y dos días con merienda de tacos de canasta.
$\bullet$ Podría argumentarse que la finalidad de resolver este tipo de problema es economizar los gastos de el o los individuos, entonces al tomar planes de dieta más caros, estamos haciendo lo opuesto a lo propuesto por la función objetivo.
Entradas relacionadas
- Ir a Investigación de Operaciones
- Entrada anterior del curso: Introducción a la programación lineal
- Entrada siguiente del curso: El problema de la mochila


