La formulación de una dieta para un animal tiene, en principio, dos restricciones: que sea lo más barato posible, y que cumpla con los requerimientos nutricionales del animal. Las fuentes nutricionales disponibles pueden ser de diferentes tipos (pastura, ensilajes, granos, harinas), y encontrar la combinación perfecta que minimice el costo cumpliendo con requisitos de ingesta de proteína, fibra, almidón, grasa, minerales y vitaminas puede ser desafiante. La optimización matemática puede ayudar a resolver este problema.
Consideremos el siguiente problema: un tambero necesita preparar diariamente 1000 kg de una mezcla de granos, harinas, balanceados y sales minerales. En el mercado existen diferentes alternativas, y, de forma general, llamaremos a la materia prima de la siguiente forma:
Cada alimento tiene un costo unitario (por kg) y ciertos valores nutricionales (en %). Los valores nutricionales que consideraremos en este ejemplo son: proteína bruta (PB), nutrientes digestibles totales (NDT), fibra detergente ácida (FDA), fibra detergente neutro (FDN), extracto etéreo (EE), calcio (Ca), fósforo (P), almidón, Vitamina A, Vitamina D3 y Selenio. La tabla siguiente muestra los costos y los valores nutricionales de la materia prima de la lista más arriba.

Teniendo los costos y valores nutricionales por materia prima, el único dato faltante son los requerimientos nutricionales de los animales. En este punto es importante mencionar que los datos aquí presentados son ficticios, y que es fundamental consultar con un nutricionista animal o hacer una revisión exhaustiva de la literatura para definir estos requerimientos. En este ejemplo, trabajaremos con los siguientes requerimientos:

Esta tabla indica que, por ejemplo, el alimento que reciben los animales debe tener de 18 a 22% de proteína, 67 a 90% de nutrientes digestibles totales, y así sucesivamente. En caso de que un parámetro tuviere un valor fijo estricto, se colocaría el mismo valor en ambas filas de la columna correspondiente.
El problema lo resolveremos con Excel. Para esto, es necesario activar el complemento Solver en la planilla de Excel. Esto se hace una única vez. El Solver contiene los algoritmos que solucionarán el problema de optimización.
En una planilla Excel, ir a Archivo (File) – Opciones (Options) – Complementos (Add-ins). En Administrar (Manage), seleccionar Ir (Go). En la ventanilla que se abre, tildar Solver y Aceptar. El complemento será visible en la pestaña Datos (Data), en la parte de Análisis (Analyze). Las siguientes imágenes ilustran la configuración del Solver.



Habiendo configurado el Solver, es tiempo de explicar el modelo matemático. Y antes de que el lector abandone la lectura por temor a ecuaciones complejas e inentendibles, vale la pena aclarar que no es necesario ser un especialista en matemáticas. Es suficiente utilizar la intuición y algo de lógica.
Comencemos con las variables. Las variables son las cantidades que desconocemos y que, por lo tanto, queremos calcular. En nuestro problema, las variables son las cantidades (en kg) de cada materia prima (Grano 1, Grano 2, etc.) que debemos mezclar para hacer nuestra ración de 1000 kg. Llamaremos a estas cantidades con la letra Qi, donde i se refiere al i-ésimo componente (es decir, toma los valores del 1 al 12).
La función objetivo es la función matemática cuyo valor queremos que sea óptimo. En este caso, será la sumatoria de las cantidades de las materias primas multiplicadas por sus respectivos costos. En términos matemáticos, esto se expresa como:

donde ci es el costo de la materia prima i y Qi es la cantidad de la materia prima i (las variables). Esta ecuación representa una sumatoria, que simplemente significa precioGrano1*cantidadGrano1 + precioGrano2*cantidadGrano2+… hasta haber sumado todos los alimentos.
El hecho de que los valores nutricionales deben estar en cierto rango, se traduce en restricciones matemáticas. Para explicarlas, usaremos la proteína bruta (PB) como ejemplo. De la tabla más arriba, sabemos que el Grano 1 tiene 40% de PB, el Grano 2 tiene 8%, etc. Siendo Q1 la cantidad de Grano 1, Q2 la cantidad de Grano 2, y así sucesivamente, la cantidad de PB que tendremos en la mezcla final es

donde Q12 es la cantidad de Vitaminas 2, con 0% de PB. Esta sumatoria, convertida a porcentaje sobre la mezcla de 1000 kg, debe estar entre 18 y 22%. Esto se expresa matemáticamente como

De la misma forma se procede con los demás parámetros nutricionales.
Otra restricción es que la suma de las cantidades Q1, Q2, … Q12 debe ser igual a 1000 kg, ya que el tambero quiere elaborar una ración de 1000 kg.

Puede suceder que el tambero quiera utilizar un mínimo o máximo de algún componente, por ejemplo por ya tenerlo en stock, o porque el mismo le brinda algunas propiedades a la ración no contempladas en los parámetros nutricionales. Entonces, conviene establecer cantidades mínimas y máximas permitidas en la ración de cada componente. La tabla siguiente muestra estas cantidades que usaremos en este ejemplo.

Las restricciones matemáticas son simples. Por ejemplo, para el Grano 1 cuya cantidad en la ración es Q1, la restricción se escribe como:

o, de forma general, para el alimento i,

Con esto, ya acabamos la formulación matemática del problema y podemos pasar a configurarlo en una planilla Excel. La planilla puede descargarse del siguiente enlace:
Problema de la dieta – Solución
Al abrir la planilla, en las primeras filas y columnas vemos los datos del problema. La celda B1 contiene el tamaño de la ración. Las celdas B5 a B16 muestran los costos, las celdas C5:D16 las cantidades mínimas y máximas permitidas por alimento. Luego, las celdas E5:O16 contienen los porcentajes de los valores nutricionales por alimento. Las variables están en las celdas P5:P16. Es importante notar aquí que para inicializar el algoritmo de resolución, es recomendable colocar algún valor dentro del rango de la solución en las celdas de variables. Aquí, usamos un valor de 100 en cada celda. Al ejecutar el algoritmo, estas celdas se actualizarán con los valores de la solución óptima. La celda P17 contiene la sumatoria de las cantidades. Recordemos que esta sumatoria debe ser igual a 1000. Esto lo configuraremos en el solver, a esta altura no necesitamos preocuparnos por cumplir la restricción.

En la columna Q se muestra la función objetivo. Es calculada como Cantidad de alimento*Precio, como lo habíamos explicado más arriba en la ecuación de la función objetivo. La celda Q17 es la sumatoria de los costos individuales, y la celda Q18 es la suma total dividida por la cantidad de la ración (1000 kg). Esta celda contiene el valor que buscamos minimizar. Las celdas R5:AB16 son las cantidades por parámetro, de cada alimento, calculado como cantidad*porcentaje del valor nutricional. La última fila, 18, muestra los porcentajes de cada parámetro para la ración de 1000 kg. Por ejemplo, así como está, la ración tendría 41,5% de proteína. Aquí es importante notar que las celdas en color anaranjado no se deben editar. Solamente las celdas en blanco deben actualizarse con los parámetros reales de los alimentos que uno dispone, y las celdas con las variables, en amarillo, también pueden editarse para inicializar el solver.

Una vez lista la planilla, pasamos a configurar el solver. Para eso, vamos a la pestaña Datos – Análisis, y abrimos el solver. Se abrirá un cuadro de diálogo, donde configuraremos los parámetros del solver.

Primero, definimos la celda objetivo, esto es, la celda que contiene el valor que queremos optimizar (en este caso minimizar).

Luego, definimos que queremos minimizar este valor:
![]()
Seguidamente, establecemos las celdas que contienen las variables (es decir, las celdas que se cambiarán para encontrar el costo mínimo).

Ahora debemos configurar las restricciones. Al seleccionar el botón Agregar (Add), se abre una nueva pestaña, en la cual simplemente indicamos cuál celda es menor, igual o mayor a cuál celda. Por ejemplo, la restricción de que la suma de las cantidades es igual al tamaño de la ración, se configura como:

La primera celda es la que queremos restringir (la sumatoria de las cantidades). En el medio hay una lista desplegable con operadores para seleccionar el que corresponde. En este caso, el signo igual. La siguiente celda es la que contiene el valor al cual se restringe la otra celda (en este caso los 1000 kg de la celda B1). Al apretar OK, la restricción se añade al cuadro de diálogo de los parámetros.
La restricción de que las cantidades de alimento deben ser menores o iguales a las cantidades máximas, se configura como:

Como se puede observar aquí, no es necesario hacerlo celda por celda, sino que se puede seleccionar toda la columna, tanto en la celda a restringir como en la celda del valor de la restricción.
Análogamente, la restricción de que las cantidades de alimento deben ser mayores o iguales a las cantidades mínimas, se configura como:

Ahora faltan configurar las restricciones que establecen que los valores nutricionales deben estar en un rango dado, esto es, las celdas R18:AB18 deben estar entre los valores de las celdas R20:AB20 y R21:AB21.

Ya tenemos las restricciones configuradas. Debajo del cuadro de restricciones, hay un checkbox que, al tildarlo, aseguraremos de que el algoritmo no buscará valores negativos en todas las variables no restringidas. El método de solución para problemas lineales como éste es denominado Simplex LP. Habiendo configurado todo, apretamos el botón Resolver (Solve).

Cuando el algoritmo encuentra una solución, el cuadro de resultados dirá que ha encontrado una solución que satisface todas las restricciones. En la planilla, se verán las celdas de variables actualizadas con los valores que minimizan el costo. Aquí, se puede observar que el costo por kg es de 1144,4 Gs. También se puede observar que de los primeros tres granos, el algoritmo seleccionó solamente la cantidad mínima que debía usar.
