Modelos cuantitativos II – para ansiosos
Vimos en la entrada Modelos cuantitativos una breve introducción a este tipo de modelos y planteamos un pequeño ejemplo de los mismos. No vimos la solución al problema en dicha oportunidad, tan solo lo planteamos. En esta oportunidad, y haciendome trampa al solitario, no voy a hablar sobre la teoría tras la solución del problema sino que voy a ir directo a lo jugoso e interesante, el modelo matematico, o mejor dicho, un posible modelo matemático para hallar la solución del problema.
El modelo que a continuación presento está hecho en Glpk y lo probé en la vesión 4.25, pero asumo que dada la sencillez del modelo, cualquier otra versión más o menos reciente debería poder resolverlo sin problemas.
El modelo y su solución se reparten en tres archivos, el modelo propiamente dicho (ej1.mod), los datos de entrada (ej1.data) y la salida o solución (ej1.sol). Archivos que a continuación se transcriben
El modelo – ej1.mod
/* Sets */
set PRODUCTO;
set PLANTA;
/* Parameters */
param Ganancia_por_lote { p in PRODUCTO };
param Horas_necesarias { p in PRODUCTO, h in PLANTA };
param Tiempo_disponible { h in PLANTA };
/* Decision variables */
var x { p in PRODUCTO } >= 0;
/* Objective function */
maximize z: sum {p in PRODUCTO } Ganancia_por_lote[p] * x[p];
/* Constraints */
s.t. supply { h in PLANTA }: sum { p in PRODUCTO } Horas_necesarias[p,h]*x[p] <= Tiempo_disponible[h];
end;
Datos de entrada – ej1.data
data; /* data section */
set PRODUCTO := puerta ventana;
set PLANTA := planta1 planta2 planta3;
param Horas_necesarias : planta1 planta2 planta3 :=
puerta 1 0 3
ventana 0 2 2;
param Ganancia_por_lote :=
puerta 3000
ventana 5000;
param Tiempo_disponible :=
planta1 4
planta2 12
planta3 18;
end;
Salida – ej1.sol
Problem: ej1
Rows: 4
Columns: 2
Non-zeros: 6
Status: OPTIMAL
Objective: z = 36000 (MAXimum)
No. Row name St Activity Lower bound Upper bound Marginal
—— ———— — ————- ————- ————- ————-
1 z B 36000
2 supply[planta1]
B 2 4
3 supply[planta2]
NU 12 12 1500
4 supply[planta3]
NU 18 18 1000
No. Column name St Activity Lower bound Upper bound Marginal
—— ———— — ————- ————- ————- ————-
1 x[puerta] B 2 0
2 x[ventana] B 6 0
La salida mostrada es parcial, ya que el solver da algunos datos más que no veremos en esta oportunidad. Las tres líneas marcadas en negro son las que más nos interesan. La primera de ellas nos dice cual es el valor óptimo alcanzado para la función objetivo, en este caso 36.000, es decir que esa será nuestra ganancia semanal dadas las condiciones y datos de entrada que se especificaron. Las otras dos líneas en negro nos muestran los valores que cada una de las variables debe tomar para alcanzar dicho valor. En este caso, se deberán producir dos lotes de puertas y 6 lotes de ventanas.
Si bien el ejemplo es sencillo es un ejemplo muy representativo de la realidad (a excepción del tamaño del problema) y es una interesante introducción a Glpk.
número de lotes del producto 1 fabricados por semana
número de lotes del producto 2 fabricados por semana
ganancia semanal total al producir éstos productos
y
son las variables de decisión y utilizando la última fila de la tabla, llegamos a la siguiente función objetivo:



El cliente Wave, como todo producto de Google es visualmente muy atractivo y está muy bien logrado. Es intuitivo y muy cómodo de usar. Lo probé sobre Firefox en Windows y Linux y funciona en ambos sin ningún problema. Para utilizarlo sobre Internet Explorer, Google recomienda instalar el plugin Google Chrome Frame browser o atenerse a las consecuencias. Me atuve a las consecuencias… wave nunca llegó a cargar completamente. No hice más pruebas sobre Explorer.

Dos cosas pueden decirse de este libro, que es un libro honesto y que es una excelente investigación periodística. Es un libro honesto porque en el prólogo declara su intención, que el votante indeciso no vote al Frente Amplio, es una excelente investigación periodística porque a lo largo de sus páginas se dedica a recopilar todos los “errores, horrores, delitos, idas y venidas en las declaraciones” que sus dirigentes han hecho durante estos años (pongo entre comillas para evitar cualquier juicio de valor sobre esos actos o dichos, cada uno que lea el libro sacará sus conclusiones). Cada una de las hechos que cuenta, están debidamente documentados con las publicaciones de donde fueron tomadas las declaraciones o donde fueron reportados los hechos asi como los expedientes judiciales en los casos que los hay. Las opiniones y conclusiones que de ellos se desprende, por supuesto, corren por cuenta del autor. Es como uno de esos nefastos programas televisivos de archivo que se dedican a mostrar las dos caras de los personajes mediáticos de moda, pero hecho con la actuación de un gobierno.
Comentarios recientes