

Proxsuite는 재 방문 된 원시 이중 근위 알고리즘에 뿌리를 둔 오픈 소스, 수치 적으로 강력하고 정확하며 효율적인 수치 솔버 (예 : LPS, QP 등)의 모음입니다. Proxsuite를 통해 우리는 조밀 한, 희소 또는 매트릭스가없는 문제를 다루는 커뮤니티 확장 가능한 최적화기를 제공하는 것을 목표로합니다. 첫 번째 표적 응용 프로그램은 로봇 공학이지만, 프록스 수트는 다른 상황에서 제한없이 사용할 수 있습니다.
Proxsuite는 윌로우와 시에라 연구 그룹, inria, École Normale Supérieure de Paris 및 Center National de la Recherche Scientifique 사이의 공동 연구 팀이 적극적으로 개발하고 지원합니다.
Proxsuite 는 이미 다음과 통합되어 있습니다.
우리는 다른 최적화 생태계 내에 프록스 시트를 통합 할 준비가되었습니다.
proxsuite 는 빠릅니다.
Proxsuite 는 다목적이며, 문제 구조를 효율적으로 이용할 수있는 통합 API 고급 알고리즘을 통해 제공됩니다.
전용 기능이 있습니다
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 )cmake와 함께 proxsuite를 사용하려면 다음과 같은 작은 예가 도움이됩니다.
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" ) 벡터화 지지대와 함께 프록시트를 컴파일 한 경우 CMAKE Target proxsuite::proxsuite-vectorized 사용하여 Simde와 연결될 수도 있습니다. 최상의 성능을 얻으려면 -march=native 사용하는 것을 잊지 마십시오.
ProxQP 알고리즘은 양식의 2 차 프로그래밍 문제를 해결하기위한 수치 최적화 접근법입니다.
어디
작업에 ProxQP를 사용하는 경우 관련 논문을 인용하는 것이 좋습니다.
다른 상용 및 오픈 소스 솔버에 대한 ProxQP 의 수치 벤치 마크는 여기에서 제공됩니다.
불평등과 평등 제약이있는 고밀도 볼록 2 차 프로그램의 경우 비교적 높은 정확도 (예 : 1E-6)를 요구할 때 다음과 같은 결과를 얻습니다.

y 축에서, 당신은 몇 초 안에 타이밍을 볼 수 있고, X 축 치수에서 생성 된 무작위 2 차 문제의 원시 변수에 대한 x 축 치수에서 생성 된 문제의 제약 수는 원시 치수의 절반의 크기입니다). 모든 차원의 경우, 문제는 다른 씨앗에 걸쳐 생성되며 동일한 문제에 대한 연속 실행에 대한 평균으로 타이밍이 얻어집니다. 이 차트는 모든 벤치마킹 된 솔버 및 랜덤 2 차 프로그램에 대해 중앙값 (점으로) 및 최소 및 최대 값 (막대의 진폭 정의)을 포함한 바 플로트 타이밍에 대해 보여줍니다. ProxQP가 항상 Solvers보다 아래에 있음을 알 수 있습니다. 즉,이 테스트에서 가장 빠릅니다.
MAROS MESZAROS 테스트 세트의 어려운 문제의 경우 높은 정확도 (예 : 1E-9)를 요구할 때 아래 결과를 얻습니다.

위의 차트는 다른 솔버의 성능 프로파일을보고합니다. 벤치마킹 솔버에게는 클래식합니다. 성능 프로파일은 특정 런타임의 함수로서 (Y 축에서) 해결 된 문제의 비율에 해당합니다 (X 축에서, 해당 문제에 대해 가장 빠른 솔버의 런타임의 다중 측면에서 측정). 그래서 높을수록 좋습니다. ProxQP가 문제의 60% 이상을 가장 빠르게 해결한다는 것을 알 수 있습니다 (즉,
참고 :이 모든 결과는 11 번째 Gen Intel (R) 코어 (TM) I7-11850H @ 2.50GHz CPU로 얻었습니다.
QPlayer를 사용하면 표준 학습 아키텍처 내에서 QP를 레이어로 사용할 수 있습니다. 보다 정확하게는 QPlayer가 차별화됩니다
어디
QPlayer는 보다 구조화 된 아키텍처를 배울 수 있습니다. 예를 들어,
작업에 Qplayer를 사용하는 경우 관련 논문을 인용하는 것이 좋습니다.
여기에서 설치 절차를 따르십시오.