sleipnirgroup-jormungandr 0.6.5.dev2__tar.gz → 0.6.5.dev4__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.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/PKG-INFO +1 -1
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/interior_point.hpp +32 -13
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/newton.hpp +2 -1
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/sqp.hpp +5 -3
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/filter.hpp +5 -16
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/src/sleipnir/__init__.py +1 -1
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/CMakeLists.txt +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/LICENSE.txt +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/README.md +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/SleipnirConfig.cmake.in +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/cmake/BuildTypes.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/cmake/CompilerFlags.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/cmake/Pybind11Mkdoc.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/cmake/SubdirList.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/cmake/arm-none-eabi.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/expression.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/expression_graph.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/expression_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/gradient.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/hessian.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/jacobian.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/sleipnir_base.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/slice.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/variable.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/variable_block.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/autodiff/variable_matrix.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/multistart.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/ocp/dynamics_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/ocp/timestep_method.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/ocp/transcription_method.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/ocp.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/problem.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/exit_status.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/interior_point_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/iteration_info.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/newton_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/options.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/sqp_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/all_finite.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/append_as_triplets.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/bounds.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/dense_regularized_ldlt.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/feasibility_restoration.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/fraction_to_the_boundary_rule.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/inertia.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/is_locally_infeasible.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/kkt_error.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/lagrange_multiplier_estimate.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/problem_scaling.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/regularized_ldlt.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/sparse_inf_norms.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/optimization/solver/util/sparse_regularized_ldlt.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/assert.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/concepts.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/empty.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/function_ref.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/intrusive_shared_ptr.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/pool.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/print.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/print_diagnostics.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/profiler.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/scope_exit.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/spy.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/include/sleipnir/util/symbol_exports.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/pyproject.toml +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/autodiff/bind_expression_type.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/autodiff/bind_gradient.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/autodiff/bind_hessian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/autodiff/bind_jacobian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/autodiff/bind_variable.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/autodiff/bind_variable_block.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/autodiff/bind_variable_matrix.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/binders.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/docstrings.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/for_each_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/main.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/optimization/bind_equality_constraints.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/optimization/bind_inequality_constraints.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/optimization/bind_ocp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/optimization/bind_problem.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/optimization/ocp/bind_dynamics_type.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/optimization/ocp/bind_timestep_method.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/optimization/ocp/bind_transcription_method.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/optimization/solver/bind_exit_status.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/optimization/solver/bind_iteration_info.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/try_cast.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/src/sleipnir/autodiff/__init__.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/src/sleipnir/optimization/__init__.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/autodiff/gradient_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/autodiff/hessian_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/autodiff/jacobian_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/autodiff/variable_matrix_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/autodiff/variable_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/arm_on_elevator_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/cart_pole_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/cart_pole_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/cart_pole_util.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/constraints_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/decision_variable_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/differential_drive_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/differential_drive_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/differential_drive_util.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/double_integrator_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/flywheel_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/flywheel_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/linear_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/multistart_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/nonlinear_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/problem_spy_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/quadratic_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/rk4.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/solver/exit_status_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/test/optimization/trivial_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/src/autodiff/gradient.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/src/autodiff/hessian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/src/autodiff/jacobian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/src/autodiff/variable_matrix.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/src/optimization/ocp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/src/optimization/problem.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/src/optimization/solver/interior_point.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/src/optimization/solver/newton.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/src/optimization/solver/sqp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/src/util/pool.cpp +0 -0
|
@@ -467,7 +467,7 @@ ExitStatus interior_point(
|
|
|
467
467
|
kkt_matrix_decomp_profiler.stop();
|
|
468
468
|
ScopedProfiler kkt_system_solve_profiler{kkt_system_solve_prof};
|
|
469
469
|
|
|
470
|
-
auto compute_step = [&](Step& step) {
|
|
470
|
+
auto compute_step = [&](Step& step, const DenseVector& c_i_minus_s) {
|
|
471
471
|
// p = [ pˣ]
|
|
472
472
|
// [−pʸ]
|
|
473
473
|
DenseVector p = solver.solve(rhs);
|
|
@@ -475,11 +475,11 @@ ExitStatus interior_point(
|
|
|
475
475
|
step.p_y = -p.segment(x.rows(), y.rows());
|
|
476
476
|
|
|
477
477
|
// pˢ = cᵢ − s + Aᵢpˣ
|
|
478
|
-
// pᶻ =
|
|
479
|
-
step.p_s =
|
|
480
|
-
step.p_z =
|
|
478
|
+
// pᶻ = μS⁻¹e − z − Σpˢ
|
|
479
|
+
step.p_s = c_i_minus_s + A_i * step.p_x;
|
|
480
|
+
step.p_z = μ * s.cwiseInverse() - z - Σ * step.p_s;
|
|
481
481
|
};
|
|
482
|
-
compute_step(step);
|
|
482
|
+
compute_step(step, c_i - s);
|
|
483
483
|
|
|
484
484
|
kkt_system_solve_profiler.stop();
|
|
485
485
|
ScopedProfiler line_search_profiler{line_search_prof};
|
|
@@ -498,6 +498,14 @@ ExitStatus interior_point(
|
|
|
498
498
|
|
|
499
499
|
const FilterEntry<Scalar> current_entry{f, s, c_e, c_i, μ};
|
|
500
500
|
|
|
501
|
+
// Compute the directional derivative of the log-barrier function along the
|
|
502
|
+
// search direction.
|
|
503
|
+
//
|
|
504
|
+
// ϕ_μ(x, s) = f(x) − μ∑ᵢ ln(sᵢ)
|
|
505
|
+
// D_ϕ = ∇ϕ_μ(x, s)ᵀ[pˣ pˢ] = ∇f(x)ᵀpˣ − μ∑ᵢ pᵢˢ/sᵢ
|
|
506
|
+
const Scalar D_ϕ =
|
|
507
|
+
g.transpose() * step.p_x - μ * s.cwiseInverse().dot(step.p_s);
|
|
508
|
+
|
|
501
509
|
// Loop until a step is accepted
|
|
502
510
|
while (1) {
|
|
503
511
|
trial_x = x + α * step.p_x;
|
|
@@ -533,7 +541,7 @@ ExitStatus interior_point(
|
|
|
533
541
|
|
|
534
542
|
// Check whether filter accepts trial iterate
|
|
535
543
|
FilterEntry trial_entry{trial_f, trial_s, trial_c_e, trial_c_i, μ};
|
|
536
|
-
if (filter.try_add(current_entry, trial_entry,
|
|
544
|
+
if (filter.try_add(current_entry, trial_entry, D_ϕ, α)) {
|
|
537
545
|
// Accept step
|
|
538
546
|
break;
|
|
539
547
|
}
|
|
@@ -556,6 +564,7 @@ ExitStatus interior_point(
|
|
|
556
564
|
Scalar α_soc = α;
|
|
557
565
|
Scalar α_z_soc = α_z;
|
|
558
566
|
DenseVector c_e_soc = c_e;
|
|
567
|
+
DenseVector c_i_minus_s_soc = c_i - s;
|
|
559
568
|
|
|
560
569
|
Scalar soc_constraint_violation = next_constraint_violation;
|
|
561
570
|
|
|
@@ -589,15 +598,23 @@ ExitStatus interior_point(
|
|
|
589
598
|
|
|
590
599
|
// Rebuild Newton-KKT rhs with updated constraint values.
|
|
591
600
|
//
|
|
592
|
-
// rhs = −[∇f − Aₑᵀy − Aᵢᵀ(
|
|
593
|
-
// [
|
|
601
|
+
// rhs = −[∇f − Aₑᵀy − Aᵢᵀ(μS⁻¹e − Σ(cᵢ − s)ˢᵒᶜ)]
|
|
602
|
+
// [ cₑˢᵒᶜ ]
|
|
603
|
+
//
|
|
604
|
+
// where
|
|
594
605
|
//
|
|
595
|
-
//
|
|
606
|
+
// cₑˢᵒᶜ = αˢᵒᶜcₑ(xₖ) + cₑ(xₖ + αˢᵒᶜpˣˢᵒᶜ)
|
|
607
|
+
// (cᵢ − s)ˢᵒᶜ = αˢᵒᶜ(cᵢ(xₖ) − sₖ) + cᵢ(xₖ + αˢᵒᶜpˣˢᵒᶜ)
|
|
608
|
+
// − (sₖ + αˢᵒᶜpˢˢᵒᶜ).
|
|
596
609
|
c_e_soc = α_soc * c_e_soc + trial_c_e;
|
|
597
|
-
|
|
610
|
+
c_i_minus_s_soc = α_soc * c_i_minus_s_soc + trial_c_i - trial_s;
|
|
611
|
+
rhs.segment(0, x.rows()) =
|
|
612
|
+
-g + A_e.transpose() * y +
|
|
613
|
+
A_i.transpose() * (μ * s.cwiseInverse() - Σ * c_i_minus_s_soc);
|
|
614
|
+
rhs.segment(x.rows(), y.rows()) = -c_e_soc;
|
|
598
615
|
|
|
599
616
|
// Solve the Newton-KKT system
|
|
600
|
-
compute_step(soc_step);
|
|
617
|
+
compute_step(soc_step, c_i_minus_s_soc);
|
|
601
618
|
|
|
602
619
|
// αˢᵒᶜ = max(α ∈ (0, 1] : sₖ + αpₖˢ ≥ (1−τⱼ)sₖ)
|
|
603
620
|
// αₖᶻˢᵒᶜ = max(α ∈ (0, 1] : zₖ + αpₖᶻ ≥ (1−τⱼ)zₖ)
|
|
@@ -615,7 +632,7 @@ ExitStatus interior_point(
|
|
|
615
632
|
|
|
616
633
|
// Check whether filter accepts trial iterate
|
|
617
634
|
FilterEntry trial_entry{trial_f, trial_s, trial_c_e, trial_c_i, μ};
|
|
618
|
-
if (filter.try_add(current_entry, trial_entry,
|
|
635
|
+
if (filter.try_add(current_entry, trial_entry, D_ϕ, α)) {
|
|
619
636
|
step = soc_step;
|
|
620
637
|
α = α_soc;
|
|
621
638
|
α_z = α_z_soc;
|
|
@@ -729,9 +746,11 @@ ExitStatus interior_point(
|
|
|
729
746
|
// is accepted by the normal filter, stop feasibility restoration
|
|
730
747
|
FilterEntry trial_entry{matrices.f(trial_x), trial_s, trial_c_e,
|
|
731
748
|
trial_c_i, μ};
|
|
749
|
+
const Scalar D_ϕ_restoration = g.transpose() * (trial_x - x) -
|
|
750
|
+
μ * s.cwiseInverse().dot(trial_s - s);
|
|
732
751
|
return trial_entry.constraint_violation <
|
|
733
752
|
Scalar(0.9) * initial_entry.constraint_violation &&
|
|
734
|
-
filter.try_add(initial_entry, trial_entry,
|
|
753
|
+
filter.try_add(initial_entry, trial_entry, D_ϕ_restoration, α);
|
|
735
754
|
});
|
|
736
755
|
auto status =
|
|
737
756
|
feasibility_restoration<Scalar>(matrices, callbacks, options,
|
|
@@ -195,6 +195,7 @@ ExitStatus newton(
|
|
|
195
195
|
|
|
196
196
|
constexpr Scalar α_max(1);
|
|
197
197
|
Scalar α = α_max;
|
|
198
|
+
const Scalar D_ϕ = g.transpose() * p_x;
|
|
198
199
|
|
|
199
200
|
// Loop until a step is accepted. If a step becomes acceptable, the loop
|
|
200
201
|
// will exit early.
|
|
@@ -215,7 +216,7 @@ ExitStatus newton(
|
|
|
215
216
|
}
|
|
216
217
|
|
|
217
218
|
// Check whether filter accepts trial iterate
|
|
218
|
-
if (filter.try_add(FilterEntry{f}, FilterEntry{trial_f},
|
|
219
|
+
if (filter.try_add(FilterEntry{f}, FilterEntry{trial_f}, D_ϕ, α)) {
|
|
219
220
|
// Accept step
|
|
220
221
|
break;
|
|
221
222
|
}
|
|
@@ -339,6 +339,7 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
|
|
|
339
339
|
α = α_max;
|
|
340
340
|
|
|
341
341
|
const FilterEntry<Scalar> current_entry{f, c_e};
|
|
342
|
+
const Scalar D_ϕ = g.transpose() * step.p_x;
|
|
342
343
|
|
|
343
344
|
// Loop until a step is accepted
|
|
344
345
|
while (1) {
|
|
@@ -363,7 +364,7 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
|
|
|
363
364
|
|
|
364
365
|
// Check whether filter accepts trial iterate
|
|
365
366
|
FilterEntry trial_entry{trial_f, trial_c_e};
|
|
366
|
-
if (filter.try_add(current_entry, trial_entry,
|
|
367
|
+
if (filter.try_add(current_entry, trial_entry, D_ϕ, α)) {
|
|
367
368
|
// Accept step
|
|
368
369
|
break;
|
|
369
370
|
}
|
|
@@ -428,7 +429,7 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
|
|
|
428
429
|
|
|
429
430
|
// Check whether the filter accepts trial iterate
|
|
430
431
|
FilterEntry trial_entry{trial_f, trial_c_e};
|
|
431
|
-
if (filter.try_add(current_entry, trial_entry,
|
|
432
|
+
if (filter.try_add(current_entry, trial_entry, D_ϕ, α)) {
|
|
432
433
|
step = soc_step;
|
|
433
434
|
α = α_soc;
|
|
434
435
|
step_acceptable = true;
|
|
@@ -524,12 +525,13 @@ ExitStatus sqp(const SQPMatrixCallbacks<Scalar>& matrix_callbacks,
|
|
|
524
525
|
DenseVector trial_c_e = matrices.c_e(trial_x);
|
|
525
526
|
|
|
526
527
|
FilterEntry trial_entry{matrices.f(trial_x), trial_c_e};
|
|
528
|
+
const Scalar D_ϕ_restoration = g.transpose() * (trial_x - x);
|
|
527
529
|
|
|
528
530
|
// If the current iterate sufficiently reduces constraint violation and
|
|
529
531
|
// is accepted by the normal filter, stop feasibility restoration
|
|
530
532
|
return trial_entry.constraint_violation <
|
|
531
533
|
Scalar(0.9) * initial_entry.constraint_violation &&
|
|
532
|
-
filter.try_add(initial_entry, trial_entry,
|
|
534
|
+
filter.try_add(initial_entry, trial_entry, D_ϕ_restoration, α);
|
|
533
535
|
});
|
|
534
536
|
auto status = feasibility_restoration<Scalar>(matrices, callbacks,
|
|
535
537
|
options, x, y, iterations);
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
#include <cmath>
|
|
7
7
|
|
|
8
8
|
#include <Eigen/Core>
|
|
9
|
-
#include <Eigen/SparseCore>
|
|
10
9
|
#include <gch/small_vector.hpp>
|
|
11
10
|
|
|
12
11
|
// See docs/algorithms.md#Works_cited for citation definitions.
|
|
@@ -75,12 +74,6 @@ struct FilterEntry {
|
|
|
75
74
|
template <typename Scalar>
|
|
76
75
|
class Filter {
|
|
77
76
|
public:
|
|
78
|
-
/// Type alias for dense vector.
|
|
79
|
-
using DenseVector = Eigen::Vector<Scalar, Eigen::Dynamic>;
|
|
80
|
-
|
|
81
|
-
/// Type alias for sparse vector.
|
|
82
|
-
using SparseVector = Eigen::SparseVector<Scalar>;
|
|
83
|
-
|
|
84
77
|
/// The minimum constraint violation
|
|
85
78
|
Scalar min_constraint_violation;
|
|
86
79
|
|
|
@@ -110,13 +103,11 @@ class Filter {
|
|
|
110
103
|
///
|
|
111
104
|
/// @param current_entry The entry corresponding to the current iterate.
|
|
112
105
|
/// @param trial_entry The entry corresponding to the trial iterate.
|
|
113
|
-
/// @param
|
|
114
|
-
/// @param g Cost function gradient.
|
|
106
|
+
/// @param D_ϕ Cost directional derivative along the search direction.
|
|
115
107
|
/// @param α The step size (0, 1].
|
|
116
108
|
/// @return True if the given entry is acceptable to the filter.
|
|
117
109
|
bool try_add(const FilterEntry<Scalar>& current_entry,
|
|
118
|
-
const FilterEntry<Scalar>& trial_entry,
|
|
119
|
-
const SparseVector& g, Scalar α) {
|
|
110
|
+
const FilterEntry<Scalar>& trial_entry, Scalar D_ϕ, Scalar α) {
|
|
120
111
|
using std::isfinite;
|
|
121
112
|
using std::pow;
|
|
122
113
|
|
|
@@ -126,19 +117,17 @@ class Filter {
|
|
|
126
117
|
return false;
|
|
127
118
|
}
|
|
128
119
|
|
|
129
|
-
Scalar g_p_x = g.transpose() * p_x;
|
|
130
|
-
|
|
131
120
|
// Switching condition
|
|
132
121
|
constexpr Scalar s_ϕ(2.3);
|
|
133
122
|
constexpr Scalar s_θ(1.1);
|
|
134
123
|
bool switching_condition =
|
|
135
|
-
|
|
136
|
-
α * pow(-
|
|
124
|
+
D_ϕ < Scalar(0) &&
|
|
125
|
+
α * pow(-D_ϕ, s_ϕ) > pow(current_entry.constraint_violation, s_θ);
|
|
137
126
|
|
|
138
127
|
// Armijo condition
|
|
139
128
|
constexpr Scalar η_ϕ(1e-8);
|
|
140
129
|
bool armijo_condition =
|
|
141
|
-
trial_entry.cost <= current_entry.cost + η_ϕ * α *
|
|
130
|
+
trial_entry.cost <= current_entry.cost + η_ϕ * α * D_ϕ;
|
|
142
131
|
|
|
143
132
|
// Sufficient decrease condition
|
|
144
133
|
//
|
{sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/CMakeLists.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/cmake/BuildTypes.cmake
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/cmake/SubdirList.cmake
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
|
{sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/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
|
{sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/python/cpp/binders.hpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sleipnirgroup_jormungandr-0.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/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.6.5.dev2 → sleipnirgroup_jormungandr-0.6.5.dev4}/src/util/pool.cpp
RENAMED
|
File without changes
|