¿Existe en la práctica un límite en el número de restricciones en un problema de programación lineal?


8

Soy nuevo en programación lineal y he formulado un programa lineal (LP) con un orden de variables y restricciones, aunque la matriz de restricciones es extremadamente escasa. 10 1310131013

¿Quería saber si un LP de esta escala es manejable o no?


Supongo que quiere decir variables y restricciones? 10 1310131013
Geoff Oxberry

Sí, perdón por el mal formato.
stress_geek

Respuestas:


9

10 5 10 61013 es más que manejable en las supercomputadoras más grandes de la actualidad debido principalmente a los límites de memoria. Los problemas más grandes que he visto prácticamente resueltos han tenido del orden de filas y columnas, pero el factor más importante tiende a ser el número de nonzeros, donde solo estamos cruzando para resolver problemas con nonzeros. Consulte la página de puntos de referencia paralelos de Mittelman para tener una idea de lo que pueden hacer los mejores solucionadores disponibles y comerciales en una variedad de problemas a este tamaño.105106


6

Una gran cantidad de restricciones de desigualdad generalmente es manejable mediante técnicas de generación de restricciones, procesando en cada momento solo un número limitado de restricciones y agregando restricciones violadas en la solución actual al conjunto de restricciones (al tiempo que elimina las muy satisfechas). Pero en los casos que he visto, esto requiere que el número de variables no flojas también sea limitado.

Entonces, la pregunta es si puede reformular su problema de tal manera que el problema en sí mismo o su dual tenga muchas menos variables que restricciones.

Editar: Véase también el trabajo reciente de Nesterov sobre '' Métodos de subgrado para problemas de optimización a gran escala '', http://dial.academielouvain.be/vital/access/services/Download/boreal:107876/PDF_01 . Su técnica funciona en circunstancias favorables con una complejidad de si los requisitos de precisión son moderados.O(nlogn)


3

Mi comentario sobre la respuesta de Aron se hizo demasiado largo, pero me gustaría aumentar su respuesta:

Me gusta mencionar el ejemplo de los puntos de referencia paralelos. Varios comentarios para agregar aquí. Los cuatro solucionadores probados son comerciales, pero tienen licencias académicas gratuitas disponibles. Además, la prueba reduce el tiempo de ejecución a 25000, o ~ 8 h, que es arbitrario y depende en gran medida de las limitaciones de recursos externos (es decir, en una empresa, las personas pueden no estar dispuestas a esperar más de un día para obtener resultados; en el ámbito académico, algunas personas pueden ejecutar sus simulaciones durante meses). La prueba se ejecuta en una sola máquina de cuatro núcleos, lo que no es indicativo, para mí, del rendimiento de vanguardia.

Cuando estaba buscando datos para responder a esta pregunta, encontré documentos hace más de 10 años que resolvían problemas de aproximadamente el mismo tamaño, lo que me sugiere que podríamos mejorar ahora con la infraestructura que tenemos. Ciertamente no son variables, pero basadas en la escala n 3.5 de los métodos de punto interior , si el álgebra lineal y el paralelismo se implementaron bien, y tuviste el tiempo y un grupo de tamaño modesto, no veo por qué no pudiste intentar para resolver un problema con 10 7 o tal vez 10 81013n3.5107 108variables (solo si tuviera una estructura especial que podría explotar con métodos de descomposición como la descomposición de Benders o Dantzig-Wolfe, además de algoritmos de generación de plano de corte). (Agregaré que estoy ignorando el efecto de las restricciones, que complican las cosas dependiendo de cuántos bits estén almacenados; este efecto solo hace que las estimaciones a continuación sean más pesimistas).

Creo que GAMS tiene una implementación paralela, y dado que utiliza solucionadores como CPLEX, Gurobi, MOSEK y Xpress (es decir, los cuatro solucionadores en las citas de referencia de Aron), no veo por qué uno no puede ejecutar instancias paralelas de esos solucionadores (de hecho, sé que esto es posible para CPLEX y Gurobi). Los factores limitantes serán la memoria (porque la memoria es cara) y la comunicación más que la potencia de procesamiento, ya que un programa lineal reduce, en última instancia, a construir y resolver un sistema de ecuaciones lineales repetidamente (una simplificación masiva, sí, pero el álgebra lineal es algo que nosotros saber paralelizar).

10131024

Como una estimación de orden de magnitud muy aproximada, el Intel Core 2 Quad utilizado en las citas de referencia de Aron puede operar a una velocidad máxima de 40 gigaflops. Suponiendo que te subieras a Jaguar, la supercomputadora del Laboratorio Nacional de Oak Ridge, y pudieras usar toda la máquina (extremadamente improbable, pero soñemos en grande), tendrías aproximadamente 2 petaflops a tu alcance (según los números TOP 500 aquí , o aproximadamente 50000 veces la potencia de cómputo, sin contar las penalizaciones debido a la comunicación, las limitaciones de memoria o el hecho de que nunca nadie corre a la velocidad máxima (ni siquiera el punto de referencia LINPACK).

106107106101310171018


Comenzaría con una estimación de cuánto tiempo llevaría una supercomputadora, pero uno de los problemas es que muchos de los solucionadores de LP más rápidos dependen de una descomposición de Cholesky, y eso eventualmente explotará el uso de memoria debido al llenado. en. Además, estas máquinas implementan paralelismo de memoria compartida, pero el verdadero paralelismo de memoria distribuida es, por cualquier razón, algo raro en los solucionadores de LP comerciales en este momento.
Aron Ahmadia

O(n3.5)

O(n2.5)

@AronAhmadia: De acuerdo. Todo lo que veo en los manuales del solucionador son factorizaciones de Cholesky densas o dispersas que se utilizan para resolver el sistema de método de barrera. Nadie usa los métodos del subespacio de Krylov, ni he visto paralelismo de memoria distribuida (es decir, basada en MPI). No veo problemas de optimización (con la posible excepción de problemas restringidos por PDE) resueltos en supercomputadoras. Tal vez no estoy mirando los documentos correctos.
Geoff Oxberry

O(n)O(n3)O(ne2)en=1013

0

Es una vieja pregunta, pero bueno, hace más de 25 años alguien ya podía resolver un problema de restricción de 1.1M, 2.6M variable en 3h en un clúster de PC. http://www.maths.ed.ac.uk/~gondzio/CV/finance.pdf

Me gustaría ver las ecuaciones generadoras, quizás sea inteligente hacer una descomposición seria antes de lanzar este problema a los algoritmos, y me gustaría decir como practicante que tal vez sea inteligente masticarlo antes de alimentar el hardware. También suena como el tamaño que induciría a errores numéricos en la formulación dada la memoria y precisión limitadas de la computadora.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.