4. diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/volumen+i... ·...

46
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.

Upload: others

Post on 10-May-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

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.

Page 2: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

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.

Page 3: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

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.

Page 4: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

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.

Page 5: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

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:

Page 6: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

34

Figura6. Módulo principal del programa

Page 7: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

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:

Page 8: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

36

Figura7.Lectura de archivo de entrada.

Page 9: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

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.

Page 10: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

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.

Page 11: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

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.

Page 12: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

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

Page 13: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

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.

Page 14: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

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.

Page 15: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

43

Page 16: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

44

Page 17: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

45

Page 18: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

46

Page 19: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

47

Figura13. Algoritmo Simplex.

Page 20: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

48

4.2.3.4. Algoritmo “Método de las Esferas”.

Figura14. Método de las Esferas.

Page 21: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

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.

Page 22: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

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.

Page 23: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

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.

Page 24: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

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.

Page 25: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

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”.

Page 26: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

54

Page 27: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

55

Page 28: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

56

Page 29: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

57

Page 30: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

58

Page 31: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

59

Page 32: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

60

Page 33: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

61

Page 34: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

62

Page 35: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

63

Figura19. SVD.

Page 36: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

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).

Page 37: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

65

Page 38: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

66

Page 39: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

67

Page 40: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

68

Page 41: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

69

Figura20. Reducción de Householder.

Page 42: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

70

2. Acumulación de V.

Page 43: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

71

Figura21. Acumulación de V.

Page 44: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

72

3. Acumulación de U.

Page 45: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

73

Page 46: 4. Diseño funcional de la aplicación.bibing.us.es/proyectos/abreproy/3818/fichero/Volumen+I... · Diseño funcional de la aplicación 31 En la figura 5 se muestra un esquema genérico

Diseño funcional de la aplicación

74

Figura22. Acumulación de U.