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