

ProxSuite представляет собой набор открытых, численных, точных и эффективных численных решателей (например, LPS, QP и т. Д.), коренящихся в пересмотренных первичных двойных проксимальных алгоритмах. Через ProxSuite мы стремимся предложить сообществу масштабируемые оптимизаторы, которые имеют дело с плотными, редкими или без матриц. В то время как первым целевым приложением является робототехника, ProxSuite может использоваться в других контекстах без ограничений.
ProxSuite активно развивается и поддерживается исследовательскими группами Willow и Sierra, совместными исследовательскими группами между INRIA, Ecole Normale Supérieure de Paris и Center National De La Recherche Scientifique, локализованным во Франции.
ProxSuite уже интегрирован в:
Мы готовы интегрировать ProxSuite в другие экосистемы оптимизации.
ProxSuite быстро:
ProxSuite является универсальным, предлагая с помощью Unified API расширенные алгоритмы, специализируемые для эффективного использования проблемных структур:
с выделенными функциями для
ProxSuite гибкий:
ProxSuite расширяется. ProxSuite является надежным и тщательно протестированным, демонстрируя лучшие выступления по самым сложным проблемам литературы. ProxSuite поддерживается и тестируется в Windows, Mac OS X, Unix и Linux.
Онлайн -документация о последнем выпуске онлайн доступна здесь.
ProxSuite распространяется со многими известными менеджерами пакетов.
pip install proxsuiteЭтот подход доступен на Linux, Windows и Mac OS X.
conda install proxsuite -c conda-forgeЭтот подход доступен на Linux, Windows и Mac OS X.
brew install proxsuiteЭтот подход доступен на Linux и Mac OS X.
Установка из источника представлена здесь.
Для самой быстрой производительности используйте следующую команду, чтобы включить векторизацию при составлении простого примера.
g++ -O3 -march=native -DNDEBUG -std=gnu++17 -DPROXSUITE_VECTORIZE examples/first_example_dense.cpp -o first_example_dense $( pkg-config --cflags proxsuite )Если вы хотите использовать ProxSuite с Cmake, должен вам помочь: следующий крошечный пример:
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" ) Если вы скомпилировали ProxSuite с поддержкой векторизации, вы также можете использовать целевой proxsuite::proxsuite-vectorized чтобы также ссылаться на Simde. Не забудьте использовать -march=native чтобы получить наилучшую производительность.
Алгоритм ProXQP является численным подходом оптимизации для решения задач квадратичного программирования формы:
где
Если вы используете ProxQP для вашей работы, мы рекомендуем вам привести связанную статью.
Численные тесты ProxQP против других коммерческих решателей и решателей с открытым исходным кодом доступны здесь.
Для плотных выпуклых квадратичных программ с неравенством и ограничениями равенства, когда просят относительно высокую точность (например, 1E-6), получает следующие результаты.

При оси Y вы можете увидеть время за секунды, а в измерении оси x до первичной переменной изгенерированных квадратичных задач (количество ограничений сгенерированной задачи-это половина размера его первичного измерения). Для каждого измерения проблема генерируется в разных семенах, а время получаются в качестве средних по сравнению с последовательными пробегами для одних и тех же проблем. На этой диаграмме показана для каждого согнутого уровня решателя и случайной квадратичной программы, времен Barplot, включая медиана (как точка) и минимальные и максимальные полученные значения (определение амплитуды бара). Вы можете видеть, что ProxQP всегда ниже решателей, что означает, что он самый быстрый для этого теста.
Для испытательных проблем Maros Meszaros при просьбе высокой точности (например, 1E-9), получает результаты ниже.

Приведенная выше диаграмма сообщает о профилях производительности разных решателей. Это классика для решателей бенчмаркинга. Профили производительности соответствуют доли задач, решающихся (по оси Y) в зависимости от определенной среды выполнения (на оси X, измеренные с точки зрения множества времени выполнения самого быстрого решателя для этой проблемы). Так что чем выше, тем лучше. Вы можете видеть, что ProxQP решает самые быстрые более 60% проблем (т.е.
ПРИМЕЧАНИЕ. Все эти результаты были получены с помощью CORE 11-го поколения Intel (R) CORE (TM) I7-11850H при 2,50 ГГц.
QPlayer позволяет использовать QP в качестве слоя в стандартных архитектурах обучения. Точнее, QPlayer различает
где
QPlayer может изучать больше структурированных архитектур. Например,
Если вы используете QPlayer для своей работы, мы рекомендуем вам привести связанную статью.
Пожалуйста, следуйте процедуре установки здесь.