Estos apuntes son libres y los puedes editar.

Algunas secciones están en inglés puedes colaborar traduciendo algunos párrafos.

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
lp_solve_ide [2012/01/19 22:08]
mmarquez
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 puden ser usadas desde el entorno gráfico de una manera muy amigable para el usuario.+LPSolve IDE es un entorno integrado de desarrollo (Integrated Development Interface) muy amigable para Windows. Todas las funcionalidades de lpsolve pueden ser usadas desde el entorno gráfico de una manera muy amigable para el usuario.
  
 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://sourceforge.net/projects/lpsolve/files/lpsolve/5.5.2.0/lp_solve_5.5.2.0_IDE_Setup.exe/download|lp_solve_5.5.2.0_ide]])+La página principal de LPSolve IDE es [[http://lpsolve.sourceforge.net/5.5/IDE.htm]]. ([[https://sourceforge.net/projects/lpsolve/files/lpsolve/5.5.2.11/lp_solve_5.5.2.11_IDE_Setup.exe/download|lp_solve_5.5.2.11_ide]])
  
 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://lpsolve.sourceforge.net/5.5/|la guía de referencia de la versión 5.5 (en inglés)]] o su traducción en curso [[guia_lp_solve|guía de referencia de la versión 5.5 (en español)]]. Para más información se puede consultar el [[http://lpsolve.sourceforge.net/5.5/|la guía de referencia de la versión 5.5 (en inglés)]] o su traducción en curso [[guia_lp_solve|guía de referencia de la versión 5.5 (en español)]].
 +
 +===== 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://sourceforge.net/projects/lpsolve/files/lpsolve/5.5.2.11/lp_solve_5.5.2.11_IDE_Setup.exe/download|lp_solve_5.5.2.11_ide]] y se ejecuta.
 +
 +Se pide que se acepte la licencia de usuario final del programa, una licencia libre, más concretamente es la licencia [[http://www.gnu.org/licenses/lgpl-2.1.html|GNU LESSER GENERAL PUBLIC LICENSE 2.1]]. Además se pregunta sobre algunas opciones que se pueden dejar a los valores por defecto.
 +
 +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.
 +
 +{{:lp_solve:lp_solve_ide.png?500}}
 +
 +==== 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://www.winehq.org/|wine]].
 +
 +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 de lp_solve: LP format ===
  
-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 ''Source'':
    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 ''Action->Solve''. y pulsa sobre el icono con forma de triángulo verde, pulsa la tecla F9 o selecciona en el menú las opciones ''Action->Solve''.
  
-Para visualizar la solución pulsa sobre la pestaña ''Results''. Observa el valor objetivo y los correspondientes valores de las variables. +Para visualizar la solución pulsa sobre la pestaña ''Results''. Observa el valor objetivo y los correspondientes valores de las variables: 
 +   Variables   result 
 +                  4 
 +                1 
 +                2 
 +   
 Pulsa sobre la pestaña ''Source'', reemplaza "max" por "min" y vuelve a resolver. Observa que la solución obtenida corresponde al caso en que se consideren únicamente valores no negativos de las variables. Pulsa sobre la pestaña ''Source'', reemplaza "max" por "min" y vuelve a resolver. Observa que la solución obtenida corresponde al caso en que se consideren únicamente valores no negativos de las variables.
 +
 +**Observación**: A veces las columnas en la pestaña de resultados no enseñan los números completos. Si algún número acaba en ... entonces es necesario aumentar el ancho de la columna, pues de lo contrario el número puede interpretarse erróneamente, por ejemplo: 2,3... puede interpretarse como 2,3 cuando en realidad el número podría ser 2,37831e-30 que debe interpretarse como 0.
 +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:
   * ''bin x'' que declara la variable ''x'' como binaria, es decir, ''x'' ∈ {0,1}.   * ''bin x'' que declara la variable ''x'' como binaria, es decir, ''x'' ∈ {0,1}.
  
-En el ejemplo anterior para la función objetivo de minimizar añade, al final del problema y comenzando en la primera columna, las instrucciones: ''free x;'' y ''free y;''. Y vuelve a resolver.+En el ejemplo anterior para la función objetivo de minimizar añade las instrucciones: ''free x;'' y ''free y;'' vuelve a resolver.  
 +Ten en cuenta que las instrucciones ''free'' siempre deben ir al final del problema y empezando en la primera columna
 ¿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: ''-Inf %%<=%% x %%<=%% 0;''. Las restricciones sobre el rango de las variables deben incluirse al final de la formulación del problema.+También es posible especificar el rango de variación de una variable. Por ejemplo, para una variable no positiva: ''-Inf %%<=%% x %%<=%% 0;'' 
 + 
 +Para especificar que una variable debe tomar valores enteros se utiliza la instrucción ''int''. La instrucción ''int x'' declara la variable x como entera. 
 + 
 +De forma similar la instrucción ''bin x'' que declara la variable ''x'' como binaria, es decir, ''x'' toma el valor 0 o 1. 
 + 
 +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 ''Log'', se puede obtener uno de los siguientes mensajes: 
 +  * ''Parse error'': Indica que existe un error de sintaxis en el problema introducido 
 +  * ''Optimal solution'': Se ha encontrado una solución óptima 
 +  * ''The model is UNBOUNDED'': El problema es no acotado 
 +  * ''The model is INFEASIBLE'': El problema es infactible
  
 === 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: 
-  * "Optimal solution": Se ha encontrado una solución óptima 
-  * "The model is UNBOUNDED": El problema es no acotado 
-  * "The model is INFEASIBLE": El problema es infactible 
 ===== Análisis de sensibilidad ===== ===== Análisis de sensibilidad =====
  
Línea 154: Línea 191:
 **Ejemplo**: {{:lp_solve:sudoku.mod}} **Ejemplo**: {{:lp_solve:sudoku.mod}}
  
-La página [[http://sudoku.noisette.ch|Sudoku solver]] utiliza lp_solve para resolver sudokus.+Las páginas [[http://knuth.uca.es/shiny/ejemplos_examples-r-uca/sudoku/|Resolviendo sudokus con shiny mediante programación lineal]] y [[http://sudoku.noisette.ch|Sudoku solver]] utilizan lp_solve para resolver sudokus.
  
 ==== Damas en un tablero de ajedrez ==== ==== Damas en un tablero de ajedrez ====

QR Code
QR Code lp_solve_ide (generated for current page)