ANEXO 01 GENERALIDADES DEL CPLEX 1. CONSIDERACIONES GENERALES La versión CPLEX 3.0 es una versión bajo DOS. El CPLEX es una herramienta para resolver problemas de optimización lineal, o mejor conocida Programación Lineal de la forma: Maximizar o Minimizar: c1x1+ c2x2 + … + cnxn Sujeto a: a11 + a12x2 + … + a1nxn a21 + a22x2 + … + a2nxn a31 + a32x2 + … + a3nxn ~ b1 ~ b2 ~ b3 am1 + am2x2 + … + amnxn ~ bm Límites: l1 < x1 < u1 ln < xn < un Donde ~ puede ser <, >, o =, y los límites inferiores o superiores, li y ui pueden ser infinito positivo (+ ∝ ) o negativo (- ∝). Las constantes conocidas en el formato de programación lineal son: Coeficientes de la función objetivo: Coeficientes de las restricciones: Lado derecho de las restricciones: Límites superiores e inferiores de las variables: Las variables (desconocidas) serían: c1, …, cn a11, …, amn b1, …, bm u1, …, un y l1, …, ln x1, …, xn El Linear Optmizer y el Barrier Solver del CPLEX resuelven problemas con variables continuas, mientras que el Mixed Integer Solver permite tanto las variables continuas como las enteras. Las variables que deben ser restringidas a valores enteros se pueden clasificar en dos tipos: 2. Binarias: son las que sólo pueden tomar el valor de 0 o 1. Generales: son las que sólo pueden tomar valores enteros (pero cualquier entero) PAUTAS GENERALES PARA LA UTILIZACIÓN ÁGIL DEL CPLEX Debido a las limitaciones que tiene la versión CPLEX 3.0 para el manejo de los datos de entrada de salida, se organizó un procedimiento que permitiera hacer un uso más práctico del software. Los pasos que se deben ejecutar se describen a continuación: Se organizan previamente en Excel los formatos de 4 libros que servirán de interfases de entrada y salida con respecto a la información que es requerida por el CPLEX y a los resultados que arroja. Dichos libros de Excel son los siguientes: - 01 Datos Modelo.xls: este libro contiene todos los formatos o tablas en las cuales se descargan todos los datos requeridos por el modelo. Este es el único archivo en el que se pueden hacer modificaciones de información. - 02 Tablas de Datos.xls: este libro contiene la misma información que fue descargada en el archivo 01 Datos Modelo.xls, pero de manera tal que facilite la creación automática del archivo de texto que posteriormente será corrido en el CPLEX. Este archivo se genera automáticamente a partir de la información que se descargue en el archivo 01 Datos Modelo.xls, y no puede ser manipulado de ninguna manera. Todas las modificaciones que se hagan en el archivo 01 Datos Modelo.xls quedan automáticamente actualizadas en el archivo 02 Tablas de Datos.xls. - 03 Coeficientes.xls: al igual que el archivo 02 Tablas de Datos.xls, este se genera automáticamente a partir de la información que se descargue en el archivo 01 Datos Modelo.xls y no puede ser manipulado de ninguna manera. En este archivo se arman en forma explícita la función objetivo y restricciones de las variables, según como lo requiere el CPLEX. Todas las modificaciones que se hagan en el archivo 01 Datos Modelo.xls quedan automáticamente actualizadas en el archivo 02 Tablas de Datos.xls. - 04 Resultados Corrida.xls: este archivo es utilizado para manejar los resultados que entrega el CPLEX una vez haya corrido el modelo, con el fin de presentar en forma clara la propuesta del modelo. A partir del archivo 03 Coeficientes.xls se hace una copia de la hoja que contiene todos los elementos del problema a un archivo de TEXTO, y en formato TEXTO, archivo que será leído por el CPLEX. En este caso el archivo recibe el nombre de Syj_pro.txt con formato de WORDPAD. La ruta de ubicación de este archivo de estar previamente definida. Posteriormente se entra al ambiente de MS DOS Una vez se encuentre en el ambiente del MS DOS, se ejecuta el CPLEX así: c > CPLEX < return > Siempre y cuando el CPLEX esté en el directorio raíz C; si el CPLEX no está en el directorio raíz C, entonces se escribe la ruta completa. En ese momento ya la aplicación está corriendo, y está lista para aceptar cualquier comando del CPLEX. Luego se lee el archivo del problema a correr, con la siguiente sintaxis: CPLEX < read c : \ (Ruta donde está el archivo de texto) \ syj_pro < return > Una vez leído el archivo de texto, ya el problema está en memoria y puede ser resuelto por medio del siguiente comando: CPLEX < op < return > Cuando el CPLEX indique que el problema ha sido resuelto, se debe ejecutar el siguiente comando con el fin de que el CPLEX descargue la solución de cada una de las variables en un archivo plano: CPLEX < d sol - < return > En este momento el CPLEX ha terminado de resolver el problema y ha exportado la información a una archivo de texto externo a él. Para salir del CPLEX y del MS DOS se ejecutan los siguientes comandos: CPLEX < q < return > C: \ > exit < return > Se abre el archivo de texto CPLEX.LOG el cual se encuentra en el directorio o carpeta donde está el CPLEX. Ese archivo es el que contiene el valor solución de las variables. Se toma el valor de dichas variables y se pasan en forma de texto (las variables) y de número (los resultados) a la primera hoja del libro 04 Resultados Corrida.xls. En este momento ya se tiene el informe ejecutivo y la agenda de operación de bombas de la operación modelada y puede ser observada e impresa a partir de la información que se encuentra en las dos últimas hojas de este libro o archivo. Cabe anotar que los comandos principales del CPLEX son 13 y ninguno repite la letra inicial, por lo cual cada uno de ellos puede ser ejecutado con sólo darle las letras iniciales que se consideren necesarias para distinguir el comando de otro o, si se quiere, el nombre completo del comando, y es indiferentes si es en letras mayúsculas o minúsculas. Los demás comandos, los cuales no fueron utilizados en el esquema de corrida del CPLEX, pueden ser de mucha utildad, por lo que se recomienda que sean consultados en el manual de instrucciones del CPLEX 3.0. Todos los cambios que se deseen hacer en los parámetros del problema, se deben hacer a partir del archivo 01 Datos Modelo.xls, y repetir los pasos ya descritos para realizar una nueva corrida.