UNA EVALUACIÓN DE SOFTWARE COMERCIAL PARA LA OPTIMIZACIÓN DE MODELOS LINEALES EN ECONOMÍA María José Canós Darós Manuel Ventura Marco Departament d’Economia Financera i Matemàtica Universitat de València Abstract.- El objetivo de este trabajo consiste en analizar las características fundamentales de algunos de los paquetes de software comercial que resuelven problemas de programación lineal en el ámbito de la economía. Se han elegido aquéllos más frecuentes en la práctica docente y que resultan fácilmente accesibles para los estudiantes. Se estudia, entre otros, aspectos relacionados con la familiaridad del estudiante con el entorno de trabajo, tipo usual de hardware disponible, documentación y bibliografía disponible, y la aproximación algorítmica utilizada, usando como tests problemas de modelos económicos relevantes. 1. Introducción La proliferación durante los últimos años de software de optimización con posibilidades didácticas aconseja un estudio comparativo entre los diferentes paquetes comerciales. Hasta hace relativamente poco tiempo el recurso usual para resolver modelos de optimización consistía en programas propios de usuario en algún lenguaje conocido de programación o en la utilización de alguna subrutina de librería científica. Sin embargo, ya desde mediados de la década de los 80 existen estudios que prueban que el software comercial es una alternativa válida que cuenta con la ventaja de su facilidad de manejo para una amplia gama de usuarios [Harrison (1985)]. El análisis de estos programas puede realizarse desde una doble vertiente, bien desde su uso en el ámbito profesional o investigador [Fourer (1997)] o bien aplicados a la docencia. Este trabajo se centra en el segundo punto de vista, dada la importancia adquirida por los ordenadores en la enseñanza de la programación matemática y materias afines. La importancia de los modelos lineales en economía está fuera de toda duda. Son ampliamente utilizados, bien directamente o bien como una primera aproximación al problema, debido a su facilidad para ser entendidos y tratados. La literatura sobre este tipo de modelos en optimización es extensa desde que se publicaron los primeros trabajos a principios de la década de los 50 [Koopmans (1951), Dorfman (1951), Dorfman et al (1957), Kantorovitch (1960)]. Hoy en día, la misma continúa siendo significativa [Bazaraa et al (1990), Paris (1991), Zenios (1992), 1 Williams (1994), Dantzing y Thapa (1996)]. Por eso, los modelos lineales de optimización son una herramienta básica en la formación de un economista y son necesarios cursos elementales sobre esta materia en los estudios de economía y gestión empresarial. En dichos cursos, el estudiante se enfrenta por primera vez a dichos modelos, por lo que su estructura debe ser simple y comprensible para un principiante. Además, deben estar enunciados en un contexto económico porque los estudiantes deben aprender a modelizar, a discutir la solución y analizar la sensibilidad de la misma. Por todo ello creemos que un curso elemental de programación lineal debe organizarse en una primera fase siguiendo la técnica “smart small” de Kendrick (1996) –comenzar con modelos pequeños- y en una segunda fase con la técnica del método del caso, introduciendo casos reales como Shapiro (1984). De acuerdo con esta filosofía, hemos elegido unos problemas test que representarían un curso de estas características. Estos problemas han sido utilizados para evaluar varios paquetes de software comercial para PC’s. 2. De los programas de usuario al software comercial Las últimas dos décadas han sido testigo de la salida al mercado de muchos paquetes de software comercial para PC’s que resuelven problemas de programación lineal. Estos paquetes son fáciles de aprender a utilizar y contienen implementaciones algorítmicas aceptables. En contraposición, los programas de usuario requieren el conocimiento de algún lenguaje de programación como C, FORTRAN o PASCAL, siendo ésta la única alternativa que existía anteriormente. Hemos elegido algunos paquetes de software comercial para PC’s por las siguientes razones: (i) En la descripción previa de los cursos se ha resaltado que los estudiantes deben comenzar su formación con problemas de tamaño pequeño porque esto no significa ninguna limitación a la problemática de los modelos lineales que vaya más allá de la propia complejidad del modelo. La misma razón justifica que los posteriores casos reales tengan un tamaño moderado. Bajo estas condiciones, este tipo de problemas pueden resolverse con un ordenador personal sin diferencias significativas en precisión y velocidad de ejecución con respecto a mainframes y workstations [Harrison (1985)]. (ii) Los ordenadores en los laboratorios informáticos donde se imparten las clases prácticas de programación lineal serán a corto plazo Pentium 200 MHz PCI MMX con 32M RAM y un G de disco duro. Por tanto, hemos utilizado un ordenador de estas características como soporte de los programas y para realizar las pruebas. 2 (iii) Hemos constatado mediante estudios previos que los estudiantes no tienen conocimientos de lenguajes de programación [Canós y Ventura (1997)]. De hecho, su conocimiento informático es escaso y se reduce a ser usuarios de programas estándar en entorno Windows, tales como Word y Excel. Debido a que nuestro objetivo es enseñar programación lineal con soporte informático, el único modo de homogeneizar los conocimientos de los estudiantes es usar paquetes de software comercial. En base a nuestra experiencia académica y la información recogida a través de reuniones científicas y publicaciones técnicas, hemos elegido los siguientes paquetes: GAMS 2.25, versión estudiante. Es un lenguaje de modelización algebraica con enlaces con varios solvers de programación lineal, pero que también puede utilizarse en versión simplificada. Trabaja en entorno DOS. [Thompson y Thore (1992), Mocholí y Sala (1996), Brooke el al. (1997)]. LINGO 4.0, versión demo. Lenguaje de modelización en entorno Windows con solvers internos, que admite una versión simplificada. [Schrage (1998)]. LINDO 6.0, versión demo. Es un software específico para programación lineal, cuadrática y por objetivos en entorno Windows. [Schrage (1997)]. QSB+ 3.0 . Es un sistema soporte de decisión multimodular interactivo que funciona mediante menús desplegables, ventanas, casillas de verificación y botones de opciones en entorno DOS con ratón o mediante teclas de acceso1. [Chang (1994)]. MATHEMATICA 3.0. Es un software matemático de propósito general una de cuyas características avanzadas es que puede utilizarse como lenguaje de programación de alto nivel. Funciona en entorno Windows mediante menús desplegables y/o comandos. [Wolfram (1996)] Excel 97/Solver. Se trata de una utilidad de la hoja de cálculo Excel97. [Clauss (1995), Hesse (1996)]. En el caso de GAMS, LINDO y LINGO se trata de paquetes que pueden recuperarse a través de la red e instalarse en un ordenador personal sin ningún coste. MATHEMATICA suele ser gratuito para el usuario en el caso de personas vinculadas a la Universidad. En los restantes casos, el usuario debe asumir algún gasto, aunque no excesivo, para obtener la correspondiente licencia. 3 3. Ítems de evaluación La revisión de la literatura existente sobre la evaluación de software comercial de programación matemática [Harrison (1985), Golden y Wasil (1986), Jones (1992), Fourer (1997)] nos ha llevado a considerar los siguientes ítems: Estadísticos .- tamaño máximo del problema y aspectos relacionados con el procedimiento de solución. Posibilidades del programa .- entrada de datos y edición, salida de resultados, facilidad de uso y elementos notables referidos a la programación lineal. Todo el análisis realizado aparece resumido en forma de tablas. En todas ellas, se ha utilizado el software básico, sin ningún complemento. Muchos de los resultados que aparecen en las mismas han sido comprobados ejecutando los problemas test. En el caso de aquellos paquetes con diferentes niveles de modelización, como GAMS o LINGO, el mismo problema ha sido testado varias veces. GAMS LINGO LINDO QSB MATHEM EXCEL 200 var Tamaño 300 rest 50 rest 50 rest Depende del Depende del máximo 300 var 100 var 100 var hardware hardware único único único único Solver varios único Tabla 1: Estadísticas Evidentemente, el tamaño máximo del problema a tratar está siempre en función de los recursos del hardware, tales como la memoria disponible. No obstante, algunos paquetes tienen otro tipo de limitaciones como puede ser el número de variables y/o de ecuaciones o la densidad de la matriz. En la siguiente tabla, el formato hace referencia a la forma de introducir los datos. Puede ser notación algebraica avanzada, cuando se utilizan símbolos, índices y funciones matemáticas; notación de ecuaciones o algebraica simple cuando se utiliza notación matemática estándar simple; notación matricial cuando se pueden introducir los datos en forma de matriz o vector, entendiendo que el usuario no necesita introducir el modelo; por último, el formato de hoja de cálculo con las características especiales de este contexto. Los datos también pueden ser introducidos a partir de un fichero ya existente, que puede provenir de otro paquete. En el caso de 1 Existe la versión QSB+ 4.0 para Windows, pero en el momento de realizar este trabajo no estaba a 4 que la recuperación no sea directa, aparece explícitamente indicado en la tabla. Por ejemplo, el GAMS puede recuperar ficheros provenientes de una hoja de cálculo siempre que hayan sido archivados en el formato adecuado. Algunos de estos paquetes tienen una interconexión total con otros programas comerciales. Por ejemplo, entre LINGO y Excel97/Solver. Formato GAMS LINGO LINDO QSB MATHEM EXCEL Ecuaciones Ecuaciones Ecuaciones Ecuaciones Ecuaciones Hoja de Algebraico Algebraico Matricial Matricial cálculo Sí Sí No No No Sí Orientado Menús Menús Comandos Menús por ficheros Windows Windows Menús Windows Separación datos-modelo Interface Menús DOS Windows Editor Externo Interno Interno Externo Externo Interno Interno Interno Externo Conexión Parcialmente Hojas de Hojas de Ficheros con otros Ficheros cálculo cálculo MPS programas texto con Bases de Bases de hojas de datos datos cálculo Ficheros Ficheros MPS MPS Parcialmente Base de datos Ficheros texto Tabla 2: entrada de datos Aunque no aparece recogido explícitamente en la tabla 3, podemos resaltar que el único de los paquetes que puede resolver un problema por el método gráfico es QSB. Pensamos que el método gráfico tiene una importancia meramente ilustrativa, pero permite que los estudiantes comprendan mucho mejor aspectos de la programación lineal, como el tipo de solución del problema. Por otra parte, y con referencia a la última fila de la tabla, LINGO ofrece la opción de grabar el output en ficheros de formato LINDO. nuestra disposición. 5 Informe de GAMS LINGO LINDO QSB MATHEMA EXCEL Externo Interno Interno Interno Interno Interno Externo Externo Externo No Sí Sí No Sí resultados Mostrar Depende del iteraciones solver Conexión Hoja de Hoja de Fichero Fichero Como Con con otros cálculo cálculo MPS MPS lenguaje de determinados programación programas programas Bases de datos Fichero MPS Tabla 3: salida de datos GAMS LINGO LINDO QSB MATHEMA EXCEL Ayuda No Sí Sí No Sí Sí Entorno No Windows Windows Windows No Windows Windows Windows Documento Sí Sí Sí No No Sí L. modelos Sí Sí Sí No No Sí L. funciones Sí Sí No No Sí Sí Referencias Extensa Extensa Extensa Reducida Moderada Extensa Tabla 4: facilidad de uso El término documentación hace referencia a la facilidad de comprensión del fichero de entrada y/o salida de datos por una persona no experta. Dichos ficheros constituyen en sí mismos un documento en el que, además de la formulación y resultados matemáticos, es posible introducir una descripción del problema. Por ejemplo, GAMS permite introducir comentarios cortos utilizando un asterisco o comentarios más extensos mediante la utilización de la instrucción apropiada. Para LINDO y LINGO existen procedimientos similares, mientras que Excel utiliza para dicho quehacer los recursos habituales de las hojas de cálculo, tales como cuadros de texto, comentarios, etc. Hemos distinguido entre librerías de modelos preexistentes y librerías de 6 funciones. Con respecto a estas últimas, en el caso de MATHEMATICA y Excel, se entiende las propias del programa. Por referencias se entiende la existencia de una guía de usuario y publicaciones adicionales. GAMS LINGO LINDO QSB MATHEMA EXCEL No No No Sí No No Variables Principales Todas Todas Todas Principales Todas Función objetivo Siempre Siempre Siempre Siempre A veces Siempre Costes reducidos Sí Sí Sí Sí No Sí Precios sombra Sí Sí Sí Sí No Sí Intervalos de No No Sí Sí No Sí No No Sí No No No Estructuras particulares sensibilidad Parametrización Tabla 5: Elementos notables referidos a la programación lineal Esta tabla recoge todos aquellos aspectos de los programas que inciden directamente en el buen aprendizaje de la programación lineal. En la primera fila aparece la capacidad de los paquetes básicos para resolver problemas lineales con una cierta estructura particular mediante algoritmos específicos como en el caso de problemas de transporte, flujo en redes, etc. Como en los cursos de programación matemática siempre existe al menos un apartado que se ocupa de estos problemas, nos parece conveniente remarcar en las clases prácticas la posibilidad de una resolución específica alternativa, con todas las ventajas que ello comporta. Las cuatro siguientes filas reflejan la información mínima que, según nuestro criterio, debe aparecer en un informe de resultados para un adecuado análisis de la solución. Como fila variables entendemos las variables principales y las de holgura. Sólo hemos considerado la información directa que da el programa, sin instrucciones adicionales. Además, también consideramos importante un estudio sobre la sensibilidad de la solución, lo que aparece reflejado en la penúltima fila. Aunque de menor relevancia también hemos recogido la posibilidad de realizar análisis paramétrico, cuestión que queda reducida a LINDO. 7 4. Una extensión natural en la enseñanza: la programación lineal entera Una vez aprendida la programación lineal, parece una continuación lógica, que no requiere excesivo esfuerzo el salto a la programación lineal entera [Dantzig (1957, 1960), Gomory y Baumol (1960)], entendida dicha extensión como una introducción a la optimización discreta. [Nemhauser y Wolsey (1988), Parker y Rardin (1988)]. Por ello, es una ventaja que los paquetes estudiados tengan una opción que permita tratar este tipo de programación. De hecho, todos ellos la tienen, excepto MATHEMATICA. Esta posibilidad se limita a alguna implementación algorítmica del tipo de ramificación y acotación. Todos ellos poseen la disponibilidad de conceptos básicos como variables binarias, problemas mixtos, etc. Algunos de los paquetes poseen utilidades adicionales como la fijación por el propio usuario de parámetros de tolerancia o reglas de elección de ramas; por ejemplo, LINDO, QSB o GAMS. Además, QSB permite ver cada una de las etapas del procedimiento de ramificación y acotación. Los problemas utilizados como test siguen la misma filosofía que la explicada en programación lineal. 5. Conclusiones Si partimos de la premisa de que los cursos están dirigidos a estudiantes sin conocimientos de lenguajes de programación y que sólo verán modelos lineales y lineales enteros, el paquete que ofrece más prestaciones combinado con mayor facilidad de aprendizaje es LINDO. De entre los cinco restantes, QSB y Excel97/Solver para los usuarios habituales de hojas de cálculo poseen un interface más agradable, lo que supone un esfuerzo preparacional mínimo, pero, a cambio, ofrecen menos posibilidades. Por otra parte, para los principiantes es más adecuado trabajar en el contexto del problema exacto y no con una formulación algebraica abstracta, perdiéndose con ello la ventaja que ofrecen GAMS y LINGO como lenguajes de modelización. Sin embargo, para problemas de mayor tamaño y con estructuras particulares, la separación datos-modelo es un avance incuestionable. En todas las facetas que hemos analizado, MATHEMATICA está en desventaja respecto al resto de los paquetes, aunque no se han tenido en cuenta las posibilidades del mismo como lenguaje de programación de alto nivel, como hace Carter (1996a, 1996b). Aunque hemos hecho algunas breves menciones, tampoco hemos analizado profundamente lo que, a corto plazo, será una posibilidad: el uso combinado de paquetes[Lawrence y Pasternak (1998)] y la interconexión de los mismos, prácticamente, a todos los niveles mediante interfaces OLE y DLL. 8 Referencias Bazaraa, M.S.; Jarvis, J.J. y Sherali, H.D. (1990), Linear Programming and Network Flows, Wiley, Nueva York. Brooke, A.; Kendrick, D.; Meeraus, A. y Raman, R. (1997) GAMS RELEASE 2.25 Version 92. Language Guide, GAMS Development Corporation. Canós, M.J. y Ventura, M. (1997), “Una valoración de los estudiantes sobre el aprendizaje de la investigación operativa en los estudios de economía y administración de empresas”, actas de las V Jornadas de la Asociación Española de Profesores Universitarios de Matemáticas en la Economía y la Empresa, Málaga, 10 y 11 de octubre de 1997. Carter, M. (1996a), “Linear Programming with MATHEMATICA. The Simplex Algorithm”, recogido en Varian, H.R. , Computational Economics and Finances. Modeling and Analysis with MATHEMATICA, TELOS, Springer-Verlag, capítulo 1, páginas 3-30 Carter, M. (1996b), “Linear Programming with MATHEMATICA. Sensitivity Analysis”, recogido en Varian, H.R. , Computational Economics and Finances. Modeling and Analysis with MATHEMATICA, TELOS, Springer-Verlag, capítulo 2, páginas 31-64. Chang, Y.-L. (1994), QSB+[Quantitative Systems for Business Plus]: version 3.0, PrenticeHall, Englewood Cliffs. Clauss, F.J. (1995), Applied Management Science and Spreadsheet Modeling, International Thompson Publishers. Dorfman, R. (1951), Application of Linear Programming to the Theory of the Firm, University of California Press, Berkeley. Dorfman, R.; Samuelson, P.A. y Solow, R. (1958), Linear Programming and Economic Analysis, McGraw-Hill, New York. Dantzig, G.B. (1957), “Discrete variable extremum problems”, Operations Research, 5, 266-277. Dantzig, G.B. (1960), “On the significance of solving linear programming problems with some integer variables”, Econometrica, 28, 30-44. Dantzig, G.B. y Thapa, M.N. (1996), Linear Programming. Introduction, Springer Series in Operations Research, Springer. Fourer, R. (1997), “Software survey: linear programming”, ORMS Today, 24 (2), 54-63. Golden, B.L. y Wasil, E.A. (1986), “Nonlinear Programming in a microcomputer”, Computer & Operations Research, 13(2/3), 149-166. Gomory, R.E. y Baumol, W.J. (1960), “Integer programming and pricing”, Econometrica, 28, 521-550. 9 Harrison, T. P. (1985), “Micro versus Mainframe Perfomance for a Selected class of mathematical programming problems”, Interfaces, 15(4), 14-19. Hesse, R. (1996), Managerial Spreadsheet Modeling and Analysis, Irwin. Jones, C.V. (1992), “User Interfaces”, en Coffman, E.G. et al [Eds.], Handbooks in OR&MS, Vol. 3, , Elsevier Science Publishers, cap. 12, páginas 603-668. Kantorovich, L.V. (1960), “Mathematical methods in the organization and planning of production”, Management Science, 6(4), 366-422. (Original ruso: 1939). Kendrick, D. (1996), “Sectorial Economics”, en Amman, H.M. et al [Ed], Handbook of Computational Economics, volumen 1, Elsevier Science B.V. Koopmans, T. (1951), “Analysis of production as an efficient combination of activities”, recogido en: ,Koopmans, T. [Ed.], Activity Analysis of Production and Allocation Wiley, New York, Cap. 2. Lawrence, J.A.Jr. y Pasternak, B.A. (1998), Applied Management Science, Wiley. Mocholí, M. y Sala, R. (1996) Decisiones de Optimización, Tirant lo Blanch, Valencia. Nemhauser, G.L. y Wolsey, L.A. (1988), Integer and Combinatorial Optimization, Wiley, Nueva York. Paris, Q. (1991), An Economic Interpretation of Linear Programming, Iowa State University Press. Parker, R.G. y Rardin, R.L. (1988), Discrete Optimization, Academic Press. Schrage, L. (1997), Optimization Modeling with LINDO,, Duxburry Press, Belmont. Schrage, L. (1998), Optimization Modeling with LINGO, LINDO Systems, INC, Chicago. Shapiro, R.D. (1984), Optimization Models for Planning and Allocation: Text and Cases in Mathematical Programming, Wiley, Nueva York. Thompson, G.L. y Thore, S. (1992), Computational Economics: Economic Modelling with Optimization Software, Boyd & Fraser, Damvers. Williams, H.P. (1994), Model Building in Mathematical Programming, Wiley, Nueva York. Wolfram, S. (1996), The MATHEMATICA book, Cambridge University Press. Zenios, S.A. [Ed.] (1992), Financial Optimization, Cambridge University Press. 10