sleipnirgroup-jormungandr 0.6.7.dev32__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.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/PKG-INFO +1 -1
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/feasibility_restoration.hpp +19 -7
- sleipnirgroup_jormungandr-0.6.7.dev33/include/sleipnir/optimization/solver/util/lagrange_multiplier_estimate.hpp +30 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/src/sleipnir/__init__.py +1 -1
- sleipnirgroup_jormungandr-0.6.7.dev32/include/sleipnir/optimization/solver/util/lagrange_multiplier_estimate.hpp +0 -133
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/CMakeLists.txt +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/LICENSE.txt +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/README.md +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/SleipnirConfig.cmake.in +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/cmake/BuildTypes.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/cmake/CompilerFlags.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/cmake/Pybind11Mkdoc.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/cmake/SubdirList.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/cmake/arm-none-eabi.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/expression.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/expression_graph.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/expression_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/gradient.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/hessian.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/jacobian.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/sleipnir_base.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/slice.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/variable.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/variable_block.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/autodiff/variable_matrix.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/multistart.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/ocp/dynamics_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/ocp/timestep_method.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/ocp/transcription_method.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/ocp.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/problem.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/exit_status.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/ipm.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/ipm_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/iteration_info.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/newton.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/newton_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/options.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/sqp.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/sqp_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/all_finite.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/append_as_triplets.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/bounds.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/dense_kkt_solver.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/filter.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/fraction_to_the_boundary_rule.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/inertia.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/kkt_error.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/kkt_solver.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/problem_scaling.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/sparse_inf_norms.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/optimization/solver/util/sparse_kkt_solver.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/assert.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/concepts.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/empty.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/function_ref.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/intrusive_shared_ptr.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/pool.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/print.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/print_diagnostics.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/profiler.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/scope_exit.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/spy.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/include/sleipnir/util/symbol_exports.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/pyproject.toml +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/autodiff/bind_expression_type.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/autodiff/bind_gradient.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/autodiff/bind_hessian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/autodiff/bind_jacobian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/autodiff/bind_variable.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/autodiff/bind_variable_block.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/autodiff/bind_variable_matrix.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/binders.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/docstrings.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/for_each_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/main.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/optimization/bind_equality_constraints.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/optimization/bind_inequality_constraints.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/optimization/bind_ocp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/optimization/bind_problem.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/optimization/ocp/bind_dynamics_type.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/optimization/ocp/bind_timestep_method.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/optimization/ocp/bind_transcription_method.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/optimization/solver/bind_exit_status.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/optimization/solver/bind_iteration_info.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/cpp/try_cast.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/src/sleipnir/autodiff/__init__.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/src/sleipnir/optimization/__init__.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/autodiff/gradient_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/autodiff/hessian_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/autodiff/jacobian_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/autodiff/variable_matrix_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/autodiff/variable_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/arm_on_elevator_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/cart_pole_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/cart_pole_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/cart_pole_util.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/constraints_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/decision_variable_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/differential_drive_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/differential_drive_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/differential_drive_util.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/double_integrator_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/flywheel_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/flywheel_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/linear_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/multistart_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/near.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/nonlinear_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/problem_spy_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/quadratic_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/rk4.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/solver/exit_status_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/python/test/optimization/trivial_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/autodiff/gradient.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/autodiff/hessian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/autodiff/jacobian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/autodiff/variable_matrix.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/optimization/ocp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/optimization/problem.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/optimization/solver/ipm.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/optimization/solver/newton.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/optimization/solver/sqp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/util/pool.cpp +0 -0
|
@@ -636,6 +636,8 @@ ExitStatus feasibility_restoration(
|
|
|
636
636
|
x = fr_x.segment(0, x.rows());
|
|
637
637
|
|
|
638
638
|
if (status == ExitStatus::CALLBACK_REQUESTED_STOP) {
|
|
639
|
+
const DenseVector s_old = s;
|
|
640
|
+
|
|
639
641
|
// Re-center the slacks on the original constraints cᵢ(x) if they're
|
|
640
642
|
// sufficiently feasible, and on 1 otherwise.
|
|
641
643
|
//
|
|
@@ -647,14 +649,24 @@ ExitStatus feasibility_restoration(
|
|
|
647
649
|
const DenseVector c_i = matrices.c_i(x);
|
|
648
650
|
s = (c_i.array() >= Scalar(1e-2)).select(c_i, Scalar(1));
|
|
649
651
|
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
652
|
+
// Reset the equality constraint duals since the restoration phase didn't
|
|
653
|
+
// take the cost function into account
|
|
654
|
+
y.setZero();
|
|
653
655
|
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
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
|
+
}
|
|
658
670
|
|
|
659
671
|
return ExitStatus::SUCCESS;
|
|
660
672
|
} else if (status == ExitStatus::SUCCESS) {
|
|
@@ -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.dev32 → 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.dev32 → 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.dev32 → 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.dev32 → sleipnirgroup_jormungandr-0.6.7.dev33}/src/util/pool.cpp
RENAMED
|
File without changes
|