Post on 10-May-2020
Diseño funcional de la aplicación
29
4. Diseño funcional de la aplicación. En este apartado se va a realizar una descripción de cómo se ha abordado la resolución del problema de gestión de recursos, desde el punto de vista de la programación. La aplicación se ha codificado en Visual Basic 6.0. Parte del código del programa, “Método de la Esferas”, se encuentra en el ANEXO I. Con el objeto de hacer una representación clara y sencilla de los diferentes módulos y funciones de los que consta el programa se van a emplear una serie de diagramas de flujo. En ellos se mostrará la estructuración de la aplicación, así como el flujo que siguen los datos desde que son leídos hasta que se construye el modelo y se realiza la resolución final del mismo. En la figura 4 se resume el significado de cada uno de los símbolos de los que consta los diagramas de flujo con el objeto de facilitar su total comprensión.
Símbolo Significado
Punto terminal, inicio o fin de módulo
Proceso general, cálculos, etc.
Llamada a funciones.
Proceso iterativo, asigna valores iniciales y modifica los índices.
Fin de operaciones del proceso iterativo.
Proceso de lectura o escritura
Elemento de decisión: Bifurcación condicionada
Conexión entre puntos de diferentes páginas
Figura4. Símbolos de diagrama de flujo.
Diseño funcional de la aplicación
30
4.1. Descripción de los programas. Para la implementación se ha realizado un programa en Visual Basic. Este parte de la lectura de los datos del problema, se generaron las demandas y capacidades aleatoriamente, desde una hoja Excel, planteándose las ecuaciones correspondientes. Posteriormente se resuelve el problema según el “Método de las Esferas”, mostrándose los resultados por pantalla. Seguidamente se obtiene el Simplex ,y Dual a partir del Simplex, obteniéndose los resultados también por pantalla. Finalmente los resultados son volcados a una hoja Excel. Se detallan a continuación los pasos seguidos en el primero de los programas: En primer lugar se definen las variables globales y el tipo de estás que
se van usar a lo largo del programa, y contendrán los datos del problema..
A continuación se inicia el módulo principal, previamente se definieron
los objetos necesarios en el formulario 1. Se indica la dirección del archivo que contiene los datos.
Se abre el archivo de datos y se leen los siguientes datos.
o Número de categorías. o Número de variables de decisión por día o Número de días a estimar. o Precios por categoría. o Límites de la demanda aleatoria por categoría. o Límite de la capacidad del hotel por día de estimación.
Se construye el modelo.
o Obtención de la función objetivo. o Obtención de las ecuaciones de las restricciones.
Resolución del modelo.
Se obtienen las soluciones.
o Se muestran los resultados por pantalla.
Resolución del Simples y Dual.
Se obtienen las soluciones.
o Se muestran los resultados por pantalla. o Se obtienen la soluciones, se construye el archivo con las soluciones.
Diseño funcional de la aplicación
31
En la figura 5 se muestra un esquema genérico en el que aparecen los módulos y submódulos que constituyen el programa. Se han incluido 4 niveles.
Nivel 0: es el módulo principal. Nivel 1: está constituido por los procesos principales del problema. Nivel 2: son los subprocesos que conforman los procesos anteriores. Nivel 3: son las funciones básicas y que constituyen los subprocesos
anteriores.
Diseño funcional de la aplicación
32
Nivel 0
Módulo principal
Nivel 2
Nivel 3
Lectura de archivo de datos
Construcción del modelo
Resolución del problema
Obtención de soluciones y
archivo de salida
Obtención de los resultado a
mostrar por pantalla
Archivo de soluciones.
Algoritmo “Método de las
Esferas”
Obtención de la función objetivo
Obtención de las ecuaciones
de restricciones
Traspuesta
Prod. Escalar.
Matriz Inversa
Traspuesta
SVD
Prod. Escalar.
Matriz Inversa
Algoritmo Simlex
Nivel 1
Figura 5. Esquema general del programa.
Diseño funcional de la aplicación
33
4.2. Módulos del programa.
En este apartado se detallan los módulos, submódulos y funciones que aparecen en la figura 5 y constituyen el programa.
4.2.1. Nivel 0: Módulo principal. El módulo principal está formado por los siguientes submódulos y procesos:
Diseño funcional de la aplicación
34
Figura6. Módulo principal del programa
Diseño funcional de la aplicación
35
4.2.2. Nivel 1: Procesos principales
Se describen en este apartado los módulos correspondientes al nivel 1 de la figura 5. 4.2.2.1. Lectura de datos Se realiza en esta función la lectura de los datos del problema que se pasan en el archivo de entrada. Este archivo con extensión .xls presenta la siguiente estructura: En la celda B1 se muestra el número de categorías.
En B2 se recoge el número de variables de decisión por día.
En B3 recoge el número de días a estimar.
A continuación se muestra un vector, C2:S2, que contiene los precios de
las habitaciones para cada categoría. La matriz definida por las celdas C4:S10 recoge la demanda aleatoria de
habitaciones por cada día. Finalmente el vector T4:T10 contiene la capacidad del hotel.
El esquema de este módulo es el que sigue:
Diseño funcional de la aplicación
36
Figura7.Lectura de archivo de entrada.
Diseño funcional de la aplicación
37
4.2.2.2. Construcción del modelo. En este módulo se llaman a las funciones encargadas de implementar el problema, para ello se habrá de obtener: La función objetivo que se pretende optimizar.
Las ecuaciones de las restricciones
Cabe indicar que en el algoritmo del “Método de las Esferas”, la función actúa como una restricción más.
Figura8. Construcción del modelo.
Diseño funcional de la aplicación
38
4.2.2.3. Resolución del problema. Una vez construido el modelo, se habrá de resolver. Inicialmente se fija el límite superior de iteraciones, así como una solución inicial. El esquema de este módulo es el siguiente:
Figura9.Resolución del problema.
Diseño funcional de la aplicación
39
4.2.2.4. Soluciones y archivo de salida. En este módulo se recopila la información sobre la solución obtenida, esta información se muestra por pantalla y se guarda en un archivo de salida. El esquema de este módulo es el siguiente:
Figura10. Obtención de soluciones y archivo de salida.
Diseño funcional de la aplicación
40
4.2.3. Nivel 2: Subprocesos.
En este apartado se describen los submódulos y funciones del nivel 1. 4.2.3.1. Obtención de la función objetivo. Para obtener la función objetivo se multiplica el precio de los recursos por el número de estancias por categoría.
Figura11. Obtención de la función objetivo
Diseño funcional de la aplicación
41
4.2.3.2 Obtención de las ecuaciones de restricciones. Esta función construye la matriz de restricciones, que en principio tendrá una fila por cada restricción de capacidad diaria total existente y, una fila por cada variable de decisión, el número de columnas coincide con el número de variables de decisión. El esquema de esta función es el siguiente:
Figura12. Obtención de las ecuaciones de restricciones.
Diseño funcional de la aplicación
42
4.2.3.3. Algoritmo “Simplex”. Este módulo resuelve el problema de programación lineal planteado, a través del algoritmo “Simplex”, tanto primal como dual. Este módulo también contiene la programación para la presentación de los resultados en un formulario.
Diseño funcional de la aplicación
43
Diseño funcional de la aplicación
44
Diseño funcional de la aplicación
45
Diseño funcional de la aplicación
46
Diseño funcional de la aplicación
47
Figura13. Algoritmo Simplex.
Diseño funcional de la aplicación
48
4.2.3.4. Algoritmo “Método de las Esferas”.
Figura14. Método de las Esferas.
Diseño funcional de la aplicación
49
4.2.3.5. Obtención de los resultados por pantalla En esta función se obtiene, mediante las instrucciones necesarias de Visual Basic 6.0, información de los resultados por pantalla.
Figura15. Resultados por pantalla.
Diseño funcional de la aplicación
50
4.2.3.6. Archivo de soluciones. En este módulo se genera la información sobre la solución en una archivo .txt, editable con cualquier editor de texto.
Figura16. Archivo salida.
Diseño funcional de la aplicación
51
4.2.4. Nivel 3: Funciones básicas
En este apartado se describen las funciones del nivel 2. 4.2.4.1. Matriz Transpuesta. Esta función obtiene la matriz transpuesta de una dada.
Figura17. Matriz Traspuesta.
Diseño funcional de la aplicación
52
4.2.4.2. Producto matricial. Esta función obtiene el producto de dos matrices dadas.
Figura18. Producto matricial.
Diseño funcional de la aplicación
53
4.2.4.3. Descomposición en valores singulares (SVD).
Esta función permite obtener una solución para el sistema sobredeterminado que queda tras la aplicación del “Método de las Esferas”.
Diseño funcional de la aplicación
54
Diseño funcional de la aplicación
55
Diseño funcional de la aplicación
56
Diseño funcional de la aplicación
57
Diseño funcional de la aplicación
58
Diseño funcional de la aplicación
59
Diseño funcional de la aplicación
60
Diseño funcional de la aplicación
61
Diseño funcional de la aplicación
62
Diseño funcional de la aplicación
63
Figura19. SVD.
Diseño funcional de la aplicación
64
A continuación, se detallan los procesos generales que se han tenido en cuenta, en la representación del diagrama de flujo de la función básica descomposición en valores singulares. 1. Reducción de Householder a forma bidiagonal.
La reducción a bidiagonal es el paso previo para computar la descomposición en valores singulares (SVD).
Diseño funcional de la aplicación
65
Diseño funcional de la aplicación
66
Diseño funcional de la aplicación
67
Diseño funcional de la aplicación
68
Diseño funcional de la aplicación
69
Figura20. Reducción de Householder.
Diseño funcional de la aplicación
70
2. Acumulación de V.
Diseño funcional de la aplicación
71
Figura21. Acumulación de V.
Diseño funcional de la aplicación
72
3. Acumulación de U.
Diseño funcional de la aplicación
73
Diseño funcional de la aplicación
74
Figura22. Acumulación de U.