sleipnirgroup-jormungandr 0.0.1.dev462__tar.gz → 0.0.1.dev464__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 (104) hide show
  1. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/PKG-INFO +1 -1
  2. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/optimization/problem.hpp +2 -2
  3. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/optimization/solver/interior_point.hpp +2 -1
  4. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/optimization/solver/newton.hpp +2 -1
  5. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/optimization/solver/sqp.hpp +2 -1
  6. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/cpp/docstrings.hpp +7 -5
  7. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/pyproject.toml +1 -1
  8. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/src/optimization/problem.cpp +15 -44
  9. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/CMakeLists.txt +0 -0
  10. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/LICENSE.txt +0 -0
  11. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/README.md +0 -0
  12. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/SleipnirConfig.cmake.in +0 -0
  13. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/cmake/modules/BuildTypes.cmake +0 -0
  14. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/cmake/modules/CompilerFlags.cmake +0 -0
  15. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/cmake/modules/Pybind11Mkdoc.cmake +0 -0
  16. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/cmake/modules/SubdirList.cmake +0 -0
  17. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/.styleguide +0 -0
  18. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/autodiff/adjoint_expression_graph.hpp +0 -0
  19. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/autodiff/expression.hpp +0 -0
  20. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/autodiff/expression_graph.hpp +0 -0
  21. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/autodiff/expression_type.hpp +0 -0
  22. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/autodiff/gradient.hpp +0 -0
  23. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/autodiff/hessian.hpp +0 -0
  24. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/autodiff/jacobian.hpp +0 -0
  25. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/autodiff/slice.hpp +0 -0
  26. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/autodiff/variable.hpp +0 -0
  27. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/autodiff/variable_block.hpp +0 -0
  28. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/autodiff/variable_matrix.hpp +0 -0
  29. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/control/ocp.hpp +0 -0
  30. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/optimization/multistart.hpp +0 -0
  31. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/optimization/solver/exit_status.hpp +0 -0
  32. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/optimization/solver/iteration_info.hpp +0 -0
  33. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/optimization/solver/options.hpp +0 -0
  34. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/util/assert.hpp +0 -0
  35. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/util/concepts.hpp +0 -0
  36. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/util/function_ref.hpp +0 -0
  37. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/util/intrusive_shared_ptr.hpp +0 -0
  38. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/util/pool.hpp +0 -0
  39. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/util/print.hpp +0 -0
  40. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/util/small_vector.hpp +0 -0
  41. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/util/spy.hpp +0 -0
  42. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/include/sleipnir/util/symbol_exports.hpp +0 -0
  43. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/__init__.py +0 -0
  44. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/autodiff/__init__.py +0 -0
  45. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/control/__init__.py +0 -0
  46. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/cpp/autodiff/bind_expression_type.cpp +0 -0
  47. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/cpp/autodiff/bind_gradient.cpp +0 -0
  48. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/cpp/autodiff/bind_hessian.cpp +0 -0
  49. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/cpp/autodiff/bind_jacobian.cpp +0 -0
  50. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/cpp/autodiff/bind_variable.cpp +0 -0
  51. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/cpp/autodiff/bind_variable_block.cpp +0 -0
  52. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/cpp/autodiff/bind_variable_matrix.cpp +0 -0
  53. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/cpp/binders.hpp +0 -0
  54. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/cpp/control/bind_ocp.cpp +0 -0
  55. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/cpp/main.cpp +0 -0
  56. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/cpp/optimization/bind_equality_constraints.cpp +0 -0
  57. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/cpp/optimization/bind_inequality_constraints.cpp +0 -0
  58. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/cpp/optimization/bind_problem.cpp +0 -0
  59. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/cpp/optimization/solver/bind_exit_status.cpp +0 -0
  60. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/cpp/optimization/solver/bind_iteration_info.cpp +0 -0
  61. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/cpp/try_cast.hpp +0 -0
  62. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/optimization/__init__.py +0 -0
  63. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/autodiff/gradient_test.py +0 -0
  64. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/autodiff/hessian_test.py +0 -0
  65. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/autodiff/jacobian_test.py +0 -0
  66. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/autodiff/variable_matrix_test.py +0 -0
  67. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/autodiff/variable_test.py +0 -0
  68. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/cart_pole_util.py +0 -0
  69. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/control/cart_pole_ocp_test.py +0 -0
  70. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/control/differential_drive_ocp_test.py +0 -0
  71. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/control/flywheel_ocp_test.py +0 -0
  72. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/differential_drive_util.py +0 -0
  73. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/optimization/arm_on_elevator_problem_test.py +0 -0
  74. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/optimization/cart_pole_problem_test.py +0 -0
  75. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/optimization/constraints_test.py +0 -0
  76. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/optimization/decision_variable_test.py +0 -0
  77. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/optimization/differential_drive_problem_test.py +0 -0
  78. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/optimization/double_integrator_problem_test.py +0 -0
  79. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/optimization/exit_status_test.py +0 -0
  80. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/optimization/flywheel_problem_test.py +0 -0
  81. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/optimization/linear_problem_test.py +0 -0
  82. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/optimization/multistart_test.py +0 -0
  83. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/optimization/nonlinear_problem_test.py +0 -0
  84. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/optimization/quadratic_problem_test.py +0 -0
  85. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/optimization/trivial_problem_test.py +0 -0
  86. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/jormungandr/test/rk4.py +0 -0
  87. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/src/.styleguide +0 -0
  88. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/src/autodiff/variable_matrix.cpp +0 -0
  89. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/src/optimization/inertia.hpp +0 -0
  90. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/src/optimization/regularized_ldlt.hpp +0 -0
  91. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/src/optimization/solver/interior_point.cpp +0 -0
  92. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/src/optimization/solver/newton.cpp +0 -0
  93. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/src/optimization/solver/sqp.cpp +0 -0
  94. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/src/optimization/solver/util/error_estimate.hpp +0 -0
  95. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/src/optimization/solver/util/filter.hpp +0 -0
  96. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/src/optimization/solver/util/fraction_to_the_boundary_rule.hpp +0 -0
  97. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/src/optimization/solver/util/is_locally_infeasible.hpp +0 -0
  98. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/src/optimization/solver/util/kkt_error.hpp +0 -0
  99. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/src/util/pool.cpp +0 -0
  100. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/src/util/print_diagnostics.hpp +0 -0
  101. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/src/util/scope_exit.hpp +0 -0
  102. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/src/util/scoped_profiler.hpp +0 -0
  103. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/src/util/setup_profiler.hpp +0 -0
  104. {sleipnirgroup_jormungandr-0.0.1.dev462 → sleipnirgroup_jormungandr-0.0.1.dev464}/src/util/solve_profiler.hpp +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sleipnirgroup-jormungandr
3
- Version: 0.0.1.dev462
3
+ Version: 0.0.1.dev464
4
4
  Summary: A linearity-exploiting sparse nonlinear constrained optimization problem solver that uses the interior-point method.
5
5
  License: Copyright (c) Sleipnir contributors
6
6
 
@@ -278,7 +278,7 @@ class SLEIPNIR_DLLEXPORT Problem {
278
278
  [[maybe_unused]] bool spy = false);
279
279
 
280
280
  /**
281
- * Adds a callback to be called at each solver iteration.
281
+ * Adds a callback to be called at the beginning of each solver iteration.
282
282
  *
283
283
  * The callback for this overload should return void.
284
284
  *
@@ -297,7 +297,7 @@ class SLEIPNIR_DLLEXPORT Problem {
297
297
  }
298
298
 
299
299
  /**
300
- * Adds a callback to be called at each solver iteration.
300
+ * Adds a callback to be called at the beginning of each solver iteration.
301
301
  *
302
302
  * The callback for this overload should return bool.
303
303
  *
@@ -212,7 +212,8 @@ where f(x) is the cost function, cₑ(x) are the equality constraints, and cᵢ(
212
212
  are the inequality constraints.
213
213
 
214
214
  @param[in] matrix_callbacks Matrix callbacks.
215
- @param[in] iteration_callbacks The list of iteration callbacks.
215
+ @param[in] iteration_callbacks The list of callbacks to call at the beginning of
216
+ each iteration.
216
217
  @param[in] options Solver options.
217
218
  @param[in,out] x The initial guess and output location for the decision
218
219
  variables.
@@ -97,7 +97,8 @@ A nonlinear program has the form:
97
97
  where f(x) is the cost function.
98
98
 
99
99
  @param[in] matrix_callbacks Matrix callbacks.
100
- @param[in] iteration_callbacks The list of iteration callbacks.
100
+ @param[in] iteration_callbacks The list of callbacks to call at the beginning of
101
+ each iteration.
101
102
  @param[in] options Solver options.
102
103
  @param[in,out] x The initial guess and output location for the decision
103
104
  variables.
@@ -155,7 +155,8 @@ subject to cₑ(x) = 0
155
155
  where f(x) is the cost function and cₑ(x) are the equality constraints.
156
156
 
157
157
  @param[in] matrix_callbacks Matrix callbacks.
158
- @param[in] iteration_callbacks The list of iteration callbacks.
158
+ @param[in] iteration_callbacks The list of callbacks to call at the beginning of
159
+ each iteration.
159
160
  @param[in] options Solver options.
160
161
  @param[in,out] x The initial guess and output location for the decision
161
162
  variables.
@@ -693,7 +693,8 @@ mathematical form and it'll be converted for them.)doc";
693
693
  static const char *__doc_slp_Problem_Problem = R"doc(Construct the optimization problem.)doc";
694
694
 
695
695
  static const char *__doc_slp_Problem_add_callback =
696
- R"doc(Adds a callback to be called at each solver iteration.
696
+ R"doc(Adds a callback to be called at the beginning of each solver
697
+ iteration.
697
698
 
698
699
  The callback for this overload should return void.
699
700
 
@@ -701,7 +702,8 @@ Parameter ``callback``:
701
702
  The callback.)doc";
702
703
 
703
704
  static const char *__doc_slp_Problem_add_callback_2 =
704
- R"doc(Adds a callback to be called at each solver iteration.
705
+ R"doc(Adds a callback to be called at the beginning of each solver
706
+ iteration.
705
707
 
706
708
  The callback for this overload should return bool.
707
709
 
@@ -3098,7 +3100,7 @@ Parameter ``matrix_callbacks``:
3098
3100
  Matrix callbacks.
3099
3101
 
3100
3102
  Parameter ``iteration_callbacks``:
3101
- The list of iteration callbacks.
3103
+ The list of callbacks to call at the beginning of each iteration.
3102
3104
 
3103
3105
  Parameter ``options``:
3104
3106
  Solver options.
@@ -3149,7 +3151,7 @@ Parameter ``matrix_callbacks``:
3149
3151
  Matrix callbacks.
3150
3152
 
3151
3153
  Parameter ``iteration_callbacks``:
3152
- The list of iteration callbacks.
3154
+ The list of callbacks to call at the beginning of each iteration.
3153
3155
 
3154
3156
  Parameter ``options``:
3155
3157
  Solver options.
@@ -3285,7 +3287,7 @@ Parameter ``matrix_callbacks``:
3285
3287
  Matrix callbacks.
3286
3288
 
3287
3289
  Parameter ``iteration_callbacks``:
3288
- The list of iteration callbacks.
3290
+ The list of callbacks to call at the beginning of each iteration.
3289
3291
 
3290
3292
  Parameter ``options``:
3291
3293
  Solver options.
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "sleipnirgroup-jormungandr"
3
3
  description = "A linearity-exploiting sparse nonlinear constrained optimization problem solver that uses the interior-point method."
4
- version = "0.0.1.dev462"
4
+ version = "0.0.1.dev464"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.9"
7
7
  dependencies = [ "matplotlib", "numpy", "scipy" ]
@@ -83,6 +83,10 @@ ExitStatus Problem::solve(const Options& options, [[maybe_unused]] bool spy) {
83
83
  // Solve the optimization problem
84
84
  ExitStatus status;
85
85
  if (m_equality_constraints.empty() && m_inequality_constraints.empty()) {
86
+ if (options.diagnostics) {
87
+ slp::println("\nInvoking Newton solver...\n");
88
+ }
89
+
86
90
  // Set up Lagrangian Hessian autodiff
87
91
  ad_setup_profilers.emplace_back(" ↳ ∇²ₓₓL").start();
88
92
  Hessian<Eigen::Lower> H{f, x_ad};
@@ -103,10 +107,6 @@ ExitStatus Problem::solve(const Options& options, [[maybe_unused]] bool spy) {
103
107
  return false;
104
108
  });
105
109
  }
106
-
107
- if (options.diagnostics) {
108
- slp::println("\nInvoking Newton solver...\n");
109
- }
110
110
  #endif
111
111
 
112
112
  // Invoke Newton solver
@@ -125,17 +125,11 @@ ExitStatus Problem::solve(const Options& options, [[maybe_unused]] bool spy) {
125
125
  return H.value();
126
126
  }},
127
127
  m_iteration_callbacks, options, x);
128
-
129
- #ifndef SLEIPNIR_DISABLE_DIAGNOSTICS
130
- if (spy) {
131
- m_iteration_callbacks.pop_back();
132
- }
133
- #endif
134
-
128
+ } else if (m_inequality_constraints.empty()) {
135
129
  if (options.diagnostics) {
136
- print_autodiff_diagnostics(ad_setup_profilers);
130
+ slp::println("\nInvoking SQP solver\n");
137
131
  }
138
- } else if (m_inequality_constraints.empty()) {
132
+
139
133
  VariableMatrix c_e_ad{m_equality_constraints};
140
134
 
141
135
  // Set up equality constraint Jacobian autodiff
@@ -173,10 +167,6 @@ ExitStatus Problem::solve(const Options& options, [[maybe_unused]] bool spy) {
173
167
  return false;
174
168
  });
175
169
  }
176
-
177
- if (options.diagnostics) {
178
- slp::println("\nInvoking SQP solver\n");
179
- }
180
170
  #endif
181
171
 
182
172
  // Invoke SQP solver
@@ -205,17 +195,11 @@ ExitStatus Problem::solve(const Options& options, [[maybe_unused]] bool spy) {
205
195
  return A_e.value();
206
196
  }},
207
197
  m_iteration_callbacks, options, x);
208
-
209
- #ifndef SLEIPNIR_DISABLE_DIAGNOSTICS
210
- if (spy) {
211
- m_iteration_callbacks.pop_back();
212
- }
213
- #endif
214
-
198
+ } else {
215
199
  if (options.diagnostics) {
216
- print_autodiff_diagnostics(ad_setup_profilers);
200
+ slp::println("\nInvoking IPM solver...\n");
217
201
  }
218
- } else {
202
+
219
203
  VariableMatrix c_e_ad{m_equality_constraints};
220
204
  VariableMatrix c_i_ad{m_inequality_constraints};
221
205
 
@@ -266,10 +250,6 @@ ExitStatus Problem::solve(const Options& options, [[maybe_unused]] bool spy) {
266
250
  return false;
267
251
  });
268
252
  }
269
-
270
- if (options.diagnostics) {
271
- slp::println("\nInvoking IPM solver...\n");
272
- }
273
253
  #endif
274
254
 
275
255
  // Invoke interior-point method solver
@@ -307,23 +287,18 @@ ExitStatus Problem::solve(const Options& options, [[maybe_unused]] bool spy) {
307
287
  return A_i.value();
308
288
  }},
309
289
  m_iteration_callbacks, options, x);
290
+ }
310
291
 
311
292
  #ifndef SLEIPNIR_DISABLE_DIAGNOSTICS
312
- if (spy) {
313
- m_iteration_callbacks.pop_back();
314
- }
315
- #endif
316
-
317
- if (options.diagnostics) {
318
- print_autodiff_diagnostics(ad_setup_profilers);
319
- }
293
+ if (spy) {
294
+ m_iteration_callbacks.pop_back();
320
295
  }
296
+ #endif
321
297
 
322
- #ifndef SLEIPNIR_DISABLE_DIAGNOSTICS
323
298
  if (options.diagnostics) {
299
+ print_autodiff_diagnostics(ad_setup_profilers);
324
300
  slp::println("\nExit: {}", to_message(status));
325
301
  }
326
- #endif
327
302
 
328
303
  // Assign the solution to the original Variable instances
329
304
  VariableMatrix{m_decision_variables}.set_value(x);
@@ -332,7 +307,6 @@ ExitStatus Problem::solve(const Options& options, [[maybe_unused]] bool spy) {
332
307
  }
333
308
 
334
309
  void Problem::print_exit_conditions([[maybe_unused]] const Options& options) {
335
- #ifndef SLEIPNIR_DISABLE_DIAGNOSTICS
336
310
  // Print possible exit conditions
337
311
  slp::println("User-configured exit conditions:");
338
312
  slp::println(" ↳ error below {}", options.tolerance);
@@ -345,11 +319,9 @@ void Problem::print_exit_conditions([[maybe_unused]] const Options& options) {
345
319
  if (std::isfinite(options.timeout.count())) {
346
320
  slp::println(" ↳ {} elapsed", options.timeout);
347
321
  }
348
- #endif
349
322
  }
350
323
 
351
324
  void Problem::print_problem_analysis() {
352
- #ifndef SLEIPNIR_DISABLE_DIAGNOSTICS
353
325
  constexpr std::array types{"no", "constant", "linear", "quadratic",
354
326
  "nonlinear"};
355
327
 
@@ -395,7 +367,6 @@ void Problem::print_problem_analysis() {
395
367
  slp::println("{} inequality constraints", m_inequality_constraints.size());
396
368
  }
397
369
  print_constraint_types(m_inequality_constraints);
398
- #endif
399
370
  }
400
371
 
401
372
  } // namespace slp