sleipnirgroup-jormungandr 0.6.7.dev33__tar.gz → 0.6.7.dev35__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.
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/PKG-INFO +1 -1
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/ipm.hpp +12 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/newton.hpp +3 -2
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/sqp.hpp +12 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/util/filter.hpp +43 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/src/sleipnir/__init__.py +1 -1
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/CMakeLists.txt +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/LICENSE.txt +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/README.md +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/SleipnirConfig.cmake.in +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/cmake/BuildTypes.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/cmake/CompilerFlags.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/cmake/Pybind11Mkdoc.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/cmake/SubdirList.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/cmake/arm-none-eabi.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/autodiff/expression.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/autodiff/expression_graph.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/autodiff/expression_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/autodiff/gradient.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/autodiff/hessian.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/autodiff/jacobian.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/autodiff/sleipnir_base.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/autodiff/slice.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/autodiff/variable.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/autodiff/variable_block.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/autodiff/variable_matrix.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/multistart.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/ocp/dynamics_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/ocp/timestep_method.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/ocp/transcription_method.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/ocp.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/problem.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/exit_status.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/ipm_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/iteration_info.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/newton_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/options.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/sqp_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/util/all_finite.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/util/append_as_triplets.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/util/bounds.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/util/dense_kkt_solver.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/util/feasibility_restoration.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/util/fraction_to_the_boundary_rule.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/util/inertia.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/util/kkt_error.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/util/kkt_solver.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/util/lagrange_multiplier_estimate.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/util/problem_scaling.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/util/sparse_inf_norms.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/optimization/solver/util/sparse_kkt_solver.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/util/assert.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/util/concepts.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/util/empty.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/util/function_ref.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/util/intrusive_shared_ptr.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/util/pool.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/util/print.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/util/print_diagnostics.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/util/profiler.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/util/scope_exit.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/util/spy.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/include/sleipnir/util/symbol_exports.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/pyproject.toml +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/autodiff/bind_expression_type.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/autodiff/bind_gradient.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/autodiff/bind_hessian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/autodiff/bind_jacobian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/autodiff/bind_variable.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/autodiff/bind_variable_block.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/autodiff/bind_variable_matrix.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/binders.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/docstrings.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/for_each_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/main.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/optimization/bind_equality_constraints.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/optimization/bind_inequality_constraints.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/optimization/bind_ocp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/optimization/bind_problem.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/optimization/ocp/bind_dynamics_type.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/optimization/ocp/bind_timestep_method.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/optimization/ocp/bind_transcription_method.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/optimization/solver/bind_exit_status.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/optimization/solver/bind_iteration_info.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/try_cast.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/src/sleipnir/autodiff/__init__.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/src/sleipnir/optimization/__init__.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/autodiff/gradient_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/autodiff/hessian_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/autodiff/jacobian_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/autodiff/variable_matrix_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/autodiff/variable_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/arm_on_elevator_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/cart_pole_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/cart_pole_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/cart_pole_util.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/constraints_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/decision_variable_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/differential_drive_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/differential_drive_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/differential_drive_util.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/double_integrator_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/flywheel_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/flywheel_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/linear_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/multistart_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/near.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/nonlinear_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/problem_spy_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/quadratic_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/rk4.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/solver/exit_status_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/test/optimization/trivial_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/src/autodiff/gradient.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/src/autodiff/hessian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/src/autodiff/jacobian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/src/autodiff/variable_matrix.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/src/optimization/ocp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/src/optimization/problem.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/src/optimization/solver/ipm.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/src/optimization/solver/newton.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/src/optimization/solver/sqp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/src/util/pool.cpp +0 -0
|
@@ -353,6 +353,8 @@ ExitStatus ipm(const IPMMatrixCallbacks<Scalar>& matrix_callbacks,
|
|
|
353
353
|
|
|
354
354
|
int full_step_rejected_counter = 0;
|
|
355
355
|
|
|
356
|
+
StallDetector<Scalar> stall_detector;
|
|
357
|
+
|
|
356
358
|
// Error
|
|
357
359
|
Scalar E_0 = unscaled_kkt_error<Scalar, KKTErrorType::INF_NORM_SCALED>(
|
|
358
360
|
matrices.scaling, g, A_e, c_e, A_i, c_i, s, y, z, Scalar(0));
|
|
@@ -691,6 +693,7 @@ ExitStatus ipm(const IPMMatrixCallbacks<Scalar>& matrix_callbacks,
|
|
|
691
693
|
// If the step using αᵐᵃˣ reduced the KKT error, accept it anyway
|
|
692
694
|
if (next_kkt_error <= Scalar(0.999) * current_kkt_error) {
|
|
693
695
|
// Accept step
|
|
696
|
+
α = α_max;
|
|
694
697
|
break;
|
|
695
698
|
}
|
|
696
699
|
|
|
@@ -701,6 +704,15 @@ ExitStatus ipm(const IPMMatrixCallbacks<Scalar>& matrix_callbacks,
|
|
|
701
704
|
|
|
702
705
|
line_search_profiler.stop();
|
|
703
706
|
|
|
707
|
+
// If solver stalled, invoke feasibility restoration
|
|
708
|
+
if (!call_feasibility_restoration && !in_feasibility_restoration) {
|
|
709
|
+
FilterEntry trial_entry{trial_f, trial_s, trial_c_e, trial_c_i, μ};
|
|
710
|
+
if (stall_detector.update(current_entry, trial_entry, α,
|
|
711
|
+
filter.min_constraint_violation)) {
|
|
712
|
+
call_feasibility_restoration = true;
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
|
|
704
716
|
if (call_feasibility_restoration) {
|
|
705
717
|
ScopedProfiler feasibility_restoration_profiler{
|
|
706
718
|
feasibility_restoration_prof};
|
|
@@ -232,14 +232,15 @@ ExitStatus newton(
|
|
|
232
232
|
|
|
233
233
|
trial_x = x + α_max * p_x;
|
|
234
234
|
|
|
235
|
+
trial_f = matrices.f(trial_x);
|
|
236
|
+
|
|
235
237
|
Scalar next_kkt_error =
|
|
236
238
|
kkt_error<Scalar, KKTErrorType::ONE_NORM>(matrices.g(trial_x));
|
|
237
239
|
|
|
238
240
|
// If the step using αᵐᵃˣ reduced the KKT error, accept it anyway
|
|
239
241
|
if (next_kkt_error <= Scalar(0.999) * current_kkt_error) {
|
|
240
|
-
trial_f = matrices.f(trial_x);
|
|
241
|
-
|
|
242
242
|
// Accept step
|
|
243
|
+
α = α_max;
|
|
243
244
|
break;
|
|
244
245
|
}
|
|
245
246
|
|
|
@@ -236,6 +236,8 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
|
|
|
236
236
|
|
|
237
237
|
int full_step_rejected_counter = 0;
|
|
238
238
|
|
|
239
|
+
StallDetector<Scalar> stall_detector;
|
|
240
|
+
|
|
239
241
|
// Error
|
|
240
242
|
Scalar E_0 = unscaled_kkt_error<Scalar, KKTErrorType::INF_NORM_SCALED>(
|
|
241
243
|
matrices.scaling, g, A_e, c_e, y);
|
|
@@ -488,6 +490,7 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
|
|
|
488
490
|
// If the step using αᵐᵃˣ reduced the KKT error, accept it anyway
|
|
489
491
|
if (next_kkt_error <= Scalar(0.999) * current_kkt_error) {
|
|
490
492
|
// Accept step
|
|
493
|
+
α = α_max;
|
|
491
494
|
break;
|
|
492
495
|
}
|
|
493
496
|
|
|
@@ -498,6 +501,15 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
|
|
|
498
501
|
|
|
499
502
|
line_search_profiler.stop();
|
|
500
503
|
|
|
504
|
+
// If solver stalled, invoke feasibility restoration
|
|
505
|
+
if (!call_feasibility_restoration) {
|
|
506
|
+
FilterEntry trial_entry{trial_f, trial_c_e};
|
|
507
|
+
if (stall_detector.update(current_entry, trial_entry, α,
|
|
508
|
+
filter.min_constraint_violation)) {
|
|
509
|
+
call_feasibility_restoration = true;
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
|
|
501
513
|
if (call_feasibility_restoration) {
|
|
502
514
|
ScopedProfiler feasibility_restoration_profiler{
|
|
503
515
|
feasibility_restoration_prof};
|
|
@@ -211,4 +211,47 @@ class Filter {
|
|
|
211
211
|
}
|
|
212
212
|
};
|
|
213
213
|
|
|
214
|
+
/// Detects a solver stall.
|
|
215
|
+
///
|
|
216
|
+
/// @tparam Scalar Scalar type.
|
|
217
|
+
template <typename Scalar>
|
|
218
|
+
class StallDetector {
|
|
219
|
+
public:
|
|
220
|
+
/// Returns true if the solver stalled.
|
|
221
|
+
///
|
|
222
|
+
/// @param current_entry The entry corresponding to the current iterate.
|
|
223
|
+
/// @param trial_entry The entry corresponding to the accepted trial iterate.
|
|
224
|
+
/// @param α The accepted step size.
|
|
225
|
+
/// @param min_constraint_violation The minimum constraint violation from the
|
|
226
|
+
/// filter.
|
|
227
|
+
/// @return True if the solver stalled.
|
|
228
|
+
bool update(const FilterEntry<Scalar>& current_entry,
|
|
229
|
+
const FilterEntry<Scalar>& trial_entry, Scalar α,
|
|
230
|
+
Scalar min_constraint_violation) {
|
|
231
|
+
// If step is tiny, current iterate is infeasible, and accepted trial
|
|
232
|
+
// iterate made insufficient progress toward feasibility, increment stalled
|
|
233
|
+
// step counter
|
|
234
|
+
if (α < Scalar(1e-3) &&
|
|
235
|
+
current_entry.constraint_violation > min_constraint_violation &&
|
|
236
|
+
trial_entry.constraint_violation >
|
|
237
|
+
Scalar(0.99) * current_entry.constraint_violation) {
|
|
238
|
+
++m_stalled_step_counter;
|
|
239
|
+
|
|
240
|
+
// If there were too many consecutive tiny steps, report a stall
|
|
241
|
+
if (++m_stalled_step_counter >= 5) {
|
|
242
|
+
m_stalled_step_counter = 0;
|
|
243
|
+
return true;
|
|
244
|
+
}
|
|
245
|
+
} else {
|
|
246
|
+
// A break in stalled steps resets the counter
|
|
247
|
+
m_stalled_step_counter = 0;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
return false;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
private:
|
|
254
|
+
int m_stalled_step_counter = 0;
|
|
255
|
+
};
|
|
256
|
+
|
|
214
257
|
} // namespace slp
|
{sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/CMakeLists.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/pyproject.toml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/python/cpp/main.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sleipnirgroup_jormungandr-0.6.7.dev33 → sleipnirgroup_jormungandr-0.6.7.dev35}/src/util/pool.cpp
RENAMED
|
File without changes
|