

O Proxsuite é uma coleção de solucionadores numéricos numericamente robustos, precisos e eficientes (por exemplo, LPS, QPs, etc.) enraizados nos algoritmos proximais primpos-duplos revisitados. Através do Proxsuite , pretendemos oferecer aos otimizadores escalonáveis da comunidade que lidam com problemas densos, escassos ou sem matrizes. Embora o primeiro aplicativo direcionado seja a robótica, o proxsuite pode ser usado em outros contextos sem limites.
O Proxsuite é desenvolvido e apoiado ativamente pelos grupos de pesquisa de Willow e Sierra, equipes de pesquisa conjuntas entre a INRIA, École Normale Supérrieure de Paris e Centro National de la Recherche Scientifique localizada na França.
Proxsuite já está integrado a:
Estamos prontos para integrar proxsuite em outros ecossistemas de otimização.
Proxsuite é rápido:
O proxsuite é versátil, oferecendo por meio de algoritmos avançados de API unificados especializados para explorar com eficiência estruturas de problemas:
com recursos dedicados para
Proxsuite é flexível:
Proxsuite é extensível. O proxsuite é confiável e testado extensivamente, mostrando as melhores performances sobre os problemas mais difíceis da literatura. O Proxsuite é suportado e testado no Windows, Mac OS X, UNIX e Linux.
A documentação on -line do ProxSuite da última versão está disponível aqui.
O Proxsuite é distribuído a muitos gerentes de pacotes conhecidos.
pip install proxsuiteEsta abordagem está disponível no Linux, Windows e Mac OS X.
conda install proxsuite -c conda-forgeEsta abordagem está disponível no Linux, Windows e Mac OS X.
brew install proxsuiteEsta abordagem está disponível no Linux e Mac OS X.
A instalação da fonte é apresentada aqui.
Para o desempenho mais rápido, use o seguinte comando para ativar a vetorização ao compilar o exemplo simples.
g++ -O3 -march=native -DNDEBUG -std=gnu++17 -DPROXSUITE_VECTORIZE examples/first_example_dense.cpp -o first_example_dense $( pkg-config --cflags proxsuite )Se você deseja usar o proxsuite com cmake, o seguinte exemplo deve ajudá -lo:
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" ) Se você compilou o ProxSuite com o suporte à vetorização, também poderá usar o CMake Target proxsuite::proxsuite-vectorized para também vincular o SIMDE. Não se esqueça de usar -march=native para obter o melhor desempenho.
O algoritmo Proxqp é uma abordagem de otimização numérica para resolver problemas de programação quadrática do formulário:
onde
Se você estiver usando o Proxqp para o seu trabalho, incentivamos você a citar o artigo relacionado.
Os benchmarks numéricos do ProxQP contra outros solucionadores de código aberto e de código aberto estão disponíveis aqui.
Para programas quadráticos convexos densos com restrições de desigualdade e igualdade, ao solicitar uma precisão relativamente alta (por exemplo, 1E-6), obtém-se os seguintes resultados.

No eixo y, você pode ver os horários em segundos e na dimensão do eixo x WRT para a variável primordial dos problemas quadráticos aleatórios gerados (o número de restrições do problema gerado é metade do tamanho de sua dimensão primordial). Para cada dimensão, o problema é gerado em diferentes sementes e os horários são obtidos como médias em execuções sucessivas para os mesmos problemas. Este gráfico mostra para todos os programas de solucionador de referência e quadrática aleatória gerados, com os valores de barrot, incluindo mediana (como um ponto) e valores mínimos e máximos obtidos (definindo a amplitude da barra). Você pode ver que o ProxQP está sempre abaixo dos solucionadores, o que significa que é o mais rápido para este teste.
Para problemas difíceis do conjunto de testes de Maros Meszaros, ao solicitar alta precisão (por exemplo, 1E-9), um obtém os resultados abaixo.

O gráfico acima relata os perfis de desempenho de diferentes solucionadores. É clássico para os solucionadores de benchmarking. Os perfis de desempenho correspondem à fração de problemas resolvidos (no eixo y) em função de um determinado tempo de execução (no eixo x, medido em termos de um múltiplo de tempo de execução do solucionador mais rápido para esse problema). Então, quanto mais alto, melhor. Você pode ver que o Proxqp resolve os mais rápidos mais de 60% dos problemas (ou seja, para
Nota: Todos esses resultados foram obtidos com um núcleo de 11ª geração Intel (R) (TM) i7-11850H @ 2,50GHz CPU.
O QPLAYER permite usar um QP como uma camada nas arquiteturas de aprendizado padrão. Mais precisamente, o QPLAYER DIFERIA
onde
O QPLAYER é capaz de aprender arquiteturas mais estruturadas. Por exemplo,
Se você estiver usando o QPLAYER para o seu trabalho, incentivamos você a citar o artigo relacionado.
Siga o procedimento de instalação aqui.