Gibt es in der Praxis eine Begrenzung für die Anzahl der Einschränkungen für ein lineares Programmierproblem?


8

Ich bin neu in der linearen Programmierung und habe ein lineares Programm (LP) mit einer Reihenfolge von Variablen und Einschränkungen formuliert , obwohl die Einschränkungsmatrix extrem spärlich ist. 10 1310131013

Ich wollte wissen, ob eine LP dieser Größenordnung handhabbar ist oder nicht.


Ich nehme an, Sie meinen 1013 Variablen und 1013 Einschränkungen?
Geoff Oxberry

Ja, entschuldigen Sie die schlechte Formatierung.
stressed_geek

Antworten:


9

ist auf den größten Supercomputern von heute hauptsächlich aufgrund von Speicherbeschränkungen nicht mehr nachvollziehbar. Die größten Probleme, die ich praktisch gelöst gesehen habe, waren in der Größenordnung von 10 5 Zeilen und Spalten, aber der wichtigste Faktor ist in der Regel die Anzahl der Nicht-Nullen, bei denen wir gerade Probleme mit 10 6 Nicht-Nullen lösen. Aufder Seitemitden parallelen Benchmarks von Mittelmanerhalten Sie ein Gefühl dafür, was die besten frei verfügbaren und kommerziellen Löser bei einer Reihe von Problemen in dieser Größe tun können.1013105106


6

Eine große Anzahl von Ungleichheitsbeschränkungen kann im Allgemeinen durch Techniken zur Erzeugung von Beschränkungen verfolgt werden, wobei zu jedem Zeitpunkt nur eine begrenzte Anzahl von Beschränkungen verarbeitet wird und Beschränkungen, die bei der aktuellen Lösung verletzt wurden, zum Beschränkungssatz hinzugefügt werden (während stark erfüllte Beschränkungen gelöscht werden). Aber in den Fällen, die ich gesehen habe, erfordert dies, dass die Anzahl der nicht lockeren Variablen ebenfalls begrenzt ist.

Die Frage ist also, ob Sie Ihr Problem so umformulieren können, dass das Problem selbst oder sein Dual viel weniger Variablen als Einschränkungen enthält.

Bearbeiten: Siehe auch aktuelle Arbeiten von Nesterov zu Subgradientenmethoden für Optimierungsprobleme in großem Maßstab, http://dial.academielouvain.be/vital/access/services/Download/boreal:107876/PDF_01 . Seine Technik arbeitet unter günstigen Umständen mit einer Komplexität von wenn die Genauigkeitsanforderungen moderat sind.O(nlogn)


3

Mein Kommentar zu Arons Antwort wurde zu lang, aber ich möchte seine Antwort ergänzen:

Ich spreche gerne das Beispiel paralleler Benchmarks an. Einige Kommentare hier hinzuzufügen. Alle vier getesteten Löser sind kommerziell, verfügen jedoch über kostenlose akademische Lizenzen. Darüber hinaus verkürzt der Test die Laufzeit bei 25000s oder ~ 8h, was willkürlich ist und stark von externen Ressourcenbeschränkungen abhängt (dh in einem Unternehmen sind die Mitarbeiter möglicherweise nicht bereit, mehr als einen Tag auf Ergebnisse zu warten; Einige Leute können ihre Simulationen monatelang ausführen. Der Test wird auf einer einzelnen Quad-Core-Maschine durchgeführt, was für mich kein Hinweis auf die Spitzenleistung ist.

Als ich nach Daten suchte, um diese Frage zu beantworten, fand ich vor mehr als 10 Jahren Papiere, die Probleme von ungefähr derselben Größe lösten, was mir nahe legt, dass wir mit der vorhandenen Infrastruktur jetzt möglicherweise besser abschneiden können. Sicherlich nicht Variablen, aber basierend auf der n 3.5- Skalierung von Innenpunktmethoden , wenn die lineare Algebra und Parallelität gut implementiert waren und Sie die Zeit und einen bescheidenen Cluster hatten, verstehe ich nicht, warum Sie es nicht versuchen konnten um ein Problem mit 10 7 oder vielleicht 10 8 zu lösen1013n3.5107 108Variablen (nur wenn Sie eine spezielle Struktur hätten, könnten Sie diese mit Zerlegungsmethoden wie Benders 'Zerlegung oder Dantzig-Wolfe sowie Algorithmen zur Erzeugung von Schnittebenen nutzen). (Ich werde hinzufügen, dass ich den Effekt von Einschränkungen ignoriere, die die Sache abhängig von der Anzahl der gespeicherten Bits komplizieren. Dieser Effekt macht die folgenden Schätzungen nur pessimistischer.)

Ich glaube, GAMS hat eine parallele Implementierung, und da es Löser wie CPLEX, Gurobi, MOSEK und Xpress verwendet (dh die vier Löser in den von Aron zitierten Benchmarks), verstehe ich nicht, warum man keine parallelen Instanzen davon ausführen konnte Löser (tatsächlich weiß ich, dass dies für CPLEX und Gurobi möglich ist). Die begrenzenden Faktoren sind Speicher (weil Speicher teuer ist) und Kommunikation mehr als Rechenleistung, da sich ein lineares Programm letztendlich darauf beschränkt, ein System linearer Gleichungen wiederholt zu konstruieren und zu lösen (eine massive Vereinfachung, ja, aber lineare Algebra ist etwas, was wir tun wissen, wie man parallelisiert).

Aber Variablen sind zu viel. Unter der Annahme, dass Speicher und Kommunikation kein Objekt sind, müssen Sie das größte Problem im Benchmark nehmen und die Laufzeit auf diesem Computer um einen Faktor von ungefähr 10 24 skalieren, bevor Sie möglicherweise die spezielle Struktur ausnutzen, die Ihr spezielles Problem möglicherweise hat. Das heißt nicht, dass Sie nicht versuchen könnten, es ungefähr mit den von Professor Neumaier vorgeschlagenen Methoden zu lösen, aber eine Lösung für die Optimalität ist wahrscheinlich unmöglich, ohne lange zu warten, einen riesigen Computer zu verwenden und eine skalierbare Implementierung eines zu haben LP-Solver auf diesen riesigen Computer abgestimmt.10131024

Als sehr grobe Schätzung der Größenordnung kann der in den von Aron zitierten Benchmark verwendete Intel Core 2 Quad mit einer Spitzengeschwindigkeit von 40 Gigaflops betrieben werden. Angenommen, Sie würden auf Jaguar, den Supercomputer von Oak Ridge National Lab, steigen und könnten die gesamte Maschine verwenden (äußerst unwahrscheinlich, aber lassen Sie uns groß träumen), hätten Sie ungefähr 2 Petaflops zur Hand (basierend auf den TOP 500-Zahlen hier) . oder ungefähr das 50000-fache der Rechenleistung, ohne Strafen aufgrund von Kommunikation, Speicherbeschränkungen oder der Tatsache, dass niemand jemals mit Höchstgeschwindigkeit läuft (nicht einmal der LINPACK-Benchmark).

106107106101310171018


Ich wollte mit einer Schätzung beginnen, wie lange es auf einem Supercomputer dauern würde, aber eines der Probleme ist, dass viele der schnelleren LP-Löser auf einer Cholesky-Zerlegung beruhen und dass dies letztendlich die Speichernutzung aufgrund von Füllung sprengen wird. im. Diese Maschinen implementieren auch Parallelität mit gemeinsamem Speicher, aber echte Parallelität mit verteiltem Speicher ist aus kommerziellen Gründen derzeit bei kommerziellen LP-Solvern aus irgendeinem Grund eher selten.
Aron Ahmadia

O(n3.5)

O(n2.5)

@ AaronAhmadia: Einverstanden. Alles, was ich in Solver-Handbüchern sehe, sind dichte oder spärliche Cholesky-Faktorisierungen, die zur Lösung des Barrieremethodensystems verwendet werden. Niemand verwendet überhaupt Krylov-Subraummethoden, noch habe ich Parallelität mit verteiltem Speicher (dh MPI-basiert) gesehen. Ich sehe keine Optimierungsprobleme (mit der möglichen Ausnahme von PDE-beschränkten Problemen) auf Supercomputern gelöst. Vielleicht schaue ich nicht auf die richtigen Papiere.
Geoff Oxberry

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

0

Es ist eine alte Frage, aber hey, vor mehr als 25 Jahren konnte jemand bereits ein Problem mit 1,1 Millionen Einschränkungen und 2,6 Millionen Variablen in 3 Stunden auf einem PC-Cluster lösen. http://www.maths.ed.ac.uk/~gondzio/CV/finance.pdf

Ich würde gerne die generierenden Gleichungen sehen, vielleicht ist es klug, eine ernsthafte Zerlegung durchzuführen, bevor Sie dieses Problem auf die Algorithmen übertragen, und ich möchte als Praktiker sagen, dass es vielleicht klug ist, daran zu kauen, bevor Sie die Hardware füttern. Klingt auch nach der Größe, die bei begrenztem Computerspeicher und begrenzter Genauigkeit zu numerischen Fehlern in der Formulierung führen würde.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.