Source: http://docplayer.es/9275617-Herramientas-de-analisis-numerico-para-la-resolucion-de-problemas-de-programacion-lineal.html
Timestamp: 2018-12-10 11:50:34+00:00

Document:
Herramientas de análisis numérico para la resolución de problemas de programación lineal - PDF
Download "Herramientas de análisis numérico para la resolución de problemas de programación lineal"
Rosa María Herrero Botella
1 Herramientas de análisis numérico para la resolución de problemas de programación lineal Librería Solver (Frontline Systems) Luis Marín Escalona Julio de 2oo7
2 Índice Como hacer referencia a la librería Solver en el editor de Visual Basic 3 Función SolverAdd Función SolverChange Función SolverDelete Función SolverFinish Función SolverFinishDialog Función SolverGet Función SolverLoad Función SolverOk Función SolverOkDialog Función SolverOptions Función SolverReset Función SolverSave Función SolverSolve
3 Como hacer referencia a la librería Solver en el editor de Visual Basic Todas las funciones incorporadas dentro de esta librería requieren que se establezca una referencia a Solver y un modulo activo en el editor de Visual Basic. Para establecer correctamente una referencia a Solver debe seguir los siguientes pasos. 1) Insertar un modulo de Visual Basic. 3
4 2) Establecer una referencia a la Solver haciendo clic en Herramientas > Referencias 3) Seleccionar la librería Solver.xls 4
5 4) Aceptar el cuadro de dialogo que se muestra a continuación. Si por algún motivo dentro del cuadro de dialogo anterior, no se encuentra dicha librería, debe establecer la referencia siguiendo los siguientes pasos. 5) Haga clic en examinar 5
6 6) Ubique la librería Solver.xla en forma manual, por lo general se encuentra: En versiones de Microsoft Office en español C:\Archivos de Programa\Microsoft Office\Office\Macros\Solver C:\Archivos de Programa\Microsoft Office\Office10\Macros\Solver C:\Archivos de Programa\Microsoft Office\Office11\Macros\Solver En versiones de Microsoft Office en ingles C:\Program Files\Microsoft Office\Office\Library\Solver C:\Program Files\Microsoft Office\Office10\Library\Solver C:\Program Files\Microsoft Office\Office11\Library\Solver 6
7 Función SolverAdd La función SolverAdd se utiliza para agregar restricciones al problema planteado, es equivalente a hacer clic en la opción Agregar del menú de herramientas de Solver. SolverAdd (CellRef, Relation, FormulaText) CellRef: Requiere una referencia o rango de celdas al lado izquierdo de la restricción. Relation: Requiere números enteros (1, 2, 3, 4, 5) la relación aritmética entre el lado izquierdo y el lado derecho de la restricción se especifica en la tabla 1. Si el valor asignado a Relation es 4 o 5, CellRef debe hacer referenciar a celdas cambiantes. FormulaText: El lado derecho de una restricción. Relation Relación Aritmética 1 <= 2 = 3 >= 4 Las celdas referenciadas por CellRef tendrán como valor final enteros. 5 Las celdas referenciadas por CellRef tendrán como valor final 0 o 1. 7
8 Función SolverChange Cambia una restricción existente, es equivalente a hacer clic en la opción Cambiar del menú de herramientas de Solver. SolverChange(CellRef, Relation, FormulaText) CellRef: Requiere una referencia o rango de celdas al lado izquierdo de la restricción. Relation: Requiere números enteros (1, 2, 3, 4, 5) la relación aritmética entre el lado izquierdo y el lado derecho de la restricción se especifica en la tabla 1. Si el valor asignado a Relation es 4 o 5, CellRef debe referenciar a celdas cambiantes. FormulaText: El lado derecho de una restricción. Si CellRef y Relation no coinciden con una restricción existente, se debe usar la función SolverDelete y SolverAdd para cambiar la restricción. 8
9 Función SolverDelete Elimina una restricción existente, es equivalente a hacer clic en la opción Eliminar del menú de herramientas de Solver. SolverDelete(CellRef, Relation, FormulaText) CellRef: Requiere una referencia o rango de celdas al lado izquierdo de la restricción. Relation: Requiere números enteros (1, 2, 3, 4, 5) la relación aritmética entre el lado izquierdo y el lado derecho de la restricción se especifica en la tabla 1. Si el valor asignado a Relation es 4 o 5, CellRef debe referenciar a celdas cambiantes. FormulaText: El lado derecho de una restricción. 9
10 Función SolverFinish Le indica a Microsoft Excel que hacer con los resultados y el tipo de reporte a crear una vez que la resolución del problema esta ha finalizado. SolverFinish(KeepFinal, ReportArray) KeepFinal: Es una variable opcional que puede tomar como valores 1 o 2. Si KeepFinal toma el valor de 1 o se omite su valor, los parámetros finales de solución permanecen en las celdas cambiantes reemplazando cualquier otro valor. Si KeepFinal es 2, los parámetros finales de solución son descartados, y se restauran los parámetros iniciales del problema. ReportArray: es una variable opcional que puede tomar los valores de 1, 2 o 3. El tipo de reporte que puede crear Microsoft Excel cuando se ha llevado a cabo la resolución del problema, puede ser un reporte de respuestas (1), un análisis de sensibilidad (2) o un reporte con los limites el campo de solución (3). Para especificar el reporte que desea visualizar debe usar la función Array, por ejemplo: ReportArray:= Array(1,3) 10
11 Función SolverFinishDialog Le indica a Microsoft Excel que hacer con los resultados y el tipo de reporte a crear una vez que la resolución del problema esta ha finalizado. Es equivalente a la función SolverFinish, pero con la salvedad que aparece un Cuadro de dialogo después de solucionado el problema. SolverFinishDialog(KeepFinal, ReportArray) KeepFinal: Es una variable opcional que puede tomar como valores 1 o 2. Si KeepFinal toma el valor de 1 o se omite su valor, los parámetros finales de solución permanecen en las celdas cambiantes reemplazando cualquier otro valor. Si KeepFinal es 2, los parámetros finales de solución son descartados, y se restauran los parámetros iniciales del problema. ReportArray: es una variable opcional que puede tomar los valores de 1, 2 o 3. El tipo de reporte que puede crear Microsoft Excel cuando se ha llevado a cabo la resolución del problema, puede ser un reporte de respuestas (1), un análisis de sensibilidad (2) o un reporte con los limites el campo de solución (3). Para especificar el reporte que desea visualizar debe usar la función Array, por ejemplo: ReportArray:= Array(1,3) 11
12 Función SolverGet Devuelve información con la configuración actual de Solver. La configuración de Solver se especifica en las opciones de Parámetros y Opciones del menú de herramientas de Solver. SolverGet(TypeNum, SheetName) TypeNum: Requiere números enteros. La siguiente tabla especifica los parámetros del menú de herramientas de Solver. SheetName: Variable opcional que representa el nombre del la hoja que contiene la información del modelo, Si esta variable se omite, se asume que la hoja que contiene esta información es la hoja activa. TypeNum Retorna 1 La celda objetivo del problema, o el error #N/A si Solver no tiene una Hoja activa. 2 Un número correspondiente a la función objetivo. (1) Maximizar, (2) Minimizar, (3) Igualar a un valor (Value Of). 3 El valor a igualar la función objetivo. 4 Las celdas cambiantes. 5 El número de restricciones 6 Una matriz con el lado izquierdo de cada restricción en formato de texto. 7 Una matriz con el número correspondiente a la relación aritmética entre el lado izquierdo y el lado derecho de cada restricción.: 1 representa <=, 2 representa =, 3 representa >=, 4 representa enteros, y 5 representa binarios. 8 Una matriz con el lado derecho de cada restricción en formato de texto. 12
13 La siguiente tabla especifica los parámetros de la opción Opciones del menú de herramientas de Solver. TypeNum Retorna 9 El tiempo máximo de cálculo. 10 El número máximo de iteraciones 11 La precision 12 El valor de tolerancia entera. 13 True, si se asume el modelo lineal, en caso contrario False. 14 True, si se muestra el resultado de las iteraciones, en caso contrario False. 15 True, si se usa escala automática, en caso contrario False. 16 Un número correspondiente al tipo de estimación.: 1 representa Lineal, y 2 representa Cuadrática. 17 Un número correspondiente al tipo de derivadas.: 1 representa progresivas, y 2 representa Centrales. 18 Un número correspondiente al tipo de búsqueda: 1 representa Newtoniana, y 2 representa Gradiente Conjugado. 19 El valor de convergencia. 20 Verdadero si se asumen valores no negativos. 13
14 Función SolverLoad Carga los parámetros existentes de Solver que se han guardado en la hoja activa. SolverLoad(LoadArea) LoadArea: Requiere como variable una referencia a una hoja activa y un rango de celdas en la cual se desee cargar un modelo específico. La primera celda en LoadArea contiene una formula con la función objetivo, la segunda celda contiene una formula para las celdas cambiantes, las celdas siguientes contienen las restricciones y las últimas celdas contiene eventualmente matrices con los parámetros de Solver. El rango representado por el argumento LoadArea puede ser una hoja de trabajo o cualquier hoja, pero se debe especificar su nombre si la hoja no esta activa. Por ejemplo: SolverLoad("Hoja2!A1:A3") Carga un modelo en para la Hoja2 en la eventualidad de que la Hoja2 no este activa. 14
15 Función SolverOk Define un modelo básico de Solver, es equivalente a hacer clic en el menú de herramientas de Solver, especificando las opciones del modelo. SolverOk(SetCell, MaxMinVal, ValueOf, ByChange) SetCell: Variable opcional que hace referencia a la celda objetivo de la hoja de trabajo active. Es equivalente a especificar la celda objetivo en el menú de herramientas de Solver. MaxMinVal: Variable opcional que puede tomar los valores de 1, 2 o 3 dependiendo del objetivo del problema, ya sea maximizar, minimizar o igualar a un determinado valor, la siguiente tabla describe los valores que puede tomar esta variable. MaxMinVal 1 Maximizar. 2 Minimizar. 3 Especificar un valor. ValueOf: Variable opcional. Si MaxMinVal es 3, se debe especificar el valor de la función objetivo. ByChange: Variable opcional que especifica el rango de celdas que deberán cambiar con el fin de cumplir con los requerimientos del modelo. 15
16 Función SolverOkDialog Igual a la función SolverOk, con la salvedad que en este caso se muestra el cuadro de dialogo de Solver. SolverOkDialog(SetCell, MaxMinVal, ValueOf, ByChange) SetCell: Variable opcional que hace referencia a la celda objetivo de la hoja de trabajo active. Es equivalente a especificar la celda objetivo en el menú de herramientas de Solver. MaxMinVal: Variable opcional que puede tomar los valores de 1, 2 o 3 dependiendo del objetivo del problema, ya sea maximizar, minimizar o igualar a un determinado valor, la siguiente tabla describe los valores que puede tomar esta variable. MaxMinVal 1 Maximizar. 2 Minimizar. 3 Especificar un valor. ValueOf: Variable opcional. Si MaxMinVal es 3, se debe especificar el valor de la función objetivo. ByChange: Variable opcional que especifica el rango de celdas que deberán cambiar con el fin de cumplir con los requerimientos del modelo. 16
17 Función SolverOptions Especifica opciones avanzadas del modelo, esta función y sus argumentos corresponden a las opciones en el cuadro de dialogo Opciones del menú de herramientas de Solver. SolverOptions(MaxTime, Iterations, Precision, AssumeLinear, StepThru, Estimates, Derivatives, Search, IntTolerance, Scaling, Convergence, AssumeNonNeg) MaxTime: Variable opcional que especifica la máxima cantidad de tiempo en segundos en que Microsoft Exel espera resolver el problema. Este valor debe ser un entero positivo. El valor por defecto, adecuado para la mayoría de problemas pequeños es 100, sin embargo se pueden ingresar valores mayores como Iterations: Variable opcional que especifica la máxima cantidad de iteraciones en que Microsoft Exel espera resolver el problema. Este valor debe ser un entero positivo. El valor por defecto, adecuado para la mayoría de problemas pequeños es 100, sin embargo se pueden ingresar valores mayores como Precision: Variable opcional que puede tomar valores entre 0 y 1 y especifica el grado de precisión para ser usado en la resolución del modelo. El grado de precisión por defecto es Un decimal mayor como por ejemplo indica un grado de precisión menor. En general para obtener altos grados de precisión se deben indicar decimales menores, sin embargo el tiempo que Solver se toma en resolver el problema resulta mayor. AssumeLinear: Variable opcional que toma el valor de True para que Solver asuma un modelo lineal, esta opción solo se puede utilizar cuando todas las restricciones en el modelo son lineales. El valor por defecto de esta opción es False. StepThru: Variable opcional que toma el valor de True para hacer que Solver se detenga en cada solución trivial, el valor por defecto de esta variable es False. Estimates: Variable opcional que especifica el tipo de aproximación utilizada para obtener una estimación inicial de la variables básicas del modelo. Si la variable Estimates toma el valor 1, el tipo de aproximación será tangencial, si toma el valor 2 el tipo de aproximación será cuadrática. La aproximación tangencial se basa en un método de interpolación lineal. La aproximación cuadrática se basa en un método de interpolación cuadrática. El valor por defecto es 1 (estimación tangencial). Derivatives: Variable opcional que especifica derivación progresiva o central para la estimación de la función objetivo en el espacio solución restringido por las ecuaciones de restricción. Si la variable Derivatives toma el valor 1, el tipo de derivación será progresiva, si toma el valor 2 el tipo de derivación será central. La derivación central requiere de un numero mayor de cálculos, sin embargo se recomienda su uso en modelos que tienen problemas de convergencia. El valor por defecto es 1 (derivación progresiva). Search: variable opcional que especifica el algoritmo de convergencia que se utilizara en cada iteración para decidir en que dirección se encuentra la solución del modelo. Si la variable Search toma el valor 1 se utilizara el algoritmo de convergencia de Newton, Si la variable Search toma el valor 2 se utilizara el algoritmo de convergencia del Gradiente Conjugado. El algoritmo de convergencia de Newton es el método de convergencia por 17
18 defecto. Este algoritmo de convergencia requiere más memoria que el método del Gradiente Conjugado, sin embargo este ultimo algoritmo requiere de un menor número de iteraciones. IntTolerance: Variable opcional que puede tomar valores entre 0 (cero) y 1, y especifica el grado de tolerancia entera. Este argumento es aplicable solo si se han definido restricciones enteras. Un alto grado de tolerancia puede aumentar el tiempo de convergencia del modelo. Scaling: Variable opcional, si dos o más restricciones tienen grandes diferencias en sus órdenes de magnitud, el valor True permite que Solver escale las restricciones a órdenes de magnitud similares, durante la resolución del problema. Por ejemplo si se desea maximizar el porcentaje de ganancias, basadas en millones de pesos de inversión, en este caso Scaling debe asumir el valor False, con el fin de que Solver no escale las restricciones. El valor por defecto de esta variable es False. Convergence : Variable opcional que puede tomar valores entre 0 (cero) y 1, y especifica el convergencia para modelos no lineales. Cuando el cambio relativo de la función objetivo es menor que la convergencia para las ultimas 5 iteraciones, Solver se detiene informando que se ha encontrado una solución y se han satisfecho todas las restricciones. AssumeNonNeg: Variable opcional que asume el valor True cuando Solver asume como limite inferior el 0 (cero) para todas las celdas cambiantes a excepción de las celdas que tengan alguna restricción al respecto. Cuando esta variable asume el valor False, Solver se restringe la búsqueda dentro de los límites especificados en las restricciones. 18
19 Función SolverReset Elimina las referencias a todas las celdas y restricciones impuestas por el cuadro de dialogo de Solver, además restaura la configuración por. La función SolverReset es llamada en forma automática cuando se utiliza la función SolverLoad. SolverReset( ) 19
20 Función SolverSave Guarda las especificaciones de un modelo planteado en una determinada hoja de trabajo. SolverSave(SaveArea) SaveArea: Requiere como variable una referencia a una hoja activa y un rango de celdas en la cual se desee cargar un modelo específico. SavedArea puede ser una hoja de trabajo o cualquier hoja, pero se debe especificar su nombre si la hoja no esta activa. Por ejemplo: SolverSave("Hoja2!A1:A3") Guarda el modelo plantado en la Hoja2 en la eventualidad de que la Hoja2 no este activa. 20
21 Función SolverSolve Ejecuta la resolución de un modelo, es equivalente a hacer clic en la opción Solve del menú de herramientas de Solver SolverSolve(UserFinish, ShowRef) UserFinish: Variable opcional que puede asumir el valor True para que Solver no muestre el cuadro de dialogo indicando la que se ha encontrado una solución. El valor por defecto de esta variable es False. ShowRef: Variable opcional que en el caso de asumir True traspasa a la variable StepThru todos las opciones del modelo. El argumento ShowRef entrega el código de una macro en formato de texto que puede servir como intermediaria para la resolución del modelo. 21
22 Ejercicios Propuestos 22
ELABORADO POR: JENNY MOSCOSO ESCOBAR JOHN EDISSON LONDOÑO RÚA 3.10. HERRAMIENTAS DE EXCEL 3.10.1 ESCENARIOS Un escenario es un conjunto de valores que Microsoft Excel guarda y puede sustituir automáticamente
Scientia Et Technica ISSN: 0122-1701 scientia@utp.edu.co Colombia COCK, GERMAN; LOPEZ RENDON, JUAN FERNANDO ALGORITMO EXACTO APLICADO AL PROBLEMA DE LOCALIZACIÓN DE PLANTA FÍSICA COMPLEMENTADO CON UN ALGORITMO

References: resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución