Programación Lineal

Anuncio
Programación Lineal
Ficha para enseñar a utilizar el Solver de EXCEL en la
resolución de problemas de Programación Lineal
Ejemplo: Plan de producción de PROTRAC
En esta ficha vamos a comentar cómo se construyó y resolvió el
problema que se encuentra enunciado, planteado y resuelto en el fichero Plan
de producción de PROTRAC.xls, con el objetivo de que al final tú seas capaz
de resolver cualquier problema de Programación Lineal, bien planteado, de la
misma manera. Ten abierto dicho fichero al ir leyendo éste y vete analizando
hasta entender bien cada cosa: el orden en el que se ha colocado cada tipo
de información, qué hay en cada casilla de la hoja de cálculo y de dónde
sale cada cosa para intentar hacer lo mismo tú en cualquier problema nuevo
de Programación Lineal que se te plantee.
Solver es una Herramienta de EXCEL que nos puede ayudar a resolver
algunos tipos de problemas de optimización matemática, entre ellos los de
Programación Lineal y no Lineal. Puedes activarla en caso de que no esté, de
la siguiente forma:
Si tienes la versión 2003, ve a Herramientas, Complementos, Solver,
Aceptar (y a partir de entonces la tendrás activada y la encontrarás en el
Menú de Herramientas).
Si tienes la versión 2007, ve al botón de Microsoft Office, Opciones de
Excel, Complementos y en el cuadro Administrar seleccione Complementos de
Excel, Ir, en el cuadro de Complementos disponibles active la casilla de
verificación Complemento Solver, Aceptar. Una vez instalado estará disponible
en el grupo Análisis de la ficha Datos.
Observa que en nuestro ejemplo de PROTRAC las variables de decisión
deben tomar valores enteros (condiciones de integridad). Se dice que este
problema es de Programación Lineal Entera. Cuando un problema de
Programación Lineal admite soluciones no enteras para todas las variables de
decisión se dice que es de Programación Lineal Continua y cuando se requiere
que unas sean enteras y otras no se dice de Programación Lineal Mixta. Solver
resuelve todos estos casos, pero existen grandes diferencias entre ellos por el
Coste computacional (número de operaciones) que cada uno consume.
Empezaremos por resolver el problema de Programación Lineal Continua
1
asociado a nuestro ejemplo y luego lo completaremos con las condiciones de
integridad y lo resolveremos completo. Aunque todo se puede hacer en una
sola hoja de EXCEL hemos preferido hacerlos en 3 para que se entienda mejor.
En las 3 hojas está el mismo modelo, en la primera sólo planteado (sin utilizar
Solver), en la segunda resuelto con Solver sin condiciones de integridad y en la
tercera resuelto con Solver completo, es decir, con las condiciones de
integridad.
1.- Construcción del modelo en la hoja de cálculo
Una vez que hayas entendido bien cómo se ha llegado al modelo
simbólico a partir del enunciado real del problema, pasamos a comentar la
construcción del modelo en la hoja de cálculo por filas:
-
-
Primero le hemos puesto los rótulos de las columnas que van a contener
la información referente a las máquinas E-9 y F-9 (casillas B19 y C19) (los
nombres de las variables)
Luego hemos reservado (dejado libres por ahora) unas casillas (la B20 y
C20 que representan las variables) para que en ellas aparezcan
cuando se resuelve el problema, los valores de las variables de decisión
(o interés) que son las cantidades que se deben producir de cada
máquina.
-
Debajo justo de las casilla de las variables de decisión (o interés) (casillas
B21 y C21) hemos puesto los coeficientes de la función objetivo y a la
derecha de estos (en la casilla D21) nos hemos construido la función
objetivo. Coloca el cursor en la casilla D21 y observa la fórmula con la
que se ha construido (=SUMAPRODUCTO(B20:C20;B21:C21)) e intenta
entender lo que significa, es decir, equivale al 5000E+4000F del
planteamiento simbólico.
-
Luego hemos puesto los coeficientes de las restricciones (casillas B y C
de las filas 23 a la 27) y a la derecha hemos construido cada restricción.
Por ejemplo observa cómo se construye la primera restricción
entendiendo lo que hay en las casillas D23 (observa que contiene la
fórmula para el lado izquierdo de la primera restricción) y F23 (observa
que contiene el término independiente del lado derecho de la primera
restricción). El signo “<” que aparece como rótulo en la casilla E23 lo
hemos puesto con el signo < del teclado y luego lo hemos subrayado.
Para ver si lo has entendido bien di cuales son, sin mirarlas, las fórmulas
que se encuentran en las casillas D24 y D25. Nótese que con EXCEL una
vez que tenemos la fórmula de la casilla D23 la podemos arrastrar para
las casillas D24 hasta la D27. Ten en cuenta que en las fórmulas en EXCEL
se pone el signo $ en las coordenadas que no queremos que cambien
al arrastrar las fórmulas. En este caso las casillas de las variables de
decisión se escribirán así $B$20:$C$20.
2
-
Hemos colocado primero todas las restricciones con < y luego todas las
de > puesto que, como veremos, el tenerlas ordenadas así ayuda a
luego resolver con Solver.
-
Hemos coloreado las casillas de las variables de interés y de la función
objetivo porque una vez resuelto el problema los valores óptimos en los
que más interés tendremos es en esos. También son de interés los valores
de las variables de holgura (que recogen la diferencia, siempre no
negativa, entre los dos lados de cada restricción). Colócate encima de
la casilla G23 ó G27 para que veas cómo se calculan las holguras de las
restricciones de < o >, respectivamente).
-
Para que nos salga en las celdas que están en dólares el signo $ las
marcamos, hacemos click en el botón derecho del ratón, elegimos
Formato de celda, luego Número, luego Moneda y la moneda que nos
interese.
2.- Optimización del modelo construido en la hoja de cálculo (Caso de
Programación Lineal Continua)
Una vez que está la hoja de cálculo construida para optimizarla se hace
click en Datos y luego en Solver, si es la versión de EXCEL 2007 (o en
Herramientas y luego en Solver si es la versión anterior) y se nos abre la
siguiente ventana “Parámetros de Solver” que vamos rellenando:
Nótese que esta ventana en principio nos aparece vacía y nosotros le vamos
introduciendo las coordenadas que nos pide (en esta ficha sólo explicaremos
3
lo básico, cualquier otra cosa que desees saber de las que aparecen
consúltalo en la ayuda del programa):
- Celda objetivo: introducimos la coordenada de la celda donde hemos
colocado la función objetivo1
- Cambiando las celdas: introducimos las celdas que hemos elegido para
poner las variables de decisión
- Marcar si el problema es de Máximo o de Mínimo
- Sujeto a las siguientes restricciones: Se hace click en Agregar para introducir
cada grupo de restricciones y se nos abre la siguiente ventana “Agregar
restricción”
-
Referencia de la celda: introducir la celda donde está el lado derecho
de la restricción. Se pueden introducir todas las restricciones de cada
tipo de signo de una sola vez. Por ejemplo. Si introducimos de una sola
vez todas las de <, en esta celda ponemos $D23:$D25, que simplemente
se puede hacer marcando dichas celdas con el ratón.
-
<: elegir el signo que tiene/n la/s restricción/es que estamos
introduciendo
-
Restricción: introducir la/s celda/s del lado derecho de la/s restricción/s
en cuestión
Para introducir nuevas restricciones se le da a Agregar. Cuando las
hayamos introducido todas, menos las de no negatividad e integridad, le
damos a Aceptar.
Para introducir las restricciones de no negatividad, en la ventana
“Parámetros de Solver” se hace click en Opciones y sale la ventana “Opciones
de Solver”:
Para dar en esta ventana la coordenada de una o varias casillas simplemente hay
que colocar el cursor en dicha/s casilla/s.
1
4
Lo principal que hay que marcar es Adoptar modelo lineal (puesto que
nuestro modelo es lineal y Solver resuelve también problemas no lineales) y
Adoptar no negativos. (El resto de las cosas que aparecen en esta ventana no
las comentamos detalladamente en esta ficha básica, puesto que para ello
habría que conocer los métodos de resolución para cada tipo de problema y
no están en el temario de la asignatura).
Hacemos click en Aceptar y volvemos a la primera ventana donde
hacemos click en Resolver y nos aparece el problema resuelto en nuestra hoja
de cálculo, con los valores óptimos de las variables de decisión en las casillas
con borde rojo, el valor óptimo de la función objetivo en la casilla con borde
verde y en las casillas con borde azul las holguras que quedan en las
restricciones al sustituir en ellas los valores óptimos de las variables.
3.- Comentario del resultado en el contexto real
Según la solución de Solver sobre el problema planteado lo óptimo es
producir 4,5 máquinas E-9 y 7 máquinas F-9, obteniendo así unas ganancias
óptimas de $50500. Como estamos en un contexto real, aunque
matemáticamente esta es la solución óptima, no tiene sentido económico
producir 4,5 máquinas. Esto ha ocurrido porque resolvimos el problema con
variables continuas y Solver no estaba informado de que las variables tienen
que ser enteras para que tengan sentido en el enunciado real.
¿Qué ocurriría si redondeamos la solución?
Podemos tener la tentación de redondear a la baja la solución que nos
ha dado Solver y decir que E=4 y F=7. Si sustituimos esos valores a mano en la
hoja de cálculo obtenemos que el valor óptimo de la ganancia es 48000$ y
que todas las holguras de las ecuaciones han salido no negativas (lo que
5
implica que esta nueva “solución” es factible). Si lo que hacemos es redondear
al alza, es decir E=5 y F=7, al sustituirla a mano en la hoja de cálculo
obtenemos que la ganancia es $53000 pero dicha solución no es factible, es
decir no verifica las restricciones (porque las holguras salen negativas).
Aunque no sepas por ahora de dónde nos hemos sacado la solución
E=5, F=6 compruebe sustituyéndola en la hoja de cálculo que la función
objetivo vale $49000 y que todas las holguras han salido no negativas (por
tanto es factible). Si la comparamos con la solución que habíamos intentado
de E=4, F=7 nos damos cuenta que E=5, F=6 es mejor, porque la función
objetivo da mayor y estamos maximizando. ¿Cual es la conclusión por ahora
ante la tentación de redondear la solución que teníamos? Pues que:
Redondear una solución de Programación Lineal Continua no siempre
nos conduce a la solución óptima del problema de Programación Lineal
Entera.
Veamos ahora cómo se le da a Solver la información de que hay
variables que son enteras.
En el momento en el que agregamos las restricciones del problema,
agregamos también otra de esta forma:
Resolver y observar la solución óptima del problema.
Interpretación de la solución óptima:
Como E=5 , F=6 (lo óptimo es construir 5 máquinas E-9 y 6 máquinas F-9), lo cual
implica que el valor de la función objetivo se interprete como que la mayor
ganancia que se puede obtener es $49000. Si observamos las holguras de las
restricciones podemos comentar que: la primera es 10 (lo que se interpreta
como que sobran 10 horas de las 150 disponibles en el Departamento A), la
segunda es 0 (esto es, se utilizan el total de horas disponibles del
Departamento B), la tercera es 13 (que por ser >0, la interpretación es que se
satisface con holgura el mínimo requerido de producción de máquinas F-9), La
cuarta es 75 (lo que se interpreta como que las horas destinadas a pruebas
fueron 75 más de meta mínima convenida), la quinta es 6 (se han producido 6
máquinas más en total que las 5 mínimas obligadas por uno de los principales
distribuidores).
6
Una alternativa “eficiente” en muchos casos
Es importante comentar que resolver un problema de Programación
Lineal Entera conlleva una cantidad de cálculos mayor que resolver el de
Lineal Continua asociado, por lo que una alternativa “eficiente” en muchos
casos es resolver el problema continuo sin añadir restricciones de integridad, y
analizar si económicamente estamos seguros de que los errores que puedan
cometerse en el redondeo pueden despreciarse (porque nunca vamos a
obtener una ganancia mayor, ya que el conjunto factible con integridad es un
subconjunto del conjunto factible sin integridad y tal vez sólo perdamos
“pocos” dólares como mucho). Por todo ello, se opta como “compromiso
práctico” por no añadir restricciones de integridad y concluir con la solución
redondeada.
Una forma de analizar económicamente la solución, esto es, de ver lo
que podemos estar perdiendo como mucho, al elegir como óptima la de
redondeo y no la del problema completo, es calcular la diferencia entre el
valor óptimo de la función objetivo del problema continuo, y el valor de la
función objetivo en la solución redondeada. Es decir, en nuestro ejemplo, si
hubiéramos propuesto como solución E=4 F=7, sabemos que como mucho
perderíamos$50500-$48000=$2500 respecto a la solución continua (referencia
teórica irreal) y plantearnos si esto es “suficientemente bueno” o si, por el
contrario, nos compensa resolver el problema de programación entera. En
este caso, la resolución de este segundo problema nos permitiría ganar 1000$
más que si nos hubiéramos quedado con la solución redondeada del
problema continuo. Es decir, “perder” 1500$ respecto a la solución continua
(referencia irreal).
7
Descargar