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.

Documentos relacionados