sleipnirgroup-jormungandr 0.6.5.dev3__tar.gz → 0.6.5.dev5__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.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/PKG-INFO +1 -1
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/interior_point.hpp +18 -6
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/newton.hpp +2 -1
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/sqp.hpp +5 -3
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/util/filter.hpp +5 -16
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/src/sleipnir/__init__.py +1 -1
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/CMakeLists.txt +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/LICENSE.txt +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/README.md +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/SleipnirConfig.cmake.in +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/cmake/BuildTypes.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/cmake/CompilerFlags.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/cmake/Pybind11Mkdoc.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/cmake/SubdirList.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/cmake/arm-none-eabi.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/autodiff/expression.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/autodiff/expression_graph.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/autodiff/expression_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/autodiff/gradient.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/autodiff/hessian.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/autodiff/jacobian.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/autodiff/sleipnir_base.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/autodiff/slice.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/autodiff/variable.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/autodiff/variable_block.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/autodiff/variable_matrix.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/multistart.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/ocp/dynamics_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/ocp/timestep_method.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/ocp/transcription_method.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/ocp.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/problem.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/exit_status.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/interior_point_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/iteration_info.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/newton_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/options.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/sqp_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/util/all_finite.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/util/append_as_triplets.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/util/bounds.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/util/dense_regularized_ldlt.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/util/feasibility_restoration.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/util/fraction_to_the_boundary_rule.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/util/inertia.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/util/is_locally_infeasible.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/util/kkt_error.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/util/lagrange_multiplier_estimate.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/util/problem_scaling.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/util/regularized_ldlt.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/util/sparse_inf_norms.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/optimization/solver/util/sparse_regularized_ldlt.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/util/assert.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/util/concepts.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/util/empty.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/util/function_ref.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/util/intrusive_shared_ptr.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/util/pool.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/util/print.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/util/print_diagnostics.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/util/profiler.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/util/scope_exit.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/util/spy.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/include/sleipnir/util/symbol_exports.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/pyproject.toml +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/autodiff/bind_expression_type.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/autodiff/bind_gradient.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/autodiff/bind_hessian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/autodiff/bind_jacobian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/autodiff/bind_variable.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/autodiff/bind_variable_block.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/autodiff/bind_variable_matrix.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/binders.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/docstrings.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/for_each_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/main.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/optimization/bind_equality_constraints.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/optimization/bind_inequality_constraints.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/optimization/bind_ocp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/optimization/bind_problem.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/optimization/ocp/bind_dynamics_type.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/optimization/ocp/bind_timestep_method.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/optimization/ocp/bind_transcription_method.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/optimization/solver/bind_exit_status.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/optimization/solver/bind_iteration_info.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/try_cast.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/src/sleipnir/autodiff/__init__.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/src/sleipnir/optimization/__init__.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/autodiff/gradient_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/autodiff/hessian_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/autodiff/jacobian_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/autodiff/variable_matrix_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/autodiff/variable_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/optimization/arm_on_elevator_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/optimization/cart_pole_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/optimization/cart_pole_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/optimization/cart_pole_util.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/optimization/constraints_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/optimization/decision_variable_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/optimization/differential_drive_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/optimization/differential_drive_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/optimization/differential_drive_util.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/optimization/double_integrator_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/optimization/flywheel_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/optimization/flywheel_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/optimization/linear_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/optimization/multistart_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/optimization/nonlinear_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/optimization/problem_spy_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/optimization/quadratic_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/optimization/rk4.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/optimization/solver/exit_status_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/test/optimization/trivial_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/src/autodiff/gradient.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/src/autodiff/hessian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/src/autodiff/jacobian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/src/autodiff/variable_matrix.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/src/optimization/ocp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/src/optimization/problem.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/src/optimization/solver/interior_point.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/src/optimization/solver/newton.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/src/optimization/solver/sqp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/src/util/pool.cpp +0 -0
|
@@ -498,6 +498,16 @@ 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
|
+
//
|
|
506
|
+
// D_ϕ = ∇ϕ_μ(x, s)ᵀ[pˣ pˢ]
|
|
507
|
+
// = ∇f(x)ᵀpˣ − μ∑ᵢ pᵢˢ/sᵢ
|
|
508
|
+
const Scalar D_ϕ =
|
|
509
|
+
g.transpose() * step.p_x - μ * s.cwiseInverse().dot(step.p_s);
|
|
510
|
+
|
|
501
511
|
// Loop until a step is accepted
|
|
502
512
|
while (1) {
|
|
503
513
|
trial_x = x + α * step.p_x;
|
|
@@ -533,7 +543,7 @@ ExitStatus interior_point(
|
|
|
533
543
|
|
|
534
544
|
// Check whether filter accepts trial iterate
|
|
535
545
|
FilterEntry trial_entry{trial_f, trial_s, trial_c_e, trial_c_i, μ};
|
|
536
|
-
if (filter.try_add(current_entry, trial_entry,
|
|
546
|
+
if (filter.try_add(current_entry, trial_entry, D_ϕ, α)) {
|
|
537
547
|
// Accept step
|
|
538
548
|
break;
|
|
539
549
|
}
|
|
@@ -595,9 +605,9 @@ ExitStatus interior_point(
|
|
|
595
605
|
//
|
|
596
606
|
// where
|
|
597
607
|
//
|
|
598
|
-
//
|
|
599
|
-
//
|
|
600
|
-
//
|
|
608
|
+
// cₑˢᵒᶜ = αˢᵒᶜcₑ(xₖ) + cₑ(xₖ + αˢᵒᶜpˣˢᵒᶜ)
|
|
609
|
+
// (cᵢ − s)ˢᵒᶜ =
|
|
610
|
+
// αˢᵒᶜ(cᵢ(xₖ) − sₖ) + cᵢ(xₖ + αˢᵒᶜpˣˢᵒᶜ) − (sₖ + αˢᵒᶜpˢˢᵒᶜ)
|
|
601
611
|
c_e_soc = α_soc * c_e_soc + trial_c_e;
|
|
602
612
|
c_i_minus_s_soc = α_soc * c_i_minus_s_soc + trial_c_i - trial_s;
|
|
603
613
|
rhs.segment(0, x.rows()) =
|
|
@@ -624,7 +634,7 @@ ExitStatus interior_point(
|
|
|
624
634
|
|
|
625
635
|
// Check whether filter accepts trial iterate
|
|
626
636
|
FilterEntry trial_entry{trial_f, trial_s, trial_c_e, trial_c_i, μ};
|
|
627
|
-
if (filter.try_add(current_entry, trial_entry,
|
|
637
|
+
if (filter.try_add(current_entry, trial_entry, D_ϕ, α)) {
|
|
628
638
|
step = soc_step;
|
|
629
639
|
α = α_soc;
|
|
630
640
|
α_z = α_z_soc;
|
|
@@ -738,9 +748,11 @@ ExitStatus interior_point(
|
|
|
738
748
|
// is accepted by the normal filter, stop feasibility restoration
|
|
739
749
|
FilterEntry trial_entry{matrices.f(trial_x), trial_s, trial_c_e,
|
|
740
750
|
trial_c_i, μ};
|
|
751
|
+
const Scalar D_ϕ_restoration = g.transpose() * (trial_x - x) -
|
|
752
|
+
μ * s.cwiseInverse().dot(trial_s - s);
|
|
741
753
|
return trial_entry.constraint_violation <
|
|
742
754
|
Scalar(0.9) * initial_entry.constraint_violation &&
|
|
743
|
-
filter.try_add(initial_entry, trial_entry,
|
|
755
|
+
filter.try_add(initial_entry, trial_entry, D_ϕ_restoration, α);
|
|
744
756
|
});
|
|
745
757
|
auto status =
|
|
746
758
|
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.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/CMakeLists.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/cmake/BuildTypes.cmake
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/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.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/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.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/python/cpp/binders.hpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sleipnirgroup_jormungandr-0.6.5.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/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.dev3 → sleipnirgroup_jormungandr-0.6.5.dev5}/src/util/pool.cpp
RENAMED
|
File without changes
|