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