sleipnirgroup-jormungandr 0.6.5.dev2__tar.gz → 0.6.5.dev4__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 (123) hide show
  1. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/PKG-INFO +1 -1
  2. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/interior_point.hpp +32 -13
  3. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/newton.hpp +2 -1
  4. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/sqp.hpp +5 -3
  5. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/filter.hpp +5 -16
  6. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/src/sleipnir/__init__.py +1 -1
  7. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/CMakeLists.txt +0 -0
  8. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/LICENSE.txt +0 -0
  9. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/README.md +0 -0
  10. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/SleipnirConfig.cmake.in +0 -0
  11. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/cmake/BuildTypes.cmake +0 -0
  12. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/cmake/CompilerFlags.cmake +0 -0
  13. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/cmake/Pybind11Mkdoc.cmake +0 -0
  14. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/cmake/SubdirList.cmake +0 -0
  15. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/cmake/arm-none-eabi.cmake +0 -0
  16. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/expression.hpp +0 -0
  17. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/expression_graph.hpp +0 -0
  18. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/expression_type.hpp +0 -0
  19. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/gradient.hpp +0 -0
  20. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/hessian.hpp +0 -0
  21. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/jacobian.hpp +0 -0
  22. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/sleipnir_base.hpp +0 -0
  23. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/slice.hpp +0 -0
  24. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/variable.hpp +0 -0
  25. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/variable_block.hpp +0 -0
  26. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/variable_matrix.hpp +0 -0
  27. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/multistart.hpp +0 -0
  28. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/ocp/dynamics_type.hpp +0 -0
  29. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/ocp/timestep_method.hpp +0 -0
  30. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/ocp/transcription_method.hpp +0 -0
  31. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/ocp.hpp +0 -0
  32. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/problem.hpp +0 -0
  33. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/exit_status.hpp +0 -0
  34. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/interior_point_matrix_callbacks.hpp +0 -0
  35. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/iteration_info.hpp +0 -0
  36. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/newton_matrix_callbacks.hpp +0 -0
  37. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/options.hpp +0 -0
  38. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/sqp_matrix_callbacks.hpp +0 -0
  39. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/all_finite.hpp +0 -0
  40. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/append_as_triplets.hpp +0 -0
  41. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/bounds.hpp +0 -0
  42. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/dense_regularized_ldlt.hpp +0 -0
  43. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/feasibility_restoration.hpp +0 -0
  44. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/fraction_to_the_boundary_rule.hpp +0 -0
  45. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/inertia.hpp +0 -0
  46. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/is_locally_infeasible.hpp +0 -0
  47. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/kkt_error.hpp +0 -0
  48. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/lagrange_multiplier_estimate.hpp +0 -0
  49. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/problem_scaling.hpp +0 -0
  50. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/regularized_ldlt.hpp +0 -0
  51. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/sparse_inf_norms.hpp +0 -0
  52. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/sparse_regularized_ldlt.hpp +0 -0
  53. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/assert.hpp +0 -0
  54. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/concepts.hpp +0 -0
  55. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/empty.hpp +0 -0
  56. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/function_ref.hpp +0 -0
  57. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/intrusive_shared_ptr.hpp +0 -0
  58. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/pool.hpp +0 -0
  59. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/print.hpp +0 -0
  60. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/print_diagnostics.hpp +0 -0
  61. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/profiler.hpp +0 -0
  62. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/scope_exit.hpp +0 -0
  63. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/spy.hpp +0 -0
  64. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/symbol_exports.hpp +0 -0
  65. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/pyproject.toml +0 -0
  66. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/autodiff/bind_expression_type.cpp +0 -0
  67. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/autodiff/bind_gradient.cpp +0 -0
  68. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/autodiff/bind_hessian.cpp +0 -0
  69. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/autodiff/bind_jacobian.cpp +0 -0
  70. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/autodiff/bind_variable.cpp +0 -0
  71. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/autodiff/bind_variable_block.cpp +0 -0
  72. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/autodiff/bind_variable_matrix.cpp +0 -0
  73. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/binders.hpp +0 -0
  74. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/docstrings.hpp +0 -0
  75. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/for_each_type.hpp +0 -0
  76. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/main.cpp +0 -0
  77. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/optimization/bind_equality_constraints.cpp +0 -0
  78. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/optimization/bind_inequality_constraints.cpp +0 -0
  79. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/optimization/bind_ocp.cpp +0 -0
  80. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/optimization/bind_problem.cpp +0 -0
  81. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/optimization/ocp/bind_dynamics_type.cpp +0 -0
  82. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/optimization/ocp/bind_timestep_method.cpp +0 -0
  83. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/optimization/ocp/bind_transcription_method.cpp +0 -0
  84. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/optimization/solver/bind_exit_status.cpp +0 -0
  85. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/optimization/solver/bind_iteration_info.cpp +0 -0
  86. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/try_cast.hpp +0 -0
  87. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/src/sleipnir/autodiff/__init__.py +0 -0
  88. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/src/sleipnir/optimization/__init__.py +0 -0
  89. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/autodiff/gradient_test.py +0 -0
  90. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/autodiff/hessian_test.py +0 -0
  91. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/autodiff/jacobian_test.py +0 -0
  92. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/autodiff/variable_matrix_test.py +0 -0
  93. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/autodiff/variable_test.py +0 -0
  94. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/arm_on_elevator_problem_test.py +0 -0
  95. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/cart_pole_ocp_test.py +0 -0
  96. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/cart_pole_problem_test.py +0 -0
  97. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/cart_pole_util.py +0 -0
  98. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/constraints_test.py +0 -0
  99. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/decision_variable_test.py +0 -0
  100. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/differential_drive_ocp_test.py +0 -0
  101. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/differential_drive_problem_test.py +0 -0
  102. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/differential_drive_util.py +0 -0
  103. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/double_integrator_problem_test.py +0 -0
  104. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/flywheel_ocp_test.py +0 -0
  105. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/flywheel_problem_test.py +0 -0
  106. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/linear_problem_test.py +0 -0
  107. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/multistart_test.py +0 -0
  108. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/nonlinear_problem_test.py +0 -0
  109. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/problem_spy_test.py +0 -0
  110. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/quadratic_problem_test.py +0 -0
  111. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/rk4.py +0 -0
  112. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/solver/exit_status_test.py +0 -0
  113. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/trivial_problem_test.py +0 -0
  114. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/src/autodiff/gradient.cpp +0 -0
  115. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/src/autodiff/hessian.cpp +0 -0
  116. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/src/autodiff/jacobian.cpp +0 -0
  117. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/src/autodiff/variable_matrix.cpp +0 -0
  118. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/src/optimization/ocp.cpp +0 -0
  119. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/src/optimization/problem.cpp +0 -0
  120. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/src/optimization/solver/interior_point.cpp +0 -0
  121. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/src/optimization/solver/newton.cpp +0 -0
  122. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/src/optimization/solver/sqp.cpp +0 -0
  123. {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/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.5.dev2
3
+ Version: 0.6.5.dev4
4
4
  Summary: Reverse mode autodiff library and NLP solver DSL
5
5
  License-Expression: BSD-3-Clause
6
6
  License-File: LICENSE.txt
@@ -467,7 +467,7 @@ ExitStatus interior_point(
467
467
  kkt_matrix_decomp_profiler.stop();
468
468
  ScopedProfiler kkt_system_solve_profiler{kkt_system_solve_prof};
469
469
 
470
- auto compute_step = [&](Step& step) {
470
+ auto compute_step = [&](Step& step, const DenseVector& c_i_minus_s) {
471
471
  // p = [ pˣ]
472
472
  // [−pʸ]
473
473
  DenseVector p = solver.solve(rhs);
@@ -475,11 +475,11 @@ ExitStatus interior_point(
475
475
  step.p_y = -p.segment(x.rows(), y.rows());
476
476
 
477
477
  // pˢ = cᵢ − s + Aᵢpˣ
478
- // pᶻ = −Σcᵢ + μS⁻¹e − ΣAᵢpˣ
479
- step.p_s = c_i - s + A_i * step.p_x;
480
- step.p_z = -Σ * c_i + μ * s.cwiseInverse() - Σ * A_i * step.p_x;
478
+ // pᶻ = μS⁻¹e − z − Σpˢ
479
+ step.p_s = c_i_minus_s + A_i * step.p_x;
480
+ step.p_z = μ * s.cwiseInverse() - z - Σ * step.p_s;
481
481
  };
482
- compute_step(step);
482
+ compute_step(step, c_i - s);
483
483
 
484
484
  kkt_system_solve_profiler.stop();
485
485
  ScopedProfiler line_search_profiler{line_search_prof};
@@ -498,6 +498,14 @@ ExitStatus interior_point(
498
498
 
499
499
  const FilterEntry<Scalar> current_entry{f, s, c_e, c_i, μ};
500
500
 
501
+ // Compute the directional derivative of the log-barrier function along the
502
+ // search direction.
503
+ //
504
+ // ϕ_μ(x, s) = f(x) − μ∑ᵢ ln(sᵢ)
505
+ // D_ϕ = ∇ϕ_μ(x, s)ᵀ[pˣ pˢ] = ∇f(x)ᵀpˣ − μ∑ᵢ pᵢˢ/sᵢ
506
+ const Scalar D_ϕ =
507
+ g.transpose() * step.p_x - μ * s.cwiseInverse().dot(step.p_s);
508
+
501
509
  // Loop until a step is accepted
502
510
  while (1) {
503
511
  trial_x = x + α * step.p_x;
@@ -533,7 +541,7 @@ ExitStatus interior_point(
533
541
 
534
542
  // Check whether filter accepts trial iterate
535
543
  FilterEntry trial_entry{trial_f, trial_s, trial_c_e, trial_c_i, μ};
536
- if (filter.try_add(current_entry, trial_entry, step.p_x, g, α)) {
544
+ if (filter.try_add(current_entry, trial_entry, D_ϕ, α)) {
537
545
  // Accept step
538
546
  break;
539
547
  }
@@ -556,6 +564,7 @@ ExitStatus interior_point(
556
564
  Scalar α_soc = α;
557
565
  Scalar α_z_soc = α_z;
558
566
  DenseVector c_e_soc = c_e;
567
+ DenseVector c_i_minus_s_soc = c_i - s;
559
568
 
560
569
  Scalar soc_constraint_violation = next_constraint_violation;
561
570
 
@@ -589,15 +598,23 @@ ExitStatus interior_point(
589
598
 
590
599
  // Rebuild Newton-KKT rhs with updated constraint values.
591
600
  //
592
- // rhs = −[∇f − Aₑᵀy − Aᵢᵀ(−Σcᵢ + μS⁻¹e + z)]
593
- // [ cₑˢᵒᶜ ]
601
+ // rhs = −[∇f − Aₑᵀy − Aᵢᵀ(μS⁻¹e − Σ(cᵢ − s)ˢᵒᶜ)]
602
+ // [ cₑˢᵒᶜ ]
603
+ //
604
+ // where
594
605
  //
595
- // where cₑˢᵒᶜ = αc(xₖ) + c(xₖ + αpₖˣ)
606
+ // cₑˢᵒᶜ = αˢᵒᶜcₑ(xₖ) + cₑ(xₖ + αˢᵒᶜpˣˢᵒᶜ)
607
+ // (cᵢ − s)ˢᵒᶜ = αˢᵒᶜ(cᵢ(xₖ) − sₖ) + cᵢ(xₖ + αˢᵒᶜpˣˢᵒᶜ)
608
+ // − (sₖ + αˢᵒᶜpˢˢᵒᶜ).
596
609
  c_e_soc = α_soc * c_e_soc + trial_c_e;
597
- rhs.bottomRows(y.rows()) = -c_e_soc;
610
+ c_i_minus_s_soc = α_soc * c_i_minus_s_soc + trial_c_i - trial_s;
611
+ rhs.segment(0, x.rows()) =
612
+ -g + A_e.transpose() * y +
613
+ A_i.transpose() * (μ * s.cwiseInverse() - Σ * c_i_minus_s_soc);
614
+ rhs.segment(x.rows(), y.rows()) = -c_e_soc;
598
615
 
599
616
  // Solve the Newton-KKT system
600
- compute_step(soc_step);
617
+ compute_step(soc_step, c_i_minus_s_soc);
601
618
 
602
619
  // αˢᵒᶜ = max(α ∈ (0, 1] : sₖ + αpₖˢ ≥ (1−τⱼ)sₖ)
603
620
  // αₖᶻˢᵒᶜ = max(α ∈ (0, 1] : zₖ + αpₖᶻ ≥ (1−τⱼ)zₖ)
@@ -615,7 +632,7 @@ ExitStatus interior_point(
615
632
 
616
633
  // Check whether filter accepts trial iterate
617
634
  FilterEntry trial_entry{trial_f, trial_s, trial_c_e, trial_c_i, μ};
618
- if (filter.try_add(current_entry, trial_entry, step.p_x, g, α)) {
635
+ if (filter.try_add(current_entry, trial_entry, D_ϕ, α)) {
619
636
  step = soc_step;
620
637
  α = α_soc;
621
638
  α_z = α_z_soc;
@@ -729,9 +746,11 @@ ExitStatus interior_point(
729
746
  // is accepted by the normal filter, stop feasibility restoration
730
747
  FilterEntry trial_entry{matrices.f(trial_x), trial_s, trial_c_e,
731
748
  trial_c_i, μ};
749
+ const Scalar D_ϕ_restoration = g.transpose() * (trial_x - x) -
750
+ μ * s.cwiseInverse().dot(trial_s - s);
732
751
  return trial_entry.constraint_violation <
733
752
  Scalar(0.9) * initial_entry.constraint_violation &&
734
- filter.try_add(initial_entry, trial_entry, trial_x - x, g, α);
753
+ filter.try_add(initial_entry, trial_entry, D_ϕ_restoration, α);
735
754
  });
736
755
  auto status =
737
756
  feasibility_restoration<Scalar>(matrices, callbacks, options,
@@ -195,6 +195,7 @@ ExitStatus newton(
195
195
 
196
196
  constexpr Scalar α_max(1);
197
197
  Scalar α = α_max;
198
+ const Scalar D_ϕ = g.transpose() * p_x;
198
199
 
199
200
  // Loop until a step is accepted. If a step becomes acceptable, the loop
200
201
  // will exit early.
@@ -215,7 +216,7 @@ ExitStatus newton(
215
216
  }
216
217
 
217
218
  // Check whether filter accepts trial iterate
218
- if (filter.try_add(FilterEntry{f}, FilterEntry{trial_f}, p_x, g, α)) {
219
+ if (filter.try_add(FilterEntry{f}, FilterEntry{trial_f}, D_ϕ, α)) {
219
220
  // Accept step
220
221
  break;
221
222
  }
@@ -339,6 +339,7 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
339
339
  α = α_max;
340
340
 
341
341
  const FilterEntry<Scalar> current_entry{f, c_e};
342
+ const Scalar D_ϕ = g.transpose() * step.p_x;
342
343
 
343
344
  // Loop until a step is accepted
344
345
  while (1) {
@@ -363,7 +364,7 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
363
364
 
364
365
  // Check whether filter accepts trial iterate
365
366
  FilterEntry trial_entry{trial_f, trial_c_e};
366
- if (filter.try_add(current_entry, trial_entry, step.p_x, g, α)) {
367
+ if (filter.try_add(current_entry, trial_entry, D_ϕ, α)) {
367
368
  // Accept step
368
369
  break;
369
370
  }
@@ -428,7 +429,7 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
428
429
 
429
430
  // Check whether the filter accepts trial iterate
430
431
  FilterEntry trial_entry{trial_f, trial_c_e};
431
- if (filter.try_add(current_entry, trial_entry, step.p_x, g, α)) {
432
+ if (filter.try_add(current_entry, trial_entry, D_ϕ, α)) {
432
433
  step = soc_step;
433
434
  α = α_soc;
434
435
  step_acceptable = true;
@@ -524,12 +525,13 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
524
525
  DenseVector trial_c_e = matrices.c_e(trial_x);
525
526
 
526
527
  FilterEntry trial_entry{matrices.f(trial_x), trial_c_e};
528
+ const Scalar D_ϕ_restoration = g.transpose() * (trial_x - x);
527
529
 
528
530
  // If the current iterate sufficiently reduces constraint violation and
529
531
  // is accepted by the normal filter, stop feasibility restoration
530
532
  return trial_entry.constraint_violation <
531
533
  Scalar(0.9) * initial_entry.constraint_violation &&
532
- filter.try_add(initial_entry, trial_entry, trial_x - x, g, α);
534
+ filter.try_add(initial_entry, trial_entry, D_ϕ_restoration, α);
533
535
  });
534
536
  auto status = feasibility_restoration<Scalar>(matrices, callbacks,
535
537
  options, x, y, iterations);
@@ -6,7 +6,6 @@
6
6
  #include <cmath>
7
7
 
8
8
  #include <Eigen/Core>
9
- #include <Eigen/SparseCore>
10
9
  #include <gch/small_vector.hpp>
11
10
 
12
11
  // See docs/algorithms.md#Works_cited for citation definitions.
@@ -75,12 +74,6 @@ struct FilterEntry {
75
74
  template <typename Scalar>
76
75
  class Filter {
77
76
  public:
78
- /// Type alias for dense vector.
79
- using DenseVector = Eigen::Vector<Scalar, Eigen::Dynamic>;
80
-
81
- /// Type alias for sparse vector.
82
- using SparseVector = Eigen::SparseVector<Scalar>;
83
-
84
77
  /// The minimum constraint violation
85
78
  Scalar min_constraint_violation;
86
79
 
@@ -110,13 +103,11 @@ class Filter {
110
103
  ///
111
104
  /// @param current_entry The entry corresponding to the current iterate.
112
105
  /// @param trial_entry The entry corresponding to the trial iterate.
113
- /// @param p_x Decision variable primal step.
114
- /// @param g Cost function gradient.
106
+ /// @param D_ϕ Cost directional derivative along the search direction.
115
107
  /// @param α The step size (0, 1].
116
108
  /// @return True if the given entry is acceptable to the filter.
117
109
  bool try_add(const FilterEntry<Scalar>& current_entry,
118
- const FilterEntry<Scalar>& trial_entry, const DenseVector& p_x,
119
- const SparseVector& g, Scalar α) {
110
+ const FilterEntry<Scalar>& trial_entry, Scalar D_ϕ, Scalar α) {
120
111
  using std::isfinite;
121
112
  using std::pow;
122
113
 
@@ -126,19 +117,17 @@ class Filter {
126
117
  return false;
127
118
  }
128
119
 
129
- Scalar g_p_x = g.transpose() * p_x;
130
-
131
120
  // Switching condition
132
121
  constexpr Scalar s_ϕ(2.3);
133
122
  constexpr Scalar s_θ(1.1);
134
123
  bool switching_condition =
135
- g_p_x < Scalar(0) &&
136
- α * pow(-g_p_x, s_ϕ) > pow(current_entry.constraint_violation, s_θ);
124
+ D_ϕ < Scalar(0) &&
125
+ α * pow(-D_ϕ, s_ϕ) > pow(current_entry.constraint_violation, s_θ);
137
126
 
138
127
  // Armijo condition
139
128
  constexpr Scalar η_ϕ(1e-8);
140
129
  bool armijo_condition =
141
- trial_entry.cost <= current_entry.cost + η_ϕ * α * g_p_x;
130
+ trial_entry.cost <= current_entry.cost + η_ϕ * α * D_ϕ;
142
131
 
143
132
  // Sufficient decrease condition
144
133
  //
@@ -2,4 +2,4 @@
2
2
 
3
3
  from ._sleipnir import *
4
4
 
5
- __version__ = "0.6.5.dev2"
5
+ __version__ = "0.6.5.dev4"