OpenSolver
OpenSolver es un optimizador lineal, entero y no lineal de código abierto y libre para Microsoft Excel. También provee un optimizador para Google Sheets, pero solo para modelos lineales y enteros. El desarrollo y mantenimiento de estas aplicaciones informáticas es responsabilidad de investigadores y estudiantes del Departamento de Ciencias Ingenieriles de la Universidad de Auckland (Nueva Zelanda), con aportes recientes de un investigador del MIT.
OpenSolver se puede usar con una variedad de optimizadores, también conocidos como solvers, incluyendo el conocido motor de optimización de código abierto CBC, del proyecto COIN-OR, que es capaz de resolver eficientemente problemas grandes de programación lineal y entera. En Google Sheets también está disponible el conocido solver lineal y entero de software libre GLPK, del proyecto GNU. La aplicación también es compatible con las planillas de cálculo desarrolladas para el Solver de Excel, el complemento nativo para optimización de dicho programa. A diferencia del Solver provisto gratuitamente con Excel, OpenSolver no impone limitaciones a la dimensión del problema que se quiere resolver, por lo cual solo está limitado por la memoria de la computadora que se está usando para la optimización.
De acuerdo con sus programadores, la versión corriente de OpenSolver se desarrolló para Excel 2007, 2010, 2013 y 2016 (incluyendo las versiones de 64 bits) corriendo en Windows. Más específicamente, el código se puso a prueba en Excel 2010, 2013 y 2016, en Windows 7 y Windows 10. También se proveen versiones probadas en Excel 2011 y 2016 de computadoras Mac, corriendo OS X 10.7-10.11.
Toda la información de estas aplicaciones se puede encontrar en el sitio opensolver.org. El desarrollador principal también ha publicado una temprana contribución en un congreso (Mason, 2012). El código y los instaladores están disponibles en SourceForge.
Instalar OpenSolver en Windows
Estas instrucciones permitirán instalar el complemento para que Excel lo reconozca:- Descargar el archivo ZIP de la versión estable de OpenSolver Lineal (actualmente es la versión 2.9.3 de marzo del 2020) del sitio. Dependiendo de la computadora que se use, la selección del archivo para la descarga puede ser automática (e.g. haciendo click en este vínculo).
- Hacer clic con el botón derecho del mouse sobre el archivo descargado y seleccionar las Propiedades. En la pestaña General, marcar Desbloquear. Si la opción no aparece, continuar con el siguiente paso.
- Descomprimir el archivo ZIP y extraer todos los archivos en una carpeta o directorio en el que se los pueda mantener a todos juntos (los desarrolladores recomiendan no descomprimir el archivo en el Escritorio). Luego, no mover ningún archivo ni carpeta de la ubicación elegida.
- Hacer doble clic sobre el archivo OpenSolver.xlam. Si Excel muestra un aviso de seguridad informando que se deshabilitaron las macros, debe elegir el botón Habilitar macros para continuar.
- Al abrirse Excel, los comandos de OpenSolver aparecerán en la pestaña Datos de Excel.
- De esta forma, OpenSolver estará disponible hasta que cierre Excel. Para que OpenSolver esté siempre disponible en Excel se puede:
- En el botón Opensolver elegir About OpenSolver y ahí marcar Load OS when Excel starts, o
- Copiar los archivos descomprimidos (o extraerlos directamente) en la carpeta de complementos de Excel (en Windows 10, la carpeta típicamente es C:\Users\nombre_usr\AppData\Roaming\Microsoft\Addins, donde nombre_usr es el nombre que corresponde al usuario).
Usar OpenSolver en Windows
Como se dijo, OpenSolver puede trabajar con los modelos codificados para ser resueltos con el Solver de Excel. Además, las interfaces tienen muchas semejanzas. Una forma de usar OpenSolver consiste en codificar el modelo usando el botón Model. Al hacerlo se mostrará una ventana emergente que en su parte superior presenta un botón AutoModel que, al pulsarlo, permitirá indicarle al programa que codifique el problema por su cuenta. En caso de que el programa no haga la codificación correctamente, en la misma ventana emergente se ofrece la posibilidad de editarlo por completo. Dado que el botón AutoModel es opcional, si no se lo pulsa, el modelo se puede codificar completamente.
Objective cell (celda objetivo) es donde se debe señalar la fórmula de la función objetivo. A su derecha se podrá elegir entre maximise, minimise o target value (maximizar, minimizar o valor determinado), pudiendo escribirse el valor deseado en una caja de texto a la derecha de las opciones.
Variable cells (celdas variables) es donde se deben señalar las variables de decisión del problema. Naturalmente, se pueden señalar varios bloques usando la sintáxis propia de Excel.
Constraints (restricciones) es donde se señalan las restricciones del modelo. A la izquierda se debe seleccionar <Add new constraint> (agregar una restricción nueva) y a la derecha están las cajas para seleccionar la celda con la fórmula del lado izquierdo, el tipo de restricción (<=, = o >=) y la celda con el lado derecho. Una restricción ya agregada se puede cambiar, para lo cual es necesario seleccionarla a la izquierda y, luego de editar los cambios deseados, pulsar el botón Update constraint (Actualizar restricción). También se la puede seleccionar para eliminarla, para lo cual es necesario pulsar el botón Delete selected constraint (Borrar la restricción elegida). Como en el Solver de Excel, se pueden señalar varias restricciones del mismo tipo (<=, = o >=) simultáneamente si se marca como lado izquierdo un bloque y como lado derecho otro bloque de igual dimensión. Si se marca una sola celda o un valor numérico como lado derecho, entonces todas las restricciones del bloque marcado como lado izquierdo se asociarán con un único lado derecho. En esta parte de la ventana también se puede marcar la casilla Make unconstrained variable cells non-negative (Considerar no negativas a las celdas variables irrestrictas) para indicarle al programa que todas las variables deben asumirse como no negativas.
Más abajo está el bloque Shadow Prices (Precios Sombra), en el cual se puede tildar List constraints and shadow prices in table with top-left cell: (Enlistar restricciones y comentarios en una tabla cuya celda superior izquierda:) para que el programa informe los valores marginales de las restricciones en una tabla, indicando la celda superior izquierda donde se quiere la tabla.
En el último bloque de la ventana emergente se puede tildar Show model after saving (Mostrar el modelo después de grabar) para que el programa destaque con colores y etiquetas las partes relevantes del modelo (función objetivo, variables de decisión y restricciones) en la propia planilla de cálculo. En el botón More options (Más opciones) se puede cambiar el motor de optimización, si se dispone de más de uno, y se lo puede configurar o parametrizar. El botón Save Model (Grabar Modelo) solo almacena el modelo en la memoria para dejarlo listo para su solución, i.e. no crea archivos nuevos.
A la derecha del botón Model está el botón Solve (Resolver) que simplemente resuelve el modelo codificado y carga la solución en la planilla de cálculo.
Más a la derecha, el botón Show/Hide Model (Mostrar/Ocultar el Modelo) alternativamente activa y desactiva los colores y etiquetas con las que el programa destaca el modelo en la planilla de cálculo. El botón QuickSolve (Solución Rápida) es un modo de reoptimización eficiente (y rápido) de un modelo que se ha modificado luego de ser optimizado. Por último, el botón OpenSolver permite acceder a otras configuraciones del programa, a la ayuda, a la información típica acerca del producto (e.g. autores, versión, licencia) y también se pueden ver los archivos temporarios que el programa crea durante su operación, algunos de los cuales pueden ser muy útiles.