sleipnirgroup-jormungandr 0.5.6.dev20__tar.gz → 0.5.6.dev22__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.
Files changed (124) hide show
  1. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/PKG-INFO +1 -1
  2. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/interior_point.hpp +6 -6
  3. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/sqp.hpp +2 -2
  4. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/dense_regularized_ldlt.hpp +20 -15
  5. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/feasibility_restoration.hpp +13 -11
  6. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/sparse_regularized_ldlt.hpp +20 -15
  7. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/src/sleipnir/__init__.py +1 -1
  8. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/CMakeLists.txt +0 -0
  9. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/LICENSE.txt +0 -0
  10. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/README.md +0 -0
  11. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/SleipnirConfig.cmake.in +0 -0
  12. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/cmake/BuildTypes.cmake +0 -0
  13. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/cmake/CompilerFlags.cmake +0 -0
  14. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/cmake/Pybind11Mkdoc.cmake +0 -0
  15. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/cmake/SubdirList.cmake +0 -0
  16. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/cmake/arm-none-eabi.cmake +0 -0
  17. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/expression.hpp +0 -0
  18. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/expression_graph.hpp +0 -0
  19. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/expression_type.hpp +0 -0
  20. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/gradient.hpp +0 -0
  21. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/gradient_expression_graph.hpp +0 -0
  22. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/hessian.hpp +0 -0
  23. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/jacobian.hpp +0 -0
  24. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/sleipnir_base.hpp +0 -0
  25. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/slice.hpp +0 -0
  26. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/variable.hpp +0 -0
  27. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/variable_block.hpp +0 -0
  28. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/variable_matrix.hpp +0 -0
  29. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/multistart.hpp +0 -0
  30. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/ocp/dynamics_type.hpp +0 -0
  31. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/ocp/timestep_method.hpp +0 -0
  32. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/ocp/transcription_method.hpp +0 -0
  33. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/ocp.hpp +0 -0
  34. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/problem.hpp +0 -0
  35. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/exit_status.hpp +0 -0
  36. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/interior_point_matrix_callbacks.hpp +0 -0
  37. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/iteration_info.hpp +0 -0
  38. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/newton.hpp +0 -0
  39. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/newton_matrix_callbacks.hpp +0 -0
  40. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/options.hpp +0 -0
  41. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/sqp_matrix_callbacks.hpp +0 -0
  42. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/all_finite.hpp +0 -0
  43. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/append_as_triplets.hpp +0 -0
  44. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/bounds.hpp +0 -0
  45. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/filter.hpp +0 -0
  46. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/fraction_to_the_boundary_rule.hpp +0 -0
  47. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/inertia.hpp +0 -0
  48. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/is_locally_infeasible.hpp +0 -0
  49. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/kkt_error.hpp +0 -0
  50. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/lagrange_multiplier_estimate.hpp +0 -0
  51. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/problem_scaling.hpp +0 -0
  52. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/regularized_ldlt.hpp +0 -0
  53. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/sparse_inf_norms.hpp +0 -0
  54. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/assert.hpp +0 -0
  55. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/concepts.hpp +0 -0
  56. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/empty.hpp +0 -0
  57. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/function_ref.hpp +0 -0
  58. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/intrusive_shared_ptr.hpp +0 -0
  59. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/pool.hpp +0 -0
  60. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/print.hpp +0 -0
  61. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/print_diagnostics.hpp +0 -0
  62. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/profiler.hpp +0 -0
  63. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/scope_exit.hpp +0 -0
  64. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/spy.hpp +0 -0
  65. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/symbol_exports.hpp +0 -0
  66. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/pyproject.toml +0 -0
  67. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/autodiff/bind_expression_type.cpp +0 -0
  68. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/autodiff/bind_gradient.cpp +0 -0
  69. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/autodiff/bind_hessian.cpp +0 -0
  70. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/autodiff/bind_jacobian.cpp +0 -0
  71. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/autodiff/bind_variable.cpp +0 -0
  72. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/autodiff/bind_variable_block.cpp +0 -0
  73. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/autodiff/bind_variable_matrix.cpp +0 -0
  74. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/binders.hpp +0 -0
  75. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/docstrings.hpp +0 -0
  76. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/for_each_type.hpp +0 -0
  77. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/main.cpp +0 -0
  78. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/optimization/bind_equality_constraints.cpp +0 -0
  79. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/optimization/bind_inequality_constraints.cpp +0 -0
  80. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/optimization/bind_ocp.cpp +0 -0
  81. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/optimization/bind_problem.cpp +0 -0
  82. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/optimization/ocp/bind_dynamics_type.cpp +0 -0
  83. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/optimization/ocp/bind_timestep_method.cpp +0 -0
  84. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/optimization/ocp/bind_transcription_method.cpp +0 -0
  85. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/optimization/solver/bind_exit_status.cpp +0 -0
  86. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/optimization/solver/bind_iteration_info.cpp +0 -0
  87. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/try_cast.hpp +0 -0
  88. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/src/sleipnir/autodiff/__init__.py +0 -0
  89. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/src/sleipnir/optimization/__init__.py +0 -0
  90. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/autodiff/gradient_test.py +0 -0
  91. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/autodiff/hessian_test.py +0 -0
  92. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/autodiff/jacobian_test.py +0 -0
  93. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/autodiff/variable_matrix_test.py +0 -0
  94. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/autodiff/variable_test.py +0 -0
  95. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/arm_on_elevator_problem_test.py +0 -0
  96. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/cart_pole_ocp_test.py +0 -0
  97. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/cart_pole_problem_test.py +0 -0
  98. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/cart_pole_util.py +0 -0
  99. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/constraints_test.py +0 -0
  100. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/decision_variable_test.py +0 -0
  101. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/differential_drive_ocp_test.py +0 -0
  102. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/differential_drive_problem_test.py +0 -0
  103. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/differential_drive_util.py +0 -0
  104. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/double_integrator_problem_test.py +0 -0
  105. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/flywheel_ocp_test.py +0 -0
  106. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/flywheel_problem_test.py +0 -0
  107. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/linear_problem_test.py +0 -0
  108. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/multistart_test.py +0 -0
  109. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/nonlinear_problem_test.py +0 -0
  110. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/problem_spy_test.py +0 -0
  111. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/quadratic_problem_test.py +0 -0
  112. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/rk4.py +0 -0
  113. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/solver/exit_status_test.py +0 -0
  114. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/trivial_problem_test.py +0 -0
  115. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/autodiff/gradient.cpp +0 -0
  116. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/autodiff/hessian.cpp +0 -0
  117. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/autodiff/jacobian.cpp +0 -0
  118. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/autodiff/variable_matrix.cpp +0 -0
  119. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/optimization/ocp.cpp +0 -0
  120. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/optimization/problem.cpp +0 -0
  121. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/optimization/solver/interior_point.cpp +0 -0
  122. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/optimization/solver/newton.cpp +0 -0
  123. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/optimization/solver/sqp.cpp +0 -0
  124. {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/util/pool.cpp +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sleipnirgroup-jormungandr
3
- Version: 0.5.6.dev20
3
+ Version: 0.5.6.dev22
4
4
  Summary: Reverse mode autodiff library and NLP solver DSL
5
5
  License-Expression: BSD-3-Clause
6
6
  License-File: LICENSE.txt
@@ -77,12 +77,13 @@ ExitStatus interior_point(
77
77
  DenseVector z =
78
78
  DenseVector::Ones(matrix_callbacks.num_inequality_constraints);
79
79
  Scalar μ = Scalar(0.1) * matrix_callbacks.scaling.f;
80
+ int iterations = 0;
80
81
 
81
82
  return interior_point(matrix_callbacks, iteration_callbacks, options, false,
82
83
  #ifdef SLEIPNIR_ENABLE_BOUND_PROJECTION
83
84
  bound_constraint_mask,
84
85
  #endif
85
- x, s, y, z, μ);
86
+ x, s, y, z, μ, iterations);
86
87
  }
87
88
 
88
89
  /// Finds the optimal solution to a nonlinear program using the interior-point
@@ -116,6 +117,7 @@ ExitStatus interior_point(
116
117
  /// constraint dual variables.
117
118
  /// @param[in,out] μ The initial guess and output location for the barrier
118
119
  /// parameter.
120
+ /// @param[in,out] iterations The iteration counter.
119
121
  /// @return The exit status.
120
122
  template <typename Scalar>
121
123
  ExitStatus interior_point(
@@ -129,7 +131,7 @@ ExitStatus interior_point(
129
131
  Eigen::Vector<Scalar, Eigen::Dynamic>& x,
130
132
  Eigen::Vector<Scalar, Eigen::Dynamic>& s,
131
133
  Eigen::Vector<Scalar, Eigen::Dynamic>& y,
132
- Eigen::Vector<Scalar, Eigen::Dynamic>& z, Scalar& μ) {
134
+ Eigen::Vector<Scalar, Eigen::Dynamic>& z, Scalar& μ, int& iterations) {
133
135
  using DenseVector = Eigen::Vector<Scalar, Eigen::Dynamic>;
134
136
  using SparseMatrix = Eigen::SparseMatrix<Scalar>;
135
137
  using SparseVector = Eigen::SparseVector<Scalar>;
@@ -288,8 +290,6 @@ ExitStatus interior_point(
288
290
  s = bound_constraint_mask.select(c_i, s);
289
291
  #endif
290
292
 
291
- int iterations = 0;
292
-
293
293
  // Barrier parameter minimum
294
294
  const Scalar μ_min =
295
295
  matrices.scaling.f * Scalar(options.tolerance) / Scalar(10);
@@ -733,8 +733,8 @@ ExitStatus interior_point(
733
733
  Scalar(0.9) * initial_entry.constraint_violation &&
734
734
  filter.try_add(initial_entry, trial_entry, trial_x - x, g, α);
735
735
  });
736
- auto status = feasibility_restoration<Scalar>(matrices, callbacks,
737
- options, x, s, y, z, μ);
736
+ auto status = feasibility_restoration<Scalar>(
737
+ matrices, callbacks, options, x, s, y, z, μ, iterations);
738
738
 
739
739
  if (status != ExitStatus::SUCCESS) {
740
740
  // Report failure
@@ -531,8 +531,8 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
531
531
  Scalar(0.9) * initial_entry.constraint_violation &&
532
532
  filter.try_add(initial_entry, trial_entry, trial_x - x, g, α);
533
533
  });
534
- auto status =
535
- feasibility_restoration<Scalar>(matrices, callbacks, options, x, y);
534
+ auto status = feasibility_restoration<Scalar>(matrices, callbacks,
535
+ options, x, y, iterations);
536
536
 
537
537
  if (status != ExitStatus::SUCCESS) {
538
538
  // Report failure
@@ -7,8 +7,6 @@
7
7
 
8
8
  #include "sleipnir/optimization/solver/util/inertia.hpp"
9
9
 
10
- // See docs/algorithms.md#Works_cited for citation definitions
11
-
12
10
  namespace slp {
13
11
 
14
12
  /// Solves dense systems of linear equations using a regularized LDLT
@@ -56,8 +54,6 @@ class DenseRegularizedLDLT {
56
54
  /// @param lhs Left-hand side of the system.
57
55
  /// @return The factorization.
58
56
  DenseRegularizedLDLT& compute(const DenseMatrix& lhs) {
59
- // The regularization procedure is based on algorithm B.1 of [1]
60
-
61
57
  m_info = m_solver.compute(lhs).info();
62
58
 
63
59
  if (m_info == Eigen::Success) {
@@ -73,11 +69,15 @@ class DenseRegularizedLDLT {
73
69
  }
74
70
  }
75
71
 
76
- // Also regularize the Hessian. If the Hessian wasn't regularized in a
77
- // previous run of compute(), start at small values of δ and γ. Otherwise,
78
- // attempt a δ and γ half as big as the previous run so δ and γ can trend
79
- // downwards over time.
72
+ // We'll give lhs the correct inertia by adding [δI, 0; 0, −γI] where δ and
73
+ // γ regularize the Hessian and equality constraint Jacobian respectively.
74
+
75
+ // If the previous δ was zero, attempt a small value. Otherwise, attempt a
76
+ // smaller value than the previous δ so δ trends downward.
80
77
  Scalar δ = m_prev_δ == Scalar(0) ? Scalar(1e-4) : m_prev_δ / Scalar(2);
78
+
79
+ // Start γ at the minimum to minimize equality constraint Jacobian
80
+ // distortion.
81
81
  Scalar γ = m_γ_min;
82
82
 
83
83
  while (true) {
@@ -93,28 +93,33 @@ class DenseRegularizedLDLT {
93
93
  return *this;
94
94
  } else if (inertia.zero > 0) {
95
95
  if (γ == Scalar(0)) {
96
- // If there's zero eigenvalues and γ = 0, increase γ
96
+ // If there's zero eigenvalues and γ = 0, increase γ to potentially
97
+ // compensate for a rank-deficient equality constraint Jacobian
97
98
  γ = Scalar(1e-10);
98
99
  } else {
99
- // If there's zero eigenvalues and γ > 0, increase δ and γ
100
+ // If there's zero eigenvalues and γ > 0, increase δ and γ to drive
101
+ // all eigenvalues away from zero
100
102
  δ *= Scalar(10);
101
103
  γ *= Scalar(10);
102
104
  }
103
105
  } else if (inertia.negative > ideal_inertia.negative) {
104
- // If there's too many negative eigenvalues, increase δ
106
+ // If there's too many negative eigenvalues, increase δ to add more
107
+ // positive eigenvalues
105
108
  δ *= Scalar(10);
106
109
  } else if (inertia.positive > ideal_inertia.positive) {
107
- // If there's too many positive eigenvalues, increase γ
110
+ // If there's too many positive eigenvalues, increase γ to add more
111
+ // negative eigenvalues
108
112
  γ = γ == Scalar(0) ? Scalar(1e-10) : γ * Scalar(10);
109
113
  }
110
114
  } else {
111
- // If the decomposition failed, increase δ and γ
115
+ // If the decomposition failed, increase δ and γ to drive all
116
+ // eigenvalues away from zero
112
117
  δ *= Scalar(10);
113
118
  γ = γ == Scalar(0) ? Scalar(1e-10) : γ * Scalar(10);
114
119
  }
115
120
 
116
- // If the Hessian perturbation is too high, report failure. This can be
117
- // caused by ill-conditioning.
121
+ // If the lhs perturbation is too high, report failure. This can be caused
122
+ // by ill-conditioning.
118
123
  if (δ > Scalar(1e20) || γ > Scalar(1e20)) {
119
124
  m_info = Eigen::NumericalIssue;
120
125
  m_prev_δ = δ;
@@ -33,7 +33,7 @@ ExitStatus interior_point(
33
33
  Eigen::Vector<Scalar, Eigen::Dynamic>& x,
34
34
  Eigen::Vector<Scalar, Eigen::Dynamic>& s,
35
35
  Eigen::Vector<Scalar, Eigen::Dynamic>& y,
36
- Eigen::Vector<Scalar, Eigen::Dynamic>& z, Scalar& μ);
36
+ Eigen::Vector<Scalar, Eigen::Dynamic>& z, Scalar& μ, int& iterations);
37
37
 
38
38
  /// Computes initial values for p and n in feasibility restoration.
39
39
  ///
@@ -109,6 +109,7 @@ compute_p_n(const Eigen::Vector<Scalar, Eigen::Dynamic>& c, Scalar ρ,
109
109
  /// @param[in,out] x The decision variables from the normal solve.
110
110
  /// @param[in,out] y The equality constraint dual variables from the normal
111
111
  /// solve.
112
+ /// @param[in,out] iterations The iteration counter.
112
113
  /// @return The exit status.
113
114
  template <typename Scalar>
114
115
  ExitStatus feasibility_restoration(
@@ -116,7 +117,7 @@ ExitStatus feasibility_restoration(
116
117
  std::span<std::function<bool(const IterationInfo<Scalar>& info)>>
117
118
  iteration_callbacks,
118
119
  const Options& options, Eigen::Vector<Scalar, Eigen::Dynamic>& x,
119
- Eigen::Vector<Scalar, Eigen::Dynamic>& y) {
120
+ Eigen::Vector<Scalar, Eigen::Dynamic>& y, int& iterations) {
120
121
  // Feasibility restoration
121
122
  //
122
123
  // min ρ Σ (pₑ + nₑ) + ζ/2 (x - xᵣ)ᵀDᵣ(x - xᵣ)
@@ -297,12 +298,12 @@ ExitStatus feasibility_restoration(
297
298
  },
298
299
  fr_scaling};
299
300
 
300
- auto status = interior_point<Scalar>(fr_matrix_callbacks, iteration_callbacks,
301
- options, true,
301
+ auto status = interior_point<Scalar>(
302
+ fr_matrix_callbacks, iteration_callbacks, options, true,
302
303
  #ifdef SLEIPNIR_ENABLE_BOUND_PROJECTION
303
- {},
304
+ {},
304
305
  #endif
305
- fr_x, fr_s, fr_y, fr_z, fr_μ);
306
+ fr_x, fr_s, fr_y, fr_z, fr_μ, iterations);
306
307
 
307
308
  x = fr_x.segment(0, x.rows());
308
309
 
@@ -337,6 +338,7 @@ ExitStatus feasibility_restoration(
337
338
  /// @param[in,out] z The current inequality constraint duals from the normal
338
339
  /// solve.
339
340
  /// @param[in] μ Barrier parameter.
341
+ /// @param[in,out] iterations The iteration counter.
340
342
  /// @return The exit status.
341
343
  template <typename Scalar>
342
344
  ExitStatus feasibility_restoration(
@@ -346,7 +348,7 @@ ExitStatus feasibility_restoration(
346
348
  const Options& options, Eigen::Vector<Scalar, Eigen::Dynamic>& x,
347
349
  Eigen::Vector<Scalar, Eigen::Dynamic>& s,
348
350
  Eigen::Vector<Scalar, Eigen::Dynamic>& y,
349
- Eigen::Vector<Scalar, Eigen::Dynamic>& z, Scalar μ) {
351
+ Eigen::Vector<Scalar, Eigen::Dynamic>& z, Scalar μ, int& iterations) {
350
352
  // Feasibility restoration
351
353
  //
352
354
  // min ρ Σ (pₑ + nₑ + pᵢ + nᵢ) + ζ/2 (x - xᵣ)ᵀDᵣ(x - xᵣ)
@@ -584,12 +586,12 @@ ExitStatus feasibility_restoration(
584
586
  },
585
587
  fr_scaling};
586
588
 
587
- auto status = interior_point<Scalar>(fr_matrix_callbacks, iteration_callbacks,
588
- options, true,
589
+ auto status = interior_point<Scalar>(
590
+ fr_matrix_callbacks, iteration_callbacks, options, true,
589
591
  #ifdef SLEIPNIR_ENABLE_BOUND_PROJECTION
590
- {},
592
+ {},
591
593
  #endif
592
- fr_x, fr_s, fr_y, fr_z, fr_μ);
594
+ fr_x, fr_s, fr_y, fr_z, fr_μ, iterations);
593
595
 
594
596
  x = fr_x.segment(0, x.rows());
595
597
  s = fr_s.segment(0, s.rows());
@@ -8,8 +8,6 @@
8
8
 
9
9
  #include "sleipnir/optimization/solver/util/inertia.hpp"
10
10
 
11
- // See docs/algorithms.md#Works_cited for citation definitions
12
-
13
11
  namespace slp {
14
12
 
15
13
  /// Solves sparse systems of linear equations using a regularized LDLT
@@ -61,8 +59,6 @@ class SparseRegularizedLDLT {
61
59
  /// @param lhs Left-hand side of the system.
62
60
  /// @return The factorization.
63
61
  SparseRegularizedLDLT& compute(const SparseMatrix& lhs) {
64
- // The regularization procedure is based on algorithm B.1 of [1]
65
-
66
62
  // Regularization with zeros ensures the pattern analysis in the sparse
67
63
  // solver is reused by all factorizations
68
64
  SparseMatrix unregularized_lhs = lhs + regularization(Scalar(0), Scalar(0));
@@ -88,11 +84,15 @@ class SparseRegularizedLDLT {
88
84
  }
89
85
  }
90
86
 
91
- // Also regularize the Hessian. If the Hessian wasn't regularized in a
92
- // previous run of compute(), start at small values of δ and γ. Otherwise,
93
- // attempt a δ and γ half as big as the previous run so δ and γ can trend
94
- // downwards over time.
87
+ // We'll give lhs the correct inertia by adding [δI, 0; 0, −γI] where δ and
88
+ // γ regularize the Hessian and equality constraint Jacobian respectively.
89
+
90
+ // If the previous δ was zero, attempt a small value. Otherwise, attempt a
91
+ // smaller value than the previous δ so δ trends downward.
95
92
  Scalar δ = m_prev_δ == Scalar(0) ? Scalar(1e-4) : m_prev_δ / Scalar(2);
93
+
94
+ // Start γ at the minimum to minimize equality constraint Jacobian
95
+ // distortion.
96
96
  Scalar γ = m_γ_min;
97
97
 
98
98
  while (true) {
@@ -109,28 +109,33 @@ class SparseRegularizedLDLT {
109
109
  return *this;
110
110
  } else if (inertia.zero > 0) {
111
111
  if (γ == Scalar(0)) {
112
- // If there's zero eigenvalues and γ = 0, increase γ
112
+ // If there's zero eigenvalues and γ = 0, increase γ to potentially
113
+ // compensate for a rank-deficient equality constraint Jacobian
113
114
  γ = Scalar(1e-10);
114
115
  } else {
115
- // If there's zero eigenvalues and γ > 0, increase δ and γ
116
+ // If there's zero eigenvalues and γ > 0, increase δ and γ to drive
117
+ // all eigenvalues away from zero
116
118
  δ *= Scalar(10);
117
119
  γ *= Scalar(10);
118
120
  }
119
121
  } else if (inertia.negative > ideal_inertia.negative) {
120
- // If there's too many negative eigenvalues, increase δ
122
+ // If there's too many negative eigenvalues, increase δ to add more
123
+ // positive eigenvalues
121
124
  δ *= Scalar(10);
122
125
  } else if (inertia.positive > ideal_inertia.positive) {
123
- // If there's too many positive eigenvalues, increase γ
126
+ // If there's too many positive eigenvalues, increase γ to add more
127
+ // negative eigenvalues
124
128
  γ = γ == Scalar(0) ? Scalar(1e-10) : γ * Scalar(10);
125
129
  }
126
130
  } else {
127
- // If the decomposition failed, increase δ and γ
131
+ // If the decomposition failed, increase δ and γ to drive all
132
+ // eigenvalues away from zero
128
133
  δ *= Scalar(10);
129
134
  γ = γ == Scalar(0) ? Scalar(1e-10) : γ * Scalar(10);
130
135
  }
131
136
 
132
- // If the Hessian perturbation is too high, report failure. This can be
133
- // caused by ill-conditioning.
137
+ // If the lhs perturbation is too high, report failure. This can be caused
138
+ // by ill-conditioning.
134
139
  if (δ > Scalar(1e20) || γ > Scalar(1e20)) {
135
140
  m_info = Eigen::NumericalIssue;
136
141
  m_prev_δ = δ;
@@ -2,4 +2,4 @@
2
2
 
3
3
  from ._sleipnir import *
4
4
 
5
- __version__ = "0.5.6.dev20"
5
+ __version__ = "0.5.6.dev22"