sleipnirgroup-jormungandr 0.6.7.dev66__tar.gz → 0.6.7.dev68__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of sleipnirgroup-jormungandr might be problematic. Click here for more details.

Files changed (128) hide show
  1. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/PKG-INFO +1 -1
  2. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/ipm.hpp +30 -27
  3. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/sqp.hpp +26 -13
  4. sleipnirgroup_jormungandr-0.6.7.dev68/include/sleipnir/optimization/solver/util/constraint_violation.hpp +34 -0
  5. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/util/filter.hpp +4 -3
  6. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/util/print_diagnostics.hpp +15 -20
  7. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/src/sleipnir/__init__.py +1 -1
  8. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/CMakeLists.txt +0 -0
  9. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/LICENSE.txt +0 -0
  10. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/README.md +0 -0
  11. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/SleipnirConfig.cmake.in +0 -0
  12. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/cmake/BuildTypes.cmake +0 -0
  13. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/cmake/CompilerFlags.cmake +0 -0
  14. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/cmake/Pybind11Mkdoc.cmake +0 -0
  15. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/cmake/Pybind11MkdocPostprocess.cmake +0 -0
  16. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/cmake/SubdirList.cmake +0 -0
  17. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/cmake/arm-none-eabi.cmake +0 -0
  18. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/autodiff/expression.hpp +0 -0
  19. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/autodiff/expression_graph.hpp +0 -0
  20. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/autodiff/expression_type.hpp +0 -0
  21. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/autodiff/gradient.hpp +0 -0
  22. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/autodiff/hessian.hpp +0 -0
  23. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/autodiff/jacobian.hpp +0 -0
  24. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/autodiff/sleipnir_base.hpp +0 -0
  25. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/autodiff/slice.hpp +0 -0
  26. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/autodiff/variable.hpp +0 -0
  27. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/autodiff/variable_block.hpp +0 -0
  28. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/autodiff/variable_matrix.hpp +0 -0
  29. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/multistart.hpp +0 -0
  30. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/ocp/dynamics_type.hpp +0 -0
  31. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/ocp/timestep_method.hpp +0 -0
  32. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/ocp/transcription_method.hpp +0 -0
  33. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/ocp.hpp +0 -0
  34. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/problem.hpp +0 -0
  35. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/exit_status.hpp +0 -0
  36. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/ipm_matrix_callbacks.hpp +0 -0
  37. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/iteration_info.hpp +0 -0
  38. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/newton.hpp +0 -0
  39. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/newton_matrix_callbacks.hpp +0 -0
  40. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/options.hpp +0 -0
  41. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/sqp_matrix_callbacks.hpp +0 -0
  42. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/util/all_finite.hpp +0 -0
  43. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/util/append_as_triplets.hpp +0 -0
  44. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/util/bounds.hpp +0 -0
  45. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/util/dense_kkt_solver.hpp +0 -0
  46. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/util/feasibility_restoration.hpp +0 -0
  47. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/util/fraction_to_the_boundary_rule.hpp +0 -0
  48. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/util/inertia.hpp +0 -0
  49. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/util/kkt_error.hpp +0 -0
  50. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/util/kkt_solver.hpp +0 -0
  51. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/util/problem_scaling.hpp +0 -0
  52. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/util/sparse_inf_norms.hpp +0 -0
  53. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/optimization/solver/util/sparse_kkt_solver.hpp +0 -0
  54. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/util/assert.hpp +0 -0
  55. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/util/concepts.hpp +0 -0
  56. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/util/empty.hpp +0 -0
  57. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/util/function_ref.hpp +0 -0
  58. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/util/intrusive_shared_ptr.hpp +0 -0
  59. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/util/pool.hpp +0 -0
  60. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/util/print.hpp +0 -0
  61. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/util/profiler.hpp +0 -0
  62. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/util/scope_exit.hpp +0 -0
  63. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/util/spy.hpp +0 -0
  64. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/include/sleipnir/util/symbol_exports.hpp +0 -0
  65. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/pyproject.toml +0 -0
  66. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/arity.hpp +0 -0
  67. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/autodiff/bind_expression_type.cpp +0 -0
  68. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/autodiff/bind_gradient.cpp +0 -0
  69. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/autodiff/bind_hessian.cpp +0 -0
  70. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/autodiff/bind_jacobian.cpp +0 -0
  71. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/autodiff/bind_variable.cpp +0 -0
  72. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/autodiff/bind_variable_block.cpp +0 -0
  73. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/autodiff/bind_variable_matrix.cpp +0 -0
  74. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/binders.hpp +0 -0
  75. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/docstrings.hpp +0 -0
  76. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/for_each_type.hpp +0 -0
  77. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/main.cpp +0 -0
  78. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/optimization/bind_equality_constraints.cpp +0 -0
  79. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/optimization/bind_inequality_constraints.cpp +0 -0
  80. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/optimization/bind_ocp.cpp +0 -0
  81. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/optimization/bind_problem.cpp +0 -0
  82. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/optimization/ocp/bind_dynamics_type.cpp +0 -0
  83. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/optimization/ocp/bind_timestep_method.cpp +0 -0
  84. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/optimization/ocp/bind_transcription_method.cpp +0 -0
  85. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/optimization/solver/bind_exit_status.cpp +0 -0
  86. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/optimization/solver/bind_iteration_info.cpp +0 -0
  87. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/slice_tuple.hpp +0 -0
  88. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/text_wrap.hpp +0 -0
  89. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/cpp/try_cast.hpp +0 -0
  90. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/postprocess_stubs.py +0 -0
  91. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/src/sleipnir/autodiff/__init__.py +0 -0
  92. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/src/sleipnir/optimization/__init__.py +0 -0
  93. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/autodiff/gradient_test.py +0 -0
  94. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/autodiff/hessian_test.py +0 -0
  95. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/autodiff/jacobian_test.py +0 -0
  96. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/autodiff/variable_matrix_test.py +0 -0
  97. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/autodiff/variable_test.py +0 -0
  98. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/arm_on_elevator_problem_test.py +0 -0
  99. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/cart_pole_ocp_test.py +0 -0
  100. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/cart_pole_problem_test.py +0 -0
  101. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/cart_pole_util.py +0 -0
  102. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/constraints_test.py +0 -0
  103. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/decision_variable_test.py +0 -0
  104. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/differential_drive_ocp_test.py +0 -0
  105. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/differential_drive_problem_test.py +0 -0
  106. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/differential_drive_util.py +0 -0
  107. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/double_integrator_problem_test.py +0 -0
  108. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/flywheel_ocp_test.py +0 -0
  109. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/flywheel_problem_test.py +0 -0
  110. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/linear_problem_test.py +0 -0
  111. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/multistart_test.py +0 -0
  112. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/near.py +0 -0
  113. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/nonlinear_problem_test.py +0 -0
  114. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/problem_spy_test.py +0 -0
  115. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/quadratic_problem_test.py +0 -0
  116. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/rk4.py +0 -0
  117. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/solver/exit_status_test.py +0 -0
  118. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/python/test/optimization/trivial_problem_test.py +0 -0
  119. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/src/autodiff/gradient.cpp +0 -0
  120. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/src/autodiff/hessian.cpp +0 -0
  121. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/src/autodiff/jacobian.cpp +0 -0
  122. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/src/autodiff/variable_matrix.cpp +0 -0
  123. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/src/optimization/ocp.cpp +0 -0
  124. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/src/optimization/problem.cpp +0 -0
  125. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/src/optimization/solver/ipm.cpp +0 -0
  126. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/src/optimization/solver/newton.cpp +0 -0
  127. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/src/optimization/solver/sqp.cpp +0 -0
  128. {sleipnirgroup_jormungandr-0.6.7.dev66 → sleipnirgroup_jormungandr-0.6.7.dev68}/src/util/pool.cpp +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sleipnirgroup-jormungandr
3
- Version: 0.6.7.dev66
3
+ Version: 0.6.7.dev68
4
4
  Summary: Reverse mode autodiff library and NLP solver DSL
5
5
  License-Expression: BSD-3-Clause
6
6
  License-File: LICENSE.txt
@@ -18,6 +18,7 @@
18
18
  #include "sleipnir/optimization/solver/options.hpp"
19
19
  #include "sleipnir/optimization/solver/util/all_finite.hpp"
20
20
  #include "sleipnir/optimization/solver/util/append_as_triplets.hpp"
21
+ #include "sleipnir/optimization/solver/util/constraint_violation.hpp"
21
22
  #include "sleipnir/optimization/solver/util/feasibility_restoration.hpp"
22
23
  #include "sleipnir/optimization/solver/util/filter.hpp"
23
24
  #include "sleipnir/optimization/solver/util/fraction_to_the_boundary_rule.hpp"
@@ -144,6 +145,22 @@ ExitStatus ipm(const IPMMatrixCallbacks<Scalar>& matrix_callbacks,
144
145
  DenseVector p_y;
145
146
  /// Inequality constraint dual step.
146
147
  DenseVector p_z;
148
+
149
+ /// Returns the infinity norm of the primal step.
150
+ ///
151
+ /// @return The infinity norm of the primal step.
152
+ Scalar primal_inf_norm() const {
153
+ return std::max(p_x.template lpNorm<Eigen::Infinity>(),
154
+ p_s.template lpNorm<Eigen::Infinity>());
155
+ }
156
+
157
+ /// Returns the infinity norm of the dual step.
158
+ ///
159
+ /// @return The infinity norm of the dual step.
160
+ Scalar dual_inf_norm() const {
161
+ return std::max(p_y.template lpNorm<Eigen::Infinity>(),
162
+ p_z.template lpNorm<Eigen::Infinity>());
163
+ }
147
164
  };
148
165
 
149
166
  using std::isfinite;
@@ -296,8 +313,7 @@ ExitStatus ipm(const IPMMatrixCallbacks<Scalar>& matrix_callbacks,
296
313
  // Fraction-to-the-boundary rule scale factor τ
297
314
  Scalar τ = τ_min;
298
315
 
299
- Filter<Scalar> filter{c_e.template lpNorm<1>() +
300
- (c_i - s).template lpNorm<1>()};
316
+ Filter<Scalar> filter{constraint_violation(c_e, c_i, s)};
301
317
 
302
318
  // This should be run when the error is below a desired threshold for the
303
319
  // current barrier parameter
@@ -379,9 +395,8 @@ ExitStatus ipm(const IPMMatrixCallbacks<Scalar>& matrix_callbacks,
379
395
 
380
396
  // Print initial iterate diagnostics
381
397
  if (options.diagnostics) {
382
- print_initial_iterate_diagnostics(
383
- E_0, f, c_e.template lpNorm<1>() + (c_i - s).template lpNorm<1>(),
384
- s.dot(z), μ);
398
+ print_initial_iterate_diagnostics(E_0, f, constraint_violation(c_e, c_i, s),
399
+ s.dot(z), μ);
385
400
  }
386
401
 
387
402
  while (E_0 > Scalar(options.tolerance)) {
@@ -533,11 +548,9 @@ ExitStatus ipm(const IPMMatrixCallbacks<Scalar>& matrix_callbacks,
533
548
  break;
534
549
  }
535
550
 
536
- Scalar prev_constraint_violation =
537
- c_e.template lpNorm<1>() + (c_i - s).template lpNorm<1>();
551
+ Scalar prev_constraint_violation = constraint_violation(c_e, c_i, s);
538
552
  Scalar next_constraint_violation =
539
- trial_c_e.template lpNorm<1>() +
540
- (trial_c_i - trial_s).template lpNorm<1>();
553
+ constraint_violation(trial_c_e, trial_c_i, trial_s);
541
554
 
542
555
  // Second-order corrections
543
556
  //
@@ -570,16 +583,11 @@ ExitStatus ipm(const IPMMatrixCallbacks<Scalar>& matrix_callbacks,
570
583
  unscaled_kkt_error<Scalar, KKTErrorType::INF_NORM_SCALED>(
571
584
  matrices.scaling, g, A_e, trial_c_e, A_i, trial_c_i,
572
585
  trial_s, trial_y, trial_z, Scalar(0)),
573
- trial_f,
574
- trial_c_e.template lpNorm<1>() +
575
- (trial_c_i - trial_s).template lpNorm<1>(),
586
+ trial_f, constraint_violation(trial_c_e, trial_c_i, trial_s),
576
587
  trial_s.dot(trial_z), μ, solver.hessian_regularization(),
577
588
  solver.constraint_jacobian_regularization(),
578
- std::max(soc_step.p_x.template lpNorm<Eigen::Infinity>(),
579
- soc_step.p_s.template lpNorm<Eigen::Infinity>()),
580
- std::max(soc_step.p_y.template lpNorm<Eigen::Infinity>(),
581
- soc_step.p_z.template lpNorm<Eigen::Infinity>()),
582
- α_soc, Scalar(1), α_reduction_factor, α_z_soc);
589
+ soc_step.primal_inf_norm(), soc_step.dual_inf_norm(), α_soc,
590
+ Scalar(1), α_reduction_factor, α_z_soc);
583
591
  }
584
592
  }};
585
593
 
@@ -633,8 +641,7 @@ ExitStatus ipm(const IPMMatrixCallbacks<Scalar>& matrix_callbacks,
633
641
  // If constraint violation hasn't been sufficiently reduced, stop
634
642
  // making second-order corrections
635
643
  next_constraint_violation =
636
- trial_c_e.template lpNorm<1>() +
637
- (trial_c_i - trial_s).template lpNorm<1>();
644
+ constraint_violation(trial_c_e, trial_c_i, trial_s);
638
645
  if (next_constraint_violation > κ_soc * soc_constraint_violation) {
639
646
  break;
640
647
  }
@@ -835,14 +842,10 @@ ExitStatus ipm(const IPMMatrixCallbacks<Scalar>& matrix_callbacks,
835
842
  in_feasibility_restoration ? IterationType::FEASIBILITY_RESTORATION
836
843
  : IterationType::NORMAL,
837
844
  inner_iter_profiler.current_duration(), E_0, f,
838
- c_e.template lpNorm<1>() + (c_i - s).template lpNorm<1>(), s.dot(z),
839
- μ, solver.hessian_regularization(),
840
- solver.constraint_jacobian_regularization(),
841
- std::max(step.p_x.template lpNorm<Eigen::Infinity>(),
842
- step.p_s.template lpNorm<Eigen::Infinity>()),
843
- std::max(step.p_y.template lpNorm<Eigen::Infinity>(),
844
- step.p_z.template lpNorm<Eigen::Infinity>()),
845
- α, α_max, α_reduction_factor, α_z);
845
+ constraint_violation(c_e, c_i, s), s.dot(z), μ,
846
+ solver.hessian_regularization(),
847
+ solver.constraint_jacobian_regularization(), step.primal_inf_norm(),
848
+ step.dual_inf_norm(), α, α_max, α_reduction_factor, α_z);
846
849
  }
847
850
 
848
851
  ++iterations;
@@ -17,6 +17,7 @@
17
17
  #include "sleipnir/optimization/solver/sqp_matrix_callbacks.hpp"
18
18
  #include "sleipnir/optimization/solver/util/all_finite.hpp"
19
19
  #include "sleipnir/optimization/solver/util/append_as_triplets.hpp"
20
+ #include "sleipnir/optimization/solver/util/constraint_violation.hpp"
20
21
  #include "sleipnir/optimization/solver/util/feasibility_restoration.hpp"
21
22
  #include "sleipnir/optimization/solver/util/filter.hpp"
22
23
  #include "sleipnir/optimization/solver/util/kkt_error.hpp"
@@ -102,6 +103,20 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
102
103
  DenseVector p_x;
103
104
  /// Equality constraint dual step.
104
105
  DenseVector p_y;
106
+
107
+ /// Returns the infinity norm of the primal step.
108
+ ///
109
+ /// @return The infinity norm of the primal step.
110
+ Scalar primal_inf_norm() const {
111
+ return p_x.template lpNorm<Eigen::Infinity>();
112
+ }
113
+
114
+ /// Returns the infinity norm of the dual step.
115
+ ///
116
+ /// @return The infinity norm of the dual step.
117
+ Scalar dual_inf_norm() const {
118
+ return p_y.template lpNorm<Eigen::Infinity>();
119
+ }
105
120
  };
106
121
 
107
122
  using std::isfinite;
@@ -218,7 +233,7 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
218
233
 
219
234
  int iterations = 0;
220
235
 
221
- Filter<Scalar> filter{c_e.template lpNorm<1>()};
236
+ Filter<Scalar> filter{constraint_violation(c_e)};
222
237
 
223
238
  // Kept outside the loop so its storage can be reused
224
239
  gch::small_vector<Eigen::Triplet<Scalar>> triplets;
@@ -257,7 +272,7 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
257
272
 
258
273
  // Print initial iterate diagnostics
259
274
  if (options.diagnostics) {
260
- print_initial_iterate_diagnostics(E_0, f, c_e.template lpNorm<1>(),
275
+ print_initial_iterate_diagnostics(E_0, f, constraint_violation(c_e),
261
276
  Scalar(0), Scalar(0));
262
277
  }
263
278
 
@@ -363,8 +378,8 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
363
378
  break;
364
379
  }
365
380
 
366
- Scalar prev_constraint_violation = c_e.template lpNorm<1>();
367
- Scalar next_constraint_violation = trial_c_e.template lpNorm<1>();
381
+ Scalar prev_constraint_violation = constraint_violation(c_e);
382
+ Scalar next_constraint_violation = constraint_violation(trial_c_e);
368
383
 
369
384
  // Second-order corrections
370
385
  //
@@ -394,11 +409,10 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
394
409
  soc_profiler.current_duration(),
395
410
  kkt_error<Scalar, KKTErrorType::INF_NORM_SCALED>(
396
411
  g, A_e, trial_c_e, trial_y),
397
- trial_f, trial_c_e.template lpNorm<1>(), Scalar(0), Scalar(0),
398
- solver.hessian_regularization(),
412
+ trial_f, constraint_violation(trial_c_e), Scalar(0),
413
+ Scalar(0), solver.hessian_regularization(),
399
414
  solver.constraint_jacobian_regularization(),
400
- soc_step.p_x.template lpNorm<Eigen::Infinity>(),
401
- soc_step.p_y.template lpNorm<Eigen::Infinity>(), α_soc,
415
+ soc_step.primal_inf_norm(), soc_step.dual_inf_norm(), α_soc,
402
416
  Scalar(1), α_reduction_factor, Scalar(1));
403
417
  }
404
418
  }};
@@ -435,7 +449,7 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
435
449
 
436
450
  // If constraint violation hasn't been sufficiently reduced, stop
437
451
  // making second-order corrections
438
- next_constraint_violation = trial_c_e.template lpNorm<1>();
452
+ next_constraint_violation = constraint_violation(trial_c_e);
439
453
  if (next_constraint_violation > κ_soc * soc_constraint_violation) {
440
454
  break;
441
455
  }
@@ -576,12 +590,11 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
576
590
  if (options.diagnostics) {
577
591
  print_iteration_diagnostics(iterations, IterationType::NORMAL,
578
592
  inner_iter_profiler.current_duration(), E_0,
579
- f, c_e.template lpNorm<1>(), Scalar(0),
593
+ f, constraint_violation(c_e), Scalar(0),
580
594
  Scalar(0), solver.hessian_regularization(),
581
595
  solver.constraint_jacobian_regularization(),
582
- step.p_x.template lpNorm<Eigen::Infinity>(),
583
- step.p_y.template lpNorm<Eigen::Infinity>(),
584
- α, α_max, α_reduction_factor, α);
596
+ step.primal_inf_norm(), step.dual_inf_norm(),
597
+ α, α_max, α_reduction_factor, Scalar(1));
585
598
  }
586
599
 
587
600
  ++iterations;
@@ -0,0 +1,34 @@
1
+ // Copyright (c) Sleipnir contributors
2
+
3
+ #pragma once
4
+
5
+ #include <Eigen/Core>
6
+
7
+ namespace slp {
8
+
9
+ /// Returns the constraint violation for a Sequential Quadratic Programming
10
+ /// iterate.
11
+ ///
12
+ /// @tparam Scalar Scalar type.
13
+ /// @param c_e The equality constraint values (nonzero means violation).
14
+ /// @return The constraint violation.
15
+ template <typename Scalar>
16
+ Scalar constraint_violation(const Eigen::Vector<Scalar, Eigen::Dynamic>& c_e) {
17
+ return c_e.template lpNorm<1>();
18
+ }
19
+
20
+ /// Returns the constraint violation for an interior-point method iterate.
21
+ ///
22
+ /// @tparam Scalar Scalar type.
23
+ /// @param c_e The equality constraint values (nonzero means violation).
24
+ /// @param c_i The inequality constraint values (negative means violation).
25
+ /// @param s The inequality constraint slack variables.
26
+ /// @return The constraint violation.
27
+ template <typename Scalar>
28
+ Scalar constraint_violation(const Eigen::Vector<Scalar, Eigen::Dynamic>& c_e,
29
+ const Eigen::Vector<Scalar, Eigen::Dynamic>& c_i,
30
+ const Eigen::Vector<Scalar, Eigen::Dynamic>& s) {
31
+ return c_e.template lpNorm<1>() + (c_i - s).template lpNorm<1>();
32
+ }
33
+
34
+ } // namespace slp
@@ -8,6 +8,8 @@
8
8
  #include <Eigen/Core>
9
9
  #include <gch/small_vector.hpp>
10
10
 
11
+ #include "sleipnir/optimization/solver/util/constraint_violation.hpp"
12
+
11
13
  // See docs/algorithms.md#Works_cited for citation definitions.
12
14
 
13
15
  namespace slp {
@@ -41,7 +43,7 @@ struct FilterEntry {
41
43
  /// @param f The cost function value.
42
44
  /// @param c_e The equality constraint values (nonzero means violation).
43
45
  FilterEntry(Scalar f, const DenseVector& c_e)
44
- : FilterEntry{f, c_e.template lpNorm<1>()} {}
46
+ : FilterEntry{f, slp::constraint_violation(c_e)} {}
45
47
 
46
48
  /// Constructs an interior-point method filter entry.
47
49
  ///
@@ -53,8 +55,7 @@ struct FilterEntry {
53
55
  FilterEntry(Scalar f, DenseVector& s, const DenseVector& c_e,
54
56
  const DenseVector& c_i, Scalar μ)
55
57
  : FilterEntry{f - μ * s.array().log().sum(),
56
- c_e.template lpNorm<1>() + (c_i - s).template lpNorm<1>()} {
57
- }
58
+ slp::constraint_violation(c_e, c_i, s)} {}
58
59
 
59
60
  /// Returns true if this filter entry is dominated by another.
60
61
  ///
@@ -193,7 +193,7 @@ void print_initial_iterate_diagnostics(Scalar error, Scalar cost,
193
193
  "┃{:^4} {:^9} {:^10} {:^11} {:^10} {:^8} {:^8} {:^5} {:^5} {:^8} {:^8} "
194
194
  "{:^8} {:^8} {:^2}┃",
195
195
  "iter", "duration", "error", "cost", "infeas.", "complem.", "μ", "δ", "γ",
196
- "|p_pr|", "|p_du|", "α_pr", "α_du", "↩");
196
+ "|p_pr|", "|p_du|", "α", "α_z", "↩");
197
197
  slp::println("┡{:━^119}┩", "");
198
198
 
199
199
  slp::println(
@@ -220,28 +220,25 @@ void print_initial_iterate_diagnostics(Scalar error, Scalar cost,
220
220
  /// @param γ The constraint Jacobian regularization factor.
221
221
  /// @param full_primal_step_inf_norm The infinity norm of the full primal step.
222
222
  /// @param full_dual_step_inf_norm The infinity norm of the full dual step.
223
- /// @param primal_α The primal step size.
224
- /// @param primal_α_max The max primal step size.
225
- /// @param α_reduction_factor Factor by which primal_α is reduced during
226
- /// backtracking.
227
- /// @param dual_α The dual step size.
223
+ /// @param α The step size for the decision variables, inequality constraint
224
+ /// slack variables, and equality constraint dual variables.
225
+ /// @param α_max The max step size for α.
226
+ /// @param α_reduction_factor Factor by which α is reduced during backtracking.
227
+ /// @param α_z The step size for the inequality constraint dual variables.
228
228
  template <typename Scalar, typename Rep, typename Period = std::ratio<1>>
229
- void print_iteration_diagnostics(int iterations, IterationType type,
230
- const std::chrono::duration<Rep, Period>& time,
231
- Scalar error, Scalar cost,
232
- Scalar infeasibility, Scalar complementarity,
233
- Scalar μ, Scalar δ, Scalar γ,
234
- Scalar full_primal_step_inf_norm,
235
- Scalar full_dual_step_inf_norm,
236
- Scalar primal_α, Scalar primal_α_max,
237
- Scalar α_reduction_factor, Scalar dual_α) {
229
+ void print_iteration_diagnostics(
230
+ int iterations, IterationType type,
231
+ const std::chrono::duration<Rep, Period>& time, Scalar error, Scalar cost,
232
+ Scalar infeasibility, Scalar complementarity, Scalar μ, Scalar δ, Scalar γ,
233
+ Scalar full_primal_step_inf_norm, Scalar full_dual_step_inf_norm, Scalar α,
234
+ Scalar α_max, Scalar α_reduction_factor, Scalar α_z) {
238
235
  if (iterations > 0 && iterations % 20 == 0) {
239
236
  slp::println("┢{:━^119}┪", "");
240
237
  slp::println(
241
238
  "┃{:^4} {:^9} {:^10} {:^11} {:^10} {:^8} {:^8} {:^5} {:^5} {:^8} "
242
239
  "{:^8} {:^8} {:^8} {:^2}┃",
243
240
  "iter", "duration", "error", "cost", "infeas.", "complem.", "μ", "δ",
244
- "γ", "|p_pr|", "|p_du|", "α_pr", "α_du", "↩");
241
+ "γ", "|p_pr|", "|p_du|", "α", "α_z", "↩");
245
242
  slp::println("┡{:━^119}┩", "");
246
243
  }
247
244
 
@@ -256,8 +253,7 @@ void print_iteration_diagnostics(int iterations, IterationType type,
256
253
  // x ln(r) = ln(α/αᵐᵃˣ)
257
254
  // x = ln(α/αᵐᵃˣ)/ln(r)
258
255
  using std::log;
259
- int backtracks =
260
- static_cast<int>(log(primal_α / primal_α_max) / log(α_reduction_factor));
256
+ int backtracks = static_cast<int>(log(α / α_max) / log(α_reduction_factor));
261
257
 
262
258
  constexpr std::array ITERATION_TYPES{" ", "s", "r"};
263
259
  slp::println(
@@ -265,8 +261,7 @@ void print_iteration_diagnostics(int iterations, IterationType type,
265
261
  "{:<5} {:8.2e} {:8.2e} {:8.2e} {:8.2e} {:2d}│",
266
262
  iterations, ITERATION_TYPES[std::to_underlying(type)], to_ms(time), error,
267
263
  cost, infeasibility, complementarity, μ, power_of_10(δ), power_of_10(γ),
268
- full_primal_step_inf_norm, full_dual_step_inf_norm, primal_α, dual_α,
269
- backtracks);
264
+ full_primal_step_inf_norm, full_dual_step_inf_norm, α, α_z, backtracks);
270
265
  }
271
266
  #else
272
267
  #define print_iteration_diagnostics(...)
@@ -2,4 +2,4 @@
2
2
 
3
3
  from ._sleipnir import *
4
4
 
5
- __version__ = "0.6.7.dev66"
5
+ __version__ = "0.6.7.dev68"