Detalles de Solver

 
 

Según el Programa Matemático que se tenga, será muy útil revisar los parámetros por defecto de Solver, para garantizar que se encuentre la solución, sobre todo en programas enteros y no lineales de crecimiento rápido.


Según la documentación en línea, Solver utiliza el método de optimización no lineal GRG2 desarrollado en la Universidad Leon Lasdon de Austin Texas y la Universidad de Allan Waren en Cleveland e implementado por el equipo de programación de Frontline Systems y de Optimal Methods Inc.


Es muy importante tener en cuenta las opciones de Solver al resolver un programa, debido a que la resolución de un problema lineal y de uno no lineal difieren bastante. Los problemas lineales son por mucho, más fáciles de resolver que los no lineales. Existen algoritmos bastante eficientes como lo son las variantes del Simplex y los de Punto Interior utilizados en la resolución de los primeros. El problema está con los no lineales...


Hace 400 años un inglés creó el cálculo diferencial para describir la mecánica celeste y la filosofía de la naturaleza, hoy en día, los analistas de Investigación de Operaciones lo utilizamos para describir la mecánica terrestre ($$$) y la filosofía humana. En este orden de ideas (o mejor desorden?), al buscar el óptimo de un programa no lineal, efectuamos una serie de derivadas parciales que representarán el ritmo de crecimiento o decrecimiento de la función objetivo, encontramos el máximo o el mínimo al igualar a cero y despejamos los valores de las variables, para esto se puede utilizar el método de Newton de varias variables, modificamos la base e iteramos hasta que converja al óptimo según un valor de tolerancia.


Las alternativas a tener en cuenta son estas: (Al hacer click en el botón de Opciones...)

 

 

Tiempo:

 

Por defecto es de 100 segundos, si al cabo de éste tiempo Solver no ha convergido (según la tolerancia), mostrará un mensaje diciendo que no ha hallado la solución. Dependiendo del tamaño del problema se debe aumentar éste valor, para que Solver tenga tiempo de buscar la solución óptima. Hasta el momento no he necesitado más de 300 segundos en problemas de hasta 200 variables (por supuesto esto dependerá de la velocidad de la máquina). No se puede establecer un valor mayor a 32367 segundos, pero... hay alguien dispuesto a esperar todo eso?


Iteraciones:

La elección de éste parámetro depende de nuevo del tamaño del problema; por defecto es de 100, pero en los problemas de programación entera, será mejor el aumentar éste valor para asegurar la convergencia (siempre y cuando exista una solución).


Precisión:

En la práctica las restricciones no son tan inflexibles como las solemos tratar en los modelos académicos, siempre hay un nivel de desfase por pequeño que sea que se puede permitir. Solver introduce éste parámetro para especificar la precisión. Es un valor entre 0 y 1 (sin tomarlos) , a mayor precisión menor debe ser éste parámetro es decir más cercano a cero.
Tolerancia: En porcentaje que tan lejos de la solución óptima se considera aceptable. Al haber una mayor tolerancia se encuentra más rápido una solución, pero no se garantiza la optimidad en ese mismo porcentaje.

Convergencia:

Cada cambio que haga Solver en las variables de decisión se reflejará en la celda objetivo, cuando estos cambios en las variables proveen cambios muy pequeños en la celda objetivo se dice que está convergiendo. Podemos establecer que valor de cambio es el que dará la convergencia. Supongamos que se establece 0.1; en las últimas cinco iteraciones si Solver encuentra un valor de la celda objetivo de 7.1 y luego de 7.2 (para maximizar), se detendrá. A mayor exactitud menor debe ser éste parámetro.


Adoptar Modelo Lineal: Es necesario cuando el modelo es lineal.


Asumir  No Negativos: Si se chequea ésta opción, las variables de decisión serán mayores o iguales a cero; no será necesario incluir ésta restricción a mano.

La corrección: Un amigo me escribe desde Canada para aclarar sobre la autoria de Solver. El que sabe, sabe. Aquí va su mensaje (BTW: Muchas gracias Nolberto):

Estimo que usted cometió un error involuntario cuando habla de Solver y da créditos a universidades. A mi entender los nombres que usted da NO corresponden a universidades sino a individuos. Así, es Leon Lasdon del MSIS Department de la Universidad de Texas en Austin.

Por otro lado NO es la universidad de Allan Waren sino Mr. Allan Waren, del Departamento de Computación y Ciencias de la Información de la Universidad del Estado de Cleveland.

Creo que debería también mencionar a Daniel Fylstra de Frontline Systens y a John Whatson de Software Engines, todos los cuales han tenido una participación Capital en el desarrollo del Solver de Excel.

Por otro lado no encuentro en su ejemplo de los mínimos cuadrados, donde esta la aplicación o como usa Solver para resolver el problema.

Por favor acepte mis felicitaciones por la didáctica que usted muestra. Las explicaciones, breves, sintéticas y concisas sobre el algoritmo de Brunch and bound y el comentario sobre las derivadas parciales para alcanzar la solución óptima, son magnificas.

Salúdalo atentamente

Nolberto Munier
Canada
nmunier@home.com

Contenido :

Social