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 [2013/11/23 23:07]
mmarquez [Sudoku]
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<9;    5 x + 2 y<9;
Línea 57: Línea 79:
        
 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 70: Línea 95:
 ¿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 positiva: ''-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 92: Línea 130:
 En este formato los límites de las variables se especifican en la declaración, pudiendo omitirse alguno de ellos. Una variable no positiva se declara: En este formato los límites de las variables se especifican en la declaración, pudiendo omitirse alguno de ellos. Una variable no positiva se declara:
    var x <= 0;    var x <= 0;
-==== Tipos de solución ==== 
  
-Tras indicarle a lp_solve_ide que resuelva el problema, en la ventana ''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 
 ===== Análisis de sensibilidad ===== ===== Análisis de sensibilidad =====
  
Línea 159: Línea 191:
 **Ejemplo**: {{:lp_solve:sudoku.mod}} **Ejemplo**: {{:lp_solve:sudoku.mod}}
  
-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]] 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)