Ejemplo Solver Excel para programación lineal paso a paso

Resolver un problema de programación lineal puede resultar engorroso si no se tiene acceso a un programa de computadora. Excel es una buena opción ya que cuenta con un complemento conocido como Solver, además, la probabilidad de encontrar Office, y con ello Excel, en una computadora de oficina es muy alta.

Aquí se va a resolver un problema ya modelado, no es propósito de este texto modelar, sino describir paso a paso el uso de Solver para encontrar la solución óptima.

Ejemplo:

Consideremos el siguiente modelo de programación lineal:

Max\hspace{0.5cm}U=4x_1+5x_2

sujeto a:

2x_1+x_2\leq20

x_1+3x_2\leq20

x_1, x_2\geq0

Podemos observar que tenemos una función objetivo, dos restricciones y la condición de no negatividad. Además de dos variables de decisión.

El primer paso es ordenar la información, aunque cada persona puede hacerlo de la manera que crea conveniente. Nosotros proponemos el siguiente orden en una Hoja de Excel:

Lo siguiente es escribir los coeficientes asociados a la función objetivo y a las restricciones, los valores del lado derecho de cada restricción y su signo correspondiente, en este caso (\leq), además, escribimos 0 en las celdas C3 y D3 asociadas a lo valores de las variables de decisión:

En la celda E4, escribimos: =sumaproducto($C$3:$D$3$,C4:D4). Esta fórmula multiplica el valor de la celda C3 por el valor de la celda C4 y lo suma al producto de la celda D3 por D4, es decir, calcula el valor de la función objetivo.

Hasta ahora el valor de la función objetivo es 0 ya que asignamos valores de cero a las variables de decisión. Los signos de pesos ($C$3:$D$3$) que aparecen en la fórmula permiten fijar las celdas facilitando que arrastremos la fórmula hacia abajo tantas celdas como restricciones tengamos en nuestro problema. En nuestro caso debemos arrastrar la fórmula dos celdas hacia abajo.

Las celdas E5 y E6 calculan el valor de cada una de las restricciones para los valores de las variables de decisión.

La tabla, finalmente, se ve como se muestra a continuación y se tiene una Hoja de Excel lista para correr Solver:

Ahora hay que dar clic en la pestaña Datos, Solver aparecerá en el extremo derecho de la pantalla en el grupo Análisis.

Al dar clic en Solver se abrirá la siguiente ventana:

Asignamos los siguientes parámetros:

Establecer objetivo: $E$4

Es la celda en la que calculamos el valor de la función objetivo.

Elegimos la opción Máx para maximizar y Mín para minimizar. En nuestro caso deseamos maximizar.

Cambiando las celdas variables: $C$3:$D$3

Son el rango de celdas en los que calculamos los valores de las variables de decisión. Hay que recordar que les hemos dado un valor inicial de cero.

Damos clic en Agregar para especificar las restricciones del problema:

Se abrirá una ventana como la siguiente:

En Referencia de celda agregamos las celdas E5 y E6 al mismo tiempo ya que ambas restricciones tienen el mismo signo. Seleccionamos el signo que le corresponde a la restricción (\leq), en este caso grupo de restricciones con el mismo signo. En Restricción agregamos las celdas G5 y G6 que corresponden a los lados derechos de las restricciones.

No es necesario escribir $E$5:$E$6 ni $G$5:$G$6, basta con colocar el cursor en el campo y seleccionar el rango de celdas deseado.

Si se necesita agregar otra restricción damos clic en Agregar. Si no hay más restricciones que agregar damos clic en Aceptar para regresar a la ventana anterior.

En esta ventana es importante asegurarnos que hemos seleccionado la opción Convertir variables sin restricciones en no negativas, además de Simplex LP en Método de resolución. La primera es para cumplir con las condiciones de no negatividad y la segunda para especificar que se trata de un modelo lineal.

Damos clic en Resolver y se presentará una ventana como la siguiente:

Esta ventana nos informa que se encontró una solución y que se cumplen todas las restricciones. Solo tenemos que dar clic en Aceptar.

Solver presenta los valores de las variables de decisión en las celdas C3 y D3, es decir, 8 y 4.

Para estos valores calcula un máximo de 52, lo que podemos verificar al sustituir en la función objetivo:

Max\hspace{0.5cm}U=4x_1+5x_2

Max\hspace{0.5cm}U=4(8)+5(4)

Max\hspace{0.5cm}U=32+20=52

De la misma manera podemos verificar que se cumplen las restricciones:

Restricción 1:

2x_1+x_2\leq20

2(8)+(4)\leq20

20\leq20

Restricción 2:

x_1+3x_2\leq20

8+3(4)\leq20

20\leq20