sleipnirgroup-jormungandr 0.5.6.dev10__tar.gz → 0.5.6.dev12__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.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/PKG-INFO +1 -1
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/util/feasibility_restoration.hpp +16 -13
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/util/inertia.hpp +6 -4
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/src/sleipnir/__init__.py +1 -1
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/optimization/cart_pole_ocp_test.py +1 -9
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/CMakeLists.txt +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/LICENSE.txt +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/README.md +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/SleipnirConfig.cmake.in +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/cmake/BuildTypes.cmake +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/cmake/CompilerFlags.cmake +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/cmake/Pybind11Mkdoc.cmake +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/cmake/SubdirList.cmake +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/cmake/arm-none-eabi.cmake +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/autodiff/expression.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/autodiff/expression_graph.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/autodiff/expression_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/autodiff/gradient.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/autodiff/gradient_expression_graph.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/autodiff/hessian.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/autodiff/jacobian.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/autodiff/sleipnir_base.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/autodiff/slice.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/autodiff/variable.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/autodiff/variable_block.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/autodiff/variable_matrix.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/multistart.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/ocp/dynamics_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/ocp/timestep_method.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/ocp/transcription_method.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/ocp.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/problem.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/exit_status.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/interior_point.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/interior_point_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/iteration_info.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/newton.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/newton_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/options.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/sqp.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/sqp_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/util/all_finite.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/util/append_as_triplets.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/util/bounds.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/util/dense_regularized_ldlt.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/util/filter.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/util/fraction_to_the_boundary_rule.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/util/is_locally_infeasible.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/util/kkt_error.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/util/lagrange_multiplier_estimate.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/util/problem_scaling.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/util/regularized_ldlt.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/util/sparse_inf_norms.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/optimization/solver/util/sparse_regularized_ldlt.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/util/assert.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/util/concepts.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/util/empty.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/util/function_ref.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/util/intrusive_shared_ptr.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/util/pool.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/util/print.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/util/print_diagnostics.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/util/profiler.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/util/scope_exit.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/util/spy.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/include/sleipnir/util/symbol_exports.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/pyproject.toml +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/autodiff/bind_expression_type.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/autodiff/bind_gradient.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/autodiff/bind_hessian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/autodiff/bind_jacobian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/autodiff/bind_variable.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/autodiff/bind_variable_block.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/autodiff/bind_variable_matrix.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/binders.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/docstrings.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/for_each_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/main.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/optimization/bind_equality_constraints.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/optimization/bind_inequality_constraints.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/optimization/bind_ocp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/optimization/bind_problem.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/optimization/ocp/bind_dynamics_type.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/optimization/ocp/bind_timestep_method.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/optimization/ocp/bind_transcription_method.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/optimization/solver/bind_exit_status.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/optimization/solver/bind_iteration_info.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/cpp/try_cast.hpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/src/sleipnir/autodiff/__init__.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/src/sleipnir/optimization/__init__.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/autodiff/gradient_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/autodiff/hessian_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/autodiff/jacobian_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/autodiff/variable_matrix_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/autodiff/variable_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/optimization/arm_on_elevator_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/optimization/cart_pole_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/optimization/cart_pole_util.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/optimization/constraints_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/optimization/decision_variable_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/optimization/differential_drive_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/optimization/differential_drive_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/optimization/differential_drive_util.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/optimization/double_integrator_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/optimization/flywheel_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/optimization/flywheel_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/optimization/linear_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/optimization/multistart_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/optimization/nonlinear_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/optimization/problem_spy_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/optimization/quadratic_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/optimization/rk4.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/optimization/solver/exit_status_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/python/test/optimization/trivial_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/src/autodiff/gradient.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/src/autodiff/hessian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/src/autodiff/jacobian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/src/autodiff/variable_matrix.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/src/optimization/ocp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/src/optimization/problem.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/src/optimization/solver/interior_point.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/src/optimization/solver/newton.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/src/optimization/solver/sqp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/src/util/pool.cpp +0 -0
|
@@ -146,12 +146,14 @@ ExitStatus feasibility_restoration(
|
|
|
146
146
|
|
|
147
147
|
constexpr Scalar ρ(1e3);
|
|
148
148
|
const Scalar μ(options.tolerance / 10.0);
|
|
149
|
-
const Scalar ζ = sqrt(μ);
|
|
150
149
|
|
|
151
150
|
const DenseVector c_e = matrices.c_e(x);
|
|
152
151
|
|
|
152
|
+
Scalar fr_μ = std::max(μ, c_e.template lpNorm<Eigen::Infinity>());
|
|
153
|
+
const Scalar ζ = sqrt(fr_μ);
|
|
154
|
+
|
|
153
155
|
const auto& x_r = x;
|
|
154
|
-
const auto [p_e_0, n_e_0] = compute_p_n(c_e, ρ, μ);
|
|
156
|
+
const auto [p_e_0, n_e_0] = compute_p_n(c_e, ρ, fr_μ);
|
|
155
157
|
|
|
156
158
|
// Dᵣ = diag(min(1, 1/xᵣ[i]²) for i in x.rows())
|
|
157
159
|
const DiagonalMatrix D_r =
|
|
@@ -164,10 +166,9 @@ ExitStatus feasibility_restoration(
|
|
|
164
166
|
|
|
165
167
|
DenseVector fr_y = DenseVector::Zero(num_eq);
|
|
166
168
|
|
|
169
|
+
// Force the duals to start with perfect complementarity with the slacks
|
|
167
170
|
DenseVector fr_z{2 * num_eq};
|
|
168
|
-
fr_z << μ * p_e_0.cwiseInverse(), μ * n_e_0.cwiseInverse();
|
|
169
|
-
|
|
170
|
-
Scalar fr_μ = std::max(μ, c_e.template lpNorm<Eigen::Infinity>());
|
|
171
|
+
fr_z << fr_μ * p_e_0.cwiseInverse(), fr_μ * n_e_0.cwiseInverse();
|
|
171
172
|
|
|
172
173
|
// Inherit the parent problem's scaling for the constraints, and use no
|
|
173
174
|
// scaling for the cost function since it has changed. The new rows introduced
|
|
@@ -379,14 +380,17 @@ ExitStatus feasibility_restoration(
|
|
|
379
380
|
const auto& num_ineq = matrices.num_inequality_constraints;
|
|
380
381
|
|
|
381
382
|
constexpr Scalar ρ(1e3);
|
|
382
|
-
const Scalar ζ = sqrt(μ);
|
|
383
383
|
|
|
384
384
|
const DenseVector c_e = matrices.c_e(x);
|
|
385
385
|
const DenseVector c_i = matrices.c_i(x);
|
|
386
386
|
|
|
387
|
+
Scalar fr_μ = std::max({μ, c_e.template lpNorm<Eigen::Infinity>(),
|
|
388
|
+
(c_i - s).template lpNorm<Eigen::Infinity>()});
|
|
389
|
+
const Scalar ζ = sqrt(fr_μ);
|
|
390
|
+
|
|
387
391
|
const auto& x_r = x;
|
|
388
|
-
const auto [p_e_0, n_e_0] = compute_p_n(c_e, ρ, μ);
|
|
389
|
-
const auto [p_i_0, n_i_0] = compute_p_n((c_i - s).eval(), ρ, μ);
|
|
392
|
+
const auto [p_e_0, n_e_0] = compute_p_n(c_e, ρ, fr_μ);
|
|
393
|
+
const auto [p_i_0, n_i_0] = compute_p_n((c_i - s).eval(), ρ, fr_μ);
|
|
390
394
|
|
|
391
395
|
// Dᵣ = diag(min(1, 1/xᵣ[i]²) for i in x.rows())
|
|
392
396
|
const DiagonalMatrix D_r =
|
|
@@ -401,12 +405,11 @@ ExitStatus feasibility_restoration(
|
|
|
401
405
|
|
|
402
406
|
DenseVector fr_y = DenseVector::Zero(c_e.rows());
|
|
403
407
|
|
|
408
|
+
// Force the duals to start with perfect complementarity with the slacks
|
|
404
409
|
DenseVector fr_z{c_i.rows() + 2 * num_eq + 2 * num_ineq};
|
|
405
|
-
fr_z <<
|
|
406
|
-
μ *
|
|
407
|
-
|
|
408
|
-
Scalar fr_μ = std::max({μ, c_e.template lpNorm<Eigen::Infinity>(),
|
|
409
|
-
(c_i - s).template lpNorm<Eigen::Infinity>()});
|
|
410
|
+
fr_z << fr_μ * s.cwiseInverse(), fr_μ * p_e_0.cwiseInverse(),
|
|
411
|
+
fr_μ * n_e_0.cwiseInverse(), fr_μ * p_i_0.cwiseInverse(),
|
|
412
|
+
fr_μ * n_i_0.cwiseInverse();
|
|
410
413
|
|
|
411
414
|
// Inherit the parent problem's scaling for the constraints, and use no
|
|
412
415
|
// scaling for the cost function since it has changed. The new rows introduced
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
#pragma once
|
|
4
4
|
|
|
5
|
+
#include <limits>
|
|
6
|
+
|
|
5
7
|
#include <Eigen/Core>
|
|
6
8
|
|
|
7
9
|
namespace slp {
|
|
@@ -36,9 +38,9 @@ class Inertia {
|
|
|
36
38
|
template <typename Scalar>
|
|
37
39
|
explicit Inertia(const Eigen::Vector<Scalar, Eigen::Dynamic>& D) {
|
|
38
40
|
for (const auto& elem : D) {
|
|
39
|
-
if (elem > Scalar(
|
|
41
|
+
if (elem > std::numeric_limits<Scalar>::epsilon()) {
|
|
40
42
|
++positive;
|
|
41
|
-
} else if (elem < Scalar(
|
|
43
|
+
} else if (elem < -std::numeric_limits<Scalar>::epsilon()) {
|
|
42
44
|
++negative;
|
|
43
45
|
} else {
|
|
44
46
|
++zero;
|
|
@@ -56,9 +58,9 @@ class Inertia {
|
|
|
56
58
|
const Eigen::Diagonal<
|
|
57
59
|
const Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic>>& D) {
|
|
58
60
|
for (const auto& elem : D) {
|
|
59
|
-
if (elem > Scalar(
|
|
61
|
+
if (elem > std::numeric_limits<Scalar>::epsilon()) {
|
|
60
62
|
++positive;
|
|
61
|
-
} else if (elem < Scalar(
|
|
63
|
+
} else if (elem < -std::numeric_limits<Scalar>::epsilon()) {
|
|
62
64
|
++negative;
|
|
63
65
|
} else {
|
|
64
66
|
++zero;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import math
|
|
2
|
-
import platform
|
|
3
2
|
|
|
4
3
|
import numpy as np
|
|
5
4
|
import pytest
|
|
@@ -79,14 +78,7 @@ def test_cart_pole_ocp():
|
|
|
79
78
|
assert problem.equality_constraint_type() == ExpressionType.NONLINEAR
|
|
80
79
|
assert problem.inequality_constraint_type() == ExpressionType.LINEAR
|
|
81
80
|
|
|
82
|
-
|
|
83
|
-
# FIXME: Fails on Windows aarch64 with "feasibility restoration failed"
|
|
84
|
-
assert (
|
|
85
|
-
problem.solve(diagnostics=True) == ExitStatus.FEASIBILITY_RESTORATION_FAILED
|
|
86
|
-
)
|
|
87
|
-
return
|
|
88
|
-
else:
|
|
89
|
-
assert problem.solve(diagnostics=True) == ExitStatus.SUCCESS
|
|
81
|
+
assert problem.solve(diagnostics=True) == ExitStatus.SUCCESS
|
|
90
82
|
|
|
91
83
|
# Verify initial state
|
|
92
84
|
assert X.value(0, 0) == pytest.approx(x_initial[0, 0], abs=1e-8)
|
{sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/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.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/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.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/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
|
{sleipnirgroup_jormungandr-0.5.6.dev10 → sleipnirgroup_jormungandr-0.5.6.dev12}/src/util/pool.cpp
RENAMED
|
File without changes
|