Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
lp_solve_ide [2011/11/28 14:41] mmarquez Corrección de errata |
lp_solve_ide [2023/09/20 21:56] (actual) mmarquez [Tipos de solución] |
||
---|---|---|---|
Línea 2: | Línea 2: | ||
===== Introducción ===== | ===== Introducción ===== | ||
- | LPSolve IDE es un entorno integrado de desarrollo (Integrated Development Interface) muy amigable para Windows. Todas las funcionalidades de lpsolve | + | LPSolve IDE es un entorno integrado de desarrollo (Integrated Development Interface) muy amigable para Windows. Todas las funcionalidades de lpsolve |
Muchas gracias a Henri Gourvest por el desarrollo de este entorno para lpsolve y por ponerlo a disposición de la comunidad. | Muchas gracias a Henri Gourvest por el desarrollo de este entorno para lpsolve y por ponerlo a disposición de la comunidad. | ||
- | La página principal de LPSolve IDE es [[http://frcatel.fri.uniza.sk/lp_solve/IDE.htm]]. ([[http:// | + | La página principal de LPSolve IDE es [[http://lpsolve.sourceforge.net/5.5/IDE.htm]]. ([[https:// |
Algunas prestaciones del entorno son: | Algunas prestaciones del entorno son: | ||
Línea 27: | Línea 27: | ||
Para más información se puede consultar el [[http:// | Para más información se puede consultar el [[http:// | ||
+ | |||
+ | ===== Instalación ===== | ||
+ | |||
+ | ==== Instalación bajo Microsoft Windows ==== | ||
+ | |||
+ | Para la instalación de lp_solve_ide bajo Microsoft Windows se descarga el programa de instalación desde [[https:// | ||
+ | |||
+ | Se pide que se acepte la licencia de usuario final del programa, una licencia libre, más concretamente es la licencia [[http:// | ||
+ | |||
+ | Si la instalación se ha realizado correctamente y no se ha desmarcado la última opción se iniciará automáticamente la aplicación lp_solve_ide. Obteniéndose una ventana similar a la que se muestra. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== Instalación bajo linux o MacOS ==== | ||
+ | |||
+ | La aplicación lp_solve_ide es una aplicación nativa de Microsoft Windows pero la experiencia muestra que funciona correctamente en entornos linux o MacOS usando el emulador [[https:// | ||
+ | |||
+ | En este caso los pasos a seguir son: | ||
+ | |||
+ | - Descargar e instalar el emulador wine | ||
+ | - Descargar el instalador de lp_solve_ide como se mostró anteriormente | ||
+ | - Ejecutar el instalador usando wine | ||
===== Comenzando con lp_solve_ide ===== | ===== Comenzando con lp_solve_ide ===== | ||
Línea 42: | Línea 64: | ||
==== Ejemplo inicial ==== | ==== Ejemplo inicial ==== | ||
- | === Formato lp_solve === | + | === Formato |
- | Tras iniciar el programa introduce el código siguiente en la ventana: | + | Tras iniciar el programa introduce el código siguiente en la pestaña '' |
max:2 x+y; | max:2 x+y; | ||
- | 5 x + 2 y<10; | + | 5 x + 2 y<9; |
- | 3 x + 5 y<15; | + | 3 x + 5 y<13; |
y pulsa sobre el icono con forma de triángulo verde, pulsa la tecla F9 o selecciona en el menú las opciones '' | y pulsa sobre el icono con forma de triángulo verde, pulsa la tecla F9 o selecciona en el menú las opciones '' | ||
- | Para visualizar la solución pulsa sobre la pestaña '' | + | Para visualizar la solución pulsa sobre la pestaña '' |
+ | Variables | ||
+ | 4 | ||
+ | | ||
+ | | ||
+ | |||
Pulsa sobre la pestaña '' | Pulsa sobre la pestaña '' | ||
+ | |||
+ | **Observación**: | ||
+ | Para ampliar las columnas desplace la barra vertical que separa las columnas en la cabecera de la tabla. | ||
En los modelos lp_solve se asume que todas las variables son no negativas. | En los modelos lp_solve se asume que todas las variables son no negativas. | ||
Línea 62: | Línea 91: | ||
* '' | * '' | ||
- | En el ejemplo anterior para la función objetivo de minimizar añade, al final del problema y comenzando en la primera columna, | + | En el ejemplo anterior para la función objetivo de minimizar añade las instrucciones: |
+ | Ten en cuenta que las instrucciones '' | ||
¿Qué tipo de solución se obtiene? | ¿Qué tipo de solución se obtiene? | ||
- | También es posible especificar el rango de variación de una variable. Por ejemplo, para una variable no negativa: '' | + | También es posible especificar el rango de variación de una variable. Por ejemplo, para una variable no positiva: '' |
+ | |||
+ | Para especificar que una variable debe tomar valores enteros se utiliza la instrucción '' | ||
+ | |||
+ | De forma similar la instrucción '' | ||
+ | |||
+ | Las restricciones sobre el rango de las variables deben incluirse al final de la formulación del problema. | ||
+ | |||
+ | === Tipos de problemas === | ||
+ | Tras indicarle a LPSolveIDE que resuelva el problema, en la pestaña '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
=== Formato MathProg === | === Formato MathProg === | ||
Línea 79: | Línea 122: | ||
/* Constraints */ | /* Constraints */ | ||
- | R1: +5*x +2*y <= 10; | + | R1: +5*x +2*y <= 9; |
- | R2: +3*x +5*y <= 15; | + | R2: +3*x +5*y <= 13; |
y se procede como en el caso anterior. | y se procede como en el caso anterior. | ||
Línea 88: | Línea 131: | ||
var x <= 0; | var x <= 0; | ||
- | ==== Tipos de solución ==== | ||
- | |||
- | Al terminar el procedimiento podemos obtener uno de los siguientes mensajes: | ||
- | * " | ||
- | * "The model is UNBOUNDED": | ||
- | * "The model is INFEASIBLE": | ||
===== Análisis de sensibilidad ===== | ===== Análisis de sensibilidad ===== | ||
Línea 105: | Línea 142: | ||
| | ||
- | Para x1 se obtiene '' | + | En la pestaña de variables, en la fila de x1 se obtiene '' |
Para x< | Para x< | ||
- | Para el lado derecho, mirando en la fila R1 (primera restricción) se obtiene | + | Para el lado derecho, mirando en la fila R1 (primera restricción) se obtiene 5 ≤ b< |
===== Sintaxis Avanzada ===== | ===== Sintaxis Avanzada ===== | ||
Línea 154: | Línea 191: | ||
**Ejemplo**: | **Ejemplo**: | ||
- | La página | + | Las páginas [[http:// |
+ | |||
+ | ==== Damas en un tablero de ajedrez ==== | ||
+ | |||
+ | El problema de colocar 8 (en general n) damas en un tablero de ajedrez (de n x n). | ||
+ | |||
+ | **Ejemplo**: | ||
+ | |||
+ | ==== Cuadrado mágico ==== | ||
+ | |||
+ | El problema de completar un cuadrado con n^2 de forma que no se repitan y que todas las filas, las columnas y las diagonales principales sumen lo mismo también puede formularse como un problema de programación lineal. | ||
+ | |||
+ | **Ejemplo** {{: | ||
+ | |||
+ | **Nota** Estos ejemplos pueden resolverse con lp_solve, pero la salida se visualiza mejor si se resuelven con glpsol mediante la instrucción | ||
+ | '' | ||
===== Bibliografía ===== | ===== Bibliografía ===== |