2012-05-19 13 views
6

¿Hay alguna buena herramienta para resolver programas enteros en Linux?¿Alguna buena herramienta para resolver programas enteros en Linux?

Tengo un pequeño problema que quiero calcular para ahorrar tiempo: D. Es una especie de problema de suma de subconjuntos. Tengo una lista de alrededor de 20 valores enteros y quiero calcular el subconjunto con la suma más pequeña que satisfaga un cierto mínimo. Se podría formular este programa con un número entero ... algo así como

\sum_{i=1}^{n} w*x -> min 

con

\sum_{i=1}^{n} w*x >= c with x \in \{0,1\} 

O hay otro buena manera de hacer esto?

Respuesta

9

Yo probaría cualquiera de los GLPK o SCIP.

Tienen su propio lenguaje de modelado, GLPK tiene GNU MathProg y SCIP tiene ZIMPL, por lo que puede codificar convenientemente su problema de LP.

GNU MathProg tiene la ventaja de ser compatible con AMPL. Por lo tanto, puedes probar la versión para estudiantes de AMPL con CPLEX o Gurobi con tu modelo GNU MathProg. Tenga en cuenta que AMPL, CPLEX y Gurobi son software comercial.

+2

Resolví mi problema con glpk y MathProg. Encontré una breve introducción en [IBM] (http://www.ibm.com/developerworks/linux/library/l-glpk1/). Gracias. – mageta

0

Usted podría intentar octava GNU - es un subconjunto de MATLAB

+0

Hace mucho tiempo, cuando probé GNU Octave, simplemente llamaba a GLPK bajo el capó. – Ali

1

Trate Lindo/Lingo. No son gratis, pero puedes probarlos.

Le permiten especificar su problema de una forma matemática muy ordenada.

0

Quería agregar una opción más a las sugerencias de GLPK que @Ali ha hecho. Sugiero que cualquier persona interesada en resolver LP/IP también investigue los paquetes de optimización que ofrece R Language.

Si ya conoce y utiliza R, solo tiene que descargar el paquete correcto. E incluso si no lo hace, esta es una buena forma de conocer a R, que realmente está despegando en el espacio de análisis.

Esta vignette es una muy buena manera de saber qué paquetes R son relevantes. Para usted, RSymphony o Rglpk pueden ser los primeros.

3

¿Ha intentado hacer eso con LibreOffice Calc Solver (http://help.libreoffice.org/Calc/Solver)?

Microsoft Solver Foundation en Mono Framework también podría hacer el trabajo por usted si conoce C#.

Cuestiones relacionadas