

Proxsuite ist eine Sammlung von open-Source-, numerisch robusten, präzisen und effizienten numerischen Solvers (z. B. LPS, QPS usw.), die in überarbeiteten primalen proximalen Algorithmen verwurzelt sind. Durch Proxsuite wollen wir den Community skalierbaren Optimierern anbieten, die sich mit dichten, spärlichen oder matrixfreien Problemen befassen. Während die erste gezielte Anwendung Robotik ist, kann Proxsuite in anderen Kontexten ohne Grenzen verwendet werden.
Proxsuite wird aktiv von den Forschungsgruppen der Willow und der Sierra, gemeinsamen Forschungsteams zwischen INRIA, École Normal Supérieure de Paris und Center National de la Recherche Scientifique in Frankreich entwickelt und unterstützt.
Proxsuite ist bereits integriert in:
Wir sind bereit, Proxsuite in andere Optimierungsökosysteme zu integrieren.
Proxsuite ist schnell:
Proxsuite ist vielseitig und bietet eine einheitliche API -erweiterte Algorithmen an, die auf effizient ausnutzende Problemstrukturen spezialisiert ist:
mit speziellen Funktionen für
Proxsuite ist flexibel:
Proxsuite ist erweiterbar. Proxsuite ist zuverlässig und umfassend getestet und zeigt die besten Leistungen zu den schwierigsten Problemen der Literatur. Proxsuite wird unter Windows, Mac OS X, Unix und Linux unterstützt und getestet.
Die Online -Proxsuite -Dokumentation der letzten Version ist hier verfügbar.
Proxsuite wird an viele bekannte Paketmanager verteilt.
pip install proxsuiteDieser Ansatz ist unter Linux, Windows und Mac OS X verfügbar.
conda install proxsuite -c conda-forgeDieser Ansatz ist unter Linux, Windows und Mac OS X verfügbar.
brew install proxsuiteDieser Ansatz ist unter Linux und Mac OS X verfügbar.
Die Installation aus der Quelle wird hier vorgestellt.
Verwenden Sie für die schnellste Leistung den folgenden Befehl, um die Vektorisierung beim Kompilieren des einfachen Beispiels zu aktivieren.
g++ -O3 -march=native -DNDEBUG -std=gnu++17 -DPROXSUITE_VECTORIZE examples/first_example_dense.cpp -o first_example_dense $( pkg-config --cflags proxsuite )Wenn Sie Proxsuite mit CMake verwenden möchten, sollte Ihnen das folgende winzige Beispiel helfen:
cmake_minimum_required ( VERSION 3.10)
project (Example CXX)
find_package (proxsuite REQUIRED)
set (CMAKE_CXX_STANDARD 17) # set(CMAKE_CXX_STANDARD 14) will work too
add_executable (example example.cpp)
target_link_libraries (example PUBLIC proxsuite::proxsuite)
# Vectorization support via SIMDE and activated by the compilation options '-march=native' or `-mavx2 -mavx512f`
add_executable (example_with_full_vectorization_support example.cpp)
target_link_libraries (example_with_full_vectorization_support PUBLIC proxsuite::proxsuite-vectorized)
target_compile_options (example_with_full_vectorization_support PUBLIC "-march=native" ) Wenn Sie Proxsuite mit der Vektorisierungsunterstützung kompiliert haben, können Sie auch die CMake-Ziel- proxsuite::proxsuite-vectorized verwenden, um auch mit Simde zu verknüpfen. Vergessen Sie nicht -march=native zu verwenden, um die beste Leistung zu erzielen.
Der ProxqP -Algorithmus ist ein numerischer Optimierungsansatz zur Lösung quadratischer Programmierungsprobleme der Form:
Wo
Wenn Sie ProxQP für Ihre Arbeit verwenden, empfehlen wir Ihnen, das zugehörige Papier zu zitieren.
Die numerischen Benchmarks von Proxqp gegen andere kommerzielle und open-Source-Löser finden Sie hier.
Bei dichten konvexen quadratischen Programmen mit Ungleichheit und Gleichheitsbeschränkungen, wenn man nach relativ hoher Genauigkeit bittet (z. B. 1E-6), erzielt man die folgenden Ergebnisse.

Auf der y-Achse können Sie Timings in Sekunden und in der x-Achsen-Dimension auf die ursprüngliche Variable der zufälligen quadratischen Probleme sehen (die Anzahl der Einschränkungen des erzeugten Problems ist halb so groß wie seine ursprüngliche Dimension). Für jede Dimension wird das Problem über verschiedene Samen erzeugt, und die Timings werden als Durchschnittswert über aufeinanderfolgende Läufe für die gleichen Probleme erhalten. Dieses Diagramm zeigt für jeden von einem Benchmarked Solver und zufälligen quadratischen Programm erzeugten Barplot -Timings, einschließlich Median (als Punkt) und minimaler und maximaler Werte (Definieren der Amplitude des Balkens). Sie können sehen, dass ProxQP immer über Löser unterhalb von Lösten liegt, was bedeutet, dass es für diesen Test am schnellsten ist.
Bei harten Problemen aus dem maros meszaros testset bittet man bei einer hohen Genauigkeit (z. B. 1E-9) die folgenden Ergebnisse.

Das Diagramm oben meldet die Leistungsprofile verschiedener Solvers. Es ist klassisch für Benchmarking -Solvers. Leistungsprofile entsprechen dem Anteil der gelösten Probleme (auf der y-Achse) als Funktion bestimmter Laufzeit (auf der X-Achse, gemessen an einem Vielfachen der Laufzeit des schnellsten Lösers für dieses Problem). Also desto höher, desto besser. Sie können sehen, dass ProxQP die schnellsten über 60% der Probleme löst (dh für
HINWEIS: Alle diese Ergebnisse wurden mit einem Intel (R) Core (R) Core (TM) I7-11850H bei 2,50 GHz CPU (TM) erhalten.
QPlayer ermöglicht es, ein QP als Ebene innerhalb der Standard -Lernarchitekturen zu verwenden. Genauer gesagt unterscheidet QPlayer über
Wo
QPlayer kann strukturiertere Architekturen lernen. Zum Beispiel,
Wenn Sie QPlayer für Ihre Arbeit verwenden, empfehlen wir Ihnen, das zugehörige Papier zu zitieren.
Bitte befolgen Sie die Installationsverfahren hier.