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.
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/PKG-INFO +1 -1
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/interior_point.hpp +6 -6
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/sqp.hpp +2 -2
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/dense_regularized_ldlt.hpp +20 -15
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/feasibility_restoration.hpp +13 -11
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/sparse_regularized_ldlt.hpp +20 -15
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/src/sleipnir/__init__.py +1 -1
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/CMakeLists.txt +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/LICENSE.txt +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/README.md +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/SleipnirConfig.cmake.in +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/cmake/BuildTypes.cmake +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/cmake/CompilerFlags.cmake +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/cmake/Pybind11Mkdoc.cmake +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/cmake/SubdirList.cmake +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/cmake/arm-none-eabi.cmake +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/expression.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/expression_graph.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/expression_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/gradient.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/gradient_expression_graph.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/hessian.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/jacobian.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/sleipnir_base.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/slice.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/variable.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/variable_block.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/autodiff/variable_matrix.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/multistart.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/ocp/dynamics_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/ocp/timestep_method.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/ocp/transcription_method.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/ocp.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/problem.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/exit_status.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/interior_point_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/iteration_info.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/newton.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/newton_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/options.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/sqp_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/all_finite.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/append_as_triplets.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/bounds.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/filter.hpp +0 -0
- {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
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/inertia.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/is_locally_infeasible.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/kkt_error.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/lagrange_multiplier_estimate.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/problem_scaling.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/regularized_ldlt.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/optimization/solver/util/sparse_inf_norms.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/assert.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/concepts.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/empty.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/function_ref.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/intrusive_shared_ptr.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/pool.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/print.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/print_diagnostics.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/profiler.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/scope_exit.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/spy.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/include/sleipnir/util/symbol_exports.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/pyproject.toml +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/autodiff/bind_expression_type.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/autodiff/bind_gradient.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/autodiff/bind_hessian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/autodiff/bind_jacobian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/autodiff/bind_variable.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/autodiff/bind_variable_block.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/autodiff/bind_variable_matrix.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/binders.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/docstrings.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/for_each_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/main.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/optimization/bind_equality_constraints.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/optimization/bind_inequality_constraints.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/optimization/bind_ocp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/optimization/bind_problem.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/optimization/ocp/bind_dynamics_type.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/optimization/ocp/bind_timestep_method.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/optimization/ocp/bind_transcription_method.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/optimization/solver/bind_exit_status.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/optimization/solver/bind_iteration_info.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/cpp/try_cast.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/src/sleipnir/autodiff/__init__.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/src/sleipnir/optimization/__init__.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/autodiff/gradient_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/autodiff/hessian_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/autodiff/jacobian_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/autodiff/variable_matrix_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/autodiff/variable_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/arm_on_elevator_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/cart_pole_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/cart_pole_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/cart_pole_util.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/constraints_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/decision_variable_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/differential_drive_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/differential_drive_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/differential_drive_util.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/double_integrator_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/flywheel_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/flywheel_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/linear_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/multistart_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/nonlinear_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/problem_spy_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/quadratic_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/rk4.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/solver/exit_status_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/python/test/optimization/trivial_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/autodiff/gradient.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/autodiff/hessian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/autodiff/jacobian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/autodiff/variable_matrix.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/optimization/ocp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/optimization/problem.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/optimization/solver/interior_point.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/optimization/solver/newton.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/optimization/solver/sqp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/util/pool.cpp +0 -0
|
@@ -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>(
|
|
737
|
-
|
|
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
|
-
|
|
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
|
-
//
|
|
77
|
-
//
|
|
78
|
-
|
|
79
|
-
//
|
|
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
|
|
117
|
-
//
|
|
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>(
|
|
301
|
-
|
|
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
|
-
|
|
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>(
|
|
588
|
-
|
|
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
|
-
|
|
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
|
-
//
|
|
92
|
-
//
|
|
93
|
-
|
|
94
|
-
//
|
|
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
|
|
133
|
-
//
|
|
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_δ = δ;
|
{sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/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
|
|
File without changes
|
{sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/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.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/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
|
{sleipnirgroup_jormungandr-0.5.6.dev20 → sleipnirgroup_jormungandr-0.5.6.dev22}/src/util/pool.cpp
RENAMED
|
File without changes
|