sleipnirgroup-jormungandr 0.6.7.dev31__tar.gz → 0.6.7.dev33__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.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/PKG-INFO +1 -1
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/feasibility_restoration.hpp +35 -9
- sleipnirgroup_jormungandr-0.6.7.dev33/include/sleipnir/optimization/solver/util/lagrange_multiplier_estimate.hpp +30 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/src/sleipnir/__init__.py +1 -1
- sleipnirgroup_jormungandr-0.6.7.dev31/include/sleipnir/optimization/solver/util/lagrange_multiplier_estimate.hpp +0 -133
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/CMakeLists.txt +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/LICENSE.txt +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/README.md +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/SleipnirConfig.cmake.in +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/cmake/BuildTypes.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/cmake/CompilerFlags.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/cmake/Pybind11Mkdoc.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/cmake/SubdirList.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/cmake/arm-none-eabi.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/expression.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/expression_graph.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/expression_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/gradient.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/hessian.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/jacobian.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/sleipnir_base.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/slice.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/variable.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/variable_block.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/variable_matrix.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/multistart.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/ocp/dynamics_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/ocp/timestep_method.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/ocp/transcription_method.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/ocp.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/problem.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/exit_status.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/ipm.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/ipm_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/iteration_info.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/newton.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/newton_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/options.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/sqp.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/sqp_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/all_finite.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/append_as_triplets.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/bounds.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/dense_kkt_solver.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/filter.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/fraction_to_the_boundary_rule.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/inertia.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/kkt_error.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/kkt_solver.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/problem_scaling.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/sparse_inf_norms.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/sparse_kkt_solver.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/assert.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/concepts.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/empty.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/function_ref.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/intrusive_shared_ptr.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/pool.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/print.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/print_diagnostics.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/profiler.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/scope_exit.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/spy.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/symbol_exports.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/pyproject.toml +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/autodiff/bind_expression_type.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/autodiff/bind_gradient.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/autodiff/bind_hessian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/autodiff/bind_jacobian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/autodiff/bind_variable.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/autodiff/bind_variable_block.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/autodiff/bind_variable_matrix.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/binders.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/docstrings.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/for_each_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/main.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/optimization/bind_equality_constraints.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/optimization/bind_inequality_constraints.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/optimization/bind_ocp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/optimization/bind_problem.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/optimization/ocp/bind_dynamics_type.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/optimization/ocp/bind_timestep_method.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/optimization/ocp/bind_transcription_method.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/optimization/solver/bind_exit_status.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/optimization/solver/bind_iteration_info.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/try_cast.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/src/sleipnir/autodiff/__init__.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/src/sleipnir/optimization/__init__.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/autodiff/gradient_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/autodiff/hessian_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/autodiff/jacobian_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/autodiff/variable_matrix_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/autodiff/variable_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/arm_on_elevator_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/cart_pole_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/cart_pole_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/cart_pole_util.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/constraints_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/decision_variable_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/differential_drive_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/differential_drive_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/differential_drive_util.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/double_integrator_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/flywheel_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/flywheel_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/linear_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/multistart_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/near.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/nonlinear_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/problem_spy_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/quadratic_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/rk4.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/solver/exit_status_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/trivial_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/autodiff/gradient.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/autodiff/hessian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/autodiff/jacobian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/autodiff/variable_matrix.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/optimization/ocp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/optimization/problem.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/optimization/solver/ipm.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/optimization/solver/newton.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/optimization/solver/sqp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/util/pool.cpp +0 -0
|
@@ -634,17 +634,39 @@ ExitStatus feasibility_restoration(
|
|
|
634
634
|
fr_x, fr_s, fr_y, fr_z, fr_μ, iterations);
|
|
635
635
|
|
|
636
636
|
x = fr_x.segment(0, x.rows());
|
|
637
|
-
s = fr_s.segment(0, s.rows());
|
|
638
637
|
|
|
639
638
|
if (status == ExitStatus::CALLBACK_REQUESTED_STOP) {
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
639
|
+
const DenseVector s_old = s;
|
|
640
|
+
|
|
641
|
+
// Re-center the slacks on the original constraints cᵢ(x) if they're
|
|
642
|
+
// sufficiently feasible, and on 1 otherwise.
|
|
643
|
+
//
|
|
644
|
+
// We can't use the slacks of cᵢ(x) − pᵢ + nᵢ ≥ 0 because feasibility
|
|
645
|
+
// restoration's barrier parameter fr_μ drives them toward 0 independently
|
|
646
|
+
// of the original problem's barrier parameter μ. Slacks much smaller than μ
|
|
647
|
+
// make Σ = S⁻¹Z and μS⁻¹e very large, which causes very large dual steps
|
|
648
|
+
// after returning.
|
|
649
|
+
const DenseVector c_i = matrices.c_i(x);
|
|
650
|
+
s = (c_i.array() >= Scalar(1e-2)).select(c_i, Scalar(1));
|
|
651
|
+
|
|
652
|
+
// Reset the equality constraint duals since the restoration phase didn't
|
|
653
|
+
// take the cost function into account
|
|
654
|
+
y.setZero();
|
|
655
|
+
|
|
656
|
+
// Update the inequality constraint duals with a Newton step for
|
|
657
|
+
// complementarity, taking the change in slacks during the restoration
|
|
658
|
+
// phase as the primal step.
|
|
659
|
+
//
|
|
660
|
+
// pᶻ = μS⁻¹e − z − Σpˢ
|
|
661
|
+
//
|
|
662
|
+
// If the result isn't strictly positive or is too large, reset all of them
|
|
663
|
+
// to 1.
|
|
664
|
+
const DenseVector Σ = z.cwiseQuotient(s_old);
|
|
665
|
+
const DenseVector p_s = s - s_old;
|
|
666
|
+
z += μ * s_old.cwiseInverse() - z - Σ.cwiseProduct(p_s);
|
|
667
|
+
if ((z.array() <= Scalar(0)).any() || (z.array() > Scalar(1e3)).any()) {
|
|
668
|
+
z.setOnes();
|
|
669
|
+
}
|
|
648
670
|
|
|
649
671
|
return ExitStatus::SUCCESS;
|
|
650
672
|
} else if (status == ExitStatus::SUCCESS) {
|
|
@@ -654,6 +676,9 @@ ExitStatus feasibility_restoration(
|
|
|
654
676
|
// infeasibility anywhere else risks false positives (e.g., a
|
|
655
677
|
// point-in-time test can reject iterates the solver would otherwise
|
|
656
678
|
// escape). See section 3.3, p. 14 of [2].
|
|
679
|
+
|
|
680
|
+
s = fr_s.segment(0, s.rows());
|
|
681
|
+
|
|
657
682
|
DenseVector c_e = matrices.c_e(x);
|
|
658
683
|
if (matrices.scaling.c_e.size() > 0) {
|
|
659
684
|
c_e = matrices.scaling.c_e.cwiseInverse().cwiseProduct(c_e);
|
|
@@ -688,6 +713,7 @@ ExitStatus feasibility_restoration(
|
|
|
688
713
|
|
|
689
714
|
return ExitStatus::FEASIBILITY_RESTORATION_FAILED;
|
|
690
715
|
} else {
|
|
716
|
+
s = fr_s.segment(0, s.rows());
|
|
691
717
|
return ExitStatus::FEASIBILITY_RESTORATION_FAILED;
|
|
692
718
|
}
|
|
693
719
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Copyright (c) Sleipnir contributors
|
|
2
|
+
|
|
3
|
+
#pragma once
|
|
4
|
+
|
|
5
|
+
#include <Eigen/Core>
|
|
6
|
+
#include <Eigen/SparseCholesky>
|
|
7
|
+
#include <Eigen/SparseCore>
|
|
8
|
+
|
|
9
|
+
namespace slp {
|
|
10
|
+
|
|
11
|
+
/// Estimates Lagrange multipliers for SQP.
|
|
12
|
+
///
|
|
13
|
+
/// @tparam Scalar Scalar type.
|
|
14
|
+
/// @param g Cost function gradient ∇f.
|
|
15
|
+
/// @param A_e Equality constraint Jacobian Aₑ(x).
|
|
16
|
+
template <typename Scalar>
|
|
17
|
+
Eigen::Vector<Scalar, Eigen::Dynamic> lagrange_multiplier_estimate(
|
|
18
|
+
const Eigen::SparseVector<Scalar>& g,
|
|
19
|
+
const Eigen::SparseMatrix<Scalar>& A_e) {
|
|
20
|
+
// Lagrange multiplier estimates
|
|
21
|
+
//
|
|
22
|
+
// ∇f − Aₑᵀy = 0
|
|
23
|
+
// Aₑᵀy = ∇f
|
|
24
|
+
// y = (AₑAₑᵀ)⁻¹Aₑ∇f
|
|
25
|
+
return Eigen::SimplicialLDLT<Eigen::SparseMatrix<Scalar>>{A_e *
|
|
26
|
+
A_e.transpose()}
|
|
27
|
+
.solve(A_e * g);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
} // namespace slp
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Sleipnir contributors
|
|
2
|
-
|
|
3
|
-
#pragma once
|
|
4
|
-
|
|
5
|
-
#include <algorithm>
|
|
6
|
-
#include <utility>
|
|
7
|
-
|
|
8
|
-
#include <Eigen/Core>
|
|
9
|
-
#include <Eigen/SparseCholesky>
|
|
10
|
-
#include <Eigen/SparseCore>
|
|
11
|
-
#include <gch/small_vector.hpp>
|
|
12
|
-
|
|
13
|
-
#include "sleipnir/optimization/solver/util/append_as_triplets.hpp"
|
|
14
|
-
|
|
15
|
-
namespace slp {
|
|
16
|
-
|
|
17
|
-
/// Lagrange multiplier estimates.
|
|
18
|
-
///
|
|
19
|
-
/// @tparam Scalar Scalar type.
|
|
20
|
-
template <typename Scalar>
|
|
21
|
-
struct LagrangeMultiplierEstimate {
|
|
22
|
-
/// Equality constraint dual estimate.
|
|
23
|
-
Eigen::Vector<Scalar, Eigen::Dynamic> y;
|
|
24
|
-
/// Inequality constraint dual estimate.
|
|
25
|
-
Eigen::Vector<Scalar, Eigen::Dynamic> z;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
/// Estimates Lagrange multipliers for SQP.
|
|
29
|
-
///
|
|
30
|
-
/// @tparam Scalar Scalar type.
|
|
31
|
-
/// @param g Cost function gradient ∇f.
|
|
32
|
-
/// @param A_e Equality constraint Jacobian Aₑ(x).
|
|
33
|
-
template <typename Scalar>
|
|
34
|
-
Eigen::Vector<Scalar, Eigen::Dynamic> lagrange_multiplier_estimate(
|
|
35
|
-
const Eigen::SparseVector<Scalar>& g,
|
|
36
|
-
const Eigen::SparseMatrix<Scalar>& A_e) {
|
|
37
|
-
// Lagrange multiplier estimates
|
|
38
|
-
//
|
|
39
|
-
// ∇f − Aₑᵀy = 0
|
|
40
|
-
// Aₑᵀy = ∇f
|
|
41
|
-
// y = (AₑAₑᵀ)⁻¹Aₑ∇f
|
|
42
|
-
return Eigen::SimplicialLDLT<Eigen::SparseMatrix<Scalar>>{A_e *
|
|
43
|
-
A_e.transpose()}
|
|
44
|
-
.solve(A_e * g);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/// Estimates Lagrange multipliers for interior-point method.
|
|
48
|
-
///
|
|
49
|
-
/// @tparam Scalar Scalar type.
|
|
50
|
-
/// @param g Cost function gradient ∇f.
|
|
51
|
-
/// @param A_e Equality constraint Jacobian Aₑ(x).
|
|
52
|
-
/// @param A_i Inequality constraint Jacobian Aᵢ(x).
|
|
53
|
-
/// @param s Inequality constraint slack variables.
|
|
54
|
-
/// @param μ Barrier parameter.
|
|
55
|
-
template <typename Scalar>
|
|
56
|
-
LagrangeMultiplierEstimate<Scalar> lagrange_multiplier_estimate(
|
|
57
|
-
const Eigen::SparseVector<Scalar>& g,
|
|
58
|
-
const Eigen::SparseMatrix<Scalar>& A_e,
|
|
59
|
-
const Eigen::SparseMatrix<Scalar>& A_i,
|
|
60
|
-
const Eigen::Vector<Scalar, Eigen::Dynamic>& s, Scalar μ) {
|
|
61
|
-
using DenseVector = Eigen::Vector<Scalar, Eigen::Dynamic>;
|
|
62
|
-
using SparseMatrix = Eigen::SparseMatrix<Scalar>;
|
|
63
|
-
|
|
64
|
-
// Lagrange multiplier estimates
|
|
65
|
-
//
|
|
66
|
-
// ∇f − Aₑᵀy − Aᵢᵀz = 0
|
|
67
|
-
// Sz − μe = 0
|
|
68
|
-
//
|
|
69
|
-
// Aₑᵀy + Aᵢᵀz = ∇f
|
|
70
|
-
// −Sz = −μe
|
|
71
|
-
//
|
|
72
|
-
// [Aₑᵀ Aᵢᵀ][y] = [ ∇f]
|
|
73
|
-
// [ 0 −S ][z] [−μe]
|
|
74
|
-
//
|
|
75
|
-
// [Aₑ 0]ᵀ[y] = [ ∇f]
|
|
76
|
-
// [Aᵢ −S] [z] [−μe]
|
|
77
|
-
//
|
|
78
|
-
// Let  = [Aₑ 0]
|
|
79
|
-
// [Aᵢ −S]
|
|
80
|
-
//
|
|
81
|
-
// Âᵀ[y] = [ ∇f]
|
|
82
|
-
// [z] [−μe]
|
|
83
|
-
//
|
|
84
|
-
// [y] = (ÂÂᵀ)⁻¹Â[ ∇f]
|
|
85
|
-
// [z] [−μe]
|
|
86
|
-
|
|
87
|
-
gch::small_vector<Eigen::Triplet<Scalar>> triplets;
|
|
88
|
-
|
|
89
|
-
// Â = [Aₑ 0]
|
|
90
|
-
// [Aᵢ −S]
|
|
91
|
-
triplets.reserve(A_e.nonZeros() + A_i.nonZeros() + s.rows());
|
|
92
|
-
append_as_triplets(triplets, 0, 0, {A_e, A_i});
|
|
93
|
-
append_diagonal_as_triplets(triplets, A_e.rows(), A_i.cols(), (-s).eval());
|
|
94
|
-
SparseMatrix A_hat{A_e.rows() + A_i.rows(), A_e.cols() + s.rows()};
|
|
95
|
-
A_hat.setFromSortedTriplets(triplets.begin(), triplets.end());
|
|
96
|
-
|
|
97
|
-
// lhs = ÂÂᵀ
|
|
98
|
-
SparseMatrix lhs = A_hat * A_hat.transpose();
|
|
99
|
-
|
|
100
|
-
// rhs = Â[ ∇f]
|
|
101
|
-
// [−μe]
|
|
102
|
-
DenseVector rhs_temp{g.rows() + s.rows()};
|
|
103
|
-
rhs_temp.segment(0, g.rows()) = g;
|
|
104
|
-
rhs_temp.segment(g.rows(), s.rows()).setConstant(-μ);
|
|
105
|
-
DenseVector rhs = A_hat * rhs_temp;
|
|
106
|
-
|
|
107
|
-
Eigen::SimplicialLDLT<SparseMatrix> yz_estimator{lhs};
|
|
108
|
-
DenseVector sol = yz_estimator.solve(rhs);
|
|
109
|
-
DenseVector y = sol.segment(0, A_e.rows());
|
|
110
|
-
DenseVector z = sol.segment(A_e.rows(), s.rows());
|
|
111
|
-
|
|
112
|
-
// A requirement for the convergence proof is that the primal-dual barrier
|
|
113
|
-
// term Hessian Σₖ₊₁ does not deviate arbitrarily much from the primal barrier
|
|
114
|
-
// term Hessian μSₖ₊₁⁻².
|
|
115
|
-
//
|
|
116
|
-
// Σₖ₊₁ = μSₖ₊₁⁻²
|
|
117
|
-
// Sₖ₊₁⁻¹Zₖ₊₁ = μSₖ₊₁⁻²
|
|
118
|
-
// Zₖ₊₁ = μSₖ₊₁⁻¹
|
|
119
|
-
//
|
|
120
|
-
// We ensure this by resetting
|
|
121
|
-
//
|
|
122
|
-
// zₖ₊₁ = clamp(zₖ₊₁, 1/κ_Σ μ/sₖ₊₁, κ_Σ μ/sₖ₊₁)
|
|
123
|
-
//
|
|
124
|
-
// for some fixed κ_Σ ≥ 1 after each step. See equation (16) of [2].
|
|
125
|
-
for (int row = 0; row < z.rows(); ++row) {
|
|
126
|
-
constexpr Scalar κ_Σ(1e10);
|
|
127
|
-
z[row] = std::clamp(z[row], Scalar(1) / κ_Σ * μ / s[row], κ_Σ * μ / s[row]);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
return {std::move(y), std::move(z)};
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
} // namespace slp
|
{sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/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
|
{sleipnirgroup_jormungandr-0.6.7.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/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.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/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.dev31 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/util/pool.cpp
RENAMED
|
File without changes
|