Pregunta

Estoy usando LPSolve IDE para resolver un LP problema.Tengo que probar el modelo con unos 10 o 20 conjuntos de parámetros diferentes y compararlos.

¿Hay alguna manera para mí para mantener el modelo general, pero para especificar las constantes como yo deseo?Por ejemplo, si tengo la siguiente restricción:

A >= [c]*B

Quiero probar cómo el modelo se comporta cuando [c] = 10, [c] = 20, y así sucesivamente.Por ahora, simplemente estoy preparando diferentes .lp de archivos a través de buscar y reemplazar, pero:

a) no parece muy eficiente

b) en algún momento, necesita considerar la restricción de la forma A >= B/[c] // =(1/[c]*B).Sin embargo, parece que LPSolve no reconocer el operador de división.Es la especificación de 1/[c] directamente cada vez que la única opción?

¿Fue útil?

Solución

No es del todo claro en qué formato utilizar con lp_solve.Con el cplex lp formato por ejemplo, no hay mejor manera:usted no puede usar la división para el coeficiente (o incluso la multiplicación, para el caso) y no hay ninguna función para "incluir" a otro archivo o introducir nombres simbólicos para un parámetro.Es un lenguaje muy sencillo, y no es adecuado para cualquier tarea compleja.

Existen varias soluciones para su problema;depende de si usted está interesado en algo rápido de implementar, o "limpiar", reutilizable y con un corto tiempo de ejecución (por supuesto esto es un compromiso).

  1. Usted tiene la posibilidad de generar su lp archivos de otro idioma, por ejemplo,python, bash, etc.Este es un "rápido y sucio" solución:muy lento en tiempo de ejecución, pero, probablemente, el más rápido de implementar.

  2. Como cada lp solver sé, lp_solve viene con varios modelado de interfaces:por ejemplo, puedes usar el GNU formato de mp en lugar de la actual.Reconoce la multiplicación, divisiones, condicionales, etc.(todo lo que usted está buscando, consulte la sección 3.1 'expresiones numéricas')

  3. Por último, usted tiene la posibilidad de utilizar directamente el lp_solve interfaz de otro lenguaje de programación (por ejemplo,C) cual será la opción más flexible, pero puede requerir un poco más de trabajo.

Ver el lp_solve documentación para más detalles sobre los formatos de entrada compatibles y la referencia de la API.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top