MANUAL DE AYUDA ALP 1.0
Transcripción
MANUAL DE AYUDA ALP 1.0
MANUAL DE AYUDA ALP 1.0 Índice 1. Introducción 2. Tipos de problemas resueltos 3. Entrada de datos 4. Ventana principal 5. Ventana Branch & Bound 6. Soporte 1. Introducción El programa ALP 1.0 permite la resolución de problemas de programación lineal continua y entera. Se distribuye de manera gratuita bajo licencia GPL en la Web de la Unidad Docente de Organización de la Producción (http://iol.etsii.upm.es/ALP1.0.html ) de la ETSII (UPM) con el objetivo de servir de apoyo a la docencia a profesores y alumnos resolviendo este tipo de problemas de manera rápida y sencilla. Está programado en través del entorno de programación Qt, lo que ha permitido ser compilado para Windows, Mac OS y distribuciones Linux. Una vez descomprimido el fichero .zip correspondiente el usuario encontrará instrucciones para su ejecución en el ficero README-Plataforma.txt. 2. Tipos de problemas resueltos El programa resuelve problemas de programación lineal que se ajusten a las siguientes metodologías, siendo restricciones funcionales: el número de variables y el número de o Método del Simplex matriz completa. Resolverá problemas del tipo presentado en la siguiente ecuación: Maximizar … 0, 0, … , 0 En este caso todas las restricciones serán del tipo . o Método de Lemke matriz completa. Resolverá problemas del tipo presentado en la siguiente ecuación: Minimizar … 0, 0, 0, … , 0, … , 0 0 En este caso todas las restricciones serán del tipo siendo el problema resuelto a través del método de Lemke, complementario al del Simplex. o Método del Simplex variante de las dos fases. Resolverá problemas del tipo presentado en la siguiente ecuación. Maximizar … 0, 0, … , 0 En este caso al menos una de las restricciones será del tipo existiendo como máximo ó =, 1 restricciones de este tipo. o Problemas anteriores en el que todas o varias variables deban ser enteras a través de Branch & Bound mediante el algoritmo de Dakin. 3. Entrada de datos Al arrancar el programa se mostrará una ventana de introducción de datos como la siguiente en la que el usuario podrá decidir de qué manera desea introducir los datos. En todo momento el usuario puede acceder a esta ventana presionando el botón File->New en el menú principal. Las opciones son: o Hoja en blanco (“Blank sheet”). o Archivo de texto plano (“Opening .txt format”). o Matriz predefinida (“Predefined matrix”). En este caso se deberán seleccionar el número de variables de decisión y restricciones funcionales. A continuación se detallan los tres tipos mencionados: • Hoja en blanco Al seleccionar la opción de introducir los datos en una hoja en blanco (“Blank sheet”) aparece un cuadro como el mostrado en la figura siguiente. El usuario deberá teclear el problema de la misma manera que en un archivo de texto. El formato específico se detallará en el siguiente apartado. En caso de que los datos no cumplan las especificaciones requeridas el usuario deberá corregir los datos hasta que sean correctos. En todo momento se podrá consultar presionando el botón de ayuda situado en la parte inferior izquierda el formato requerido, iniciando una ventana como la mostrada en la figura. • Archivos texto plano Al seleccionar la opción “Opening .txt format” se abre un cuadro estándar de elección y apertura de archivos de texto, en el cual sólo se mostrarán las carpetas y archivos de este tipo. Una vez introducido el programa devuelve un resultado falso si encuentra algún problema a la hora de interpretarlo. El formato a introducir deberá ser el siguiente: max | min | … \ | | … | \ | … | \ … | … | \ Donde \n representa un salto de línea y el símbolo | representa el operador lógico (sólo una de las dos opciones puede ser elegida). Nótese que el programa lee archivos de texto plano .txt independientemente de la plataforma elegida. • Matriz predefinida Al seleccionar la opción de matriz predefinida y haber introducido el número de variables y restricciones deseado se accede a un cuadro como el mostrado en la siguiente figura de este apartado. El usuario sólo debe introducir los coeficientes de la función objetivo y las restricciones, seleccionando el tipo de restricción. Puede introducir los coeficientes en formato fracción o número decimal. Notar que si selecciona un tipo de problema a minimizar todos los coeficientes deberán ser del tipo . 4. Ventana principal En la ventana principal se presentan todas las funcionalidades, mostrada en la figura siguiente. Ésta contiene un marco central compuesto por una hoja en blanco donde se presentarán las matrices resultado, con una serie de botones alineados de manera vertical en la parte izquierda. En la parte superior se encuentra una barra menú estándar en la que encontramos diferentes opciones. Marco central Una vez validado el problema, éste es resuelto por al algoritmo correspondiente, presentando a continuación la primera matriz construida a partir del problema original. En este punto el control vuelve a pasar al usuario, donde a través de los botones laterales en la parte izquierda puede hacer uso de todas las opciones del programa. A continuación se detallan las funcionalidades específicas de cada botón: • Previous Step (paso previo): permite al usuario en caso de no encontrarse en la primera matriz, retroceder un paso borrando la última matriz, ya esté en el camino escogido por el programa o no. • Next Step (paso siguiente): permite avanzar un paso hacia la siguiente matriz en el caso en que el usuario se encuentre en el camino escogido por el programa. • Solution (solución): permite obtener directamente la matriz solución si el usuario se encuentra dentro del camino óptimo por el programa. • Solve completely (solucionar completamente): si el usuario está dentro del camino óptimo escogido por el programa presentará en pantalla las matrices que restan para alcanzar el óptimo con éste incluido. Importante resaltar que estos tres últimos botones se desactivan automáticamente al salir el usuario del camino elegido por el programa, volviéndose a activar en el caso en que vuelva al mismo. • Lista desplegable Enter (introducir): actualizada automáticamente en función de las variables de la última matriz mostrada, muestra al ser presionada todas las variables que el usuario puede introducir forzosamente, esto es, que no pertenecen al camino elegido por el programa. • Lista desplegable Leave (abandonar): actualizada automáticamente en función de las variables de la última matriz mostrada, muestra al ser presionada todas las variables que el usuario puede hacer salir de la última matriz. • Pivot: este botón lleva a cabo la acción del pivote con las variables elegidas para entrar y abandonar la matriz. • Los botones excluyentes precedidos de la palabra Switch cuentan con dos funciones distintas. La primera, mientras el usuario esté dentro del camino elegido por el programa y el problema sea de dos fases, informan de la fase en que se encuentra la última matriz. Si el usuario ha abandonado este camino, permiten cambiar los coeficientes de la última matriz. Las matrices se presentan en el formato de la matriz completa presentada a continuación, siendo el formato el utilizado en la ETSII (UPM). Barra superior Se ha dispuesto una barra menú en la parte superior con las opciones estándar de cualquier programa aplicables en este caso. Las opciones del submenú perteneciente a File son: • New: abre una nueva ventana de introducción de datos (InsertData). • Open: abre directamente una ventana de selección y apertura de archivos. • Save statement: permite guardar el enunciado en un archivo de texto plano. • Exit: sale directamente del programa. Las opciones del submenú perteneciente a Options son: • Restore to original matrix (restaurar a matriz original). Permite borrar todas las matrices hasta la primera matriz. • Restore to original path (restaurar a camino original).Permite borrar todas las matrices que se han generado fuera del camino generado por el programa. • Modify file. Permite modificar el archivo introducido in-situ a través de una hoja en blanco. Los cambios realizados se guardarán en el archivo. La última opción, Integer problem (problema entero), cuenta únicamente con la opción Branch & Bound, la cual abre una ventana para resolver el problema entero asociado. 5. Ventana Branch & Bound Al presionar sobre el botón Branch & Bound se genera una ventana como la mostrada en la figura siguiente. Aquí el usuario trabajará con el problema entero asociado. La ventana se compone de una fila horizontal superior de botones a través de los cuales el usuario ramifica y poda el árbol representado en la hoja inferior, (donde se muestran los nodos). En un primer momento se visualizará el primer nodo con la cota superior del problema continuo, mostrándose la inferior únicamente en el que la solución sea entera, donde ya se habrá encontrado el óptimo. Los nodos se crean cuando aparecen en pantalla y se destruyen cuando se borran de la misma. Asimismo serán actualizados automáticamente. En la fila horizontal de botones encontramos los siguientes botones: • Desplegable Node: en esta lista se encuentran todos los nodos generados hasta el momento, mostrando el nodo seleccionado actual. Si no hay ninguno aparecerá un espacio en blanco. Si se selecciona uno la correspondiente representación del nodo en la hoja será seleccionada. Igualmente si se selecciona un nodo en la hoja automáticamente se mostrará su nombre como nodo actual. • Desplegable Linear constraint: aquí se encuentran las variables que todavía no se han hecho enteras para el nodo seleccionado. Se actualizan automáticamente para cada nodo. • Con el botón Branch se ramifica el nodo actual en base a la variable seleccionada sin resolver las restricciones. • Con el botón Branch and Solve se ramifica el nodo actual en base a la variable seleccionada sin resolver las restricciones. • Con los botones Solve one y Unsolve one se resuelven los nodos o se devuelve el nodo a su estado no resuelto. • El botón Integer variables permite seleccionar las variables que deben ser enteras, con lo cual las que no sean seleccionadas no estarán disponibles en la lista desplegable anterior. Sólo se podrá utilizar en el caso en que el usuario se encuentre en el primer nodo. Si se cancela, por defecto podrán seleccionarse todas las variables en la lista desplegable. En la siguiente figura se muestra la ventana en la que el usuario puede elegir las variables que deban ser enteras. • Para finalizar, el botón Delete lower permite borrar todos los nodos inferiores al seleccionado en ese momento. En función de la situación del nodo se ha preparado un código de colores aparecerá coloreado en azul en modo normal si la solución no es entera, rojo si ha llegado a una solución no factible y verde si se trata de una solución entera. Si no está resuelto aparecerá en gris. Al ser seleccionados los nodos engrosarán y adquirirán un color más oscuro que el tono que tengan en ese momento. En la siguiente figura se muestran los nodos en sus diferentes estados. En la parte izquierda se dispone un cuadro con los valores de cada variable en el nodo seleccionado, si existieran. Asimismo en el botón Info se dispone una ventana, a modo de recordatorio, en la que se muestra el código de colores (puede que no esté disponible esta funcionalidad en todas las plataformas). A través de los botones inferiores se puede modificar el grosor y tamaño de letras de los nodos. 6. Soporte El programa ALP 1.0 se ha desarrollado como un Proyecto Fin de Carrera, no tratándose de un programa profesional, por lo que contendrá errores o bugs. Ante cualquier duda, sugerencia o error detectado el autor pone a disposición del usuario la siguiente dirección de correo (en caso de error incluir el problema que lo originó o la situación concreta): [email protected] Asimismo el código del programa completo se puede proporcionar bajo petición a través de la misma dirección, para futuros desarrollos o mejoras.